equal
deleted
inserted
replaced
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: |