Theory Ext_pre_choice_cpo

Up to index of Isabelle/HOL/HOL-Complex/CSP-Prover

theory Ext_pre_choice_cpo = Ext_pre_choice + Domain_SF_prod_cpo:

           (*-------------------------------------------*
            |                CSP-Prover                 |
            |               February 2005               |
            |        Yoshinao Isobe (AIST JAPAN)        |
            *-------------------------------------------*)

theory Ext_pre_choice_cpo = Ext_pre_choice + Domain_SF_prod_cpo:

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

(*  The following simplification is sometimes unexpected.              *)
(*                                                                     *)
(*             not_None_eq: (x ~= None) = (EX y. x = Some y)           *)

declare not_None_eq [simp del]

(*  The following simplification rules are deleted in this theory file *)
(*  because they unexpectly rewrite UnionT and InterT.                 *)
(*                  Union (B ` A) = (UN x:A. B x)                      *)
(*                  Inter (B ` A) = (INT x:A. B x)                     *)
(*                  disj_not1: (~ P | Q) = (P --> Q)                   *)

declare Union_image_eq [simp del]
declare Inter_image_eq [simp del]

(*****************************************************************

         1. [[? :X -> Pf]]T : continuous
         2. [[? :X -> Pf]]F : continuous
         3. 
         4. 

 *****************************************************************)

(*** Ext_pre_choice_evalT_continuous ***)

lemma Ext_pre_choice_evalT_continuous:
 "ALL a. continuous [[Pf a]]T ==> continuous [[? :X -> Pf]]T"
apply (simp add: continuous_iff)
apply (intro allI impI)

apply (subgoal_tac "Xa ~= {}")
apply (erule exchange_forall_orderE)
apply (drule_tac x="Xa" in spec)
apply (simp add: isLUB_UnionT)

apply (rule_tac x="LUB Xa" in exI)
apply (rule conjI)
apply (rule eq_iffI)

(* <= *)
 apply (rule)
 apply (simp add: memT_UnionT)
 apply (simp add: Ext_pre_choice_mem)
 apply (erule disjE, fast)
 apply (elim conjE exE)
 apply (simp add: memT_UnionT)
 apply (drule_tac x="a" in spec)
 apply (elim conjE exE)

 apply (subgoal_tac "LUB Xa = x", simp)
 apply (simp add: memT_UnionT)
 apply (erule bexE)

 apply (rule_tac x="xa" in bexI)
 apply (rule_tac x="a" in exI)
 apply (rule_tac x="s" in exI)
 apply (simp)
 apply (simp)
 apply (simp add: isLUB_LUB)

(* => *)
 apply (rule)
 apply (simp add: memT_UnionT)
 apply (erule bexE)
 apply (simp add: Ext_pre_choice_mem)
 apply (erule disjE, simp)
 apply (elim conjE exE)
 apply (rule disjI2)
 apply (rule_tac x="a" in exI)
 apply (rule_tac x="s" in exI, simp)

 apply (drule_tac x="a" in spec)
 apply (elim conjE exE)
 apply (subgoal_tac "LUB Xa = xa", simp)
 apply (simp add: memT_UnionT)
 apply (rule_tac x="x" in bexI)
 apply (simp)
 apply (simp)
 apply (simp add: isLUB_LUB)

 apply (drule_tac x="a" in spec)
 apply (elim conjE exE)
 apply (simp add: isLUB_LUB)

by (simp add: directed_def)

(*** Ext_pre_choice_evalF_continuous ***)

lemma Ext_pre_choice_evalF_continuous:
 "ALL a. continuous [[Pf a]]F ==> continuous [[? :X -> Pf]]F"
apply (simp add: continuous_iff)
apply (intro allI impI)

apply (subgoal_tac "Xa ~= {}")
apply (erule exchange_forall_orderE)
apply (drule_tac x="Xa" in spec)
apply (simp add: isLUB_UnionF)

apply (rule_tac x="LUB Xa" in exI)
apply (rule conjI)
apply (rule eq_iffI)

(* <= *)
 apply (rule)
 apply (simp add: memF_UnionF)
 apply (simp add: Ext_pre_choice_mem)
 apply (erule disjE, fast)
 apply (elim conjE exE)
 apply (simp add: memF_UnionF)
 apply (drule_tac x="a" in spec)
 apply (elim conjE exE)

 apply (subgoal_tac "LUB Xa = x", simp)
 apply (simp add: memF_UnionF)
 apply (erule bexE)

 apply (rule_tac x="xa" in bexI)
 apply (rule_tac x="a" in exI)
 apply (rule_tac x="sa" in exI)
 apply (simp)
 apply (simp)
 apply (simp add: isLUB_LUB)

(* => *)
 apply (rule)
 apply (simp add: memF_UnionF)
 apply (erule bexE)
 apply (simp add: Ext_pre_choice_mem)
 apply (erule disjE, simp)
 apply (elim conjE exE)
 apply (rule disjI2)
 apply (rule_tac x="a" in exI)
 apply (rule_tac x="sa" in exI, simp)

 apply (drule_tac x="a" in spec)
 apply (elim conjE exE)
 apply (subgoal_tac "LUB Xa = xa", simp)
 apply (simp add: memF_UnionF)
 apply (rule_tac x="x" in bexI)
 apply (simp)
 apply (simp)
 apply (simp add: isLUB_LUB)

 apply (drule_tac x="a" in spec)
 apply (elim conjE exE)
 apply (simp add: isLUB_LUB)

by (simp add: directed_def)

(****************** to add them again ******************)

declare Union_image_eq [simp]
declare Inter_image_eq [simp]
declare disj_not1      [simp]
declare not_None_eq    [simp]

end

lemma Ext_pre_choice_evalT_continuous:

a. continuous [[Pf a]]T ==> continuous [[? :X -> Pf]]T

lemma Ext_pre_choice_evalF_continuous:

a. continuous [[Pf a]]F ==> continuous [[? :X -> Pf]]F