summaryrefslogtreecommitdiff
path: root/Source/Core/AbsyCmd.cs
diff options
context:
space:
mode:
authorGravatar wuestholz <unknown>2014-11-26 11:15:24 +0100
committerGravatar wuestholz <unknown>2014-11-26 11:15:24 +0100
commit2979a82b64ffddf7a3340cc494ff755766996d18 (patch)
tree740ba92e89042c94f18ed8bd7ffe2f53a0d4d5ae /Source/Core/AbsyCmd.cs
parent3cc8bed92e80e388961042ee91128e9e8fff4559 (diff)
Added todos.
Diffstat (limited to 'Source/Core/AbsyCmd.cs')
-rw-r--r--Source/Core/AbsyCmd.cs9
1 files changed, 6 insertions, 3 deletions
diff --git a/Source/Core/AbsyCmd.cs b/Source/Core/AbsyCmd.cs
index 046d97b9..92495f9d 100644
--- a/Source/Core/AbsyCmd.cs
+++ b/Source/Core/AbsyCmd.cs
@@ -2565,14 +2565,17 @@ namespace Microsoft.Boogie {
return oldProcedure.Modifies.Except(Proc.Modifies, comparer).Select(e => new IdentifierExpr(Token.NoToken, e.Decl));
}
- public Expr Postcondition(Procedure procedure, List<Expr> modifies, Dictionary<Variable, Expr> oldSubst, Program program)
+ public Expr Postcondition(Procedure procedure, List<Expr> modifies, Dictionary<Variable, Expr> oldSubst, Program program, Func<Expr, Expr> extract)
{
- Contract.Requires(calleeSubstitution != null && calleeSubstitutionOld != null && modifies != null && oldSubst != null && program != null);
+ Contract.Requires(calleeSubstitution != null && calleeSubstitutionOld != null && modifies != null && oldSubst != null && program != null && extract != null);
Substitution substOldCombined = v => { Expr s; if (oldSubst.TryGetValue(v, out s)) { return s; } return calleeSubstitutionOld(v); };
var clauses = procedure.Ensures.Select(e => Substituter.FunctionCallReresolvingApplyReplacingOldExprs(calleeSubstitution, substOldCombined, e.Condition, program)).Concat(modifies);
- return Conjunction(clauses);
+ var conj = Conjunction(clauses);
+ // TODO(wuestholz): Try extracting a function for each clause:
+ // var conj = Conjunction(clauses.Select(c => extract(c)));
+ return conj != null ? extract(conj) : conj;
}
public Expr CheckedPrecondition(Procedure procedure, Program program)