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(QuantifiedTypeExpression e) { TypeVariable newV = visitTypeVariable(e.variable); Expression newE = e.expression.visit(this); ExpressionList newT = e.triggers.visit(this); Expression result; if (!ReferenceEquals(e.variable, newV) || !ReferenceEquals(e.expression, newE) || !ReferenceEquals(e.triggers, newT)) { result = new BasicQuantifiedTypeExpression(e.quantifier, newV, newE, newT, e.attributes); } else { result = e; } return(result); }