src/HOL/TLA/Memory/Memory.ML
changeset 5525 896f8234b864
parent 5184 9b8547a9496a
child 5755 22081de41254
equal deleted inserted replaced
5524:38f2a518a811 5525:896f8234b864
    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 *)