src/HOL/Lattices.thy
changeset 28692 a2bc5ce0c9fc
parent 28685 275122631271
child 28823 dcbef866c9e2
equal deleted inserted replaced
28691:0dafa8aa5983 28692:a2bc5ce0c9fc
   330   min_max.le_infI1 min_max.le_infI2
   330   min_max.le_infI1 min_max.le_infI2
   331 
   331 
   332 
   332 
   333 subsection {* Complete lattices *}
   333 subsection {* Complete lattices *}
   334 
   334 
   335 class complete_lattice = lattice + top + bot +
   335 class complete_lattice = lattice + bot + top +
   336   fixes Inf :: "'a set \<Rightarrow> 'a" ("\<Sqinter>_" [900] 900)
   336   fixes Inf :: "'a set \<Rightarrow> 'a" ("\<Sqinter>_" [900] 900)
   337     and Sup :: "'a set \<Rightarrow> 'a" ("\<Squnion>_" [900] 900)
   337     and Sup :: "'a set \<Rightarrow> 'a" ("\<Squnion>_" [900] 900)
   338   assumes Inf_lower: "x \<in> A \<Longrightarrow> \<Sqinter>A \<sqsubseteq> x"
   338   assumes Inf_lower: "x \<in> A \<Longrightarrow> \<Sqinter>A \<sqsubseteq> x"
   339      and Inf_greatest: "(\<And>x. x \<in> A \<Longrightarrow> z \<sqsubseteq> x) \<Longrightarrow> z \<sqsubseteq> \<Sqinter>A"
   339      and Inf_greatest: "(\<And>x. x \<in> A \<Longrightarrow> z \<sqsubseteq> x) \<Longrightarrow> z \<sqsubseteq> \<Sqinter>A"
   340   assumes Sup_upper: "x \<in> A \<Longrightarrow> x \<sqsubseteq> \<Squnion>A"
   340   assumes Sup_upper: "x \<in> A \<Longrightarrow> x \<sqsubseteq> \<Squnion>A"
   381 
   381 
   382 lemma Sup_binary:
   382 lemma Sup_binary:
   383   "\<Squnion>{a, b} = a \<squnion> b"
   383   "\<Squnion>{a, b} = a \<squnion> b"
   384   by (simp add: Sup_insert_simp)
   384   by (simp add: Sup_insert_simp)
   385 
   385 
       
   386 lemma bot_def:
       
   387   "bot = \<Squnion>{}"
       
   388   by (auto intro: antisym Sup_least)
       
   389 
   386 lemma top_def:
   390 lemma top_def:
   387   "top = \<Sqinter>{}"
   391   "top = \<Sqinter>{}"
   388   by (auto intro: antisym Inf_greatest)
   392   by (auto intro: antisym Inf_greatest)
   389 
   393 
   390 lemma bot_def:
   394 lemma sup_bot [simp]:
   391   "bot = \<Squnion>{}"
   395   "x \<squnion> bot = x"
   392   by (auto intro: antisym Sup_least)
   396   using bot_least [of x] by (simp add: le_iff_sup sup_commute)
   393 
   397 
   394 definition
   398 lemma inf_top [simp]:
   395   SUPR :: "'b set \<Rightarrow> ('b \<Rightarrow> 'a) \<Rightarrow> 'a"
   399   "x \<sqinter> top = x"
   396 where
   400   using top_greatest [of x] by (simp add: le_iff_inf inf_commute)
       
   401 
       
   402 definition SUPR :: "'b set \<Rightarrow> ('b \<Rightarrow> 'a) \<Rightarrow> 'a" where
   397   "SUPR A f == \<Squnion> (f ` A)"
   403   "SUPR A f == \<Squnion> (f ` A)"
   398 
   404 
   399 definition
   405 definition INFI :: "'b set \<Rightarrow> ('b \<Rightarrow> 'a) \<Rightarrow> 'a" where
   400   INFI :: "'b set \<Rightarrow> ('b \<Rightarrow> 'a) \<Rightarrow> 'a"
       
   401 where
       
   402   "INFI A f == \<Sqinter> (f ` A)"
   406   "INFI A f == \<Sqinter> (f ` A)"
   403 
   407 
   404 end
   408 end
   405 
   409 
   406 syntax
   410 syntax