Theory CPO_set

Up to index of Isabelle/HOL/CSP

theory CPO_set
imports CPO_prod

           (*-------------------------------------------*
            |        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