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