Up to index of Isabelle/HOL/HOL-Complex/CSP/CSP_T
theory CSP_T_traces(*-------------------------------------------* | CSP-Prover on Isabelle2004 | | December 2004 | | June 2005 (modified) | | August 2005 (modified) | | | | CSP-Prover on Isabelle2005 | | October 2005 (modified) | | December 2005 (modified) | | March 2007 (modified) | | | | Yoshinao Isobe (AIST JAPAN) | *-------------------------------------------*) theory CSP_T_traces imports CSP_T_semantics begin (* The following simplification rules are deleted in this theory file *) (* because they unexpectly rewrite UnionT and InterT. *) (* disj_not1: (~ P | Q) = (P --> Q) *) declare disj_not1 [simp del] (********************************************************* DomT *********************************************************) (*--------------------------------* | STOP | *--------------------------------*) lemma in_traces_STOP: "(t :t traces(STOP) M) = (t = <>)" by (simp add: traces_def) (*--------------------------------* | SKIP | *--------------------------------*) lemma in_traces_SKIP: "(t :t traces(SKIP) M) = (t = <> | t = <Tick>)" by (simp add: traces_def) (*--------------------------------* | DIV | *--------------------------------*) (*** DIV ***) lemma in_traces_DIV: "(t :t traces(DIV) M) = (t = <>)" by (simp add: traces_def) (*--------------------------------* | Act_prefix | *--------------------------------*) (*** Act_prefix_domT ***) lemma Act_prefix_domT: "{t. t = <> | (EX s. t = <Ev a> ^^ s & s :t T)} : domT" apply (simp add: domT_def HC_T1_def) apply (rule conjI) apply (rule_tac x="<>" in exI, simp) apply (simp add: prefix_closed_def) apply (intro allI impI) apply (elim conjE exE) apply (erule disjE, simp) (* <> *) apply (elim conjE exE, simp) apply (erule disjE, simp) (* <> *) apply (elim conjE exE, simp) apply (rule memT_prefix_closed) by (simp_all) (*** Act_prefix ***) lemma in_traces_Act_prefix: "t :t traces(a -> P) M = (t = <> | (EX s. t = <Ev a> ^^ s & s :t traces(P) M))" apply (simp add: traces_def) by (simp add: CollectT_open_memT Act_prefix_domT) (*--------------------------------* | Ext_pre_choice | *--------------------------------*) (*** Ext_pre_choice_domT ***) lemma Ext_pre_choice_domT: "{t. t = <> | (EX a s. t = <Ev a> ^^ s & s :t Tf a & a : X) } : domT" apply (simp add: domT_def HC_T1_def) apply (rule conjI) apply (rule_tac x="<>" in exI, simp) apply (simp add: prefix_closed_def) apply (intro allI impI) apply (elim conjE exE) apply (erule disjE, simp) (* <> *) apply (elim conjE exE, simp) apply (erule disjE, simp) (* <> *) apply (elim conjE exE, simp) apply (rule memT_prefix_closed) by (simp_all) (*** Ext_pre_choice ***) lemma in_traces_Ext_pre_choice: "(t :t traces(? :X -> Pf) M) = (t = <> | (EX a s. t = <Ev a> ^^ s & s :t traces(Pf a) M & a : X))" apply (simp add: traces_def) by (simp add: CollectT_open_memT Ext_pre_choice_domT) (*--------------------------------* | Ext_choice | *--------------------------------*) (*** Ext_choice_memT ***) lemma in_traces_Ext_choice: "(t :t traces(P [+] Q) M) = (t :t traces(P) M | t :t traces(Q) M)" by (simp add: traces_def) (*--------------------------------* | Int_choice | *--------------------------------*) (*** Int_choice_memT ***) lemma in_traces_Int_choice: "(t :t traces(P |~| Q) M) = (t :t traces(P) M| t :t traces(Q) M)" by (simp add: traces_def) (*--------------------------------* | Rep_int_choice | *--------------------------------*) (*** Rep_int_choice_domT ***) lemma Rep_int_choice_domT: "{t. t = <> | (EX a:X. t :t Tf a) } : domT" apply (simp add: domT_def HC_T1_def) apply (rule conjI) apply (rule_tac x="<>" in exI, simp) apply (simp add: prefix_closed_def) apply (intro allI impI) apply (elim conjE exE) apply (erule disjE, simp) (* <> *) apply (elim conjE bexE) apply (rule disjI2) apply (rule_tac x="a" in bexI) apply (rule memT_prefix_closed) by (simp_all) (*** Union_proc ***) lemma in_traces_Union_proc: "(t :t {t. t = <> | (EX a:X. t :t Tf a)}t) = (t = <> | (EX a:X. t :t Tf a))" apply (insert Rep_int_choice_domT[of X Tf]) apply (simp add: CollectT_open_memT) done lemma in_traces_UNIV_Union_proc: "(t :t {t. EX a. t :t Tf a}t) = (EX a. t :t Tf a)" apply (insert in_traces_Union_proc[of t UNIV Tf]) apply (simp) apply (subgoal_tac "{t. t = <> | (EX a. t :t Tf a)} = {t. EX a. t :t Tf a}") by (auto) (*** Rep_int_choice ***) lemma in_traces_Rep_int_choice_sum: "(t :t traces(!! :C .. Pf) M) = (t = <> | (EX c: sumset C. t :t traces(Pf c) M))" apply (simp add: traces_def) apply (simp add: in_traces_Union_proc) done lemma in_traces_Rep_int_choice_nat: "(t :t traces(!nat :N .. Pf) M) = (t = <> | (EX n:N. t :t traces(Pf n) M))" by (simp add: Rep_int_choice_ss_def in_traces_Rep_int_choice_sum) lemma in_traces_Rep_int_choice_set: "(t :t traces(!set :Xs .. Pf) M) = (t = <> | (EX X:Xs. t :t traces(Pf X) M))" by (simp add: Rep_int_choice_ss_def in_traces_Rep_int_choice_sum) lemma in_traces_Rep_int_choice_com: "(t :t traces(! :X .. Pf) M) = (t = <> | (EX a:X. t :t traces(Pf a) M))" apply (simp add: traces_def) apply (simp add: in_traces_Union_proc) done lemma in_traces_Rep_int_choice_f: "inj f ==> (t :t traces(!<f> :X .. Pf) M) = (t = <> | (EX a:X. t :t traces(Pf a) M))" apply (simp add: traces_def) apply (simp add: in_traces_Union_proc) done lemmas in_traces_Rep_int_choice = in_traces_Rep_int_choice_sum in_traces_Rep_int_choice_set in_traces_Rep_int_choice_nat in_traces_Rep_int_choice_com in_traces_Rep_int_choice_f (*--------------------------------* | IF | *--------------------------------*) (*** IF ***) lemma in_traces_IF: "(t :t traces(IF b THEN P ELSE Q) M) = (if b then t :t traces(P) M else t :t traces(Q) M)" by (simp add: traces_def) (*--------------------------------* | Parallel | *--------------------------------*) (*** Parallel_domT ***) lemma Parallel_domT : "{u. EX s t. u : s |[X]|tr t & s :t T & t :t S} : domT" apply (simp add: domT_def HC_T1_def) apply (rule conjI) apply (rule_tac x="<>" in exI, simp) (* prefix closed *) apply (simp add: prefix_closed_def) apply (intro allI impI) apply (elim conjE exE) apply (erule par_tr_prefixE, simp) apply (rule_tac x="s'" in exI) apply (rule_tac x="t'" in exI) apply (simp) apply (rule conjI) by (rule memT_prefix_closed, simp_all)+ (*** Parallel ***) lemma in_traces_Parallel: "(u :t traces(P |[X]| Q) M) = (EX s t. u : s |[X]|tr t & s :t traces(P) M & t :t traces(Q) M)" apply (simp add: traces_def) by (simp add: CollectT_open_memT Parallel_domT) (*--------------------------------* | Hiding | *--------------------------------*) (*** Hiding_domT ***) lemma Hiding_domT : "{t. EX s. t = s --tr X & s :t T } : domT" apply (simp add: domT_def HC_T1_def) apply (rule conjI) apply (rule_tac x="<>" in exI, simp) (* prefix closed *) apply (simp add: prefix_closed_def) apply (intro allI impI) apply (elim conjE exE) apply (simp add: hide_tr_prefix) apply (elim conjE exE) apply (rule_tac x="ta" in exI) apply (simp) apply (rule memT_prefix_closed) by (simp_all) (*** Hiding ***) lemma in_traces_Hiding: "(t :t traces(P -- X) M) = (EX s. t = s --tr X & s :t traces(P) M)" apply (simp add: traces_def) by (simp add: CollectT_open_memT Hiding_domT) (*--------------------------------* | Renaming | *--------------------------------*) (*** Renaming_domT ***) lemma Renaming_domT : "{t. EX s. s [[r]]* t & s :t T } : domT" apply (simp add: domT_def HC_T1_def) apply (rule conjI) apply (rule_tac x="<>" in exI, simp) (* prefix closed *) apply (simp add: prefix_closed_def) apply (intro allI impI) apply (elim conjE exE) apply (erule ren_tr_prefixE, simp) apply (rule_tac x="ta" in exI) apply (simp) apply (rule memT_prefix_closed) by (simp_all) (*** Renaming ***) lemma in_traces_Renaming: "(t :t traces(P [[r]]) M) = (EX s. s [[r]]* t & s :t traces(P) M)" apply (simp add: traces_def) by (simp add: CollectT_open_memT Renaming_domT) (*--------------------------------* | Seq_compo | *--------------------------------*) (*** Seq_compo_domT ***) lemma Seq_compo_domT : "{u. (EX s. u = rmTick s & s :t S ) | (EX s t. u = s ^^ t & s ^^ <Tick> :t S & t :t T & noTick s ) } : domT" apply (simp add: domT_def HC_T1_def) apply (rule conjI) apply (rule_tac x="<>" in exI) apply (rule disjI1) apply (rule_tac x="<>" in exI, simp) (* prefix closed *) apply (simp add: prefix_closed_def) apply (intro allI impI) apply (elim conjE exE) apply (erule disjE) (* case 1 *) apply (elim conjE exE) apply (rule disjI1) apply (simp add: rmTick_prefix) apply (elim conjE exE) apply (rule_tac x="u" in exI, simp) apply (rule memT_prefix_closed, simp_all) (* case 2 *) apply (elim conjE exE) apply (simp add: prefix_def) apply (elim exE conjE) apply (simp add: appt_decompo) apply (erule disjE) (* long case *) apply (elim conjE exE) apply (rule disjI2) apply (rule_tac x="sa" in exI, simp) apply (rule_tac x="ua" in exI, simp) apply (subgoal_tac "prefix ua (ua ^^ u)") apply (rule memT_prefix_closed, simp_all) apply (simp) (* short case *) apply (elim conjE exE) apply (rule disjI1) apply (rule_tac x="s" in exI) apply (case_tac "~ noTick s", simp) apply (simp) apply (subgoal_tac "prefix s (s ^^ ua ^^ <Tick>)") apply (rule memT_prefix_closed, simp_all) apply (simp) done (*** Seq_compo ***) lemma in_traces_Seq_compo: "(u :t traces(P ;; Q) M) = ((EX s. u = rmTick s & s :t traces(P) M) | (EX s t. u = s ^^ t & s ^^ <Tick> :t traces(P) M & t :t traces(Q) M & noTick s))" apply (simp add: traces_def) by (simp add: CollectT_open_memT Seq_compo_domT) (*--------------------------------* | Depth_rest | *--------------------------------*) (*** Depth_rest ***) lemma in_traces_Depth_rest: "(t :t traces(P |. n) M) = (t :t traces(P) M & (lengtht t) <= n)" apply (simp add: traces_def) apply (simp add: in_rest_domT) done (*--------------------------------* | Proc_name | *--------------------------------*) (*** Proc_name ***) lemma in_traces_Proc_name: "(t :t traces($p) M) = (t :t M p)" apply (simp add: traces_def) done (*--------------------------------* | alias | *--------------------------------*) lemmas traces_domT = Act_prefix_domT Ext_pre_choice_domT Rep_int_choice_domT Parallel_domT Hiding_domT Renaming_domT Seq_compo_domT lemmas in_traces = in_traces_STOP in_traces_SKIP in_traces_DIV in_traces_Act_prefix in_traces_Ext_pre_choice in_traces_Ext_choice in_traces_Int_choice in_traces_Rep_int_choice in_traces_IF in_traces_Parallel in_traces_Hiding in_traces_Renaming in_traces_Seq_compo in_traces_Union_proc in_traces_UNIV_Union_proc in_traces_Depth_rest in_traces_Proc_name (*--------------------------------* | Timeout | *--------------------------------*) (*** Timemout ***) lemma in_traces_Timeout1: "(t :t traces(P [> Q) M) = (t :t traces(P) M | t :t traces(Q) M)" apply (simp add: traces_def) done lemma in_traces_Timeout2: "(t :t traces(P [>def Q) M) = (t :t traces(P) M | t :t traces(Q) M)" apply (simp add: Timeout_def traces_def) done lemmas in_traces_Timeout = in_traces_Timeout1 in_traces_Timeout2 (****************** to add them again ******************) declare disj_not1 [simp] end
lemma in_traces_STOP:
(t :t traces STOP M) = (t = <>)
lemma in_traces_SKIP:
(t :t traces SKIP M) = (t = <> ∨ t = <Tick>)
lemma in_traces_DIV:
(t :t traces DIV M) = (t = <>)
lemma Act_prefix_domT:
{t. t = <> ∨ (∃s. t = <Ev a> ^^ s ∧ s :t T)} ∈ domT
lemma in_traces_Act_prefix:
(t :t traces (a -> P) M) = (t = <> ∨ (∃s. t = <Ev a> ^^ s ∧ s :t traces P M))
lemma Ext_pre_choice_domT:
{t. t = <> ∨ (∃a s. t = <Ev a> ^^ s ∧ s :t Tf a ∧ a ∈ X)} ∈ domT
lemma in_traces_Ext_pre_choice:
(t :t traces (? :X -> Pf) M) = (t = <> ∨ (∃a s. t = <Ev a> ^^ s ∧ s :t traces (Pf a) M ∧ a ∈ X))
lemma in_traces_Ext_choice:
(t :t traces (P [+] Q) M) = (t :t traces P M ∨ t :t traces Q M)
lemma in_traces_Int_choice:
(t :t traces (P |~| Q) M) = (t :t traces P M ∨ t :t traces Q M)
lemma Rep_int_choice_domT:
{t. t = <> ∨ (∃a∈X. t :t Tf a)} ∈ domT
lemma in_traces_Union_proc:
(t :t {t. t = <> ∨ (∃a∈X. t :t Tf a)}t) = (t = <> ∨ (∃a∈X. t :t Tf a))
lemma in_traces_UNIV_Union_proc:
(t :t {t. ∃a. t :t Tf a}t) = (∃a. t :t Tf a)
lemma in_traces_Rep_int_choice_sum:
(t :t traces (!! :C .. Pf) M) = (t = <> ∨ (∃c∈sumset C. t :t traces (Pf c) M))
lemma in_traces_Rep_int_choice_nat:
(t :t traces (!nat :N .. Pf) M) = (t = <> ∨ (∃n∈N. t :t traces (Pf n) M))
lemma in_traces_Rep_int_choice_set:
(t :t traces (!set :Xs .. Pf) M) = (t = <> ∨ (∃X∈Xs. t :t traces (Pf X) M))
lemma in_traces_Rep_int_choice_com:
(t :t traces (! :X .. Pf) M) = (t = <> ∨ (∃a∈X. t :t traces (Pf a) M))
lemma in_traces_Rep_int_choice_f:
inj f ==> (t :t traces (!<f> :X .. Pf) M) = (t = <> ∨ (∃a∈X. t :t traces (Pf a) M))
lemmas in_traces_Rep_int_choice:
(t :t traces (!! :C .. Pf) M) = (t = <> ∨ (∃c∈sumset C. t :t traces (Pf c) M))
(t :t traces (!set :Xs .. Pf) M) = (t = <> ∨ (∃X∈Xs. t :t traces (Pf X) M))
(t :t traces (!nat :N .. Pf) M) = (t = <> ∨ (∃n∈N. t :t traces (Pf n) M))
(t :t traces (! :X .. Pf) M) = (t = <> ∨ (∃a∈X. t :t traces (Pf a) M))
inj f ==> (t :t traces (!<f> :X .. Pf) M) = (t = <> ∨ (∃a∈X. t :t traces (Pf a) M))
lemmas in_traces_Rep_int_choice:
(t :t traces (!! :C .. Pf) M) = (t = <> ∨ (∃c∈sumset C. t :t traces (Pf c) M))
(t :t traces (!set :Xs .. Pf) M) = (t = <> ∨ (∃X∈Xs. t :t traces (Pf X) M))
(t :t traces (!nat :N .. Pf) M) = (t = <> ∨ (∃n∈N. t :t traces (Pf n) M))
(t :t traces (! :X .. Pf) M) = (t = <> ∨ (∃a∈X. t :t traces (Pf a) M))
inj f ==> (t :t traces (!<f> :X .. Pf) M) = (t = <> ∨ (∃a∈X. t :t traces (Pf a) M))
lemma in_traces_IF:
(t :t traces (IF b THEN P ELSE Q) M) = (if b then t :t traces P M else t :t traces Q M)
lemma Parallel_domT:
{u. ∃s t. u ∈ s |[X]|tr t ∧ s :t T ∧ t :t S} ∈ domT
lemma in_traces_Parallel:
(u :t traces (P |[X]| Q) M) = (∃s t. u ∈ s |[X]|tr t ∧ s :t traces P M ∧ t :t traces Q M)
lemma Hiding_domT:
{s --tr X |s. s :t T} ∈ domT
lemma in_traces_Hiding:
(t :t traces (P -- X) M) = (∃s. t = s --tr X ∧ s :t traces P M)
lemma Renaming_domT:
{t. ∃s. s [[r]]* t ∧ s :t T} ∈ domT
lemma in_traces_Renaming:
(t :t traces (P [[r]]) M) = (∃s. s [[r]]* t ∧ s :t traces P M)
lemma Seq_compo_domT:
{u. (∃s. u = rmTick s ∧ s :t S) ∨ (∃s t. u = s ^^ t ∧ s ^^ <Tick> :t S ∧ t :t T ∧ noTick s)} ∈ domT
lemma in_traces_Seq_compo:
(u :t traces (P ;; Q) M) = ((∃s. u = rmTick s ∧ s :t traces P M) ∨ (∃s t. u = s ^^ t ∧ s ^^ <Tick> :t traces P M ∧ t :t traces Q M ∧ noTick s))
lemma in_traces_Depth_rest:
(t :t traces (P |. n) M) = (t :t traces P M ∧ lengtht t ≤ n)
lemma in_traces_Proc_name:
(t :t traces ($p) M) = (t :t M p)
lemmas traces_domT:
{t. t = <> ∨ (∃s. t = <Ev a> ^^ s ∧ s :t T)} ∈ domT
{t. t = <> ∨ (∃a s. t = <Ev a> ^^ s ∧ s :t Tf a ∧ a ∈ X)} ∈ domT
{t. t = <> ∨ (∃a∈X. t :t Tf a)} ∈ domT
{u. ∃s t. u ∈ s |[X]|tr t ∧ s :t T ∧ t :t S} ∈ domT
{s --tr X |s. s :t T} ∈ domT
{t. ∃s. s [[r]]* t ∧ s :t T} ∈ domT
{u. (∃s. u = rmTick s ∧ s :t S) ∨ (∃s t. u = s ^^ t ∧ s ^^ <Tick> :t S ∧ t :t T ∧ noTick s)} ∈ domT
lemmas traces_domT:
{t. t = <> ∨ (∃s. t = <Ev a> ^^ s ∧ s :t T)} ∈ domT
{t. t = <> ∨ (∃a s. t = <Ev a> ^^ s ∧ s :t Tf a ∧ a ∈ X)} ∈ domT
{t. t = <> ∨ (∃a∈X. t :t Tf a)} ∈ domT
{u. ∃s t. u ∈ s |[X]|tr t ∧ s :t T ∧ t :t S} ∈ domT
{s --tr X |s. s :t T} ∈ domT
{t. ∃s. s [[r]]* t ∧ s :t T} ∈ domT
{u. (∃s. u = rmTick s ∧ s :t S) ∨ (∃s t. u = s ^^ t ∧ s ^^ <Tick> :t S ∧ t :t T ∧ noTick s)} ∈ domT
lemmas in_traces:
(t :t traces STOP M) = (t = <>)
(t :t traces SKIP M) = (t = <> ∨ t = <Tick>)
(t :t traces DIV M) = (t = <>)
(t :t traces (a -> P) M) = (t = <> ∨ (∃s. t = <Ev a> ^^ s ∧ s :t traces P M))
(t :t traces (? :X -> Pf) M) = (t = <> ∨ (∃a s. t = <Ev a> ^^ s ∧ s :t traces (Pf a) M ∧ a ∈ X))
(t :t traces (P [+] Q) M) = (t :t traces P M ∨ t :t traces Q M)
(t :t traces (P |~| Q) M) = (t :t traces P M ∨ t :t traces Q M)
(t :t traces (!! :C .. Pf) M) = (t = <> ∨ (∃c∈sumset C. t :t traces (Pf c) M))
(t :t traces (!set :Xs .. Pf) M) = (t = <> ∨ (∃X∈Xs. t :t traces (Pf X) M))
(t :t traces (!nat :N .. Pf) M) = (t = <> ∨ (∃n∈N. t :t traces (Pf n) M))
(t :t traces (! :X .. Pf) M) = (t = <> ∨ (∃a∈X. t :t traces (Pf a) M))
inj f ==> (t :t traces (!<f> :X .. Pf) M) = (t = <> ∨ (∃a∈X. t :t traces (Pf a) M))
(t :t traces (IF b THEN P ELSE Q) M) = (if b then t :t traces P M else t :t traces Q M)
(u :t traces (P |[X]| Q) M) = (∃s t. u ∈ s |[X]|tr t ∧ s :t traces P M ∧ t :t traces Q M)
(t :t traces (P -- X) M) = (∃s. t = s --tr X ∧ s :t traces P M)
(t :t traces (P [[r]]) M) = (∃s. s [[r]]* t ∧ s :t traces P M)
(u :t traces (P ;; Q) M) = ((∃s. u = rmTick s ∧ s :t traces P M) ∨ (∃s t. u = s ^^ t ∧ s ^^ <Tick> :t traces P M ∧ t :t traces Q M ∧ noTick s))
(t :t {t. t = <> ∨ (∃a∈X. t :t Tf a)}t) = (t = <> ∨ (∃a∈X. t :t Tf a))
(t :t {t. ∃a. t :t Tf a}t) = (∃a. t :t Tf a)
(t :t traces (P |. n) M) = (t :t traces P M ∧ lengtht t ≤ n)
(t :t traces ($p) M) = (t :t M p)
lemmas in_traces:
(t :t traces STOP M) = (t = <>)
(t :t traces SKIP M) = (t = <> ∨ t = <Tick>)
(t :t traces DIV M) = (t = <>)
(t :t traces (a -> P) M) = (t = <> ∨ (∃s. t = <Ev a> ^^ s ∧ s :t traces P M))
(t :t traces (? :X -> Pf) M) = (t = <> ∨ (∃a s. t = <Ev a> ^^ s ∧ s :t traces (Pf a) M ∧ a ∈ X))
(t :t traces (P [+] Q) M) = (t :t traces P M ∨ t :t traces Q M)
(t :t traces (P |~| Q) M) = (t :t traces P M ∨ t :t traces Q M)
(t :t traces (!! :C .. Pf) M) = (t = <> ∨ (∃c∈sumset C. t :t traces (Pf c) M))
(t :t traces (!set :Xs .. Pf) M) = (t = <> ∨ (∃X∈Xs. t :t traces (Pf X) M))
(t :t traces (!nat :N .. Pf) M) = (t = <> ∨ (∃n∈N. t :t traces (Pf n) M))
(t :t traces (! :X .. Pf) M) = (t = <> ∨ (∃a∈X. t :t traces (Pf a) M))
inj f ==> (t :t traces (!<f> :X .. Pf) M) = (t = <> ∨ (∃a∈X. t :t traces (Pf a) M))
(t :t traces (IF b THEN P ELSE Q) M) = (if b then t :t traces P M else t :t traces Q M)
(u :t traces (P |[X]| Q) M) = (∃s t. u ∈ s |[X]|tr t ∧ s :t traces P M ∧ t :t traces Q M)
(t :t traces (P -- X) M) = (∃s. t = s --tr X ∧ s :t traces P M)
(t :t traces (P [[r]]) M) = (∃s. s [[r]]* t ∧ s :t traces P M)
(u :t traces (P ;; Q) M) = ((∃s. u = rmTick s ∧ s :t traces P M) ∨ (∃s t. u = s ^^ t ∧ s ^^ <Tick> :t traces P M ∧ t :t traces Q M ∧ noTick s))
(t :t {t. t = <> ∨ (∃a∈X. t :t Tf a)}t) = (t = <> ∨ (∃a∈X. t :t Tf a))
(t :t {t. ∃a. t :t Tf a}t) = (∃a. t :t Tf a)
(t :t traces (P |. n) M) = (t :t traces P M ∧ lengtht t ≤ n)
(t :t traces ($p) M) = (t :t M p)
lemma in_traces_Timeout1:
(t :t traces (P [> Q) M) = (t :t traces P M ∨ t :t traces Q M)
lemma in_traces_Timeout2:
(t :t traces (P [>def Q) M) = (t :t traces P M ∨ t :t traces Q M)
lemmas in_traces_Timeout:
(t :t traces (P [> Q) M) = (t :t traces P M ∨ t :t traces Q M)
(t :t traces (P [>def Q) M) = (t :t traces P M ∨ t :t traces Q M)
lemmas in_traces_Timeout:
(t :t traces (P [> Q) M) = (t :t traces P M ∨ t :t traces Q M)
(t :t traces (P [>def Q) M) = (t :t traces P M ∨ t :t traces Q M)