src/HOL/Orderings.thy
changeset 35092 cfe605c54e50
parent 35028 108662d50512
child 35115 446c5063e4fd
equal deleted inserted replaced
35091:59b41ba431b5 35092:cfe605c54e50
     8 imports Algebras
     8 imports Algebras
     9 uses
     9 uses
    10   "~~/src/Provers/order.ML"
    10   "~~/src/Provers/order.ML"
    11   "~~/src/Provers/quasi.ML"  (* FIXME unused? *)
    11   "~~/src/Provers/quasi.ML"  (* FIXME unused? *)
    12 begin
    12 begin
       
    13 
       
    14 subsection {* Syntactic orders *}
       
    15 
       
    16 class ord =
       
    17   fixes less_eq :: "'a \<Rightarrow> 'a \<Rightarrow> bool"
       
    18     and less :: "'a \<Rightarrow> 'a \<Rightarrow> bool"
       
    19 begin
       
    20 
       
    21 notation
       
    22   less_eq  ("op <=") and
       
    23   less_eq  ("(_/ <= _)" [51, 51] 50) and
       
    24   less  ("op <") and
       
    25   less  ("(_/ < _)"  [51, 51] 50)
       
    26   
       
    27 notation (xsymbols)
       
    28   less_eq  ("op \<le>") and
       
    29   less_eq  ("(_/ \<le> _)"  [51, 51] 50)
       
    30 
       
    31 notation (HTML output)
       
    32   less_eq  ("op \<le>") and
       
    33   less_eq  ("(_/ \<le> _)"  [51, 51] 50)
       
    34 
       
    35 abbreviation (input)
       
    36   greater_eq  (infix ">=" 50) where
       
    37   "x >= y \<equiv> y <= x"
       
    38 
       
    39 notation (input)
       
    40   greater_eq  (infix "\<ge>" 50)
       
    41 
       
    42 abbreviation (input)
       
    43   greater  (infix ">" 50) where
       
    44   "x > y \<equiv> y < x"
       
    45 
       
    46 end
       
    47 
    13 
    48 
    14 subsection {* Quasi orders *}
    49 subsection {* Quasi orders *}
    15 
    50 
    16 class preorder = ord +
    51 class preorder = ord +
    17   assumes less_le_not_le: "x < y \<longleftrightarrow> x \<le> y \<and> \<not> (y \<le> x)"
    52   assumes less_le_not_le: "x < y \<longleftrightarrow> x \<le> y \<and> \<not> (y \<le> x)"