src/HOL/Lattices.thy
changeset 46691 72d81e789106
parent 46689 f559866a7aa2
child 46882 6242b4bc05bc
equal deleted inserted replaced
46690:07f9732804ad 46691:72d81e789106
    41 lemmas mult_left_idem = times.left_idem
    41 lemmas mult_left_idem = times.left_idem
    42 
    42 
    43 end
    43 end
    44 
    44 
    45 
    45 
       
    46 subsection {* Syntactic infimum and supremum operations *}
       
    47 
       
    48 class inf =
       
    49   fixes inf :: "'a \<Rightarrow> 'a \<Rightarrow> 'a" (infixl "\<sqinter>" 70)
       
    50 
       
    51 class sup = 
       
    52   fixes sup :: "'a \<Rightarrow> 'a \<Rightarrow> 'a" (infixl "\<squnion>" 65)
       
    53 
       
    54 
    46 subsection {* Concrete lattices *}
    55 subsection {* Concrete lattices *}
    47 
    56 
    48 notation
    57 notation
    49   less_eq  (infix "\<sqsubseteq>" 50) and
    58   less_eq  (infix "\<sqsubseteq>" 50) and
    50   less  (infix "\<sqsubset>" 50) and
    59   less  (infix "\<sqsubset>" 50)
    51   bot ("\<bottom>") and
       
    52   top ("\<top>")
       
    53 
       
    54 class inf =
       
    55   fixes inf :: "'a \<Rightarrow> 'a \<Rightarrow> 'a" (infixl "\<sqinter>" 70)
       
    56 
       
    57 class sup = 
       
    58   fixes sup :: "'a \<Rightarrow> 'a \<Rightarrow> 'a" (infixl "\<squnion>" 65)
       
    59 
    60 
    60 class semilattice_inf =  order + inf +
    61 class semilattice_inf =  order + inf +
    61   assumes inf_le1 [simp]: "x \<sqinter> y \<sqsubseteq> x"
    62   assumes inf_le1 [simp]: "x \<sqinter> y \<sqsubseteq> x"
    62   and inf_le2 [simp]: "x \<sqinter> y \<sqsubseteq> y"
    63   and inf_le2 [simp]: "x \<sqinter> y \<sqsubseteq> y"
    63   and inf_greatest: "x \<sqsubseteq> y \<Longrightarrow> x \<sqsubseteq> z \<Longrightarrow> x \<sqsubseteq> y \<sqinter> z"
    64   and inf_greatest: "x \<sqsubseteq> y \<Longrightarrow> x \<sqsubseteq> z \<Longrightarrow> x \<sqsubseteq> y \<sqinter> z"
   757 lemma sup2CI: "(\<not> B x y \<Longrightarrow> A x y) \<Longrightarrow> (A \<squnion> B) x y"
   758 lemma sup2CI: "(\<not> B x y \<Longrightarrow> A x y) \<Longrightarrow> (A \<squnion> B) x y"
   758   by (auto simp add: sup_fun_def)
   759   by (auto simp add: sup_fun_def)
   759 
   760 
   760 
   761 
   761 no_notation
   762 no_notation
   762   less_eq  (infix "\<sqsubseteq>" 50) and
   763   less_eq (infix "\<sqsubseteq>" 50) and
   763   less (infix "\<sqsubset>" 50) and
   764   less (infix "\<sqsubset>" 50)
   764   inf  (infixl "\<sqinter>" 70) and
   765 
   765   sup  (infixl "\<squnion>" 65) and
   766 end
   766   top ("\<top>") and
   767 
   767   bot ("\<bottom>")
       
   768 
       
   769 end
       
   770