Up to index of Isabelle/HOL/HOL-Complex/CSP/CSP_T/CSP_F
theory CSP_F_T_domain(*-------------------------------------------* | CSP-Prover on Isabelle2005 | | August 2007 | | | | Yoshinao Isobe (AIST JAPAN) | *-------------------------------------------*) theory CSP_F_T_domain imports CSP_F_domain begin (*=======================================================* make 'a domF from 'a domT (this theory is not important and can be removed) *=======================================================*) consts traces_to_failures :: "'a domT => 'a setF" defs traces_to_failures_def : "traces_to_failures T == {f. (EX s. (EX X. f = (s ^^ <Tick>, X)) & s ^^ <Tick> :t T) | (EX s X. f = (s, X) & noTick s & s ^^ <Tick> :t T & X <= Evset)}f" (********************************************************* setF *********************************************************) (* F2 *) lemma traces_to_failures_in_setF: "{f. (EX s. (EX X. f = (s ^^ <Tick>, X)) & s ^^ <Tick> :t T) | (EX s X. f = (s, X) & noTick s & s ^^ <Tick> :t T & X <= Evset)} : setF" by (auto simp add: setF_def HC_F2_def) (* in *) lemma in_traces_to_failures: "(s, X) :f traces_to_failures T = ((EX t. s = t ^^ <Tick> & t ^^ <Tick> :t T) | (noTick s & s ^^ <Tick> :t T & X <= Evset))" apply (simp add: memF_def) apply (simp add: traces_to_failures_def) apply (simp add: Abs_setF_inverse traces_to_failures_in_setF) done (********************************************************* domF *********************************************************) (* T2 *) lemma traces_to_failures_T2 : "HC_T2 (T, traces_to_failures T)" apply (simp add: HC_T2_def) apply (simp add: in_traces_to_failures) apply (auto) apply (rule memT_prefix_closed, simp) apply (simp add: prefix_def) apply (rule_tac x="<Tick>" in exI) apply (simp) done (* F3 *) lemma traces_to_failures_F3 : "HC_F3 (T, traces_to_failures T)" apply (simp add: HC_F3_def) apply (simp add: in_traces_to_failures) apply (auto) apply (case_tac "x = Tick") apply (drule_tac x="Tick" in spec) apply (simp) apply (simp add: Evset_def) done (* T3_F4 *) lemma traces_to_failures_T3_F4 : "HC_T3_F4 (T, traces_to_failures T)" apply (simp add: HC_T3_F4_def) apply (simp add: in_traces_to_failures) apply (auto) done (*** traces_to_failures_domF ***) lemma traces_to_failures_domF[simp]: "(T, traces_to_failures T) : domF" apply (simp add: domF_iff) apply (simp add: traces_to_failures_T2) apply (simp add: traces_to_failures_F3) apply (simp add: traces_to_failures_T3_F4) done (********************************************************* relation *********************************************************) lemma traces_to_failures_EX: "ALL T. EX F. T = fstF F" apply (rule) apply (rule_tac x="(T ,, traces_to_failures T)" in exI) apply (simp add: pairF_fstF) done lemma traces_to_failures_subset: "T1 <= T2 ==> traces_to_failures T1 <= traces_to_failures T2" apply (rule) apply (simp add: in_traces_to_failures) apply (auto) done lemma traces_to_failures_refF: "T1 <= T2 ==> EX F1 F2. T1 = fstF F1 & T2 = fstF F2 & F1 <= F2" apply (simp add: subdomF_decompo) apply (rule_tac x="(T1 ,, traces_to_failures T1)" in exI) apply (simp add: pairF_fstF) apply (rule_tac x="(T2 ,, traces_to_failures T2)" in exI) apply (simp add: pairF_fstF) apply (simp add: pairF_sndF) apply (simp add: traces_to_failures_subset) done (*** fun ***) lemma traces_to_failures_fun_EX: "ALL Tf. EX Ff. Tf = fstF o Ff" apply (simp add: expand_fun_eq) apply (rule) apply (rule_tac x="(%x. (Tf x ,, traces_to_failures (Tf x)))" in exI) apply (simp add: pairF_fstF) done lemma traces_to_failures_fun_refF: "Tf1 <= Tf2 ==> EX Ff1 Ff2. Tf1 = fstF o Ff1 & Tf2 = fstF o Ff2 & Ff1 <= Ff2" apply (rule_tac x="(%x. (Tf1 x ,, traces_to_failures (Tf1 x)))" in exI) apply (rule_tac x="(%x. (Tf2 x ,, traces_to_failures (Tf2 x)))" in exI) apply (simp add: expand_fun_eq) apply (simp add: pairF_fstF) apply (simp add: order_prod_def) apply (rule) apply (simp add: subdomF_decompo) apply (simp add: pairF_fstF) apply (simp add: pairF_sndF) apply (simp add: traces_to_failures_subset) done end
lemma traces_to_failures_in_setF:
{f. (∃s. (∃X. f = (s ^^ <Tick>, X)) ∧ s ^^ <Tick> :t T) ∨
(∃s X. f = (s, X) ∧ noTick s ∧ s ^^ <Tick> :t T ∧ X ⊆ Evset)}
∈ setF
lemma in_traces_to_failures:
((s, X) :f traces_to_failures T) =
((∃t. s = t ^^ <Tick> ∧ t ^^ <Tick> :t T) ∨
noTick s ∧ s ^^ <Tick> :t T ∧ X ⊆ Evset)
lemma traces_to_failures_T2:
HC_T2 (T, traces_to_failures T)
lemma traces_to_failures_F3:
HC_F3 (T, traces_to_failures T)
lemma traces_to_failures_T3_F4:
HC_T3_F4 (T, traces_to_failures T)
lemma traces_to_failures_domF:
(T, traces_to_failures T) ∈ domF
lemma traces_to_failures_EX:
∀T. ∃F. T = fstF F
lemma traces_to_failures_subset:
T1.0 ≤ T2.0 ==> traces_to_failures T1.0 ≤ traces_to_failures T2.0
lemma traces_to_failures_refF:
T1.0 ≤ T2.0 ==> ∃F1 F2. T1.0 = fstF F1 ∧ T2.0 = fstF F2 ∧ F1 ≤ F2
lemma traces_to_failures_fun_EX:
∀Tf. ∃Ff. Tf = fstF o Ff
lemma traces_to_failures_fun_refF:
Tf1.0 ≤ Tf2.0 ==> ∃Ff1 Ff2. Tf1.0 = fstF o Ff1 ∧ Tf2.0 = fstF o Ff2 ∧ Ff1 ≤ Ff2