Interface 如何将Z3中的Expr(Const number)转换为MPQ/MPFR中的对象

Interface 如何将Z3中的Expr(Const number)转换为MPQ/MPFR中的对象,interface,ocaml,z3,translate,mpfr,Interface,Ocaml,Z3,Translate,Mpfr,当我使用Z3 opt(Ocaml版本)来解决一些规划问题时,我从Z3得到如下结果: (+(/31.0 10.0)(*(to_real(-1))epsilon) 这个结果属于Z3.Expr类型。我想知道如何将这个结果(Z3.Expr)转换为另一个公共数据类型对象(例如,MPQ/MPFR) Z3 opt(Ocaml版本)是否为此提供了Ocaml接口 非常感谢。像(+/31.0 10.0)(*(to_real(-1))epsilon)这样的结果是复杂的。我不能在我的项目中使用它。我怎样才能得到它所代表

当我使用Z3 optOcaml版本)来解决一些规划问题时,我从Z3得到如下结果:

(+(/31.0 10.0)(*(to_real(-1))epsilon

这个结果属于Z3.Expr类型。我想知道如何将这个结果(Z3.Expr)转换为另一个公共数据类型对象(例如,MPQ/MPFR)

Z3 opt(Ocaml版本)是否为此提供了Ocaml接口


非常感谢。

像(+/31.0 10.0)(*(to_real(-1))epsilon)这样的结果是复杂的。我不能在我的项目中使用它。我怎样才能得到它所代表的有理数?你已经看过了吗?我不确定您到底想做什么,因为我缺乏领域知识,但您可能希望搜索以
Expr.Expr
为参数的函数,并查看是否有符合您需要的函数。我在文件中尝试了几个接口。但它似乎不起作用。字符串(+/31.0 10.0)(*(to_real(-1))epsilon))的表达式可以转换为浮点数,如3.0999…5。也可以将其截断为有理数(如MPQ)。但是我如何使用Z3OPT提供的ocaml接口来处理这个问题呢?谢谢。如果你使用Z3绑定到另一种语言,你会怎么做?也许我们可以将其映射到OCaml,或者您已经知道缺少相应的函数了吗?Z3提供了OCaml接口。谢谢尼古拉·乔纳。我从这里找到了答案