src/HOL/TLA/Memory/MIsafe.ML
author wenzelm
Mon, 08 Feb 1999 13:02:56 +0100
changeset 6255 db63752140c7
parent 4089 96fba19bcbe2
child 9517 f58863b1406a
permissions -rw-r--r--
updated (Stephan Merz);
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     1
(* 
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     2
    File:        MIsafe.ML
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     3
    Author:      Stephan Merz
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     4
    Copyright:   1997 University of Munich
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     5
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     6
    RPC-Memory example: Lower-level lemmas about memory implementation (safety)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     7
*)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     8
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     9
(* ========================= Lemmas about values ========================= *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    10
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    11
(* RPCFailure notin MemVals U {OK,BadArg} *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    12
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    13
qed_goalw "MVOKBAnotRF" MemoryImplementation.thy [MVOKBA_def]
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    14
   "!!x. MVOKBA x ==> x ~= RPCFailure"
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    15
   (fn _ => [ Auto_tac ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    16
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    17
(* NotAResult notin MemVals U {OK,BadArg,RPCFailure} *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    18
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    19
qed_goalw "MVOKBARFnotNR" MemoryImplementation.thy [MVOKBARF_def]
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    20
   "!!x. MVOKBARF x ==> x ~= NotAResult"
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    21
   (fn _ => [ Auto_tac ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    22
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    23
(* ========================= Si's are mutually exclusive ==================================== *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    24
(* Si and Sj are mutually exclusive for i # j. This helps to simplify the big
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    25
   conditional in the definition of resbar when doing the step-simulation proof.
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    26
   We prove a weaker result, which suffices for our purposes: 
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    27
   Si implies (not Sj), for j<i.
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    28
*)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    29
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    30
(* --- not used ---
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    31
qed_goal "S1_excl" MemoryImplementation.thy 
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    32
     "|- S1 rmhist p --> S1 rmhist p & ~S2 rmhist p & ~S3 rmhist p & \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    33
\                        ~S4 rmhist p & ~S5 rmhist p & ~S6 rmhist p"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    34
   (fn _ => [ auto_tac (MI_css addsimps2 [S_def, S1_def, S2_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    35
                                          S3_def, S4_def, S5_def, S6_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    36
            ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    37
*)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    38
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    39
qed_goal "S2_excl" MemoryImplementation.thy 
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    40
     "|- S2 rmhist p --> S2 rmhist p & ~S1 rmhist p"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    41
   (fn _ => [ auto_tac (MI_css addsimps2 [S_def, S1_def, S2_def]) ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    42
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    43
qed_goal "S3_excl" MemoryImplementation.thy 
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    44
     "|- S3 rmhist p --> S3 rmhist p & ~S1 rmhist p & ~S2 rmhist p"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    45
   (fn _ => [ auto_tac (MI_css addsimps2 [S_def, S1_def, S2_def, S3_def]) ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    46
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    47
qed_goal "S4_excl" MemoryImplementation.thy 
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    48
     "|- S4 rmhist p --> S4 rmhist p & ~S1 rmhist p & ~S2 rmhist p & ~S3 rmhist p"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    49
   (fn _ => [ auto_tac (MI_css addsimps2 [S_def,S1_def,S2_def,S3_def,S4_def]) ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    50
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    51
qed_goal "S5_excl" MemoryImplementation.thy 
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    52
     "|- S5 rmhist p --> S5 rmhist p & ~S1 rmhist p & ~S2 rmhist p \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    53
\                        & ~S3 rmhist p & ~S4 rmhist p"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    54
   (fn _ => [ auto_tac (MI_css addsimps2 [S_def,S1_def,S2_def,S3_def,S4_def,S5_def]) ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    55
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    56
qed_goal "S6_excl" MemoryImplementation.thy 
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    57
     "|- S6 rmhist p --> S6 rmhist p & ~S1 rmhist p & ~S2 rmhist p  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    58
\                        & ~S3 rmhist p & ~S4 rmhist p & ~S5 rmhist p"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    59
   (fn _ => [ auto_tac (MI_css addsimps2 [S_def,S1_def,S2_def,S3_def,S4_def,S5_def,S6_def]) ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    60
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    61
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    62
(* ==================== Lemmas about the environment ============================== *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    63
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    64
qed_goal "Envbusy" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    65
   "|- $(Calling memCh p) --> ~ENext p"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    66
   (fn _ => [ auto_tac (MI_css addsimps2 [ENext_def,Call_def]) ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    67
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    68
(* ==================== Lemmas about the implementation's states ==================== *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    69
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    70
(* The following series of lemmas are used in establishing the implementation's
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    71
   next-state relation (Step 1.2 of the proof in the paper). For each state Si, we
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    72
   determine which component actions are possible and what state they result in.
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    73
*)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    74
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    75
(* ------------------------------ State S1 ---------------------------------------- *) 
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    76
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    77
qed_goal "S1Env" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    78
   "|- ENext p & $(S1 rmhist p) & unchanged (c p, r p, m p, rmhist!p) --> (S2 rmhist p)$"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    79
   (fn _ => [force_tac (MI_css
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    80
		        addsimps2 [ENext_def,Call_def,c_def,r_def,m_def,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    81
			   	   caller_def,rtrner_def,MVNROKBA_def,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    82
                                   S_def,S1_def,S2_def,Calling_def]) 1
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    83
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    84
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    85
qed_goal "S1ClerkUnch" MemoryImplementation.thy 
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    86
   "|- [MClkNext memCh crCh cst p]_(c p) & $(S1 rmhist p) --> unchanged (c p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    87
   (fn _ => [auto_tac (MI_fast_css addSDs2 [MClkidle] addsimps2 [S_def,S1_def]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    88
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    89
qed_goal "S1RPCUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    90
   "|- [RPCNext crCh rmCh rst p]_(r p) & $(S1 rmhist p) --> unchanged (r p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    91
   (fn _ => [auto_tac (MI_fast_css addSDs2 [RPCidle] addsimps2 [S_def,S1_def]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    92
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    93
qed_goal "S1MemUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    94
   "|- [RNext rmCh mm ires p]_(m p) & $(S1 rmhist p) --> unchanged (m p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    95
   (fn _ => [auto_tac (MI_fast_css addSDs2 [Memoryidle] addsimps2 [S_def,S1_def]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    96
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    97
qed_goal "S1Hist" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    98
   "|- [HNext rmhist p]_(c p,r p,m p,rmhist!p) & $(S1 rmhist p) --> unchanged (rmhist!p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
    99
   (fn _ => [action_simp_tac (simpset() addsimps [HNext_def, S_def, S1_def, MemReturn_def, 
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   100
                                                  RPCFail_def,MClkReply_def,Return_def])
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   101
                             [] [squareE] 1
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   102
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   103
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   104
(* ------------------------------ State S2 ---------------------------------------- *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   105
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   106
qed_goal "S2EnvUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   107
   "|- [ENext p]_(e p) & $(S2 rmhist p) --> unchanged (e p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   108
   (fn _ => [auto_tac (MI_css addSDs2 [Envbusy] addsimps2 [S_def,S2_def]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   109
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   110
qed_goal "S2Clerk" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   111
   "|- MClkNext memCh crCh cst p & $(S2 rmhist p) --> MClkFwd memCh crCh cst p"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   112
   (fn _ => [auto_tac (MI_css addsimps2 [MClkNext_def,MClkRetry_def,MClkReply_def,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   113
					 S_def,S2_def])
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   114
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   115
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   116
qed_goal "S2Forward" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   117
   "|- $(S2 rmhist p) & MClkFwd memCh crCh cst p & unchanged (e p, r p, m p, rmhist!p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   118
\      --> (S3 rmhist p)$"
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
   119
   (fn _ => [action_simp_tac (simpset() addsimps
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   120
                [MClkFwd_def,Call_def,e_def,r_def,m_def,caller_def,rtrner_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   121
                 S_def,S2_def,S3_def,Calling_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   122
               [] [] 1
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   123
	     ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   124
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   125
qed_goal "S2RPCUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   126
   "|- [RPCNext crCh rmCh rst p]_(r p) & $(S2 rmhist p) --> unchanged (r p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   127
   (fn _ => [auto_tac (MI_css addsimps2 [S_def,S2_def] addSDs2 [RPCidle]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   128
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   129
qed_goal "S2MemUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   130
   "|- [RNext rmCh mm ires p]_(m p) & $(S2 rmhist p) --> unchanged (m p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   131
   (fn _ => [auto_tac (MI_css addsimps2 [S_def,S2_def] addSDs2 [Memoryidle]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   132
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   133
qed_goal "S2Hist" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   134
   "|- [HNext rmhist p]_(c p,r p,m p,rmhist!p) & $(S2 rmhist p) --> unchanged (rmhist!p)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   135
   (fn _ => [auto_tac (MI_fast_css
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   136
		       addsimps2 [HNext_def,MemReturn_def,
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   137
				  RPCFail_def,MClkReply_def,Return_def,S_def,S2_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   138
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   139
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   140
(* ------------------------------ State S3 ---------------------------------------- *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   141
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   142
qed_goal "S3EnvUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   143
   "|- [ENext p]_(e p) & $(S3 rmhist p) --> unchanged (e p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   144
   (fn _ => [auto_tac (MI_css addSDs2 [Envbusy] addsimps2 [S_def,S3_def]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   145
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   146
qed_goal "S3ClerkUnch" MemoryImplementation.thy 
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   147
   "|- [MClkNext memCh crCh cst p]_(c p) & $(S3 rmhist p) --> unchanged (c p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   148
   (fn _ => [auto_tac (MI_css addSDs2 [MClkbusy] addsimps2 [square_def,S_def,S3_def]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   149
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   150
qed_goal "S3LegalRcvArg" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   151
   "|- S3 rmhist p --> IsLegalRcvArg<arg<crCh!p>>"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   152
   (fn _ => [auto_tac (MI_css addsimps2 [IsLegalRcvArg_def,MClkRelayArg_def,S_def,S3_def]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   153
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   154
qed_goal "S3RPC" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   155
   "|- RPCNext crCh rmCh rst p & $(S3 rmhist p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   156
\      --> RPCFwd crCh rmCh rst p | RPCFail crCh rmCh rst p"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   157
   (fn _ => [Clarsimp_tac 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   158
             forward_tac [action_use S3LegalRcvArg] 1,
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   159
	     auto_tac (MI_css addsimps2 [RPCNext_def,RPCReject_def,RPCReply_def,S_def,S3_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   160
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   161
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   162
qed_goal "S3Forward" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   163
   "|- RPCFwd crCh rmCh rst p & HNext rmhist p & $(S3 rmhist p) & unchanged (e p, c p, m p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   164
\      --> (S4 rmhist p)$ & unchanged (rmhist!p)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   165
   (fn _ => [action_simp_tac 
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
   166
               (simpset() addsimps [RPCFwd_def,HNext_def,MemReturn_def,RPCFail_def,MClkReply_def,
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   167
				   Return_def,Call_def,e_def,c_def,m_def,caller_def,rtrner_def, 
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   168
				   S_def,S3_def,S4_def,Calling_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   169
	       [] [] 1
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   170
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   171
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   172
qed_goal "S3Fail" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   173
   "|- RPCFail crCh rmCh rst p & $(S3 rmhist p) & HNext rmhist p & unchanged (e p, c p, m p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   174
\      --> (S6 rmhist p)$"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   175
   (fn _ => [action_simp_tac 
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
   176
               (simpset() addsimps [HNext_def,RPCFail_def,Return_def,e_def,c_def,m_def,
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   177
				   caller_def,rtrner_def,MVOKBARF_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   178
				   S_def,S3_def,S6_def,Calling_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   179
               [] [] 1
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   180
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   181
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   182
qed_goal "S3MemUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   183
   "|- [RNext rmCh mm ires p]_(m p) & $(S3 rmhist p) --> unchanged (m p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   184
   (fn _ => [auto_tac (MI_css addsimps2 [S_def,S3_def] addSDs2 [Memoryidle]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   185
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   186
qed_goal "S3Hist" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   187
   "|- HNext rmhist p & $(S3 rmhist p) & unchanged (r p) --> unchanged (rmhist!p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   188
   (fn _ => [auto_tac (MI_css
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   189
		       addsimps2 [HNext_def,MemReturn_def,RPCFail_def,MClkReply_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   190
				  Return_def,r_def,rtrner_def,S_def,S3_def,Calling_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   191
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   192
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   193
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   194
(* ------------------------------ State S4 ---------------------------------------- *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   195
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   196
qed_goal "S4EnvUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   197
   "|- [ENext p]_(e p) & $(S4 rmhist p) --> unchanged (e p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   198
   (fn _ => [auto_tac (MI_css addsimps2 [S_def,S4_def] addSDs2 [Envbusy]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   199
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   200
qed_goal "S4ClerkUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   201
   "|- [MClkNext memCh crCh cst p]_(c p) & $(S4 rmhist p) --> unchanged (c p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   202
   (fn _ => [auto_tac (MI_css addsimps2 [S_def,S4_def] addSDs2 [MClkbusy]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   203
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   204
qed_goal "S4RPCUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   205
   "|- [RPCNext crCh rmCh rst p]_(r p) & $(S4 rmhist p) --> unchanged (r p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   206
   (fn _ => [auto_tac (MI_fast_css addsimps2 [S_def,S4_def] addSDs2 [RPCbusy]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   207
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   208
qed_goal "S4ReadInner" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   209
   "|- ReadInner rmCh mm ires p l & $(S4 rmhist p) & unchanged (e p, c p, r p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   210
\           & HNext rmhist p & $(MemInv mm l) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   211
\      --> (S4 rmhist p)$ & unchanged (rmhist!p)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   212
   (fn _ => [action_simp_tac 
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
   213
               (simpset() addsimps [ReadInner_def,GoodRead_def, BadRead_def,HNext_def,
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   214
				   MemReturn_def, RPCFail_def,MClkReply_def,Return_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   215
				   e_def,c_def,r_def,rtrner_def,caller_def,MVNROKBA_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   216
				   S_def,S4_def,RdRequest_def,Calling_def,MemInv_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   217
               [] [] 1
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   218
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   219
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   220
qed_goal "S4Read" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   221
   "|- Read rmCh mm ires p & $(S4 rmhist p) & unchanged (e p, c p, r p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   222
\           & HNext rmhist p & (!l. $MemInv mm l) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   223
\      --> (S4 rmhist p)$ & unchanged (rmhist!p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   224
   (fn _ => [auto_tac (MI_css addsimps2 [Read_def] addSDs2 [S4ReadInner]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   225
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   226
qed_goal "S4WriteInner" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   227
   "|- WriteInner rmCh mm ires p l v & $(S4 rmhist p) & unchanged (e p, c p, r p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   228
\           & HNext rmhist p \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   229
\      --> (S4 rmhist p)$ & unchanged (rmhist!p)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   230
   (fn _ => [action_simp_tac 
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
   231
               (simpset() addsimps [WriteInner_def,GoodWrite_def, BadWrite_def,HNext_def,
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   232
				   MemReturn_def,RPCFail_def,MClkReply_def,Return_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   233
				   e_def,c_def,r_def,rtrner_def,caller_def,MVNROKBA_def, 
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   234
				   S_def,S4_def,WrRequest_def,Calling_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   235
               [] [] 1
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   236
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   237
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   238
qed_goal "S4Write" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   239
   "|- Write rmCh mm ires p l & $(S4 rmhist p) & unchanged (e p, c p, r p) & (HNext rmhist p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   240
\      --> (S4 rmhist p)$ & unchanged (rmhist!p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   241
   (fn _ => [ auto_tac (MI_css addsimps2 [Write_def] addSDs2 [S4WriteInner]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   242
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   243
qed_goal "WriteS4" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   244
   "|- $ImpInv rmhist p & Write rmCh mm ires p l --> $S4 rmhist p"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   245
   (fn _ => [auto_tac (MI_css
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   246
		       addsimps2 [Write_def,WriteInner_def,ImpInv_def,WrRequest_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   247
				  S_def,S1_def,S2_def,S3_def,S4_def,S5_def,S6_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   248
            ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   249
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   250
qed_goal "S4Return" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   251
   "|- MemReturn rmCh ires p & $S4 rmhist p & unchanged (e p, c p, r p) & HNext rmhist p \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   252
\      --> (S5 rmhist p)$"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   253
   (fn _ => [auto_tac (MI_css
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   254
		       addsimps2 [HNext_def,MemReturn_def,Return_def,e_def,c_def,r_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   255
				  rtrner_def,caller_def,MVNROKBA_def,MVOKBA_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   256
		                  S_def,S4_def,S5_def,Calling_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   257
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   258
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   259
qed_goal "S4Hist" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   260
   "|- HNext rmhist p & $S4 rmhist p & (m p)$ = $(m p) --> (rmhist!p)$ = $(rmhist!p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   261
   (fn _ => [auto_tac (MI_css
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   262
		       addsimps2 [HNext_def,MemReturn_def,RPCFail_def,MClkReply_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   263
				  Return_def,m_def,rtrner_def,S_def,S4_def,Calling_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   264
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   265
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   266
(* ------------------------------ State S5 ---------------------------------------- *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   267
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   268
qed_goal "S5EnvUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   269
   "|- [ENext p]_(e p) & $(S5 rmhist p) --> unchanged (e p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   270
   (fn _ => [auto_tac (MI_css addsimps2 [S_def,S5_def] addSDs2 [Envbusy]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   271
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   272
qed_goal "S5ClerkUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   273
   "|- [MClkNext memCh crCh cst p]_(c p) & $(S5 rmhist p) --> unchanged (c p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   274
   (fn _ => [auto_tac (MI_css addsimps2 [S_def,S5_def] addSDs2 [MClkbusy]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   275
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   276
qed_goal "S5RPC" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   277
   "|- RPCNext crCh rmCh rst p & $(S5 rmhist p)   \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   278
\      --> RPCReply crCh rmCh rst p | RPCFail crCh rmCh rst p"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   279
   (fn _ => [auto_tac (MI_css
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   280
		       addsimps2 [RPCNext_def,RPCReject_def,RPCFwd_def,S_def,S5_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   281
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   282
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   283
qed_goal "S5Reply" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   284
   "|- RPCReply crCh rmCh rst p & $(S5 rmhist p) & unchanged (e p, c p, m p,rmhist!p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   285
\      --> (S6 rmhist p)$"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   286
   (fn _ => [action_simp_tac 
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
   287
               (simpset()
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   288
		addsimps [RPCReply_def,Return_def,e_def,c_def,m_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   289
			  MVOKBA_def,MVOKBARF_def,caller_def,rtrner_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   290
			  S_def,S5_def,S6_def,Calling_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   291
               [] [] 1
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   292
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   293
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   294
qed_goal "S5Fail" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   295
   "|- RPCFail crCh rmCh rst p & $(S5 rmhist p) & unchanged (e p, c p, m p,rmhist!p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   296
\      --> (S6 rmhist p)$"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   297
   (fn _ => [action_simp_tac
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
   298
	       (simpset()
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   299
		addsimps [RPCFail_def,Return_def,e_def,c_def,m_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   300
			  MVOKBARF_def,caller_def,rtrner_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   301
			  S_def,S5_def,S6_def,Calling_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   302
               [] [] 1
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   303
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   304
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   305
qed_goal "S5MemUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   306
   "|- [RNext rmCh mm ires p]_(m p) & $(S5 rmhist p) --> unchanged (m p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   307
   (fn _ => [auto_tac (MI_css addsimps2 [S_def,S5_def] addSDs2 [Memoryidle]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   308
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   309
qed_goal "S5Hist" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   310
   "|- [HNext rmhist p]_(c p, r p, m p, rmhist!p) & $(S5 rmhist p) --> (rmhist!p)$ = $(rmhist!p)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   311
   (fn _ => [auto_tac (MI_fast_css
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   312
		       addsimps2 [HNext_def,MemReturn_def,
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   313
				  RPCFail_def,MClkReply_def,Return_def,S_def,S5_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   314
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   315
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   316
(* ------------------------------ State S6 ---------------------------------------- *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   317
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   318
qed_goal "S6EnvUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   319
   "|- [ENext p]_(e p) & $(S6 rmhist p) --> unchanged (e p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   320
   (fn _ => [auto_tac (MI_css addsimps2 [S_def,S6_def] addSDs2 [Envbusy]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   321
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   322
qed_goal "S6Clerk" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   323
   "|- MClkNext memCh crCh cst p & $(S6 rmhist p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   324
\      --> MClkRetry memCh crCh cst p | MClkReply memCh crCh cst p"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   325
   (fn _ => [ auto_tac (MI_css addsimps2 [MClkNext_def,MClkFwd_def,S_def,S6_def]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   326
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   327
qed_goal "S6Retry" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   328
   "|- MClkRetry memCh crCh cst p & HNext rmhist p & $S6 rmhist p & unchanged (e p,r p,m p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   329
\      --> (S3 rmhist p)$ & unchanged (rmhist!p)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   330
   (fn _ => [action_simp_tac
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
   331
	        (simpset() addsimps [HNext_def,MClkReply_def,MClkRetry_def,Call_def,
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   332
				    Return_def,e_def,r_def,m_def,caller_def,rtrner_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   333
		                    S_def,S6_def,S3_def,Calling_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   334
                [] [] 1]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   335
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   336
qed_goal "S6Reply" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   337
   "|- MClkReply memCh crCh cst p & HNext rmhist p & $S6 rmhist p & unchanged (e p,r p,m p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   338
\      --> (S1 rmhist p)$"
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
   339
   (fn _ => [action_simp_tac (simpset()
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   340
			      addsimps [HNext_def,MemReturn_def,RPCFail_def,Return_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   341
					MClkReply_def,e_def,r_def,m_def,caller_def,rtrner_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   342
					S_def,S6_def,S1_def,Calling_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   343
	                     [] [] 1
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   344
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   345
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   346
qed_goal "S6RPCUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   347
   "|- [RPCNext crCh rmCh rst p]_(r p) & $S6 rmhist p --> unchanged (r p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   348
   (fn _ => [auto_tac (MI_css addsimps2 [S_def,S6_def] addSDs2 [RPCidle]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   349
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   350
qed_goal "S6MemUnch" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   351
   "|- [RNext rmCh mm ires p]_(m p) & $(S6 rmhist p) --> unchanged (m p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   352
   (fn _ => [auto_tac (MI_css addsimps2 [S_def,S6_def] addSDs2 [Memoryidle]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   353
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   354
qed_goal "S6Hist" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   355
   "|- HNext rmhist p & $S6 rmhist p & (c p)$ = $(c p) --> (rmhist!p)$ = $(rmhist!p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   356
   (fn _ => [auto_tac (MI_css
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   357
		       addsimps2 [HNext_def,MClkReply_def,Return_def,c_def,rtrner_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   358
		                  S_def,S6_def,Calling_def])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   359
	    ]);
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4089
diff changeset
   360