src/HOL/TLA/Memory/MIlive.ML
author wenzelm
Mon, 29 Nov 1999 15:52:49 +0100
changeset 8039 a901bafe4578
parent 6255 db63752140c7
permissions -rw-r--r--
Goal: tuned pris;
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:        MIlive.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 for the liveness proof
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
(* Liveness assertions for the different implementation states, based on the
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    10
   fairness conditions. Prove subgoals of WF1 / SF1 rules as separate lemmas
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    11
   for readability. Reuse action proofs from safety part.
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    12
*)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    13
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    14
(* ------------------------------ State S1 ------------------------------ *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    15
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    16
qed_goal "S1_successors" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    17
   "|- $S1 rmhist p & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p)  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    18
\      --> (S1 rmhist p)` | (S2 rmhist p)`"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    19
   (fn _ => [split_idle_tac [] 1,
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    20
	     auto_tac (MI_css addSDs2 [Step1_2_1])
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    21
	    ]);
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
(* Show that the implementation can satisfy the high-level fairness requirements
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    24
   by entering the state S1 infinitely often.
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    25
*)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    26
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    27
qed_goal "S1_RNextdisabled" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    28
   "|- S1 rmhist p --> \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    29
\      ~Enabled (<RNext memCh mm (resbar rmhist) p>_(rtrner memCh!p, resbar rmhist!p))"
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
    30
   (fn _ => [action_simp_tac (simpset() addsimps [angle_def,S_def,S1_def])
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    31
	                     [notI] [enabledE,temp_elim Memoryidle] 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    32
	     Force_tac 1
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    33
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    34
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    35
qed_goal "S1_Returndisabled" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    36
   "|- S1 rmhist p --> \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    37
\      ~Enabled (<MemReturn memCh (resbar rmhist) p>_(rtrner memCh!p, resbar rmhist!p))"
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
    38
   (fn _ => [action_simp_tac (simpset() addsimps [angle_def,MemReturn_def,Return_def,S_def,S1_def])
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    39
	                     [notI] [enabledE] 1
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    40
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    41
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    42
qed_goal "RNext_fair" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    43
   "|- []<>S1 rmhist p   \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    44
\      --> WF(RNext memCh mm (resbar rmhist) p)_(rtrner memCh!p, resbar rmhist!p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    45
   (fn _ => [auto_tac (MI_css addsimps2 [WF_alt]
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    46
			      addSIs2 [S1_RNextdisabled] addSEs2 [STL4E,DmdImplE])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    47
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    48
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    49
qed_goal "Return_fair" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    50
   "|- []<>S1 rmhist p   \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    51
\      --> WF(MemReturn memCh (resbar rmhist) p)_(rtrner memCh!p, resbar rmhist!p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    52
   (fn _ => [auto_tac (MI_css addsimps2 [WF_alt]
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    53
			      addSIs2 [S1_Returndisabled] addSEs2 [STL4E,DmdImplE])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    54
	    ]);
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
(* ------------------------------ State S2 ------------------------------ *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    57
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    58
qed_goal "S2_successors" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    59
   "|- $S2 rmhist p & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p)   \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    60
\      --> (S2 rmhist p)` | (S3 rmhist p)`"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    61
   (fn _ => [split_idle_tac [] 1,
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    62
	     auto_tac (MI_css addSDs2 [Step1_2_2])
3807
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
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    65
qed_goal "S2MClkFwd_successors" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    66
   "|- ($S2 rmhist p & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p))    \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    67
\      & <MClkFwd memCh crCh cst p>_(c p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    68
\      --> (S3 rmhist p)`"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    69
   (fn _ => [ auto_tac (MI_css addsimps2 [angle_def] addSDs2 [Step1_2_2]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    70
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    71
qed_goal "S2MClkFwd_enabled" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    72
   "|- $S2 rmhist p & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p)    \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    73
\      --> $Enabled (<MClkFwd memCh crCh cst p>_(c p))"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    74
   (fn _ => [auto_tac (MI_css addsimps2 [c_def] addSIs2 [MClkFwd_ch_enabled,MClkFwd_enabled]),
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    75
             cut_facts_tac [MI_base] 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    76
             blast_tac (claset() addDs [base_pair]) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    77
             ALLGOALS (asm_full_simp_tac (simpset() addsimps [S_def,S2_def]))
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    78
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    79
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    80
qed_goal "S2_live" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    81
   "|- [](ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p)) & WF(MClkFwd memCh crCh cst p)_(c p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    82
\      --> (S2 rmhist p ~> S3 rmhist p)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    83
   (fn _ => [REPEAT (resolve_tac [WF1,S2_successors,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    84
				  S2MClkFwd_successors,S2MClkFwd_enabled] 1)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    85
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    86
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    87
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    88
(* ------------------------------ State S3 ------------------------------ *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    89
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    90
qed_goal "S3_successors" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    91
   "|- $S3 rmhist p & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p)   \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    92
\      --> (S3 rmhist p)` | (S4 rmhist p | S6 rmhist p)`"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    93
   (fn _ => [split_idle_tac [] 1,
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    94
	     auto_tac (MI_css addSDs2 [Step1_2_3])
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    95
	    ]);
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 "S3RPC_successors" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    98
   "|- ($S3 rmhist p & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p))   \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
    99
\      & <RPCNext crCh rmCh rst p>_(r p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   100
\      --> (S4 rmhist p | S6 rmhist p)`"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   101
   (fn _ => [ auto_tac (MI_css addsimps2 [angle_def] addSDs2 [Step1_2_3]) ]);
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
qed_goal "S3RPC_enabled" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   104
   "|- $S3 rmhist p & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p)   \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   105
\      --> $Enabled (<RPCNext crCh rmCh rst p>_(r p))"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   106
   (fn _ => [auto_tac (MI_css addsimps2 [r_def]
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   107
		              addSIs2 [RPCFail_Next_enabled,RPCFail_enabled]),
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   108
	     cut_facts_tac [MI_base] 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   109
	     blast_tac (claset() addDs [base_pair]) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   110
             ALLGOALS (asm_full_simp_tac (simpset() addsimps [S_def,S3_def]))
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   111
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   112
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   113
qed_goal "S3_live" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   114
   "|- [](ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p)) & WF(RPCNext crCh rmCh rst p)_(r p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   115
\   --> (S3 rmhist p ~> S4 rmhist p | S6 rmhist p)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   116
   (fn _ => [REPEAT (resolve_tac [WF1,S3_successors,S3RPC_successors,S3RPC_enabled] 1)]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   117
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   118
(* ------------- State S4 -------------------------------------------------- *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   119
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   120
qed_goal "S4_successors" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   121
   "|- $S4 rmhist p & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   122
\                   & (!l. $MemInv mm l)  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   123
\      --> (S4 rmhist p)` | (S5 rmhist p)`"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   124
   (fn _ => [split_idle_tac [] 1,
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   125
	     auto_tac (MI_css addSDs2 [Step1_2_4])
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   126
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   127
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   128
(* ------------- State S4a: S4 /\ (ires p = NotAResult) ------------------------------ *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   129
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   130
qed_goal "S4a_successors" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   131
   "|- $(S4 rmhist p & ires!p = #NotAResult) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   132
\      & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p) & (!l. $MemInv mm l) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   133
\      --> (S4 rmhist p & ires!p = #NotAResult)`  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   134
\        | ((S4 rmhist p & ires!p ~= #NotAResult) | S5 rmhist p)`"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   135
   (fn _ => [split_idle_tac [m_def] 1,
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   136
	     auto_tac (MI_css addSDs2 [Step1_2_4])
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   137
	    ]);
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
qed_goal "S4aRNext_successors" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   140
   "|- ($(S4 rmhist p & ires!p = #NotAResult)  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   141
\       & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p) & (!l. $MemInv mm l))  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   142
\      & <RNext rmCh mm ires p>_(m p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   143
\      --> ((S4 rmhist p & ires!p ~= #NotAResult) | S5 rmhist p)`"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   144
   (fn _ => [auto_tac (MI_css addsimps2 [angle_def]
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   145
		              addSDs2 [Step1_2_4, ReadResult, WriteResult])
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   146
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   147
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   148
qed_goal "S4aRNext_enabled" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   149
   "|- $(S4 rmhist p & ires!p = #NotAResult) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   150
\      & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p) & (!l. $MemInv mm l)  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   151
\   --> $Enabled (<RNext rmCh mm ires p>_(m p))"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   152
   (fn _ => [auto_tac (MI_css addsimps2 [m_def] addSIs2 [RNext_enabled]),
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   153
	     cut_facts_tac [MI_base] 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   154
	     blast_tac (claset() addDs [base_pair]) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   155
	     asm_full_simp_tac (simpset() addsimps [S_def,S4_def]) 1
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   156
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   157
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   158
qed_goal "S4a_live" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   159
  "|- [](ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p) & (!l. $MemInv mm l)) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   160
\     & WF(RNext rmCh mm ires p)_(m p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   161
\     --> (S4 rmhist p & ires!p = #NotAResult  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   162
\          ~> (S4 rmhist p & ires!p ~= #NotAResult) | S5 rmhist p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   163
   (K [REPEAT (resolve_tac [WF1, S4a_successors, S4aRNext_successors, S4aRNext_enabled] 1)]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   164
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   165
(* ------------- State S4b: S4 /\ (ires p # NotAResult) ------------------------------ *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   166
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   167
qed_goal "S4b_successors" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   168
   "|- $(S4 rmhist p & ires!p ~= #NotAResult)  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   169
\      & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p) & (!l. $MemInv mm l) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   170
\      --> (S4 rmhist p & ires!p ~= #NotAResult)` | (S5 rmhist p)`"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   171
   (fn _ => [split_idle_tac [m_def] 1,
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   172
	     auto_tac (MI_css addSDs2 [WriteResult,Step1_2_4,ReadResult])
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   173
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   174
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   175
qed_goal "S4bReturn_successors" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   176
   "|- ($(S4 rmhist p & ires!p ~= #NotAResult)  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   177
\       & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p) & (!l. $MemInv mm l))   \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   178
\      & <MemReturn rmCh ires p>_(m p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   179
\      --> (S5 rmhist p)`"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   180
   (fn _ => [force_tac (MI_css addsimps2 [angle_def] addSDs2 [Step1_2_4]
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   181
                               addDs2 [ReturnNotReadWrite]) 1
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   182
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   183
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   184
qed_goal "S4bReturn_enabled" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   185
   "|- $(S4 rmhist p & ires!p ~= #NotAResult)  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   186
\      & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p) & (!l. $MemInv mm l)  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   187
\      --> $Enabled (<MemReturn rmCh ires p>_(m p))"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   188
   (fn _ => [auto_tac (MI_css addsimps2 [m_def] addSIs2 [MemReturn_enabled]),
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   189
	     cut_facts_tac [MI_base] 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   190
             blast_tac (claset() addDs [base_pair]) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   191
	     asm_full_simp_tac (simpset() addsimps [S_def,S4_def]) 1
3807
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
qed_goal "S4b_live" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   195
  "|- [](ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p) & (!l. $MemInv mm l)) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   196
\     & WF(MemReturn rmCh ires p)_(m p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   197
\     --> (S4 rmhist p & ires!p ~= #NotAResult ~> S5 rmhist p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   198
   (K [REPEAT (resolve_tac [WF1, S4b_successors,S4bReturn_successors, S4bReturn_enabled] 1)]);
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
(* ------------------------------ State S5 ------------------------------ *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   201
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   202
qed_goal "S5_successors" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   203
   "|- $S5 rmhist p & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   204
\      --> (S5 rmhist p)` | (S6 rmhist p)`"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   205
   (fn _ => [split_idle_tac [] 1,
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   206
	     auto_tac (MI_css addSDs2 [Step1_2_5])
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
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   209
qed_goal "S5RPC_successors" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   210
   "|- ($S5 rmhist p & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p)) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   211
\     & <RPCNext crCh rmCh rst p>_(r p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   212
\     --> (S6 rmhist p)`"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   213
   (fn _ => [ auto_tac (MI_css addsimps2 [angle_def] addSDs2 [Step1_2_5]) ]);
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   214
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   215
qed_goal "S5RPC_enabled" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   216
   "|- $S5 rmhist p & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   217
\      --> $Enabled (<RPCNext crCh rmCh rst p>_(r p))"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   218
   (fn _ => [auto_tac (MI_css addsimps2 [r_def]
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   219
		              addSIs2 [RPCFail_Next_enabled, RPCFail_enabled]),
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   220
	     cut_facts_tac [MI_base] 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   221
	     blast_tac (claset() addDs [base_pair]) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   222
	     ALLGOALS (asm_full_simp_tac (simpset() addsimps [S_def,S5_def]))
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   223
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   224
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   225
qed_goal "S5_live" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   226
   "|- [](ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p))   \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   227
\      & WF(RPCNext crCh rmCh rst p)_(r p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   228
\      --> (S5 rmhist p ~> S6 rmhist p)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   229
   (fn _ => [REPEAT (resolve_tac [WF1,S5_successors,S5RPC_successors,S5RPC_enabled] 1)]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   230
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   231
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   232
(* ------------------------------ State S6 ------------------------------ *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   233
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   234
qed_goal "S6_successors" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   235
   "|- $S6 rmhist p & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   236
\      --> (S1 rmhist p)` | (S3 rmhist p)` | (S6 rmhist p)`"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   237
   (fn _ => [split_idle_tac [] 1,
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   238
	     auto_tac (MI_css addSDs2 [Step1_2_6])
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   239
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   240
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   241
qed_goal "S6MClkReply_successors" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   242
   "|- ($S6 rmhist p & ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p)) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   243
\      & <MClkReply memCh crCh cst p>_(c p) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   244
\      --> (S1 rmhist p)`"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   245
   (fn _ => [auto_tac (MI_css addsimps2 [angle_def] addSDs2 [Step1_2_6, MClkReplyNotRetry])
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   246
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   247
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   248
qed_goal "MClkReplyS6" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   249
   "|- $ImpInv rmhist p & <MClkReply memCh crCh cst p>_(c p) --> $S6 rmhist p"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   250
   (fn _ => [action_simp_tac
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
   251
	        (simpset() addsimps
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   252
		    [angle_def,MClkReply_def,Return_def,
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   253
		     ImpInv_def,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
   254
		[] [] 1
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   255
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   256
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   257
qed_goal "S6MClkReply_enabled" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   258
   "|- S6 rmhist p --> Enabled (<MClkReply memCh crCh cst p>_(c p))"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   259
   (fn _ => [auto_tac (MI_css addsimps2 [c_def] addSIs2 [MClkReply_enabled]),
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   260
	     cut_facts_tac [MI_base] 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   261
	     blast_tac (claset() addDs [base_pair]) 1,
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
   262
	     ALLGOALS (action_simp_tac (simpset() addsimps [S_def,S6_def]) [] [])
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   263
	    ]);
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
qed_goal "S6_live" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   266
   "|- [](ImpNext p & [HNext rmhist p]_(c p,r p,m p, rmhist!p) & $(ImpInv rmhist p)) \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   267
\      & SF(MClkReply memCh crCh cst p)_(c p) & []<>(S6 rmhist p)  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   268
\      --> []<>(S1 rmhist p)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   269
   (fn _ => [Clarsimp_tac 1,
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   270
	     subgoal_tac "sigma |= []<>(<MClkReply memCh crCh cst p>_(c p))" 1,
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   271
             etac InfiniteEnsures 1, atac 1,
4089
96fba19bcbe2 isatool fixclasimp;
wenzelm
parents: 3807
diff changeset
   272
	     action_simp_tac (simpset()) []
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   273
	                     (map temp_elim [MClkReplyS6,S6MClkReply_successors]) 1,
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   274
	     auto_tac (MI_css addsimps2 [SF_def]),
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   275
	     etac swap 1,
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   276
	     auto_tac (MI_css addSIs2 [S6MClkReply_enabled] addSEs2 [STL4E, DmdImplE])
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   277
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   278
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   279
(* ------------------------------ complex leadsto properties ------------------------------ *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   280
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   281
qed_goal "S5S6LeadstoS6" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   282
   "!!sigma. sigma |= S5 rmhist p ~> S6 rmhist p \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   283
\      ==> sigma |= (S5 rmhist p | S6 rmhist p) ~> S6 rmhist p"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   284
   (fn _ => [auto_tac (MI_css addSIs2 [LatticeDisjunctionIntro, LatticeReflexivity])
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   285
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   286
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   287
qed_goal "S4bS5S6LeadstoS6" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   288
   "!!sigma. [| sigma |= S4 rmhist p & ires!p ~= #NotAResult ~> S5 rmhist p;  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   289
\               sigma |= S5 rmhist p ~> S6 rmhist p |]  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   290
\      ==> sigma |= (S4 rmhist p & ires!p ~= #NotAResult) | S5 rmhist p | S6 rmhist p \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   291
\                   ~> S6 rmhist p"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   292
   (fn _ => [auto_tac (MI_css addSIs2 [LatticeDisjunctionIntro,S5S6LeadstoS6]
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   293
		              addIs2 [LatticeTransitivity])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   294
            ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   295
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   296
qed_goal "S4S5S6LeadstoS6" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   297
   "!!sigma. [| sigma |= S4 rmhist p & ires!p = #NotAResult \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   298
\                        ~> (S4 rmhist p & ires!p ~= #NotAResult) | S5 rmhist p; \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   299
\               sigma |= S4 rmhist p & ires!p ~= #NotAResult ~> S5 rmhist p;  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   300
\               sigma |= S5 rmhist p ~> S6 rmhist p |]  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   301
\      ==> sigma |= S4 rmhist p | S5 rmhist p | S6 rmhist p ~> S6 rmhist p"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   302
   (fn _ => [subgoal_tac "sigma |= (S4 rmhist p & ires!p = #NotAResult) | (S4 rmhist p & ires!p ~= #NotAResult) | S5 rmhist p | S6 rmhist p ~> S6 rmhist p" 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   303
	     eres_inst_tac [("G", "PRED ((S4 rmhist p & ires!p = #NotAResult) | (S4 rmhist p & ires!p ~= #NotAResult) | S5 rmhist p | S6 rmhist p)")] (temp_use LatticeTransitivity) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   304
	     force_tac (MI_css addsimps2 Init_defs addSIs2 [ImplLeadsto_gen, necT]) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   305
	     rtac (temp_use LatticeDisjunctionIntro) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   306
	     etac (temp_use LatticeTransitivity) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   307
	     etac (temp_use LatticeTriangle2) 1, atac 1,
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   308
	     auto_tac (MI_css addSIs2 [S4bS5S6LeadstoS6])
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   309
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   310
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   311
qed_goal "S3S4S5S6LeadstoS6" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   312
   "!!sigma. [| sigma |= S3 rmhist p ~> S4 rmhist p | S6 rmhist p;   \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   313
\               sigma |= S4 rmhist p & ires!p = #NotAResult \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   314
\                         ~> (S4 rmhist p & ires!p ~= #NotAResult) | S5 rmhist p; \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   315
\               sigma |= S4 rmhist p & ires!p ~= #NotAResult ~> S5 rmhist p;  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   316
\               sigma |= S5 rmhist p ~> S6 rmhist p |]  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   317
\      ==> sigma |= S3 rmhist p | S4 rmhist p | S5 rmhist p | S6 rmhist p ~> S6 rmhist p"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   318
   (fn _ => [rtac (temp_use LatticeDisjunctionIntro) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   319
	     etac (temp_use LatticeTriangle2) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   320
	     rtac (S4S5S6LeadstoS6 RS (temp_use LatticeTransitivity)) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   321
	     auto_tac (MI_css addSIs2 [S4S5S6LeadstoS6,necT]
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   322
			      addIs2 [ImplLeadsto_gen] addsimps2 Init_defs)
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   323
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   324
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   325
qed_goal "S2S3S4S5S6LeadstoS6" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   326
   "!!sigma. [| sigma |= S2 rmhist p ~> S3 rmhist p; \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   327
\               sigma |= S3 rmhist p ~> S4 rmhist p | S6 rmhist p;   \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   328
\               sigma |= S4 rmhist p & ires!p = #NotAResult \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   329
\                         ~> S4 rmhist p & ires!p ~= #NotAResult | S5 rmhist p; \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   330
\               sigma |= S4 rmhist p & ires!p ~= #NotAResult ~> S5 rmhist p;  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   331
\               sigma |= S5 rmhist p ~> S6 rmhist p |]  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   332
\      ==> sigma |= S2 rmhist p | S3 rmhist p | S4 rmhist p | S5 rmhist p | S6 rmhist p \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   333
\                   ~> S6 rmhist p"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   334
   (fn _ => [rtac (temp_use LatticeDisjunctionIntro) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   335
	     rtac (temp_use LatticeTransitivity) 1, atac 2,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   336
	     rtac (S3S4S5S6LeadstoS6 RS (temp_use LatticeTransitivity)) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   337
	     auto_tac (MI_css addSIs2 [S3S4S5S6LeadstoS6,necT]
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   338
			      addIs2 [ImplLeadsto_gen] addsimps2 Init_defs)
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   339
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   340
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   341
qed_goal "NotS1LeadstoS6" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   342
   "!!sigma. [| sigma |= []ImpInv rmhist p; \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   343
\        sigma |= S2 rmhist p ~> S3 rmhist p; \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   344
\        sigma |= S3 rmhist p ~> S4 rmhist p | S6 rmhist p; \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   345
\        sigma |= S4 rmhist p & ires!p = #NotAResult \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   346
\                 ~> S4 rmhist p & ires!p ~= #NotAResult | S5 rmhist p; \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   347
\        sigma |= S4 rmhist p & ires!p ~= #NotAResult ~> S5 rmhist p;  \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   348
\        sigma |= S5 rmhist p ~> S6 rmhist p |] \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   349
\        ==> sigma |= ~S1 rmhist p ~> S6 rmhist p"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   350
   (fn _ => [rtac (S2S3S4S5S6LeadstoS6 RS (temp_use LatticeTransitivity)) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   351
             TRYALL atac,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   352
             etac (temp_use INV_leadsto) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   353
             rtac (temp_use ImplLeadsto_gen) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   354
             rtac (temp_use necT) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   355
	     auto_tac (MI_css addsimps2 ImpInv_def::Init_defs addSIs2 [necT])
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   356
	    ]);
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   357
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   358
qed_goal "S1Infinite" MemoryImplementation.thy
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   359
   "!!sigma. [| sigma |= ~S1 rmhist p ~> S6 rmhist p; \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   360
\               sigma |= []<>S6 rmhist p --> []<>S1 rmhist p |] \
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   361
\            ==> sigma |= []<>S1 rmhist p"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   362
   (fn _ => [rtac classical 1,
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   363
	     asm_full_simp_tac (simpset() addsimps [temp_use NotBox, NotDmd]) 1,
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 4477
diff changeset
   364
	     auto_tac (MI_css addSEs2 [mp,leadsto_infinite] addSDs2 [DBImplBD])
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
   365
	    ]);