src/HOL/Bali/TypeSafe.thy
changeset 54859 64ff7f16d5b7
parent 52037 837211662fb8
child 55417 01fbfb60c33e
equal deleted inserted replaced
54858:c1c334198504 54859:64ff7f16d5b7
  2944         case True
  2944         case True
  2945         with hyp_if have hyp_e1: "PROP ?TypeSafe s1 s2 (In1l e1) (In1 v)" 
  2945         with hyp_if have hyp_e1: "PROP ?TypeSafe s1 s2 (In1l e1) (In1 v)" 
  2946           by simp
  2946           by simp
  2947         from da_e1 s0_s1 True obtain E1' where
  2947         from da_e1 s0_s1 True obtain E1' where
  2948           "\<lparr>prg=G,cls=accC,lcl=L\<rparr>\<turnstile> (dom (locals (store s1)))\<guillemotright>In1l e1\<guillemotright> E1'"
  2948           "\<lparr>prg=G,cls=accC,lcl=L\<rparr>\<turnstile> (dom (locals (store s1)))\<guillemotright>In1l e1\<guillemotright> E1'"
  2949           by - (rule da_weakenE, auto iff del: Un_subset_iff le_sup_iff)
  2949           by - (rule da_weakenE, auto iff del: Un_subset_iff sup.bounded_iff)
  2950         with conf_s1 wt_e1
  2950         with conf_s1 wt_e1
  2951         obtain 
  2951         obtain 
  2952           "s2\<Colon>\<preceq>(G, L)"
  2952           "s2\<Colon>\<preceq>(G, L)"
  2953           "(normal s2 \<longrightarrow> G,L,store s2\<turnstile>In1l e1\<succ>In1 v\<Colon>\<preceq>Inl T1)"
  2953           "(normal s2 \<longrightarrow> G,L,store s2\<turnstile>In1l e1\<succ>In1 v\<Colon>\<preceq>Inl T1)"
  2954           "error_free s2"            
  2954           "error_free s2"            
  2963         case False
  2963         case False
  2964         with hyp_if have hyp_e2: "PROP ?TypeSafe s1 s2 (In1l e2) (In1 v)" 
  2964         with hyp_if have hyp_e2: "PROP ?TypeSafe s1 s2 (In1l e2) (In1 v)" 
  2965           by simp
  2965           by simp
  2966         from da_e2 s0_s1 False obtain E2' where
  2966         from da_e2 s0_s1 False obtain E2' where
  2967           "\<lparr>prg=G,cls=accC,lcl=L\<rparr>\<turnstile> (dom (locals (store s1)))\<guillemotright>In1l e2\<guillemotright> E2'"
  2967           "\<lparr>prg=G,cls=accC,lcl=L\<rparr>\<turnstile> (dom (locals (store s1)))\<guillemotright>In1l e2\<guillemotright> E2'"
  2968           by - (rule da_weakenE, auto iff del: Un_subset_iff le_sup_iff)
  2968           by - (rule da_weakenE, auto iff del: Un_subset_iff sup.bounded_iff)
  2969         with conf_s1 wt_e2
  2969         with conf_s1 wt_e2
  2970         obtain 
  2970         obtain 
  2971           "s2\<Colon>\<preceq>(G, L)"
  2971           "s2\<Colon>\<preceq>(G, L)"
  2972           "(normal s2 \<longrightarrow> G,L,store s2\<turnstile>In1l e2\<succ>In1 v\<Colon>\<preceq>Inl T2)"
  2972           "(normal s2 \<longrightarrow> G,L,store s2\<turnstile>In1l e2\<succ>In1 v\<Colon>\<preceq>Inl T2)"
  2973           "error_free s2"            
  2973           "error_free s2"