使用Z3 java API声明Pair数据类型

时间:2015-02-10 15:11:32

标签: java z3

我正在使用Z3 java API。我需要定义一组对元素e.x. {(e1,e2)...}我不知道如何使用Java API在z3中声明pair数据类型?

1 个答案:

答案 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));