Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }