lemma semanticsInduct: "[R ⟼β ≺ R'; ∧α P C. Prop C (α.(P)) α P; ∧P α P' Q C. [P ⟼α ≺ P'; ∧C. Prop C P α P']==> Prop C (ccs.Sum P Q) α P'; ∧Q α Q' P C. [Q ⟼α ≺ Q'; ∧C. Prop C Q α Q']==> Prop C (ccs.Sum P Q) α Q'; ∧P α P' Q C. [P ⟼α ≺ P'; ∧C. Prop C P α P']==> Prop C (P ∥ Q) α (P' ∥ Q); ∧Q α Q' P C. [Q ⟼α ≺ Q'; ∧C. Prop C Q α Q']==> Prop C (P ∥ Q) α (P ∥ Q'); ∧P a P' Q Q' C. [P ⟼a ≺ P'; ∧C. Prop C P a P'; Q ⟼(coAction a) ≺ Q'; ∧C. Prop C Q (coAction a) Q'; a ≠ τ] ==> Prop C (P ∥ Q) (τ) (P' ∥ Q'); ∧P α P' x C. [x ♯C; P ⟼α ≺ P'; ∧C. Prop C P α P'; x ♯ α]==> Prop C ((νx)P) α ((νx)P'); ∧P α P' C. [P ∥ !P ⟼α ≺ P'; ∧C. Prop C (P ∥ !P) α P']==> Prop C !P α P']
\<Longrightarrow> Prop (C::'a::fs_name) R β R'" by(erule_tac z=Cin semantics.strong_induct) auto
lemma NilTrans[dest]: shows"0⟼α ≺ P' ==> False" and"((b)).P ⟼⟨c⟩≺ P' ==> False" and"((b)).P ⟼τ ≺ P' ==> False" and"(⟨b⟩).P ⟼(c)≺ P' ==> False" and"(⟨b⟩).P ⟼τ ≺ P' ==> False" apply(ind_cases "0⟼α ≺ P'") apply(ind_cases "((b)).P ⟼⟨c⟩≺ P'", auto simp add: ccs.inject) apply(ind_cases "((b)).P ⟼τ ≺ P'", auto simp add: ccs.inject) apply(ind_cases "(⟨b⟩).P ⟼(c)≺ P'", auto simp add: ccs.inject) apply(ind_cases "(⟨b⟩).P ⟼τ ≺ P'", auto simp add: ccs.inject) done
lemma freshDerivative: fixes P :: ccs and a :: act and P' :: ccs and x :: name
inductive bangPred :: "ccs ==> ccs ==> bool" where
aux1: "bangPred P (!P)"
| aux2: "bangPred P (P ∥ !P)"
lemma bangInduct[consumes 1, case_names cPar1 cPar2 cComm cBang]: fixes P :: ccs and α :: act and P' :: ccs andC :: "'a::fs_name"
assumes"!P ⟼α ≺ P'" and rPar1: "∧α P' C. [P ⟼α ≺ P']==> Prop C (P ∥ !P) α (P' ∥ !P)" and rPar2: "∧α P' C. [!P ⟼α ≺ P'; ∧C. Prop C (!P) α P']==> Prop C (P ∥ !P) α (P ∥ P')" and rComm: "∧a P' P'' C. [P ⟼a ≺ P'; !P ⟼(coAction a) ≺ P''; ∧C. Prop C (!P) (coAction a) P''; a ≠ τ]==> Prop C (P ∥ !P) (τ) (P' ∥ P'')" and rBang: "∧α P' C. [P ∥ !P ⟼α ≺ P'; ∧C. Prop C (P ∥ !P) α P']==> Prop C (!P) α P'"
shows"Prop C (!P) α P'" proof -
{ fix X α P' assume"X ⟼α ≺ P'"and"bangPred P X" hence"Prop C X α P'" proof(nominal_induct avoiding: C rule: semantics.strong_induct) case(Action α Pa) thus ?case by - (ind_cases "bangPred P (α.(Pa))") next case(Sum1 Pa α P' Q) thus ?case by - (ind_cases "bangPred P (Pa ⊕ Q)") next case(Sum2 Q α Q' Pa) thus ?case by - (ind_cases "bangPred P (Pa ⊕ Q)") next case(Par1 Pa α P' Q) thus ?case apply - by(ind_cases "bangPred P (Pa ∥ Q)", auto intro: rPar1 simp add: ccs.inject) next case(Par2 Q α P' Pa) thus ?case apply - by(ind_cases "bangPred P (Pa ∥ Q)", auto intro: rPar2 aux1 simp add: ccs.inject) next case(Comm Pa a P' Q Q' C) thus ?case apply - by(ind_cases "bangPred P (Pa ∥ Q)", auto intro: rComm aux1 simp add: ccs.inject) next case(Res Pa α P' x) thus ?case by - (ind_cases "bangPred P ((νx)Pa)") next case(Bang Pa α P') thus ?case apply - by(ind_cases "bangPred P (!Pa)", auto intro: rBang aux2 simp add: ccs.inject) qed
} with‹!P ⟼α ≺ P'›show ?thesis by(force intro: bangPred.aux1) qed
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.