125 apply (tactic "ax_tac \<^context> 1") (* Ass *) |
125 apply (tactic "ax_tac \<^context> 1") (* Ass *) |
126 prefer 2 |
126 prefer 2 |
127 apply (rule ax_subst_Var_allI) |
127 apply (rule ax_subst_Var_allI) |
128 apply (tactic \<open>inst1_tac \<^context> "P'" "\<lambda>a vs l vf. PP a vs l vf\<leftarrow>x \<and>. p" ["PP", "x", "p"]\<close>) |
128 apply (tactic \<open>inst1_tac \<^context> "P'" "\<lambda>a vs l vf. PP a vs l vf\<leftarrow>x \<and>. p" ["PP", "x", "p"]\<close>) |
129 apply (rule allI) |
129 apply (rule allI) |
130 apply (tactic \<open>simp_tac (\<^context> delloop "split_all_tac" delsimps [@{thm peek_and_def2}, @{thm heap_def2}, @{thm subst_res_def2}, @{thm normal_def2}]) 1\<close>) |
130 apply (tactic \<open>simp_tac (\<^context> |> Simplifier.del_loop "split_all_tac" |> Simplifier.del_simps [@{thm peek_and_def2}, @{thm heap_def2}, @{thm subst_res_def2}, @{thm normal_def2}]) 1\<close>) |
131 apply (rule ax_derivs.Abrupt) |
131 apply (rule ax_derivs.Abrupt) |
132 apply (simp (no_asm)) |
132 apply (simp (no_asm)) |
133 apply (tactic "ax_tac \<^context> 1" (* FVar *)) |
133 apply (tactic "ax_tac \<^context> 1" (* FVar *)) |
134 apply (tactic "ax_tac \<^context> 2", tactic "ax_tac \<^context> 2", tactic "ax_tac \<^context> 2") |
134 apply (tactic "ax_tac \<^context> 2", tactic "ax_tac \<^context> 2", tactic "ax_tac \<^context> 2") |
135 apply (tactic "ax_tac \<^context> 1") |
135 apply (tactic "ax_tac \<^context> 1") |
175 apply (force elim!: arr_inv_new_obj atleast_free_SucD atleast_free_weaken) |
175 apply (force elim!: arr_inv_new_obj atleast_free_SucD atleast_free_weaken) |
176 (* begin init *) |
176 (* begin init *) |
177 apply (rule ax_InitS) |
177 apply (rule ax_InitS) |
178 apply force |
178 apply force |
179 apply (simp (no_asm)) |
179 apply (simp (no_asm)) |
180 apply (tactic \<open>simp_tac (\<^context> delloop "split_all_tac") 1\<close>) |
180 apply (tactic \<open>simp_tac (\<^context> |> Simplifier.del_loop "split_all_tac") 1\<close>) |
181 apply (rule ax_Init_Skip_lemma) |
181 apply (rule ax_Init_Skip_lemma) |
182 apply (tactic \<open>simp_tac (\<^context> delloop "split_all_tac") 1\<close>) |
182 apply (tactic \<open>simp_tac (\<^context> |> Simplifier.del_loop "split_all_tac") 1\<close>) |
183 apply (rule ax_InitS [THEN conseq1] (* init Base *)) |
183 apply (rule ax_InitS [THEN conseq1] (* init Base *)) |
184 apply force |
184 apply force |
185 apply (simp (no_asm)) |
185 apply (simp (no_asm)) |
186 apply (unfold arr_viewed_from_def) |
186 apply (unfold arr_viewed_from_def) |
187 apply (rule allI) |
187 apply (rule allI) |
188 apply (rule_tac P' = "Normal P" and P = P for P in conseq1) |
188 apply (rule_tac P' = "Normal P" and P = P for P in conseq1) |
189 apply (tactic \<open>simp_tac (\<^context> delloop "split_all_tac") 1\<close>) |
189 apply (tactic \<open>simp_tac (\<^context> |> Simplifier.del_loop "split_all_tac") 1\<close>) |
190 apply (tactic "ax_tac \<^context> 1") |
190 apply (tactic "ax_tac \<^context> 1") |
191 apply (tactic "ax_tac \<^context> 1") |
191 apply (tactic "ax_tac \<^context> 1") |
192 apply (rule_tac [2] ax_subst_Var_allI) |
192 apply (rule_tac [2] ax_subst_Var_allI) |
193 apply (tactic \<open>inst1_tac \<^context> "P'" "\<lambda>vf l vfa. Normal (P vf l vfa)" ["P"]\<close>) |
193 apply (tactic \<open>inst1_tac \<^context> "P'" "\<lambda>vf l vfa. Normal (P vf l vfa)" ["P"]\<close>) |
194 apply (tactic \<open>simp_tac (\<^context> delloop "split_all_tac" delsimps [@{thm split_paired_All}, @{thm peek_and_def2}, @{thm heap_free_def2}, @{thm initd_def2}, @{thm normal_def2}, @{thm supd_lupd}]) 2\<close>) |
194 apply (tactic \<open>simp_tac (\<^context> |> Simplifier.del_loop "split_all_tac" |> Simplifier.del_simps [@{thm split_paired_All}, @{thm peek_and_def2}, @{thm heap_free_def2}, @{thm initd_def2}, @{thm normal_def2}, @{thm supd_lupd}]) 2\<close>) |
195 apply (tactic "ax_tac \<^context> 2" (* NewA *)) |
195 apply (tactic "ax_tac \<^context> 2" (* NewA *)) |
196 apply (tactic "ax_tac \<^context> 3" (* ax_Alloc_Arr *)) |
196 apply (tactic "ax_tac \<^context> 3" (* ax_Alloc_Arr *)) |
197 apply (tactic "ax_tac \<^context> 3") |
197 apply (tactic "ax_tac \<^context> 3") |
198 apply (tactic \<open>inst1_tac \<^context> "P" "\<lambda>vf l vfa. Normal (P vf l vfa\<leftarrow>\<diamondsuit>)" ["P"]\<close>) |
198 apply (tactic \<open>inst1_tac \<^context> "P" "\<lambda>vf l vfa. Normal (P vf l vfa\<leftarrow>\<diamondsuit>)" ["P"]\<close>) |
199 apply (tactic \<open>simp_tac (\<^context> delloop "split_all_tac") 2\<close>) |
199 apply (tactic \<open>simp_tac (\<^context> |> Simplifier.del_loop "split_all_tac") 2\<close>) |
200 apply (tactic "ax_tac \<^context> 2") |
200 apply (tactic "ax_tac \<^context> 2") |
201 apply (tactic "ax_tac \<^context> 1" (* FVar *)) |
201 apply (tactic "ax_tac \<^context> 1" (* FVar *)) |
202 apply (tactic "ax_tac \<^context> 2" (* StatRef *)) |
202 apply (tactic "ax_tac \<^context> 2" (* StatRef *)) |
203 apply (rule ax_derivs.Done [THEN conseq1]) |
203 apply (rule ax_derivs.Done [THEN conseq1]) |
204 apply (tactic \<open>inst1_tac \<^context> "Q" "\<lambda>vf. Normal ((\<lambda>Y s Z. vf=lvar (VName e) (snd s)) \<and>. heap_free four \<and>. initd Base \<and>. initd Ext)" []\<close>) |
204 apply (tactic \<open>inst1_tac \<^context> "Q" "\<lambda>vf. Normal ((\<lambda>Y s Z. vf=lvar (VName e) (snd s)) \<and>. heap_free four \<and>. initd Base \<and>. initd Ext)" []\<close>) |
205 apply (clarsimp split del: if_split) |
205 apply (clarsimp split del: if_split) |
206 apply (frule atleast_free_weaken [THEN atleast_free_weaken]) |
206 apply (frule atleast_free_weaken [THEN atleast_free_weaken]) |
207 apply (drule initedD) |
207 apply (drule initedD) |
208 apply (clarsimp elim!: atleast_free_SucD simp add: arr_inv_def) |
208 apply (clarsimp elim!: atleast_free_SucD simp add: arr_inv_def) |
209 apply force |
209 apply force |
210 apply (tactic \<open>simp_tac (\<^context> delloop "split_all_tac") 1\<close>) |
210 apply (tactic \<open>simp_tac (\<^context> |> Simplifier.del_loop "split_all_tac") 1\<close>) |
211 apply (rule ax_triv_Init_Object [THEN peek_and_forget2, THEN conseq1]) |
211 apply (rule ax_triv_Init_Object [THEN peek_and_forget2, THEN conseq1]) |
212 apply (rule wf_tprg) |
212 apply (rule wf_tprg) |
213 apply clarsimp |
213 apply clarsimp |
214 apply (tactic \<open>inst1_tac \<^context> "P" "\<lambda>vf. Normal ((\<lambda>Y s Z. vf = lvar (VName e) (snd s)) \<and>. heap_free four \<and>. initd Ext)" []\<close>) |
214 apply (tactic \<open>inst1_tac \<^context> "P" "\<lambda>vf. Normal ((\<lambda>Y s Z. vf = lvar (VName e) (snd s)) \<and>. heap_free four \<and>. initd Ext)" []\<close>) |
215 apply clarsimp |
215 apply clarsimp |