src/HOL/Bali/AxExample.thy
changeset 82695 d93ead9ac6df
parent 69597 ff784d5a5bfb
equal deleted inserted replaced
82692:8f0b2daa7eaa 82695:d93ead9ac6df
   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