src/HOL/HOLCF/Cpo.thy
changeset 81576 0a01bec9bc13
parent 81575 cb57350beaa9
child 81577 a712bf5ccab0
equal deleted inserted replaced
81575:cb57350beaa9 81576:0a01bec9bc13
   593 end
   593 end
   594 
   594 
   595 
   595 
   596 section \<open>Continuity and monotonicity\<close>
   596 section \<open>Continuity and monotonicity\<close>
   597 
   597 
   598 text \<open>
       
   599    Now we change the default class! Form now on all untyped type variables are
       
   600    of default class po
       
   601 \<close>
       
   602 
       
   603 default_sort po
       
   604 
       
   605 subsection \<open>Definitions\<close>
   598 subsection \<open>Definitions\<close>
   606 
   599 
   607 definition monofun :: "('a \<Rightarrow> 'b) \<Rightarrow> bool"  \<comment> \<open>monotonicity\<close>
   600 definition monofun :: "('a::po \<Rightarrow> 'b::po) \<Rightarrow> bool"  \<comment> \<open>monotonicity\<close>
   608   where "monofun f \<longleftrightarrow> (\<forall>x y. x \<sqsubseteq> y \<longrightarrow> f x \<sqsubseteq> f y)"
   601   where "monofun f \<longleftrightarrow> (\<forall>x y. x \<sqsubseteq> y \<longrightarrow> f x \<sqsubseteq> f y)"
   609 
   602 
   610 definition cont :: "('a::cpo \<Rightarrow> 'b::cpo) \<Rightarrow> bool"
   603 definition cont :: "('a::cpo \<Rightarrow> 'b::cpo) \<Rightarrow> bool"
   611   where "cont f = (\<forall>Y. chain Y \<longrightarrow> range (\<lambda>i. f (Y i)) <<| f (\<Squnion>i. Y i))"
   604   where "cont f = (\<forall>Y. chain Y \<longrightarrow> range (\<lambda>i. f (Y i)) <<| f (\<Squnion>i. Y i))"
   612 
   605 
  1116   for S :: "nat \<Rightarrow> 'a::type \<Rightarrow> 'b::cpo"
  1109   for S :: "nat \<Rightarrow> 'a::type \<Rightarrow> 'b::cpo"
  1117   by (simp add: lub_fun ch2ch_lambda)
  1110   by (simp add: lub_fun ch2ch_lambda)
  1118 
  1111 
  1119 section \<open>The cpo of cartesian products\<close>
  1112 section \<open>The cpo of cartesian products\<close>
  1120 
  1113 
  1121 default_sort cpo
       
  1122 
       
  1123 
       
  1124 subsection \<open>Unit type is a pcpo\<close>
  1114 subsection \<open>Unit type is a pcpo\<close>
  1125 
  1115 
  1126 instantiation unit :: discrete_cpo
  1116 instantiation unit :: discrete_cpo
  1127 begin
  1117 begin
  1128 
  1118