我正在使用Z3 java API。我需要定义一组配对元素e.x。{(e1,e2)...}我不知道如何使用Java API在z3中声明配对数据类型?
发布于 2015-02-10 23:58:05
您可以使用Z3 Java API将一个对声明为一个自由数据类型,其中包含一个构造函数mkpair和两个参数,如下所示(假设ctx是一个z3.Context并具有一对整数,则为未经测试的伪代码):
Array<String> argnames = new Array<String>("first", "second");
Array<z3.Sort> argsorts = new Array<z3.Sort>(ctx.getIntSort(), ctx.getIntSort());
z3.Constructor mkpair = ctx.mkConstructor("mkpair", "ispair", argnames, argsorts, null);
z3.DatatypeSort pair = ctx.mkDatatypeSort("pair", new Array<z3.Constructor>(mkpair));对于集合,有一个内置类型,您可以通过它来构造
z3.SetSort setOfPairs = ctx.mkSetSort(pair);示例表达式mkpair(1,2)将由以下表达式构建
z3.Expr sample = ctx.mkApp(mkpair.ConstructorDecl(), ctx.mkInt(1), ctx.mkInt(2));https://stackoverflow.com/questions/28435115
复制相似问题