src/HOL/Hoare_Parallel/RG_Tran.thy
changeset 71989 bad75618fb82
parent 67613 ce654b0e6d69
equal deleted inserted replaced
71988:ace45a11a45e 71989:bad75618fb82
   174 done
   174 done
   175 
   175 
   176 lemma cptn_onlyif_cptn_mod_aux [rule_format]:
   176 lemma cptn_onlyif_cptn_mod_aux [rule_format]:
   177   "\<forall>s Q t xs.((Some a, s), Q, t) \<in> ctran \<longrightarrow> (Q, t) # xs \<in> cptn_mod 
   177   "\<forall>s Q t xs.((Some a, s), Q, t) \<in> ctran \<longrightarrow> (Q, t) # xs \<in> cptn_mod 
   178   \<longrightarrow> (Some a, s) # (Q, t) # xs \<in> cptn_mod"
   178   \<longrightarrow> (Some a, s) # (Q, t) # xs \<in> cptn_mod"
       
   179   supply [[simproc del: defined_all]]
   179 apply(induct a)
   180 apply(induct a)
   180 apply simp_all
   181 apply simp_all
   181 \<comment> \<open>basic\<close>
   182 \<comment> \<open>basic\<close>
   182 apply clarify
   183 apply clarify
   183 apply(erule ctran.cases,simp_all)
   184 apply(erule ctran.cases,simp_all)
   716 
   717 
   717 lemma aux_onlyif [rule_format]: "\<forall>xs s. (xs, s)#ys \<in> par_cptn \<longrightarrow> 
   718 lemma aux_onlyif [rule_format]: "\<forall>xs s. (xs, s)#ys \<in> par_cptn \<longrightarrow> 
   718   (\<exists>clist. (length clist = length xs) \<and> 
   719   (\<exists>clist. (length clist = length xs) \<and> 
   719   (xs, s)#ys \<propto> map (\<lambda>i. (fst i,s)#(snd i)) (zip xs clist) \<and> 
   720   (xs, s)#ys \<propto> map (\<lambda>i. (fst i,s)#(snd i)) (zip xs clist) \<and> 
   720   (\<forall>i<length xs. (xs!i,s)#(clist!i) \<in> cptn))"
   721   (\<forall>i<length xs. (xs!i,s)#(clist!i) \<in> cptn))"
       
   722   supply [[simproc del: defined_all]]
   721 apply(induct ys)
   723 apply(induct ys)
   722  apply(clarify)
   724  apply(clarify)
   723  apply(rule_tac x="map (\<lambda>i. []) [0..<length xs]" in exI)
   725  apply(rule_tac x="map (\<lambda>i. []) [0..<length xs]" in exI)
   724  apply(simp add: conjoin_def same_length_def same_state_def same_program_def compat_label_def)
   726  apply(simp add: conjoin_def same_length_def same_state_def same_program_def compat_label_def)
   725  apply(rule conjI)
   727  apply(rule conjI)