替换 Z3 表达式中的操作

Substituting an operation in Z3 expression

我有一个 (> Expr1 Expr2) 形式的 Z3 公式,我想将其更改为 (< Expr1 Expr2),同时保留 Expr1Expr2 的结构。据我了解, 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"