Proof of BTL Block Simulation modulo Gluing (Symbolic) Invariants.
Simulation diagram (for the "main" lemma
iblock_step_simulation)
(0) = Initial symbolic states: sis_source_correct & sis_target_correct
(1) = Source symbolic execution: sexec_correct
(2) = Symbolic simulation test
(3) = Coming back to concrete states: sexec_exact.
(4) = final_step_simulation + sfv_equiv
stk0 stk0 stk1 stk1
f0 f0 f1 f1
. . . . . . . . . . . . . . . . . . . . .
. .
. .
. (0) (0) .
cs0 +++++++++ ss0 ss1 ++++++++++ cs1
| | | |
| | | |
| | | |
| (1) | | (3) |
| | | |
| | | |
| | | |
| | | |
V V (2) V V
cf0' ++++++++ sf0 ==================== sf1' ++++++++ cf1'
| |
| |
| (4) |
V V
cs0' . . . . . . . . . . . . . . . . . . . . . . . . cs1'
Legend:
- cs* -> concrete states
- cf* -> concrete final states (i.e. concrete state + final value)
- ss* -> symbolic states
- sf* -> symbolic final states (i.e. symbolic state + symbolic final value)
- *0 -> Source initial state
- *1 -> Target initial state
- *0' -> Source final state
- *1' -> Target final state
- "...." is match_invs / match_states
- "++++" is sem_sistates (+ sfv_equiv for final states)
- "====" is match_sexec_si
Remark:
- cs0 = <sp,rs0,m0>
- tr_sis is used to define ssS and ssI using tr_sis_elim_match_si
and to deduce properties on the concrete states from match_sexec_si
using tr_sis_intro_match_si
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
).
|}.
).