src/HOL/Complete_Lattice.thy
changeset 32678 de1f7d4da21a
parent 32642 026e7c6a6d08
child 32879 7f5ce7af45fd
equal deleted inserted replaced
32674:b629fbcc5313 32678:de1f7d4da21a
     8 
     8 
     9 notation
     9 notation
    10   less_eq  (infix "\<sqsubseteq>" 50) and
    10   less_eq  (infix "\<sqsubseteq>" 50) and
    11   less (infix "\<sqsubset>" 50) and
    11   less (infix "\<sqsubset>" 50) and
    12   inf  (infixl "\<sqinter>" 70) and
    12   inf  (infixl "\<sqinter>" 70) and
    13   sup  (infixl "\<squnion>" 65)
    13   sup  (infixl "\<squnion>" 65) and
       
    14   top ("\<top>") and
       
    15   bot ("\<bottom>")
    14 
    16 
    15 
    17 
    16 subsection {* Abstract complete lattices *}
    18 subsection {* Abstract complete lattices *}
    17 
    19 
    18 class complete_lattice = lattice + bot + top +
    20 class complete_lattice = lattice + bot + top +
    21   assumes Inf_lower: "x \<in> A \<Longrightarrow> \<Sqinter>A \<sqsubseteq> x"
    23   assumes Inf_lower: "x \<in> A \<Longrightarrow> \<Sqinter>A \<sqsubseteq> x"
    22      and Inf_greatest: "(\<And>x. x \<in> A \<Longrightarrow> z \<sqsubseteq> x) \<Longrightarrow> z \<sqsubseteq> \<Sqinter>A"
    24      and Inf_greatest: "(\<And>x. x \<in> A \<Longrightarrow> z \<sqsubseteq> x) \<Longrightarrow> z \<sqsubseteq> \<Sqinter>A"
    23   assumes Sup_upper: "x \<in> A \<Longrightarrow> x \<sqsubseteq> \<Squnion>A"
    25   assumes Sup_upper: "x \<in> A \<Longrightarrow> x \<sqsubseteq> \<Squnion>A"
    24      and Sup_least: "(\<And>x. x \<in> A \<Longrightarrow> x \<sqsubseteq> z) \<Longrightarrow> \<Squnion>A \<sqsubseteq> z"
    26      and Sup_least: "(\<And>x. x \<in> A \<Longrightarrow> x \<sqsubseteq> z) \<Longrightarrow> \<Squnion>A \<sqsubseteq> z"
    25 begin
    27 begin
       
    28 
       
    29 term complete_lattice
       
    30 
       
    31 lemma dual_complete_lattice:
       
    32   "complete_lattice (op \<ge>) (op >) (op \<squnion>) (op \<sqinter>) \<top> \<bottom> Sup Inf"
       
    33   by (auto intro!: complete_lattice.intro dual_lattice
       
    34     bot.intro top.intro dual_preorder, unfold_locales)
       
    35       (fact bot_least top_greatest
       
    36         Sup_upper Sup_least Inf_lower Inf_greatest)+
    26 
    37 
    27 lemma Inf_Sup: "\<Sqinter>A = \<Squnion>{b. \<forall>a \<in> A. b \<le> a}"
    38 lemma Inf_Sup: "\<Sqinter>A = \<Squnion>{b. \<forall>a \<in> A. b \<le> a}"
    28   by (auto intro: antisym Inf_lower Inf_greatest Sup_upper Sup_least)
    39   by (auto intro: antisym Inf_lower Inf_greatest Sup_upper Sup_least)
    29 
    40 
    30 lemma Sup_Inf:  "\<Squnion>A = \<Sqinter>{b. \<forall>a \<in> A. a \<le> b}"
    41 lemma Sup_Inf:  "\<Squnion>A = \<Sqinter>{b. \<forall>a \<in> A. a \<le> b}"
   782   less_eq  (infix "\<sqsubseteq>" 50) and
   793   less_eq  (infix "\<sqsubseteq>" 50) and
   783   less (infix "\<sqsubset>" 50) and
   794   less (infix "\<sqsubset>" 50) and
   784   inf  (infixl "\<sqinter>" 70) and
   795   inf  (infixl "\<sqinter>" 70) and
   785   sup  (infixl "\<squnion>" 65) and
   796   sup  (infixl "\<squnion>" 65) and
   786   Inf  ("\<Sqinter>_" [900] 900) and
   797   Inf  ("\<Sqinter>_" [900] 900) and
   787   Sup  ("\<Squnion>_" [900] 900)
   798   Sup  ("\<Squnion>_" [900] 900) and
       
   799   top ("\<top>") and
       
   800   bot ("\<bottom>")
   788 
   801 
   789 lemmas mem_simps =
   802 lemmas mem_simps =
   790   insert_iff empty_iff Un_iff Int_iff Compl_iff Diff_iff
   803   insert_iff empty_iff Un_iff Int_iff Compl_iff Diff_iff
   791   mem_Collect_eq UN_iff Union_iff INT_iff Inter_iff
   804   mem_Collect_eq UN_iff Union_iff INT_iff Inter_iff
   792   -- {* Each of these has ALREADY been added @{text "[simp]"} above. *}
   805   -- {* Each of these has ALREADY been added @{text "[simp]"} above. *}