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)); }
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); }