在.Net API中将字符串转换为Z3.expr

时间:2016-08-23 04:32:02

标签: c# z3

我有一个字符串变量,我需要将其转换为Expr类型。我正在使用Z3 .Net API。这可能吗?

修改

List<Node<string>> lChildren = new List<Node<string>>(); 
//...   
switch (pNode.Data)
{ 
    //...
    case ">=": 
    { 
        lResult = lZ3Solver.GreaterOrEqualOperator(
            lChildren[0].Data, 
            int.Parse(lChildren[1].Data)
        ); 

GreaterOrEqualOperator的第一个参数是Expr类型。在这种情况下,我需要将当前字符串类型转换为Expr类型。

1 个答案:

答案 0 :(得分:0)

名称lChildren[0]的变量(常量函数)可以通过调用ctx.MkConst(lChildren[0], sort)来创建,其中ctxContextsort是排序/变量的类型,例如,对于整数,它可以是ctx.IntSort

请注意,Z3允许两个同名的变量,即第二次使用相同的名称/排序调用ctx.MkConst,将创建一个与第一个不同的新变量。如果在比构造时间晚的时间需要相同的变量,则需要将其保存在别处,例如,在允许快速查找的散列表(或字典)中。