【发布时间】:2022-01-18 18:56:00
【问题描述】:
不幸的是,我无法在此处发布整个代码,因为我正在使用基于 Java 构建的 DSL 进行编程(建模)。不过,这个问题并不一定要求:
我正在尝试创建更长的 Or-Expression,例如:p == 1 或 p==2 或 p==3 等等。 我有一个 BoolExpr 列表,其中包含那些 EQ 表达式(即 p==1 等)的列表。
在 python 中,我现在可以将这个表达式列表提供给 API 的 mkOr 方法,就是这样。我下面的代码 sn-p 虽然抱怨列表不是 BoolExpr 的子类型。
list<BoolExpr> eqExprList = new arraylist<BoolExpr>;
// populate this list with p==1, p==2 etc.
MyContext.mkOr(eqExrList); // this produces the error
所以问题基本上是,它是否应该正常(在真正的 java 中)这样工作,或者我是否误解了 API 文档:https://z3prover.github.io/api/html/classcom_1_1microsoft_1_1z3_1_1_context.html#aea714fc46f4c625ecc15397522099330
【问题讨论】: