section"Generic open invariants on sequential AWN processes"
theory OAWN_Invariants imports Invariants OInvariants
AWN_Cterms AWN_Labels AWN_Invariants
OAWN_SOS begin
subsection"Open invariants via labelled control terms"
lemma oseqp_sos_subterms: assumes"wellformed Γ" and"∃pn. p ∈ subterms (Γ pn)" and"((σ, p), a, (σ', p')) ∈ oseqp_sos Γ i" shows"∃pn. p' ∈ subterms (Γ pn)" using assms proof (induct p) fix p1 p2 assume IH1: "∃pn. p1 ∈ subterms (Γ pn) ==> ((σ, p1), a, (σ', p')) ∈ oseqp_sos Γ i ==> ∃pn. p' ∈ subterms (Γ pn)" and IH2: "∃pn. p2 ∈ subterms (Γ pn) ==> ((σ, p2), a, (σ', p')) ∈ oseqp_sos Γ i ==> ∃pn. p' ∈ subterms (Γ pn)" and"∃pn. p1 ⊕ p2 ∈ subterms (Γ pn)" and"((σ, p1 ⊕ p2), a, (σ', p')) ∈ oseqp_sos Γ i" from‹∃pn. p1 ⊕ p2 ∈ subterms (Γ pn)›obtain pn where"p1 ∈ subterms (Γ pn)" and"p2 ∈ subterms (Γ pn)"by auto from‹((σ, p1 ⊕ p2), a, (σ', p')) ∈ oseqp_sos Γ i› have"((σ, p1), a, (σ', p')) ∈ oseqp_sos Γ i ∨ ((σ, p2), a, (σ', p')) ∈ oseqp_sos Γ i"by auto thus"∃pn. p' ∈ subterms (Γ pn)" proof assume"((σ, p1), a, (σ', p')) ∈ oseqp_sos Γ i" with‹p1 ∈ subterms (Γ pn)›show ?thesis by (auto intro: IH1) next assume"((σ, p2), a, (σ', p')) ∈ oseqp_sos Γ i" with‹p2 ∈ subterms (Γ pn)›show ?thesis by (auto intro: IH2) qed qed auto
lemma oreachable_subterms: assumes"wellformed Γ" and"control_within Γ (init A)" and"trans A = oseqp_sos Γ i" and"(σ, p) ∈ oreachable A S U" shows"∃pn. p ∈ subterms (Γ pn)" using assms(4) proof (induct rule: oreachable_pair_induct) fix σ p assume"(σ, p) ∈ init A" with‹control_within Γ (init A)›show"∃pn. p ∈ subterms (Γ pn)" .. next fix σ p a σ' p' assume"(σ, p) ∈ oreachable A S U" and"∃pn. p ∈ subterms (Γ pn)" and3: "((σ, p), a, (σ', p')) ∈ trans A" and"S σ σ' a" moreoverfrom3and‹trans A = oseqp_sos Γ i› have"((σ, p), a, (σ', p')) ∈ oseqp_sos Γ i"by simp ultimatelyshow"∃pn. p' ∈ subterms (Γ pn)" using‹wellformed Γ› by (auto elim: oseqp_sos_subterms) qed
lemma onl_oinvariantI [intro]: assumes init: "∧σ p l. [ (σ, p) ∈ init A; l ∈ labels Γ p ]==> P (σ, l)" and other: "∧σ σ' p l. [ (σ, p) ∈ oreachable A S U; ∀l∈labels Γ p. P (σ, l); U σ σ' ]==>∀l∈labels Γ p. P (σ', l)" and step: "∧σ p a σ' p' l'. [ (σ, p) ∈ oreachable A S U; ∀l∈labels Γ p. P (σ, l); ((σ, p), a, (σ', p')) ∈ trans A; l' ∈ labels Γ p'; S σ σ' a ]==> P (σ', l')" shows"A ⊨ (S, U →) onl Γ P" proof fix σ p assume"(σ, p) ∈ init A" hence"∀l∈labels Γ p. P (σ, l)"using init by simp thus"onl Γ P (σ, p)" .. next fix σ p a σ' p' assume rp: "(σ, p) ∈ oreachable A S U" and"onl Γ P (σ, p)" and tr: "((σ, p), a, (σ', p')) ∈ trans A" and"S σ σ' a" from‹onl Γ P (σ, p)›have"∀l∈labels Γ p. P (σ, l)" .. with rp tr ‹S σ σ' a›have"∀l'∈labels Γ p'. P (σ', l')"by (auto elim: step) thus"onl Γ P (σ', p')" .. next fix σ σ' p assume"(σ, p) ∈ oreachable A S U" and"onl Γ P (σ, p)" and"U σ σ'" from‹onl Γ P (σ, p)›have"∀l∈labels Γ p. P (σ, l)"by auto with‹(σ, p) ∈ oreachable A S U›have"∀l∈labels Γ p. P (σ', l)" using‹U σ σ'›by (rule other) thus"onl Γ P (σ', p)"by auto qed
lemma global_oinvariantI [intro]: assumes init: "∧σ p. (σ, p) ∈ init A ==> P σ" and other: "∧σ σ' p l. [ (σ, p) ∈ oreachable A S U; P σ; U σ σ' ]==> P σ'" and step: "∧σ p a σ' p'. [ (σ, p) ∈ oreachable A S U; P σ; ((σ, p), a, (σ', p')) ∈ trans A; S σ σ' a ]==> P σ'" shows"A ⊨ (S, U →) (λ(σ, _). P σ)" proof fix σ p assume"(σ, p) ∈ init A" thus"(λ(σ, _). P σ) (σ, p)" by simp (erule init) next fix σ p a σ' p' assume rp: "(σ, p) ∈ oreachable A S U" and"(λ(σ, _). P σ) (σ, p)" and tr: "((σ, p), a, (σ', p')) ∈ trans A" and"S σ σ' a" from‹(λ(σ, _). P σ) (σ, p)›have"P σ"by simp with rp have"P σ'" using tr ‹S σ σ' a›by (rule step) thus"(λ(σ, _). P σ) (σ', p')"by simp next fix σ σ' p assume"(σ, p) ∈ oreachable A S U" and"(λ(σ, _). P σ) (σ, p)" and"U σ σ'" hence"P σ'"by simp (erule other) thus"(λ(σ, _). P σ) (σ', p)"by simp qed
lemma onl_oinvariantD [dest]: assumes"A ⊨ (S, U →) onl Γ P" and"(σ, p) ∈ oreachable A S U" and"l ∈ labels Γ p" shows"P (σ, l)" using assms unfolding onl_def by auto
lemma onl_oinvariant_weakenD [dest]: assumes"A ⊨ (S', U' →) onl Γ P" and"(σ, p) ∈ oreachable A S U" and"l ∈ labels Γ p" and weakenS: "∧s s' a. S s s' a ==> S' s s' a" and weakenU: "∧s s'. U s s' ==> U' s s'" shows"P (σ, l)" proof - from‹(σ, p) ∈ oreachable A S U›have"(σ, p) ∈ oreachable A S' U'" by (rule oreachable_weakenE)
(erule weakenS, erule weakenU) with‹A ⊨ (S', U' →) onl Γ P›show"P (σ, l)" using‹l ∈ labels Γ p› .. qed
lemma onl_oinvariant_initD [dest]: assumes invP: "A ⊨ (S, U →) onl Γ P" and init: "(σ, p) ∈ init A" and pnl: "l ∈ labels Γ p" shows"P (σ, l)" proof - from init have"(σ, p) ∈ oreachable A S U" .. with invP show ?thesis using pnl .. qed
lemma onl_oinvariant_sterms: assumes wf: "wellformed Γ" and il: "A ⊨ (S, U →) onl Γ P" and rp: "(σ, p) ∈ oreachable A S U" and"p'∈sterms Γ p" and"l∈labels Γ p'" shows"P (σ, l)" proof - from wf ‹p'∈sterms Γ p›‹l∈labels Γ p'›have"l∈labels Γ p" by (rule labels_sterms_labels) with il rp show"P (σ, l)" .. qed
lemma onl_oinvariant_sterms_weaken: assumes wf: "wellformed Γ" and il: "A ⊨ (S', U' →) onl Γ P" and rp: "(σ, p) ∈ oreachable A S U" and"p'∈sterms Γ p" and"l∈labels Γ p'" and weakenS: "∧σ σ' a. S σ σ' a ==> S' σ σ' a" and weakenU: "∧σ σ'. U σ σ' ==> U' σ σ'" shows"P (σ, l)" proof - from‹(σ, p) ∈ oreachable A S U›have"(σ, p) ∈ oreachable A S' U'" by (rule oreachable_weakenE)
(erule weakenS, erule weakenU) with assms(1-2) show ?thesis using assms(4-5) by (rule onl_oinvariant_sterms) qed
lemma otrans_from_sterms: assumes"((σ, p), a, (σ', q)) ∈ oseqp_sos Γ i" and"wellformed Γ" shows"∃p'∈sterms Γ p. ((σ, p'), a, (σ', q)) ∈ oseqp_sos Γ i" using assms by (induction p rule: sterms_pinduct [OF ‹wellformed Γ›]) auto
lemma otrans_from_sterms': assumes"((σ, p'), a, (σ', q)) ∈ oseqp_sos Γ i" and"wellformed Γ" and"p' ∈ sterms Γ p" shows"((σ, p), a, (σ', q)) ∈ oseqp_sos Γ i" using assms by (induction p rule: sterms_pinduct [OF ‹wellformed Γ›]) auto
lemma otrans_to_dterms: assumes"((σ, p), a, (σ', q)) ∈ oseqp_sos Γ i" and"wellformed Γ" shows"∀r∈sterms Γ q. r ∈ dterms Γ p" using assms by (induction q) auto
theorem cterms_includes_sterms_of_oseq_reachable: assumes"wellformed Γ" and"control_within Γ (init A)" and"trans A = oseqp_sos Γ i" shows"∪(sterms Γ ` snd ` oreachable A S U) ⊆ cterms Γ" proof fix qs assume"qs ∈∪(sterms Γ ` snd ` oreachable A S U)" thenobtain ξ and q where *: "(ξ, q) ∈ oreachable A S U" and **: "qs ∈ sterms Γ q"by auto from * have"∧x. x ∈ sterms Γ q ==> x ∈ cterms Γ" proof (induction rule: oreachable_pair_induct) fix σ p q assume"(σ, p) ∈ init A" and"q ∈ sterms Γ p" from‹control_within Γ (init A)›and‹(σ, p) ∈ init A› obtain pn where"p ∈ subterms (Γ pn)"by auto with‹wellformed Γ›show"q ∈ cterms Γ"using‹q∈sterms Γ p› by (rule subterms_sterms_in_cterms) next fix p σ a σ' q x assume"(σ, p) ∈ oreachable A S U" and IH: "∧x. x ∈ sterms Γ p ==> x ∈ cterms Γ" and"((σ, p), a, (σ', q)) ∈ trans A" and"x ∈ sterms Γ q" from this(3) and‹trans A = oseqp_sos Γ i› have step: "((σ, p), a, (σ', q)) ∈ oseqp_sos Γ i"by simp from step ‹wellformed Γ›obtain ps where ps: "ps ∈ sterms Γ p" and step': "((σ, ps), a, (σ', q)) ∈ oseqp_sos Γ i" by (rule otrans_from_sterms [THEN bexE]) from ps have"ps ∈ cterms Γ"by (rule IH) moreoverfrom step' ‹wellformed Γ›‹x ∈ sterms Γ q›have"x ∈ dterms Γ ps" by (rule otrans_to_dterms [rule_format]) ultimatelyshow"x ∈ cterms Γ"by (rule ctermsDI) qed thus"qs ∈ cterms Γ"using ** . qed
corollary oseq_reachable_in_cterms: assumes"wellformed Γ" and"control_within Γ (init A)" and"trans A = oseqp_sos Γ i" and"(σ, p) ∈ oreachable A S U" and"p' ∈ sterms Γ p" shows"p' ∈ cterms Γ" using assms(1-3) proof (rule cterms_includes_sterms_of_oseq_reachable [THEN subsetD]) from assms(4-5) show"p' ∈∪(sterms Γ ` snd ` oreachable A S U)" by (auto elim!: rev_bexI) qed
lemma oseq_invariant_ctermI: assumes wf: "wellformed Γ" and cw: "control_within Γ (init A)" and sl: "simple_labels Γ" and sp: "trans A = oseqp_sos Γ i" and init: "∧σ p l. [ (σ, p) ∈ init A; l∈labels Γ p ]==> P (σ, l)" and other: "∧σ σ' p l. [ (σ, p) ∈ oreachable A S U; l∈labels Γ p; P (σ, l); U σ σ' ]==> P (σ', l)" andlocal: "∧p l σ a q l' σ' pp. [ p∈cterms Γ; l∈labels Γ p; P (σ, l); ((σ, p), a, (σ', q)) ∈ oseqp_sos Γ i; ((σ, p), a, (σ', q)) ∈ trans A; l'∈labels Γ q; (σ, pp)∈oreachable A S U; p∈sterms Γ pp; (σ', q)∈oreachable A S U; S σ σ' a ]==> P (σ', l')" shows"A ⊨ (S, U →) onl Γ P" proof fix σ p l assume"(σ, p) ∈ init A" and *: "l ∈ labels Γ p" with init show"P (σ, l)"by auto next fix σ p a σ' q l' assume sr: "(σ, p) ∈ oreachable A S U" and pl: "∀l∈labels Γ p. P (σ, l)" and tr: "((σ, p), a, (σ', q)) ∈ trans A" and A6: "l' ∈ labels Γ q" and"S σ σ' a" thus"P (σ', l')" proof - from sr and tr and‹S σ σ' a›have A7: "(σ', q) ∈ oreachable A S U" by - (rule oreachable_local') from tr and sp have tr': "((σ, p), a, (σ', q)) ∈ oseqp_sos Γ i"by simp thenobtain p' where"p' ∈ sterms Γ p" and A4: "((σ, p'), a, (σ', q)) ∈ oseqp_sos Γ i" by (blast dest: otrans_from_sterms [OF _ wf]) from wf cw sp sr this(1) have A1: "p'∈cterms Γ" by (rule oseq_reachable_in_cterms) from labels_not_empty [OF wf] obtain ll where A2: "ll∈labels Γ p'" by blast with‹p'∈sterms Γ p›have"ll∈labels Γ p" by (rule labels_sterms_labels [OF wf]) with pl have A3: "P (σ, ll)"by simp from sr ‹p'∈sterms Γ p› obtain pp where A7: "(σ, pp)∈oreachable A S U" and A8: "p'∈sterms Γ pp" by auto from sr tr ‹S σ σ' a›have A9: "(σ', q)∈oreachable A S U" by - (rule oreachable_local') from sp and‹((σ, p'), a, (σ', q)) ∈ oseqp_sos Γ i› have A5: "((σ, p'), a, (σ', q)) ∈ trans A"by simp from A1 A2 A3 A4 A5 A6 A7 A8 A9 ‹S σ σ' a›show ?thesis by (rule local) qed next fix σ σ' p l assume sr: "(σ, p) ∈ oreachable A S U" and"∀l∈labels Γ p. P (σ, l)" and"U σ σ'" show"∀l∈labels Γ p. P (σ', l)" proof fix l assume"l∈labels Γ p" with‹∀l∈labels Γ p. P (σ, l)›have"P (σ, l)" .. with sr and‹l∈labels Γ p› show"P (σ', l)"using‹U σ σ'›by (rule other) qed qed
lemma oseq_invariant_ctermsI: assumes wf: "wellformed Γ" and cw: "control_within Γ (init A)" and sl: "simple_labels Γ" and sp: "trans A = oseqp_sos Γ i" and init: "∧σ p l. [ (σ, p) ∈ init A; l∈labels Γ p ]==> P (σ, l)" and other: "∧σ σ' p l. [ wellformed Γ; (σ, p) ∈ oreachable A S U; l∈labels Γ p; P (σ, l); U σ σ' ]==> P (σ', l)" andlocal: "∧p l σ a q l' σ' pp pn. [ wellformed Γ; p∈ctermsl (Γ pn); not_call p; l∈labels Γ p; P (σ, l); ((σ, p), a, (σ', q)) ∈ oseqp_sos Γ i; ((σ, p), a, (σ', q)) ∈ trans A; l'∈labels Γ q; (σ, pp)∈oreachable A S U; p∈sterms Γ pp; (σ', q)∈oreachable A S U; S σ σ' a ]==> P (σ', l')" shows"A ⊨ (S, U →) onl Γ P" proof (rule oseq_invariant_ctermI [OF wf cw sl sp]) fix σ p l assume"(σ, p) ∈ init A" and"l ∈ labels Γ p" thus"P (σ, l)"by (rule init) next fix σ σ' p l assume"(σ, p) ∈ oreachable A S U" and"l ∈ labels Γ p" and"P (σ, l)" and"U σ σ'" with wf show"P (σ', l)"by (rule other) next fix p l σ a q l' σ' pp assume"p ∈ cterms Γ" and otherassms: "l ∈ labels Γ p" "P (σ, l)" "((σ, p), a, (σ', q)) ∈ oseqp_sos Γ i" "((σ, p), a, (σ', q)) ∈ trans A" "l' ∈ labels Γ q" "(σ, pp) ∈ oreachable A S U" "p ∈ sterms Γ pp" "(σ', q) ∈ oreachable A S U" "S σ σ' a" from this(1) obtain pn where"p ∈ ctermsl(Γ pn)" and"not_call p" unfolding cterms_def' [OF wf] by auto with wf show"P (σ', l')" using otherassms by (rule local) qed
subsection"Open step invariants via labelled control terms"
lemma onll_ostep_invariantI [intro]: assumes *: "∧σ p l a σ' p' l'. [ (σ, p)∈oreachable A S U; ((σ, p), a, (σ', p')) ∈ trans A; S σ σ' a; l ∈labels Γ p; l'∈labels Γ p' ] ==> P ((σ, l), a, (σ', l'))" shows"A ⊨A (S, U →) onll Γ P" proof fix σ p σ' p' a assume"(σ, p) ∈ oreachable A S U" and"((σ, p), a, (σ', p')) ∈ trans A" and"S σ σ' a" hence"∀l∈labels Γ p. ∀l'∈labels Γ p'. P ((σ, l), a, (σ', l'))"by (auto elim!: *) thus"onll Γ P ((σ, p), a, (σ', p'))" .. qed
lemma onll_ostep_invariantE [elim]: assumes"A ⊨A (S, U →) onll Γ P" and"(σ, p) ∈ oreachable A S U" and"((σ, p), a, (σ', p')) ∈ trans A" and"S σ σ' a" and lp: "l ∈labels Γ p" and lp': "l'∈labels Γ p'" shows"P ((σ, l), a, (σ', l'))" proof - from assms(1-4) have"onll Γ P ((σ, p), a, (σ', p'))" .. with lp lp' show"P ((σ, l), a, (σ', l'))"by auto qed
lemma onll_ostep_invariantD [dest]: assumes"A ⊨A (S, U →) onll Γ P" and"(σ, p) ∈ oreachable A S U" and"((σ, p), a, (σ', p')) ∈ trans A" and"S σ σ' a" shows"∀l∈labels Γ p. ∀l'∈labels Γ p'. P ((σ, l), a, (σ', l'))" using assms by auto
lemma onll_ostep_invariant_weakenD [dest]: assumes"A ⊨A (S', U' →) onll Γ P" and"(σ, p) ∈ oreachable A S U" and"((σ, p), a, (σ', p')) ∈ trans A" and"S' σ σ' a" and weakenS: "∧s s' a. S s s' a ==> S' s s' a" and weakenU: "∧s s'. U s s' ==> U' s s'" shows"∀l∈labels Γ p. ∀l'∈labels Γ p'. P ((σ, l), a, (σ', l'))" proof - from‹(σ, p) ∈ oreachable A S U›have"(σ, p) ∈ oreachable A S' U'" by (rule oreachable_weakenE)
(erule weakenS, erule weakenU) with‹A ⊨A (S', U' →) onll Γ P›show ?thesis using‹((σ, p), a, (σ', p')) ∈ trans A›and‹S' σ σ' a› .. qed
lemma onll_ostep_to_invariantI [intro]: assumes sinv: "A ⊨A (S, U →) onll Γ Q" and wf: "wellformed Γ" and init: "∧σ l p. [ (σ, p) ∈ init A; l∈labels Γ p ]==> P (σ, l)" and other: "∧σ σ' p l. [ (σ, p) ∈ oreachable A S U; l∈labels Γ p; P (σ, l); U σ σ' ]==> P (σ', l)" andlocal: "∧σ p l σ' l' a. [ (σ, p) ∈ oreachable A S U; l∈labels Γ p; P (σ, l); Q ((σ, l), a, (σ', l')); S σ σ' a]==> P (σ', l')" shows"A ⊨ (S, U →) onl Γ P" proof fix σ p l assume"(σ, p) ∈ init A"and"l∈labels Γ p" thus"P (σ, l)"by (rule init) next fix σ p a σ' p' l' assume sr: "(σ, p) ∈ oreachable A S U" and lp: "∀l∈labels Γ p. P (σ, l)" and tr: "((σ, p), a, (σ', p')) ∈ trans A" and"S σ σ' a" and lp': "l' ∈ labels Γ p'" show"P (σ', l')" proof - from lp obtain l where"l∈labels Γ p"and"P (σ, l)" using labels_not_empty [OF wf] by auto from sinv sr tr ‹S σ σ' a› this(1) lp' have"Q ((σ, l), a, (σ', l'))" .. with sr ‹l∈labels Γ p›‹P (σ, l)›show"P (σ', l')"using‹S σ σ' a›by (rule local) qed next fix σ σ' p l assume"(σ, p) ∈ oreachable A S U" and"∀l∈labels Γ p. P (σ, l)" and"U σ σ'" show"∀l∈labels Γ p. P (σ', l)" proof fix l assume"l∈labels Γ p" with‹∀l∈labels Γ p. P (σ, l)›have"P (σ, l)" .. with‹(σ, p) ∈ oreachable A S U›and‹l∈labels Γ p› show"P (σ', l)"using‹U σ σ'›by (rule other) qed qed
lemma onll_ostep_invariant_sterms: assumes wf: "wellformed Γ" and si: "A ⊨A (S, U →) onll Γ P" and sr: "(σ, p) ∈ oreachable A S U" and sos: "((σ, p), a, (σ', q)) ∈ trans A" and"S σ σ' a" and"l'∈labels Γ q" and"p'∈sterms Γ p" and"l∈labels Γ p'" shows"P ((σ, l), a, (σ', l'))" proof - from wf ‹p'∈sterms Γ p›‹l∈labels Γ p'›have"l∈labels Γ p" by (rule labels_sterms_labels) with si sr sos ‹S σ σ' a›show"P ((σ, l), a, (σ', l'))"using‹l'∈labels Γ q› .. qed
lemma oseq_step_invariant_sterms: assumes inv: "A ⊨A (S, U →) onll Γ P" and wf: "wellformed Γ" and sp: "trans A = oseqp_sos Γ i" and"l'∈labels Γ q" and sr: "(σ, p) ∈ oreachable A S U" and tr: "((σ, p'), a, (σ', q)) ∈ trans A" and"S σ σ' a" and"p'∈sterms Γ p" shows"∀l∈labels Γ p'. P ((σ, l), a, (σ', l'))" proof from assms(3, 6) have"((σ, p'), a, (σ', q)) ∈ oseqp_sos Γ i"by simp hence"((σ, p), a, (σ', q)) ∈ oseqp_sos Γ i" using wf ‹p'∈sterms Γ p›by (rule otrans_from_sterms') with assms(3) have trp: "((σ, p), a, (σ', q)) ∈ trans A"by simp fix l assume"l ∈ labels Γ p'" with wf inv sr trp ‹S σ σ' a›‹l'∈labels Γ q›‹p'∈sterms Γ p› show"P ((σ, l), a, (σ', l'))" by - (erule(7) onll_ostep_invariant_sterms) qed
lemma oseq_step_invariant_sterms_weaken: assumes inv: "A ⊨A (S, U →) onll Γ P" and wf: "wellformed Γ" and sp: "trans A = oseqp_sos Γ i" and"l'∈labels Γ q" and sr: "(σ, p) ∈ oreachable A S' U'" and tr: "((σ, p'), a, (σ', q)) ∈ trans A" and"S' σ σ' a" and"p'∈sterms Γ p" and weakenS: "∧σ σ' a. S' σ σ' a ==> S σ σ' a" and weakenU: "∧σ σ'. U' σ σ' ==> U σ σ'" shows"∀l∈labels Γ p'. P ((σ, l), a, (σ', l'))" proof - from‹S' σ σ' a›have"S σ σ' a"by (rule weakenS) from‹(σ, p) ∈ oreachable A S' U'› have Ir: "(σ, p) ∈ oreachable A S U" by (rule oreachable_weakenE)
(erule weakenS, erule weakenU) with assms(1-4) show ?thesis using tr ‹S σ σ' a›‹p'∈sterms Γ p› by (rule oseq_step_invariant_sterms) qed
lemma onll_ostep_invariant_any_sterms: assumes wf: "wellformed Γ" and si: "A ⊨A (S, U →) onll Γ P" and sr: "(σ, p) ∈ oreachable A S U" and sos: "((σ, p), a, (σ', q)) ∈ trans A" and"S σ σ' a" and"l'∈labels Γ q" shows"∀p'∈sterms Γ p. ∀l∈labels Γ p'. P ((σ, l), a, (σ', l'))" by (intro ballI) (rule onll_ostep_invariant_sterms [OF assms])
lemma oseq_step_invariant_ctermI [intro]: assumes wf: "wellformed Γ" and cw: "control_within Γ (init A)" and sl: "simple_labels Γ" and sp: "trans A = oseqp_sos Γ i" andlocal: "∧p l σ a q l' σ' pp. [ p∈cterms Γ; l∈labels Γ p; ((σ, p), a, (σ', q)) ∈ oseqp_sos Γ i; ((σ, p), a, (σ', q)) ∈ trans A; l'∈labels Γ q; (σ, pp) ∈ oreachable A S U; p∈sterms Γ pp; (σ', q) ∈ oreachable A S U; S σ σ' a ]==> P ((σ, l), a, (σ', l'))" shows"A ⊨A (S, U →) onll Γ P" proof fix σ p l a σ' q l' assume sr: "(σ, p) ∈ oreachable A S U" and tr: "((σ, p), a, (σ', q)) ∈ trans A" and"S σ σ' a" and pl: "l ∈ labels Γ p" and A5: "l' ∈ labels Γ q" from this(2) and sp have"((σ, p), a, (σ', q)) ∈ oseqp_sos Γ i"by simp thenobtain p' where"p' ∈ sterms Γ p" and A3: "((σ, p'), a, (σ', q)) ∈ oseqp_sos Γ i" by (blast dest: otrans_from_sterms [OF _ wf]) from this(2) and sp have A4: "((σ, p'), a, (σ', q)) ∈ trans A"by simp from wf cw sp sr ‹p'∈sterms Γ p›have A1: "p'∈cterms Γ" by (rule oseq_reachable_in_cterms) from sr ‹p'∈sterms Γ p› obtain pp where A6: "(σ, pp)∈oreachable A S U" and A7: "p'∈sterms Γ pp" by auto from sr tr ‹S σ σ' a›have A8: "(σ', q)∈oreachable A S U" by - (erule(2) oreachable_local') from wf cw sp sr have"∃pn. p ∈ subterms (Γ pn)" by (rule oreachable_subterms) with sl wf have"∀p'∈sterms Γ p. l ∈ labels Γ p'" using pl by (rule simple_labels_in_sterms) with‹p' ∈ sterms Γ p›have"l ∈ labels Γ p'"by simp with A1 show"P ((σ, l), a, (σ', l'))"using A3 A4 A5 A6 A7 A8 ‹S σ σ' a› by (rule local) qed
lemma oseq_step_invariant_ctermsI [intro]: assumes wf: "wellformed Γ" and"control_within Γ (init A)" and"simple_labels Γ" and"trans A = oseqp_sos Γ i" andlocal: "∧p l σ a q l' σ' pp pn. [ wellformed Γ; p∈ctermsl (Γ pn); not_call p; l∈labels Γ p; ((σ, p), a, (σ', q)) ∈ oseqp_sos Γ i; ((σ, p), a, (σ', q)) ∈ trans A; l'∈labels Γ q; (σ, pp) ∈ oreachable A S U; p∈sterms Γ pp; (σ', q) ∈ oreachable A S U; S σ σ' a ]==> P ((σ, l), a, (σ', l'))" shows"A ⊨A (S, U →) onll Γ P" using assms(1-4) proof (rule oseq_step_invariant_ctermI) fix p l σ a q l' σ' pp assume"p ∈ cterms Γ" and otherassms: "l ∈ labels Γ p" "((σ, p), a, (σ', q)) ∈ oseqp_sos Γ i" "((σ, p), a, (σ', q)) ∈ trans A" "l' ∈ labels Γ q" "(σ, pp) ∈ oreachable A S U" "p ∈ sterms Γ pp" "(σ', q) ∈ oreachable A S U" "S σ σ' a" from this(1) obtain pn where"p ∈ ctermsl(Γ pn)" and"not_call p" unfolding cterms_def' [OF wf] by auto with wf show"P ((σ, l), a, (σ', l'))" using otherassms by (rule local) qed
lemma open_seqp_action [elim]: assumes"wellformed Γ" and"((σ i, p), a, (σ' i, p')) ∈ seqp_sos Γ" shows"((σ, p), a, (σ', p')) ∈ oseqp_sos Γ i" proof - from assms obtain ps where"ps∈sterms Γ p" and"((σ i, ps), a, (σ' i, p')) ∈ seqp_sos Γ" by - (drule trans_from_sterms, auto) thus ?thesis proof (induction p) fix p1 p2 assume"[ ps ∈ sterms Γ p1; ((σ i, ps), a, σ' i, p') ∈ seqp_sos Γ ] ==> ((σ, p1), a, (σ', p')) ∈ oseqp_sos Γ i" and"[ ps ∈ sterms Γ p2; ((σ i, ps), a, σ' i, p') ∈ seqp_sos Γ ] ==> ((σ, p2), a, (σ', p')) ∈ oseqp_sos Γ i" and"ps ∈ sterms Γ (p1 ⊕ p2)" and"((σ i, ps), a, (σ' i, p')) ∈ seqp_sos Γ" with assms(1) show"((σ, p1 ⊕ p2), a, (σ', p')) ∈ oseqp_sos Γ i" by simp (metis oseqp_sos.ochoiceT1 oseqp_sos.ochoiceT2) next fix l fip fmsg p1 p2 assume IH1: "[ ps ∈ sterms Γ p1; ((σ i, ps), a, σ' i, p') ∈ seqp_sos Γ ] ==> ((σ, p1), a, (σ', p')) ∈ oseqp_sos Γ i" and IH2: "[ ps ∈ sterms Γ p2; ((σ i, ps), a, σ' i, p') ∈ seqp_sos Γ ] ==> ((σ, p2), a, (σ', p')) ∈ oseqp_sos Γ i" and"ps ∈ sterms Γ ({l}unicast(fip, fmsg). p1 ▹ p2)" and"((σ i, ps), a, (σ' i, p')) ∈ seqp_sos Γ" from this(3-4) have"((σ i, {l}unicast(fip, fmsg). p1 ▹ p2), a, (σ' i, p')) ∈ seqp_sos Γ" by simp thus"((σ, {l}unicast(fip, fmsg). p1 ▹ p2), a, (σ', p')) ∈ oseqp_sos Γ i" proof (rule seqp_unicastTE) assume"a = unicast (fip (σ i)) (fmsg (σ i))" and"σ' i = σ i" and"p' = p1" thus ?thesis by auto next assume"a = ¬unicast (fip (σ i))" and"σ' i = σ i" and"p' = p2" thus ?thesis by auto qed next fix p assume"ps ∈ sterms Γ (call(p))" and"((σ i, ps), a, (σ' i, p')) ∈ seqp_sos Γ" with assms(1) have"((σ, ps), a, (σ', p')) ∈ oseqp_sos Γ i" by (cases ps) auto with assms(1) ‹ps ∈ sterms Γ (call(p))›have"((σ, Γ p), a, (σ', p')) ∈ oseqp_sos Γ i" by - (rule otrans_from_sterms', simp_all) thus"((σ, call(p)), a, (σ', p')) ∈ oseqp_sos Γ i"by auto qed auto qed
end
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.20 Sekunden
(vorverarbeitet am 2026-06-10)
¤
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.