替换 Z3 表达式中的操作
Substituting an operation in Z3 expression
我有一个 (> Expr1 Expr2)
形式的 Z3 公式,我想将其更改为 (< Expr1 Expr2)
,同时保留 Expr1
和 Expr2
的结构。据我了解, substitute
有助于将变量替换为其他变量;但我不确定我应该给出哪些参数来更改操作员,如果可能的话。 substitute
或其他方法可行吗?
我正在使用 OCaml 绑定。
提前感谢您的回答:)
您可以只创建一个新表达式,例如
let ult_of_ugt ctxt exp = match Expr.get_args exp with
| [x; y] -> BitVector.mk_ult ctxt x y
| _ -> invalid_arg "expected two operands"
我有一个 (> Expr1 Expr2)
形式的 Z3 公式,我想将其更改为 (< Expr1 Expr2)
,同时保留 Expr1
和 Expr2
的结构。据我了解, substitute
有助于将变量替换为其他变量;但我不确定我应该给出哪些参数来更改操作员,如果可能的话。 substitute
或其他方法可行吗?
我正在使用 OCaml 绑定。
提前感谢您的回答:)
您可以只创建一个新表达式,例如
let ult_of_ugt ctxt exp = match Expr.get_args exp with
| [x; y] -> BitVector.mk_ult ctxt x y
| _ -> invalid_arg "expected two operands"