Skip to content

Commit e9e3c41

Browse files
committed
Simple loop example for Hoare logic
1 parent 20ca775 commit e9e3c41

1 file changed

Lines changed: 2 additions & 0 deletions

File tree

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/* Proof for ⊢ {i = 0} while (i < 3) do (i := i + 1) {i = 3} */
2+
new Consequence(new Z3Rule(new Sequent([new Equal(new TermVar("i"), new TermInt(0))], [new LeqThan(new TermVar("i"), new TermInt(3))])), new Loop(new ConsequenceNoPost(new Z3Rule(new Sequent([new And(new LeqThan(new TermVar("i"), new TermInt(3)), new LessThan(new TermVar("i"), new TermInt(3)))], [new LeqThan(new AddTerms(new TermVar("i"), new TermInt(1)), new TermInt(3))])), new Assignment(new HoareTriple(new LeqThan(new AddTerms(new TermVar("i"), new TermInt(1)), new TermInt(3)), new CmdAssign(new TermVar("i"), new AddTerms(new TermVar("i"), new TermInt(1))), new LeqThan(new TermVar("i"), new TermInt(3)))), new HoareTriple(new And(new LeqThan(new TermVar("i"), new TermInt(3)), new LessThan(new TermVar("i"), new TermInt(3))), new CmdAssign(new TermVar("i"), new AddTerms(new TermVar("i"), new TermInt(1))), new LeqThan(new TermVar("i"), new TermInt(3)))), new HoareTriple(new LeqThan(new TermVar("i"), new TermInt(3)), new CmdWhile(new LessThan(new TermVar("i"), new TermInt(3)), new CmdAssign(new TermVar("i"), new AddTerms(new TermVar("i"), new TermInt(1)))), new And(new LeqThan(new TermVar("i"), new TermInt(3)), new Not(new LessThan(new TermVar("i"), new TermInt(3)))))), new Z3Rule(new Sequent([new And(new LeqThan(new TermVar("i"), new TermInt(3)), new Not(new LessThan(new TermVar("i"), new TermInt(3))))], [new Equal(new TermVar("i"), new TermInt(3))])), new HoareTriple(new Equal(new TermVar("i"), new TermInt(0)), new CmdWhile(new LessThan(new TermVar("i"), new TermInt(3)), new CmdAssign(new TermVar("i"), new AddTerms(new TermVar("i"), new TermInt(1)))), new Equal(new TermVar("i"), new TermInt(3))))

0 commit comments

Comments
 (0)