Up to index of Isabelle/HOL/HOL-Complex/CSP
theory Infra_type (*-------------------------------------------*
| CSP-Prover on Isabelle2004 |
| November 2004 |
| June 2005 (modified) |
| July 2005 (modified) |
| |
| CSP-Prover on Isabelle2005 |
| October 2005 (modified) |
| |
| Yoshinao Isobe (AIST JAPAN) |
*-------------------------------------------*)
theory Infra_type = Infra_common:
(*****************************************************
Infinite Sequence type
*****************************************************)
types 'a infinite_seq = "nat => 'a" (* synonym *)
(**********************************************************
set or nat
**********************************************************)
datatype
'a selector
= sel_set "'a set"
| sel_nat "nat"
lemma inj_sel_set[simp]: "inj sel_set"
by (simp add: inj_on_def)
lemma inj_sel_nat[simp]: "inj sel_nat"
by (simp add: inj_on_def)
lemma tri_compo_is:
"ALL x. ( (EX b. x = sel_set b)
| (EX c. x = sel_nat c) )"
apply (intro allI)
apply (induct_tac x)
by (auto)
lemma P_image_sel_set:
"[| ALL x:X. P x ; y : (sel_set ` X) |] ==> P ((inv sel_set) y)"
by (auto)
lemma P_image_sel_nat:
"[| ALL x:X. P x ; y : (sel_nat ` X) |] ==> P ((inv sel_nat) y)"
by (auto)
lemma P_inv_sel_set:
"(ALL x. P (inv sel_set x)) = (ALL y. P y)"
apply (auto)
apply (drule_tac x="sel_set y" in spec)
by (simp)
lemma P_inv_sel_nat:
"(ALL x. P (inv sel_nat x)) = (ALL y. P y)"
apply (auto)
apply (drule_tac x="sel_nat y" in spec)
by (simp)
lemma P_inv_sel_setI:
"ALL x. P (inv sel_set x) ==> P y"
by (simp add: P_inv_sel_set)
lemma P_inv_sel_natI:
"ALL x. P (inv sel_nat x) ==> P y"
by (simp add: P_inv_sel_nat)
end
lemma inj_sel_set:
inj sel_set
lemma inj_sel_nat:
inj sel_nat
lemma tri_compo_is:
∀x. (∃b. x = sel_set b) ∨ (∃c. x = sel_nat c)
lemma P_image_sel_set:
[| ∀x∈X. P x; y ∈ sel_set ` X |] ==> P (inv sel_set y)
lemma P_image_sel_nat:
[| ∀x∈X. P x; y ∈ sel_nat ` X |] ==> P (inv sel_nat y)
lemma P_inv_sel_set:
(∀x. P (inv sel_set x)) = (∀y. P y)
lemma P_inv_sel_nat:
(∀x. P (inv sel_nat x)) = (∀y. P y)
lemma P_inv_sel_setI:
∀x. P (inv sel_set x) ==> P y
lemma P_inv_sel_natI:
∀x. P (inv sel_nat x) ==> P y