我正在使用Z3 java API。我需要定义一组对元素e.x. {(e1,e2)...}我不知道如何使用Java API在z3中声明pair数据类型?
答案 0 :(得分:-1)
你可以使用一个构造函数mkpair和两个参数声明一对Z3 Java API作为一个自由数据类型,如下所示(未经测试的伪代码,假设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));