summaryrefslogtreecommitdiff
path: root/Source/VCGeneration/StratifiedVC.cs
diff options
context:
space:
mode:
authorGravatar akashlal <unknown>2014-09-28 22:44:26 +0530
committerGravatar akashlal <unknown>2014-09-28 22:44:26 +0530
commitc70a5e1956554c40f35f0f5a5d5f02f456c00ce9 (patch)
tree2500fa688a77bebad813d87ac9c40e03524f3603 /Source/VCGeneration/StratifiedVC.cs
parent13155b8edde00bc6312dfd3a14bc6bb519ae40c7 (diff)
Fix to VC gen
Diffstat (limited to 'Source/VCGeneration/StratifiedVC.cs')
-rw-r--r--Source/VCGeneration/StratifiedVC.cs6
1 files changed, 3 insertions, 3 deletions
diff --git a/Source/VCGeneration/StratifiedVC.cs b/Source/VCGeneration/StratifiedVC.cs
index 3dddfb5d..fccb85cc 100644
--- a/Source/VCGeneration/StratifiedVC.cs
+++ b/Source/VCGeneration/StratifiedVC.cs
@@ -343,8 +343,7 @@ namespace VC {
}
c = gen.AndSimp(c, expr);
- }
- vcexpr = gen.AndSimp(vcexpr, gen.Eq(blockToControlVar[b], c));
+ }
// block implies a disjunction of successors
Debug.Assert(!(b.TransferCmd is ReturnExprCmd), "Not supported");
@@ -354,12 +353,13 @@ namespace VC {
VCExpr succ = VCExpressionGenerator.False;
foreach (var sb in gc.labelTargets)
succ = gen.OrSimp(succ, blockToControlVar[sb]);
- vcexpr = gen.AndSimp(vcexpr, gen.Implies(blockToControlVar[b], succ));
+ c = gen.AndSimp(c, succ);
}
else
{
// nothing to do
}
+ vcexpr = gen.AndSimp(vcexpr, gen.Eq(blockToControlVar[b], c));
}
// assert start block
vcexpr = gen.AndSimp(vcexpr, blockToControlVar[impl.Blocks[0]]);