Z3在执行期间添加新变量

Z3在执行期间添加新变量,z3,Z3,我正在尝试向Z3添加一个新功能。 此功能要求我在执行期间和预处理之后添加新的松弛变量。 我找不到一个合适的方法来解决这个问题,我担心试图通过添加一个新的列来强制它会“破坏”解算器 有没有一种常见的推荐方法 谢谢, Omer您可以在文件src/smt/theory\u arith\u int.h中找到一个示例,方法:mk\u gomory\u cut。 在该方法的最后,将创建一个新的多项式约束,并将其存储在变量bound中。然后,使用以下代码“内部化”约束: literal l =

我正在尝试向Z3添加一个新功能。 此功能要求我在执行期间和预处理之后添加新的松弛变量。 我找不到一个合适的方法来解决这个问题,我担心试图通过添加一个新的列来强制它会“破坏”解算器

有没有一种常见的推荐方法

谢谢,
Omer

您可以在文件
src/smt/theory\u arith\u int.h
中找到一个示例,方法:
mk\u gomory\u cut
。 在该方法的最后,将创建一个新的多项式约束,并将其存储在变量
bound
中。然后,使用以下代码“内部化”约束:

    literal l     = null_literal;
    context & ctx = get_context();
    ctx.internalize(bound, true);
    l = ctx.get_literal(bound);
方法
内部化
将回调理论,并创建一个新的松弛。 备注:
internalize
方法假定
bound
中存储的多项式约束为简化形式