Closed lohner closed 7 years ago
Thanks for your comment. One question: Is your last step correct? Or can you explain why it shouldn't result into →₁ 〈skip, σ₄〉
?
The current implementation outputs the following
〈{var a = 0; a := 1; a := 2; c := 4}, σ₀〉
→₁ 〈{var a = 5; skip; a := 2; c := 4}, σ₀〉
→₁ 〈{var a = 5; a := 2; c := 4}, σ₀〉
→₁ 〈{var a = 5; skip; c := 4}, σ₀〉
→₁ 〈{var a = 5; c := 4}, σ₀〉
→₁ 〈{var a = 0; skip}, σ₂〉
→₁ 〈skip, σ₂〉
Is this the correct behaviour that you expected?
This a bigger problem than I originally thought. It's easy to comprehend but hard to implement (much harder than the Seq rule).
For the program
{var a := 0; a := 1; a := 2}
, the execution trace looks like this at the moment:However rule Block1 suggests that it shoud read like this:
Note the 𝒩^{-1} in the rule.