private Expression sentence(Expression expression) { Expression e = expression; while (e.freeVariables.Count > 0) { e = new BasicQuantifiedExpression(procedure, BasicForall.get, e.freeVariables.Last(), e, new[] { new Expression[0] }, ""); } return(e); }
internal Expression makeSentence(Expression e) { var r = e; while (r.freeVariables.Any()) { r = new BasicQuantifiedExpression(scope, BasicForall.get, r.freeVariables.First(), r, new List <Expression[]>(), null); } while (r.freeTypeVariables.Any()) { r = new BasicQuantifiedTypeExpression(BasicTypeForall.get, r.freeTypeVariables.First(), r, new Expression[0], null); } return(r); }
public virtual Expression visit(QuantifiedExpression e) { BoundVariable newV = visitBoundVariable(e.variable); Expression newE = e.expression.visit(this); var newT = (from trs in e.triggers select trs.visit(this)).ToArray(); e.type.visit(this); Expression result; if (!ReferenceEquals(e.variable, newV) || !ReferenceEquals(e.expression, newE) || (e.triggers.Count != newT.Count() || Enumerable.Range(0, e.triggers.Count).Any(i => !ReferenceEquals(e.triggers[i], newT[i])))) { result = new BasicQuantifiedExpression(procedure, e.quantifier, newV, newE, newT, e.attributes); } else { result = e; } return(result); }