definition comm :: "(('a \ 'a) set \ 'a set) \ ('a confs) set"where "comm \ \(guar, post). {c. (\i. Suc i
c!i -c→ c!(Suc i) ⟶ (snd(c!i), snd(c!Suc i)) ∈ guar) ∧
(fst (last c) = None ⟶ snd (last c) ∈post)}"
definition com_validity :: "'a com \ 'a set \ ('a \ 'a) set \ ('a \ 'a) set \ 'a set \ bool"
(‹⊨ _ sat [_, _, _, _]› [60,0,0,0,0] 45) where "\ P sat [pre, rely, guar, post] \ ∀s. cp (Some P) s ∩ assum(pre, rely) ⊆ comm(guar, post)"
lemma tl_zero[rule_format]: "P (ys!Suc j) \ Suc j ys\[] \ P (tl(ys)!j)" by (induct ys) simp_all
subsection‹The Semantics is Compositional›
lemma aux_if [rule_format]: "\xs s clist. (length clist = length xs \ (\i cptn) ∧ ((xs, s)#ys ∝ map (λi. (fst i,s)#snd i) (zip xs clist)) ⟶ (xs, s)#ys ∈ par_cptn)" apply(induct ys) apply(clarify) apply(rule ParCptnOne) apply(clarify) apply(simp add:conjoin_def compat_label_def) apply clarify apply(erule_tac x="0"and P="\j. H j \ (P j \ Q j)"for H P Q in all_dupE, simp) apply(erule disjE) 🍋‹first step is a Component step› apply clarify apply simp apply(subgoal_tac "a=(xs[i:=(fst(clist!i!0))])") apply(subgoal_tac "b=snd(clist!i!0)",simp) prefer 2 apply(simp add: same_state_def) apply(erule_tac x=i in allE,erule impE,assumption,
erule_tac x=1 and P="\j. (H j) \ (snd (d j))=(snd (e j))"for H d e in allE, simp) prefer 2 apply(simp add:same_program_def) apply(erule_tac x=1 and P="\j. H j \ (fst (s j))=(t j)"for H s t in allE,simp) apply(rule nth_equalityI,simp) apply clarify apply(case_tac "i=ia",simp,simp) apply(erule_tac x=ia and P="\j. H j \ I j \ J j"for H I J in allE) apply(drule_tac t=i in not_sym,simp) apply(erule etranE,simp) apply(rule ParCptnComp) apply(erule ParComp,simp) 🍋‹applying the induction hypothesis› apply(erule_tac x="xs[i := fst (clist ! i ! 0)]"in allE) apply(erule_tac x="snd (clist ! i ! 0)"in allE) apply(erule mp) apply(rule_tac x="map tl clist"in exI,simp) apply(rule conjI,clarify) apply(case_tac "i=ia",simp) apply(rule nth_tl_if) apply(force simp add:same_length_def length_Suc_conv) apply simp apply(erule allE,erule impE,assumption,erule tl_in_cptn) apply(force simp add:same_length_def length_Suc_conv) apply(rule nth_tl_if) apply(force simp add:same_length_def length_Suc_conv) apply(simp add:same_state_def) apply(erule_tac x=ia in allE, erule impE, assumption,
erule_tac x=1 and P="\j. H j \ (snd (d j))=(snd (e j))"for H d e in allE) apply(erule_tac x=ia and P="\j. H j \ I j \ J j"for H I J in allE) apply(drule_tac t=i in not_sym,simp) apply(erule etranE,simp) apply(erule allE,erule impE,assumption,erule tl_in_cptn) apply(force simp add:same_length_def length_Suc_conv) apply(simp add:same_length_def same_state_def) apply(rule conjI) apply clarify apply(case_tac j,simp,simp) apply(erule_tac x=ia in allE, erule impE, assumption,
erule_tac x="Suc(Suc nat)"and P="\j. H j \ (snd (d j))=(snd (e j))"for H d e in allE,simp) apply(force simp add:same_length_def length_Suc_conv) apply(rule conjI) apply(simp add:same_program_def) apply clarify apply(case_tac j,simp) apply(rule nth_equalityI,simp) apply clarify apply(case_tac "i=ia",simp,simp) apply(erule_tac x="Suc(Suc nat)"and P="\j. H j \ (fst (s j))=(t j)"for H s t in allE,simp) apply(rule nth_equalityI,simp,simp) apply(force simp add:length_Suc_conv) apply(rule allI,rule impI) apply(erule_tac x="Suc j"and P="\j. H j \ (I j \ J j)"for H I J in allE,simp) apply(erule disjE) apply clarify apply(rule_tac x=ia in exI,simp) apply(case_tac "i=ia",simp) apply(rule conjI) apply(force simp add: length_Suc_conv) apply clarify apply(erule_tac x=l and P="\j. H j \ I j \ J j"for H I J in allE,erule impE,assumption) apply(erule_tac x=l and P="\j. H j \ I j \ J j"for H I J in allE,erule impE,assumption) apply simp apply(case_tac j,simp) apply(rule tl_zero) apply(erule_tac x=l in allE, erule impE, assumption,
erule_tac x=1 and P="\j. (H j) \ (snd (d j))=(snd (e j))"for H d e in allE,simp) apply(force elim:etranE intro:Env) apply force apply force apply simp apply(rule tl_zero) apply(erule tl_zero) apply force apply force apply force apply force apply(rule conjI,simp) apply(rule nth_tl_if) apply force apply(erule_tac x=ia in allE, erule impE, assumption,
erule_tac x=1 and P="\j. H j \ (snd (d j))=(snd (e j))"for H d e in allE) apply(erule_tac x=ia and P="\j. H j \ I j \ J j"for H I J in allE) apply(drule_tac t=i in not_sym,simp) apply(erule etranE,simp) apply(erule tl_zero) apply force apply force apply clarify apply(case_tac "i=l",simp) apply(rule nth_tl_if) apply(erule_tac x=l and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply simp apply(erule_tac P="\j. H j \ I j \ J j"for H I J in allE,erule impE,assumption,erule impE,assumption) apply(erule tl_zero,force) apply(erule_tac x=l and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply(rule nth_tl_if) apply(erule_tac x=l and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply(erule_tac x=l in allE, erule impE, assumption,
erule_tac x=1 and P="\j. H j \ (snd (d j))=(snd (e j))"for H d e in allE) apply(erule_tac x=l and P="\j. H j \ I j \ J j"for H I J in allE,erule impE, assumption,simp) apply(erule etranE,simp) apply(rule tl_zero) apply force apply force apply(erule_tac x=l and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply(rule disjI2) apply(case_tac j,simp) apply clarify apply(rule tl_zero) apply(erule_tac x=ia and P="\j. H j \ I j\etran"for H I in allE,erule impE, assumption) apply(case_tac "i=ia",simp,simp) apply(erule_tac x=ia in allE, erule impE, assumption,
erule_tac x=1 and P="\j. H j \ (snd (d j))=(snd (e j))"for H d e in allE) apply(erule_tac x=ia and P="\j. H j \ I j \ J j"for H I J in allE,erule impE, assumption,simp) apply(force elim:etranE intro:Env) apply force apply(erule_tac x=ia and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply simp apply clarify apply(rule tl_zero) apply(rule tl_zero,force) apply force apply(erule_tac x=ia and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply force apply(erule_tac x=ia and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) 🍋‹first step is an environmental step› apply clarify apply(erule par_etran.cases) apply simp apply(rule ParCptnEnv) apply(erule_tac x="Ps"in allE) apply(erule_tac x="t"in allE) apply(erule mp) apply(rule_tac x="map tl clist"in exI,simp) apply(rule conjI) apply clarify apply(erule_tac x=i and P="\j. H j \ I j \ cptn"for H I in allE,simp) apply(erule cptn.cases) apply(simp add:same_length_def) apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply(simp add:same_state_def) apply(erule_tac x=i in allE, erule impE, assumption,
erule_tac x=1 and P="\j. H j \ (snd (d j))=(snd (e j))"for H d e in allE,simp) apply(erule_tac x=i and P="\j. H j \ J j \etran"for H J in allE,simp) apply(erule etranE,simp) apply(simp add:same_state_def same_length_def) apply(rule conjI,clarify) apply(case_tac j,simp,simp) apply(erule_tac x=i in allE, erule impE, assumption,
erule_tac x="Suc(Suc nat)"and P="\j. H j \ (snd (d j))=(snd (e j))"for H d e in allE,simp) apply(rule tl_zero) apply(simp) apply force apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply(rule conjI) apply(simp add:same_program_def) apply clarify apply(case_tac j,simp) apply(rule nth_equalityI,simp) apply clarify apply simp apply(erule_tac x="Suc(Suc nat)"and P="\j. H j \ (fst (s j))=(t j)"for H s t in allE,simp) apply(rule nth_equalityI,simp,simp) apply(force simp add:length_Suc_conv) apply(rule allI,rule impI) apply(erule_tac x="Suc j"and P="\j. H j \ (I j \ J j)"for H I J in allE,simp) apply(erule disjE) apply clarify apply(rule_tac x=i in exI,simp) apply(rule conjI) apply(erule_tac x=i and P="\i. H i \ J i \etran"for H J in allE, erule impE, assumption) apply(erule etranE,simp) apply(erule_tac x=i in allE, erule impE, assumption,
erule_tac x=1 and P="\j. H j \ (snd (d j))=(snd (e j))"for H d e in allE,simp) apply(rule nth_tl_if) apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply simp apply(erule tl_zero,force) apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply clarify apply(erule_tac x=l and P="\i. H i \ J i \etran"for H J in allE, erule impE, assumption) apply(erule etranE,simp) apply(erule_tac x=l in allE, erule impE, assumption,
erule_tac x=1 and P="\j. H j \ (snd (d j))=(snd (e j))"for H d e in allE,simp) apply(rule nth_tl_if) apply(erule_tac x=l and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply simp apply(rule tl_zero,force) apply force apply(erule_tac x=l and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply(rule disjI2) apply simp apply clarify apply(case_tac j,simp) apply(rule tl_zero) apply(erule_tac x=i and P="\i. H i \ J i \etran"for H J in allE, erule impE, assumption) apply(erule_tac x=i and P="\i. H i \ J i \etran"for H J in allE, erule impE, assumption) apply(force elim:etranE intro:Env) apply force apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply simp apply(rule tl_zero) apply(rule tl_zero,force) apply force apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply force apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) done
lemma one_iff_aux: "xs\[] \ (\ys. ((xs, s)#ys \ par_cptn) =
(∃clist. length clist= length xs ∧
((xs, s)#ys ∝ map (λi. (fst i,s)#(snd i)) (zip xs clist)) ∧
(∀i<length xs. (xs!i,s)#(clist!i) ∈ cptn))) =
(par_cp (xs) s = {c. ∃clist. (length clist)=(length xs) ∧
(∀i<length clist. (clist!i) ∈ cp(xs!i) s) ∧ c ∝ clist})" apply (rule iffI) apply(rule subset_antisym) apply(rule subsetI) apply(clarify) apply(simp add:par_cp_def cp_def) apply(case_tac x) apply(force elim:par_cptn.cases) apply simp apply(rename_tac a list) apply(erule_tac x="list"in allE) apply clarify apply simp apply(rule_tac x="map (\i. (fst i, s) # snd i) (zip xs clist)"in exI,simp) apply(rule subsetI) apply(clarify) apply(case_tac x) apply(erule_tac x=0 in allE) apply(simp add:cp_def conjoin_def same_length_def same_program_def same_state_def compat_label_def) apply clarify apply(erule cptn.cases,force,force,force) apply(simp add:par_cp_def conjoin_def same_length_def same_program_def same_state_def compat_label_def) apply clarify apply(erule_tac x=0 and P="\j. H j \ (length (s j) = t)"for H s t in all_dupE) apply(subgoal_tac "a = xs") apply(subgoal_tac "b = s",simp) prefer 3 apply(erule_tac x=0 and P="\j. H j \ (fst (s j))=((t j))"for H s t in allE) apply (simp add:cp_def) apply(rule nth_equalityI,simp,simp) prefer 2 apply(erule_tac x=0 in allE) apply (simp add:cp_def) apply(erule_tac x=0 and P="\j. H j \ (\i. T i \ (snd (d j i))=(snd (e j i)))"for H T d e in allE,simp) apply(erule_tac x=0 and P="\j. H j \ (snd (d j))=(snd (e j))"for H d e in allE,simp) apply(erule_tac x=list in allE) apply(rule_tac x="map tl clist"in exI,simp) apply(rule conjI) apply clarify apply(case_tac j,simp) apply(erule_tac x=i in allE, erule impE, assumption,
erule_tac x="0"and P="\j. H j \ (snd (d j))=(snd (e j))"for H d e in allE,simp) apply(erule_tac x=i in allE, erule impE, assumption,
erule_tac x="Suc nat"and P="\j. H j \ (snd (d j))=(snd (e j))"for H d e in allE) apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE) apply(case_tac "clist!i",simp,simp) apply(rule conjI) apply clarify apply(rule nth_equalityI,simp,simp) apply(case_tac j) apply clarify apply(erule_tac x=i in allE) apply(simp add:cp_def) apply clarify apply simp apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE) apply(case_tac "clist!i",simp,simp) apply(thin_tac "H = (\i. J i)"for H J) apply(rule conjI) apply clarify apply(erule_tac x=j in allE,erule impE, assumption,erule disjE) apply clarify apply(rule_tac x=i in exI,simp) apply(case_tac j,simp) apply(rule conjI) apply(erule_tac x=i in allE) apply(simp add:cp_def) apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE) apply(case_tac "clist!i",simp,simp) apply clarify apply(erule_tac x=l in allE) apply(erule_tac x=l and P="\j. H j \ I j \ J j"for H I J in allE) apply clarify apply(simp add:cp_def) apply(erule_tac x=l and P="\j. H j \ (length (s j) = t)"for H s t in allE) apply(case_tac "clist!l",simp,simp) apply simp apply(rule conjI) apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE) apply(case_tac "clist!i",simp,simp) apply clarify apply(erule_tac x=l and P="\j. H j \ I j \ J j"for H I J in allE) apply(erule_tac x=l and P="\j. H j \ (length (s j) = t)"for H s t in allE) apply(case_tac "clist!l",simp,simp) apply clarify apply(erule_tac x=i in allE) apply(simp add:cp_def) apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE) apply(case_tac "clist!i",simp) apply(rule nth_tl_if,simp,simp) apply(erule_tac x=i and P="\j. H j \ (P j)\etran"for H P in allE, erule impE, assumption,simp) apply(simp add:cp_def) apply clarify apply(rule nth_tl_if) apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE) apply(case_tac "clist!i",simp,simp) apply force apply force apply clarify apply(rule iffI) apply(simp add:par_cp_def) apply(erule_tac c="(xs, s) # ys"in equalityCE) apply simp apply clarify apply(rule_tac x="map tl clist"in exI) apply simp apply (rule conjI) apply(simp add:conjoin_def cp_def) apply(rule conjI) apply clarify apply(unfold same_length_def) apply clarify apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE,simp) apply(rule conjI) apply(simp add:same_state_def) apply clarify apply(erule_tac x=i in allE, erule impE, assumption,
erule_tac x=j and P="\j. H j \ (snd (d j))=(snd (e j))"for H d e in allE) apply(case_tac j,simp) apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE) apply(case_tac "clist!i",simp,simp) apply(rule conjI) apply(simp add:same_program_def) apply clarify apply(rule nth_equalityI,simp,simp) apply(case_tac j,simp) apply clarify apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE) apply(case_tac "clist!i",simp,simp) apply clarify apply(simp add:compat_label_def) apply(rule allI,rule impI) apply(erule_tac x=j in allE,erule impE, assumption) apply(erule disjE) apply clarify apply(rule_tac x=i in exI,simp) apply(rule conjI) apply(erule_tac x=i in allE) apply(case_tac j,simp) apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE) apply(case_tac "clist!i",simp,simp) apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE) apply(case_tac "clist!i",simp,simp) apply clarify apply(erule_tac x=l and P="\j. H j \ I j \ J j"for H I J in allE) apply(erule_tac x=l and P="\j. H j \ (length (s j) = t)"for H s t in allE) apply(case_tac "clist!l",simp,simp) apply(erule_tac x=l in allE,simp) apply(rule disjI2) apply clarify apply(rule tl_zero) apply(case_tac j,simp,simp) apply(rule tl_zero,force) apply force apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply force apply(erule_tac x=i and P="\j. H j \ (length (s j) = t)"for H s t in allE,force) apply clarify apply(erule_tac x=i in allE) apply(simp add:cp_def) apply(rule nth_tl_if) apply(simp add:conjoin_def) apply clarify apply(simp add:same_length_def) apply(erule_tac x=i in allE,simp) apply simp apply simp apply simp apply clarify apply(erule_tac c="(xs, s) # ys"in equalityCE) apply(simp add:par_cp_def) apply simp apply(erule_tac x="map (\i. (fst i, s) # snd i) (zip xs clist)"in allE) apply simp apply clarify apply(simp add:cp_def) done
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.