diff --git a/src/api/dotnet/Context.cs b/src/api/dotnet/Context.cs
index 421c81fae..494b29a00 100644
--- a/src/api/dotnet/Context.cs
+++ b/src/api/dotnet/Context.cs
@@ -2564,6 +2564,16 @@ namespace Microsoft.Z3
return new ReExpr(this, Native.Z3_mk_re_star(nCtx, re.NativeObject));
}
+ ///
+ /// Take the bounded Kleene star of a regular expression.
+ ///
+ public ReExpr MkLoop(ReExpr re, uint lo, uint hi = 0)
+ {
+ Contract.Requires(re != null);
+ Contract.Ensures(Contract.Result() != null);
+ return new ReExpr(this, Native.Z3_mk_re_loop(nCtx, re.NativeObject, lo, hi));
+ }
+
///
/// Take the Kleene plus of a regular expression.
///
@@ -2610,6 +2620,39 @@ namespace Microsoft.Z3
return new ReExpr(this, Native.Z3_mk_re_union(nCtx, (uint)t.Length, AST.ArrayToNative(t)));
}
+ ///
+ /// Create the intersection of regular languages.
+ ///
+ public ReExpr MkIntersect(params ReExpr[] t)
+ {
+ Contract.Requires(t != null);
+ Contract.Requires(Contract.ForAll(t, a => a != null));
+ Contract.Ensures(Contract.Result() != null);
+
+ CheckContextMatch(t);
+ return new ReExpr(this, Native.Z3_mk_re_intersect(nCtx, (uint)t.Length, AST.ArrayToNative(t)));
+ }
+
+ ///
+ /// Create the empty regular expression.
+ ///
+ public ReExpr MkEmptyRe(Sort s)
+ {
+ Contract.Requires(s != null);
+ Contract.Ensures(Contract.Result() != null);
+ return new ReExpr(this, Native.Z3_mk_re_empty(nCtx, s.NativeObject));
+ }
+
+ ///
+ /// Create the full regular expression.
+ ///
+ public ReExpr MkFullRe(Sort s)
+ {
+ Contract.Requires(s != null);
+ Contract.Ensures(Contract.Result() != null);
+ return new ReExpr(this, Native.Z3_mk_re_full(nCtx, s.NativeObject));
+ }
+
///
/// Create a range expression.