Пример #1
0
        public static IEnumerable <ProofState> EvalPredicateStmt(PredicateStmt predicate, ProofState state)
        {
            Contract.Requires <ArgumentNullException>(predicate != null, "predicate");
            foreach (var result in EvalTacnyExpression(state, predicate.Expr))
            {
                var resultExpression = result is IVariable?Util.VariableToExpression(result as IVariable) : result as Expression;

                PredicateStmt newPredicate;

                var tok = predicate.Tok.Copy();
                tok.line = TACNY_CODE_TOK_LINE;

                var endTok = predicate.EndTok.Copy();
                endTok.line = TACNY_CODE_TOK_LINE;

                if (predicate is AssertStmt)
                {
                    newPredicate = new AssertStmt(tok, endTok, resultExpression, predicate.Attributes);
                }
                else
                {
                    newPredicate = new AssumeStmt(tok, endTok, resultExpression, predicate.Attributes);
                }
                var copy = state.Copy();
                copy.AddStatement(newPredicate);
                copy.IfVerify = true;
                yield return(copy);
            }
        }
Пример #2
0
        public static IEnumerable <ProofState> EvalPredicateStmt(PredicateStmt predicate, ProofState state)
        {
            Contract.Requires <ArgumentNullException>(predicate != null, "predicate");

            var newPredicate = SimpExpr.SimpTacticExpr(state, predicate);
            var copy         = state.Copy();

            copy.AddStatement(newPredicate);
            copy.NeedVerify = true;
            yield return(copy);
        }
Пример #3
0
        private static IEnumerable <ProofState> ResolvePredicateStmt(PredicateStmt predicate, ProofState state)
        {
            Contract.Requires <ArgumentNullException>(predicate != null, "predicate");
            foreach (var result in EvaluateTacnyExpression(state, predicate.Expr))
            {
                var resultExpression = result is IVariable?Util.VariableToExpression(result as IVariable) : result as Expression;

                PredicateStmt newPredicate;
                if (predicate is AssertStmt)
                {
                    newPredicate = new AssertStmt(predicate.Tok, predicate.EndTok, resultExpression, predicate.Attributes);
                }
                else
                {
                    newPredicate = new AssumeStmt(predicate.Tok, predicate.EndTok, resultExpression, predicate.Attributes);
                }
                var copy = state.Copy();
                copy.AddStatement(newPredicate);
                yield return(copy);
            }
        }
Пример #4
0
 private static IEnumerable<ProofState> ResolvePredicateStmt(PredicateStmt predicate, ProofState state) {
   Contract.Requires<ArgumentNullException>(predicate != null, "predicate");
   foreach (var result in EvaluateTacnyExpression(state, predicate.Expr)) {
     var resultExpression = result is IVariable ? Util.VariableToExpression(result as IVariable) : result as Expression;
     PredicateStmt newPredicate;
     if (predicate is AssertStmt) {
       newPredicate = new AssertStmt(predicate.Tok, predicate.EndTok, resultExpression, predicate.Attributes);
     } else {
       newPredicate = new AssumeStmt(predicate.Tok, predicate.EndTok, resultExpression, predicate.Attributes);
     }
     var copy = state.Copy();
     copy.AddStatement(newPredicate);
     yield return copy;
   }
 }
Пример #5
0
    public static IEnumerable<ProofState> EvalPredicateStmt(PredicateStmt predicate, ProofState state) {
      Contract.Requires<ArgumentNullException>(predicate != null, "predicate");
      foreach(var result in EvalTacnyExpression(state, predicate.Expr)) {
        var resultExpression = result is IVariable ? Util.VariableToExpression(result as IVariable) : result as Expression;
        PredicateStmt newPredicate;

        var tok = predicate.Tok.Copy();
        tok.line = TACNY_CODE_TOK_LINE;

        var endTok = predicate.EndTok.Copy();
        endTok.line = TACNY_CODE_TOK_LINE;

        if(predicate is AssertStmt) {
          newPredicate = new AssertStmt(tok, endTok, resultExpression, predicate.Attributes);
        } else {
          newPredicate = new AssumeStmt(tok, endTok, resultExpression, predicate.Attributes);
        }
        var copy = state.Copy();
        copy.AddStatement(newPredicate);
        copy.IfVerify = true;
        yield return copy;
      }
    }