|
| 1 | +======================================================================== |
| 2 | +Tactic: ``seq``` |
| 3 | +======================================================================== |
| 4 | + |
| 5 | +The ``seq`` tactic applies to program-logic goals by splitting the |
| 6 | +program(s) under consideration into two consecutive parts. |
| 7 | + |
| 8 | +Applying ``seq`` allows one to decompose such a goal into two separate |
| 9 | +program-logic obligations by splitting the program(s) at a chosen point. |
| 10 | +The first obligation establishes that the initial precondition ensures |
| 11 | +some intermediate assertion after execution of the first part. The second |
| 12 | +obligation then shows that, assuming this intermediate assertion, execution |
| 13 | +of the second part entails the desired postcondition. |
| 14 | + |
| 15 | +The ``seq`` tactic requires the intermediate assertion to be supplied by |
| 16 | +the user, it is not inferred automatically. |
| 17 | + |
| 18 | +------------------------------------------------------------------------ |
| 19 | +Variant: ``seq {codepos} : {formula}`` (HL) |
| 20 | +------------------------------------------------------------------------ |
| 21 | + |
| 22 | +------------------------------------------------------------------------ |
| 23 | +Variant: ``seq {codepos} {codepos} : {formula}`` (pRHL) |
| 24 | +------------------------------------------------------------------------ |
| 25 | + |
| 26 | +------------------------------------------------------------------------ |
| 27 | +Variant: ``seq`` (pHL) |
| 28 | +------------------------------------------------------------------------ |
| 29 | + |
| 30 | +------------------------------------------------------------------------ |
| 31 | +Variant: ``seq {codepos} : {formula}`` (eHL) |
| 32 | +------------------------------------------------------------------------ |
0 commit comments