equal
deleted
inserted
replaced
24 (* -------------------- Proofs ---------------------------------------------- *) |
24 (* -------------------- Proofs ---------------------------------------------- *) |
25 |
25 |
26 (* The reliable memory is an implementation of the unreliable one *) |
26 (* The reliable memory is an implementation of the unreliable one *) |
27 qed_goal "ReliableImplementsUnReliable" Memory.thy |
27 qed_goal "ReliableImplementsUnReliable" Memory.thy |
28 "IRSpec ch mm rs .-> IUSpec ch mm rs" |
28 "IRSpec ch mm rs .-> IUSpec ch mm rs" |
29 (fn _ => [auto_tac (temp_css addsimps2 ([square_def,UNext_def] @ |
29 (K [force_tac (temp_css addsimps2 ([square_def,UNext_def] @ |
30 RM_temp_defs @ UM_temp_defs) addSEs2 [STL4E])]); |
30 RM_temp_defs @ UM_temp_defs) addSEs2 [STL4E]) 1]); |
31 |
31 |
32 (* The memory spec implies the memory invariant *) |
32 (* The memory spec implies the memory invariant *) |
33 qed_goal "MemoryInvariant" Memory.thy |
33 qed_goal "MemoryInvariant" Memory.thy |
34 "(MSpec ch mm rs l) .-> []($(MemInv mm l))" |
34 "(MSpec ch mm rs l) .-> []($(MemInv mm l))" |
35 (fn _ => [ auto_inv_tac (simpset() addsimps RM_temp_defs @ |
35 (fn _ => [ auto_inv_tac (simpset() addsimps RM_temp_defs @ |
127 |
127 |
128 qed_goal "RWRNext_enabled" Memory.thy |
128 qed_goal "RWRNext_enabled" Memory.thy |
129 "($(rs@p) .= #NotAResult) .& (RALL l. $(MemInv mm l)) \ |
129 "($(rs@p) .= #NotAResult) .& (RALL l. $(MemInv mm l)) \ |
130 \ .& $(Enabled (Read ch mm rs p .| (REX l. Write ch mm rs p l))) \ |
130 \ .& $(Enabled (Read ch mm rs p .| (REX l. Write ch mm rs p l))) \ |
131 \ .-> $(Enabled (<RNext ch mm rs p>_<rtrner ch @ p, rs@p>))" |
131 \ .-> $(Enabled (<RNext ch mm rs p>_<rtrner ch @ p, rs@p>))" |
132 (fn _ => [auto_tac |
132 (K [force_tac (action_css addsimps2 [RNext_def,angle_def] |
133 (action_css addsimps2 [RNext_def,angle_def] |
133 addSEs2 [enabled_mono2] |
134 addSEs2 [enabled_mono2] |
134 addEs2[action_conjimpE ReadResult,action_impE WriteResult]) 1]); |
135 addEs2[action_conjimpE ReadResult,action_impE WriteResult]) |
|
136 ]); |
|
137 |
135 |
138 |
136 |
139 (* Combine previous lemmas: the memory can make a visible step if there is an |
137 (* Combine previous lemmas: the memory can make a visible step if there is an |
140 outstanding call for which no result has been produced. |
138 outstanding call for which no result has been produced. |
141 *) |
139 *) |