src/HOL/Bali/DefiniteAssignmentCorrect.thy
changeset 14030 cd928c0ac225
parent 13811 f39f67982854
child 14398 c5c47703f763
equal deleted inserted replaced
14029:fe031a7c75bc 14030:cd928c0ac225
  2849     obtain 
  2849     obtain 
  2850        wt_e:  "Env\<turnstile>e\<Colon>- PrimT Boolean" and 
  2850        wt_e:  "Env\<turnstile>e\<Colon>- PrimT Boolean" and 
  2851        wt_c1: "Env\<turnstile>c1\<Colon>\<surd>" and
  2851        wt_c1: "Env\<turnstile>c1\<Colon>\<surd>" and
  2852        wt_c2: "Env\<turnstile>c2\<Colon>\<surd>" 
  2852        wt_c2: "Env\<turnstile>c2\<Colon>\<surd>" 
  2853       by (elim wt_elim_cases)
  2853       by (elim wt_elim_cases)
  2854     from wt_e da_e G
       
  2855     obtain nrm_s1: "?NormalAssigned s1 E" and 
       
  2856            brk_s1: "?BreakAssigned (Norm s0) s1 E" and
       
  2857            res_s1: "?ResAssigned (Norm s0) s1"
       
  2858       by (elim If.hyps [elim_format]) simp+
       
  2859     from If.hyps have
  2854     from If.hyps have
  2860      s0_s1:"dom (locals (store ((Norm s0)::state))) \<subseteq> dom (locals (store s1))"
  2855      s0_s1:"dom (locals (store ((Norm s0)::state))) \<subseteq> dom (locals (store s1))"
  2861       by (elim dom_locals_eval_mono_elim)
  2856       by (elim dom_locals_eval_mono_elim)
  2862     show ?case
  2857     show ?case
  2863     proof (cases "normal s1")
  2858     proof (cases "normal s1")
  2928     next
  2923     next
  2929       case False 
  2924       case False 
  2930       then obtain abr where abr: "abrupt s1 = Some abr"
  2925       then obtain abr where abr: "abrupt s1 = Some abr"
  2931 	by (cases s1) auto
  2926 	by (cases s1) auto
  2932       moreover
  2927       moreover
  2933       from eval_e _ wt_e have "\<And> l. abrupt s1 \<noteq> Some (Jump (Break l))"
  2928       from eval_e _ wt_e have "\<And> j. abrupt s1 \<noteq> Some (Jump j)"
  2934 	by (rule eval_expression_no_jump) (simp_all add: G wf)
  2929 	by (rule eval_expression_no_jump) (simp_all add: G wf)
  2935       moreover
  2930       moreover
  2936       have "s2 = s1"
  2931       have "s2 = s1"
  2937       proof -
  2932       proof -
  2938 	have "G\<turnstile>s1 \<midarrow>(if the_Bool b then c1 else c2)\<rightarrow> s2" .
  2933 	have "G\<turnstile>s1 \<midarrow>(if the_Bool b then c1 else c2)\<rightarrow> s2" .
  2939         with abr show ?thesis  
  2934         with abr show ?thesis  
  2940 	  by (cases s1) simp
  2935 	  by (cases s1) simp
  2941       qed
  2936       qed
  2942       ultimately show ?thesis using res_s1 by simp
  2937       ultimately show ?thesis by simp
  2943     qed
  2938     qed
  2944   next
  2939   next
  2945 -- {* 
  2940 -- {* 
  2946 \par
  2941 \par
  2947 *} (* dummy text command to break paragraph for latex;
  2942 *} (* dummy text command to break paragraph for latex;