(*-------------------------------------------*
| CSP-Prover on Isabelle2004 |
| August 2004 |
| |
| CSP-Prover on Isabelle2005 |
| October 2005 (modified) |
| |
| Yoshinao Isobe (AIST JAPAN) |
*-------------------------------------------*)
theory CPO_set
imports CPO_prod
begin
(*****************************************************************
1. Bool is CPO
2. ==> Sets are CPO.
3.
4.
*****************************************************************)
(**********************************************************
def: bot in bool
**********************************************************)
instance bool :: bot0
apply (intro_classes)
done
defs (overloaded)
bool_Bot_def : "Bot == False"
(*
For Isabelle 2007
instance "set" :: (type) bot0
apply (intro_classes)
done
defs (overloaded)
set_Bot_def : "Bot == {}"
*)
(************************************************************
Bool bot ==> bot
************************************************************)
(*** bool Bot ***)
lemma bool_Bot:
"ALL (X::(bool)). Bot <= X"
apply (simp add: bool_Bot_def)
apply (simp add: le_bool_def)
done
(*
lemma set_Bot:
"ALL (X::('a set)). Bot <= X"
apply (simp add: set_Bot_def)
done
*)
(*****************************
bool bot => bot
*****************************)
instance bool :: bot
apply (intro_classes)
by (simp add: bool_Bot)
(************************************************************
Set bot ==> bot
************************************************************)
(*** set Bot ***)
lemma set_Bot:
"ALL (X::('a set)). Bot <= X"
by (simp add: prod_Bot)
(************************************************************
Bool : CPO
************************************************************)
(*** bool directed decompo ***)
lemma bool_cpo_lm:
"directed (Bs::(bool) set) ==> Bs hasLUB"
apply (simp add: hasLUB_def)
apply (rule_tac x="(EX b:Bs. b)" in exI)
apply (simp add: isLUB_def isUB_def)
apply (simp add: le_bool_def)
by (auto)
(*****************************
Bool : CPO
*****************************)
instance bool :: cpo
apply (intro_classes)
by (simp add: bool_cpo_lm)
(************************************************************
Bool : CPO_BOT
************************************************************)
instance bool :: cpo_bot
by (intro_classes)
(************************************************************
Set : CPO
************************************************************)
lemma set_cpo:
"directed (Xs::('a set) set) ==> Xs hasLUB"
by (simp add: complete_cpo)
(* because (bool::cpo) and ("fun" :: (type,cpo) cpo) *)
(************************************************************
Set : CPO_bot
************************************************************)
lemma set_bot:
"Bot <= (x::'a set)"
by (simp add: bottom_bot)
(* because (bool::bot) and ("fun" :: (type,bot) bot) *)
end
lemma bool_Bot:
∀X. Bot ≤ X
lemma set_Bot:
∀X. Bot ⊆ X
lemma bool_cpo_lm:
directed Bs ==> Bs hasLUB
lemma set_cpo:
directed Xs ==> Xs hasLUB
lemma set_bot:
Bot ⊆ x