Skip to content

Commit

Permalink
fix #6644
Browse files Browse the repository at this point in the history
  • Loading branch information
NikolajBjorner committed Mar 27, 2023
1 parent 8a3a3dc commit b4ad747
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 7 deletions.
21 changes: 21 additions & 0 deletions examples/java/JavaExample.java
Original file line number Diff line number Diff line change
Expand Up @@ -2259,6 +2259,24 @@ public void translationExample() {
System.out.println(e1.equals(e3));
}

public void stringExample() {
System.out.println("String example");
Context ctx = new Context();
var a = ctx.mkToRe(ctx.mkString("abcd"));
var b = ctx.mkFullRe(ctx.mkReSort(ctx.mkStringSort()));
System.out.println(a);
System.out.println(b);
System.out.println(a.getSort());
System.out.println(b.getSort());
var c = ctx.mkConcat(ctx.mkToRe(ctx.mkString("abc")),
ctx.mkFullRe(ctx.mkReSort(ctx.mkStringSort())),
ctx.mkEmptyRe(ctx.mkReSort(ctx.mkStringSort())),
ctx.mkAllcharRe(ctx.mkReSort(ctx.mkStringSort())),
ctx.mkToRe(ctx.mkString("d")));
System.out.println(c);

}

public static void main(String[] args)
{
JavaExample p = new JavaExample();
Expand All @@ -2274,12 +2292,15 @@ public static void main(String[] args)
System.out.print("Z3 Full Version String: ");
System.out.println(Version.getFullVersion());

p.stringExample();

p.simpleExample();

{ // These examples need model generation turned on.
HashMap<String, String> cfg = new HashMap<String, String>();
cfg.put("model", "true");
Context ctx = new Context(cfg);


p.optimizeExample(ctx);
p.basicTests(ctx);
Expand Down
15 changes: 8 additions & 7 deletions src/api/java/Context.java
Original file line number Diff line number Diff line change
Expand Up @@ -2175,10 +2175,10 @@ public final <R extends Sort> SeqExpr<R> mkReplace(Expr<SeqSort<R>> s, Expr<SeqS
/**
* Convert a regular expression that accepts sequence s.
*/
public final <R extends Sort> ReExpr<R> mkToRe(Expr<SeqSort<R>> s)
public final <R extends Sort> ReExpr<SeqSort<R>> mkToRe(Expr<SeqSort<R>> s)
{
checkContextMatch(s);
return (ReExpr<R>) Expr.create(this, Native.mkSeqToRe(nCtx(), s.getNativeObject()));
return (ReExpr<SeqSort<R>>) Expr.create(this, Native.mkSeqToRe(nCtx(), s.getNativeObject()));
}


Expand Down Expand Up @@ -2296,7 +2296,7 @@ public final <R extends Sort> ReExpr<R> mkDiff(Expr<ReSort<R>> a, Expr<ReSort<R>
* Create the empty regular expression.
* Coresponds to re.none
*/
public final <R extends Sort> ReExpr<R> mkEmptyRe(R s)
public final <R extends Sort> ReExpr<R> mkEmptyRe(ReSort<R> s)
{
return (ReExpr<R>) Expr.create(this, Native.mkReEmpty(nCtx(), s.getNativeObject()));
}
Expand All @@ -2305,27 +2305,28 @@ public final <R extends Sort> ReExpr<R> mkEmptyRe(R s)
* Create the full regular expression.
* Corresponds to re.all
*/
public final <R extends Sort> ReExpr<R> mkFullRe(R s)
public final <R extends Sort> ReExpr<R> mkFullRe(ReSort<R> s)
{
return (ReExpr<R>) Expr.create(this, Native.mkReFull(nCtx(), s.getNativeObject()));
}

/**
* Create regular expression that accepts all characters
* R has to be a sequence sort.
* Corresponds to re.allchar
*/
public final <R extends Sort> ReExpr<R> mkAllcharRe(R s)
public final <R extends Sort> ReExpr<R> mkAllcharRe(ReSort<R> s)
{
return (ReExpr<R>) Expr.create(this, Native.mkReAllchar(nCtx(), s.getNativeObject()));
}

/**
* Create a range expression.
*/
public final <R extends Sort> ReExpr<R> mkRange(Expr<SeqSort<CharSort>> lo, Expr<SeqSort<CharSort>> hi)
public final ReExpr<SeqSort<CharSort>> mkRange(Expr<SeqSort<CharSort>> lo, Expr<SeqSort<CharSort>> hi)
{
checkContextMatch(lo, hi);
return (ReExpr<R>) Expr.create(this, Native.mkReRange(nCtx(), lo.getNativeObject(), hi.getNativeObject()));
return (ReExpr<SeqSort<CharSort>>) Expr.create(this, Native.mkReRange(nCtx(), lo.getNativeObject(), hi.getNativeObject()));
}

/**
Expand Down

0 comments on commit b4ad747

Please sign in to comment.