将c#语句转换为z3格式

时间:2014-10-20 13:30:43

标签: c# z3

我正在用c#编写代码。

在代码中有各种IF条件。我想将这些条件传递给z3约束求解器并检查其可满足性并获得使其可满足的值。 (我在代码中进一步使用了这些值)

如果我在代码中采用IF条件并在z3语法中编写其等效的assert,那么它可以正常工作。但我想概括一下在c#中给出一个语句的意思我希望用z3语法生成相应的语句。

无论如何我能做到吗?

1 个答案:

答案 0 :(得分:0)

C#语言没有提供必要的挂钩,因此您可以在运行时检测是否存在if语句。您无法检测到的内容无法告诉Z3。

您可以使用Roslyn将包含C#代码的字符串解析为AST并将其转换为Z3。对于简单的案例来说,这可能并不难。这打破了循环控制流程。你可以使它适用于常见的非循环结构,如变量,运算符,ifswitch