summaryrefslogtreecommitdiff
path: root/Source/VCGeneration
diff options
context:
space:
mode:
authorGravatar wuestholz <unknown>2014-10-16 10:11:55 +0200
committerGravatar wuestholz <unknown>2014-10-16 10:11:55 +0200
commit8ebf729b4e65e13a427345b01e45f03da29725d1 (patch)
treef519163beafeb9a3b1e7d13292daafcd5c78c2a1 /Source/VCGeneration
parent4a722d4576f4afdb578552a48da948d1010733e6 (diff)
Worked on the verification result caching.
Diffstat (limited to 'Source/VCGeneration')
-rw-r--r--Source/VCGeneration/ConditionGeneration.cs17
1 files changed, 15 insertions, 2 deletions
diff --git a/Source/VCGeneration/ConditionGeneration.cs b/Source/VCGeneration/ConditionGeneration.cs
index 859cbae7..36f38ab8 100644
--- a/Source/VCGeneration/ConditionGeneration.cs
+++ b/Source/VCGeneration/ConditionGeneration.cs
@@ -1516,7 +1516,16 @@ namespace VC {
ac.IncarnationMap[incarnation] = identExpr;
passiveCmds.Add(new AssumeCmd(Token.NoToken, LiteralExpr.Eq(identExpr, copy)));
copy = identExpr;
- var expr = LiteralExpr.Imp(currentImplementation.ConjunctionOfInjectedAssumptionVariables(incarnationMap), copy);
+ var assmVars = currentImplementation.ConjunctionOfInjectedAssumptionVariables(incarnationMap);
+ Expr expr = identExpr;
+ if (assmVars != Expr.True)
+ {
+ expr = LiteralExpr.Imp(assmVars, expr);
+ }
+ else
+ {
+ // TODO(wuestholz): Maybe we could drop the assertion in this case.
+ }
passiveCmds.Add(new AssumeCmd(Token.NoToken, expr));
}
else if (currentImplementation != null
@@ -1559,7 +1568,11 @@ namespace VC {
&& currentImplementation.InjectedAssumptionVariables != null
&& currentImplementation.InjectedAssumptionVariables.Any())
{
- copy = LiteralExpr.Imp(currentImplementation.ConjunctionOfInjectedAssumptionVariables(incarnationMap), copy);
+ var assmVars = currentImplementation.ConjunctionOfInjectedAssumptionVariables(incarnationMap);
+ if (assmVars != Expr.True)
+ {
+ copy = LiteralExpr.Imp(assmVars, copy);
+ }
dropCmd = true;
}
pc.Expr = copy;