예제 #1
0
 internal void AssertEq(ModelVariable modelVariable)
 {
     _model.Solver.Assert(_model.Context.MkEq(_valTaint, modelVariable._valTaint));
     _model.Solver.Assert(_model.Context.MkEq(_type, modelVariable._type));
     _model.Solver.Assert(_model.Context.MkEq(_numValue, modelVariable._numValue));
     _model.Solver.Assert(_model.Context.MkEq(_strValue, modelVariable._strValue));
 }
예제 #2
0
파일: Model.cs 프로젝트: martindevans/Yolol
        public ModelVariable GetOrCreateVariable(VariableName name)
        {
            if (!_variableMapping.TryGetValue(name, out var v))
            {
                var t = (DatatypeExpr)Context.MkConst($"typ:{name.Name}", _enumType);
                var n = (IntExpr)Context.MkConst($"num:{name.Name}", Context.IntSort);
                var s = (SeqExpr)Context.MkConst($"str:{name.Name}", Context.StringSort);
                var a = (BoolExpr)Context.MkConst($"inv:{name.Name}", Context.BoolSort);
                v = new ModelVariable(this, t, n, s, a);

                _variableMapping[name] = v;
            }

            return(v);
        }