src/HOL/Bali/TypeSafe.thy
changeset 82695 d93ead9ac6df
parent 81463 d8f77c1c9703
equal deleted inserted replaced
82692:8f0b2daa7eaa 82695:d93ead9ac6df
   724 qed
   724 qed
   725 
   725 
   726 declare split_paired_All [simp del] split_paired_Ex [simp del] 
   726 declare split_paired_All [simp del] split_paired_Ex [simp del] 
   727 declare if_split     [split del] if_split_asm     [split del] 
   727 declare if_split     [split del] if_split_asm     [split del] 
   728         option.split [split del] option.split_asm [split del]
   728         option.split [split del] option.split_asm [split del]
   729 setup \<open>map_theory_simpset (fn ctxt => ctxt delloop "split_all_tac")\<close>
   729 setup \<open>map_theory_simpset (fn ctxt => ctxt |> Simplifier.del_loop "split_all_tac")\<close>
   730 setup \<open>map_theory_claset (fn ctxt => ctxt delSWrapper "split_all_tac")\<close>
   730 setup \<open>map_theory_claset (fn ctxt => ctxt delSWrapper "split_all_tac")\<close>
   731 
   731 
   732 lemma FVar_lemma: 
   732 lemma FVar_lemma: 
   733 "\<lbrakk>((v, f), Norm s2') = fvar statDeclC (static field) fn a (x2, s2); 
   733 "\<lbrakk>((v, f), Norm s2') = fvar statDeclC (static field) fn a (x2, s2); 
   734   G\<turnstile>statC\<preceq>\<^sub>C statDeclC;  
   734   G\<turnstile>statC\<preceq>\<^sub>C statDeclC;  
   754 done
   754 done
   755 declare split_paired_All [simp] split_paired_Ex [simp] 
   755 declare split_paired_All [simp] split_paired_Ex [simp] 
   756 declare if_split     [split] if_split_asm     [split] 
   756 declare if_split     [split] if_split_asm     [split] 
   757         option.split [split] option.split_asm [split]
   757         option.split [split] option.split_asm [split]
   758 setup \<open>map_theory_claset (fn ctxt => ctxt addSbefore ("split_all_tac", split_all_tac))\<close>
   758 setup \<open>map_theory_claset (fn ctxt => ctxt addSbefore ("split_all_tac", split_all_tac))\<close>
   759 setup \<open>map_theory_simpset (fn ctxt => ctxt addloop ("split_all_tac", split_all_tac))\<close>
   759 setup \<open>map_theory_simpset (fn ctxt => ctxt |> Simplifier.add_loop ("split_all_tac", split_all_tac))\<close>
   760 
   760 
   761 
   761 
   762 lemma AVar_lemma1: "\<lbrakk>globs s (Inl a) = Some obj;tag obj=Arr ty i; 
   762 lemma AVar_lemma1: "\<lbrakk>globs s (Inl a) = Some obj;tag obj=Arr ty i; 
   763  the_Intg i' in_bounds i; wf_prog G; G\<turnstile>ty.[]\<preceq>Tb.[]; Norm s\<Colon>\<preceq>(G, L)
   763  the_Intg i' in_bounds i; wf_prog G; G\<turnstile>ty.[]\<preceq>Tb.[]; Norm s\<Colon>\<preceq>(G, L)
   764 \<rbrakk> \<Longrightarrow> G,s\<turnstile>the ((values obj) (Inr (the_Intg i')))\<Colon>\<preceq>Tb"
   764 \<rbrakk> \<Longrightarrow> G,s\<turnstile>the ((values obj) (Inr (the_Intg i')))\<Colon>\<preceq>Tb"
   869 by (auto simp add: abrupt_if_def)
   869 by (auto simp add: abrupt_if_def)
   870 
   870 
   871 declare split_paired_All [simp del] split_paired_Ex [simp del] 
   871 declare split_paired_All [simp del] split_paired_Ex [simp del] 
   872 declare if_split     [split del] if_split_asm     [split del] 
   872 declare if_split     [split del] if_split_asm     [split del] 
   873         option.split [split del] option.split_asm [split del]
   873         option.split [split del] option.split_asm [split del]
   874 setup \<open>map_theory_simpset (fn ctxt => ctxt delloop "split_all_tac")\<close>
   874 setup \<open>map_theory_simpset (fn ctxt => ctxt |> Simplifier.del_loop "split_all_tac")\<close>
   875 setup \<open>map_theory_claset (fn ctxt => ctxt delSWrapper "split_all_tac")\<close>
   875 setup \<open>map_theory_claset (fn ctxt => ctxt delSWrapper "split_all_tac")\<close>
   876 
   876 
   877 lemma conforms_init_lvars: 
   877 lemma conforms_init_lvars: 
   878 "\<lbrakk>wf_mhead G (pid declC) sig (mhead (mthd dm)); wf_prog G;  
   878 "\<lbrakk>wf_mhead G (pid declC) sig (mhead (mthd dm)); wf_prog G;  
   879   list_all2 (conf G s) pvs pTsa; G\<turnstile>pTsa[\<preceq>](parTs sig);  
   879   list_all2 (conf G s) pvs pTsa; G\<turnstile>pTsa[\<preceq>](parTs sig);  
   923 done
   923 done
   924 declare split_paired_All [simp] split_paired_Ex [simp] 
   924 declare split_paired_All [simp] split_paired_Ex [simp] 
   925 declare if_split     [split] if_split_asm     [split] 
   925 declare if_split     [split] if_split_asm     [split] 
   926         option.split [split] option.split_asm [split]
   926         option.split [split] option.split_asm [split]
   927 setup \<open>map_theory_claset (fn ctxt => ctxt addSbefore ("split_all_tac", split_all_tac))\<close>
   927 setup \<open>map_theory_claset (fn ctxt => ctxt addSbefore ("split_all_tac", split_all_tac))\<close>
   928 setup \<open>map_theory_simpset (fn ctxt => ctxt addloop ("split_all_tac", split_all_tac))\<close>
   928 setup \<open>map_theory_simpset (fn ctxt => ctxt |> Simplifier.add_loop ("split_all_tac", split_all_tac))\<close>
   929 
   929 
   930 
   930 
   931 subsection "accessibility"
   931 subsection "accessibility"
   932 
   932 
   933 theorem dynamic_field_access_ok:
   933 theorem dynamic_field_access_ok: