src/HOL/AxClasses/Lattice/Order.thy
changeset 2606 27cdd600a3b1
parent 1573 6d66b59f94a9
equal deleted inserted replaced
2605:1effe7413486 2606:27cdd600a3b1
    29 
    29 
    30 
    30 
    31 (* partial orders *)
    31 (* partial orders *)
    32 
    32 
    33 axclass
    33 axclass
    34   order < quasi_order
    34   partial_order < quasi_order
    35   le_antisym    "x [= y & y [= x --> x = y"
    35   le_antisym    "x [= y & y [= x --> x = y"
    36 
    36 
    37 
    37 
    38 (* linear orders *)
    38 (* linear orders *)
    39 
    39 
    40 axclass
    40 axclass
    41   lin_order < order
    41   linear_order < partial_order
    42   le_lin        "x [= y | y [= x"
    42   le_linear     "x [= y | y [= x"
    43 
    43 
    44 
    44 
    45 
    45 
    46 (** limits **)
    46 (** limits **)
    47 
    47 
    48 (* infima and suprema (on orders) *)
    48 (* infima and suprema (on orders) *)
    49 
    49 
    50 consts
    50 consts
    51   (*binary*)
    51   (*binary*)
    52   is_inf        :: "['a::order, 'a, 'a] => bool"
    52   is_inf        :: "['a::partial_order, 'a, 'a] => bool"
    53   is_sup        :: "['a::order, 'a, 'a] => bool"
    53   is_sup        :: "['a::partial_order, 'a, 'a] => bool"
    54   (*general*)
    54   (*general*)
    55   is_Inf        :: "['a::order set, 'a] => bool"
    55   is_Inf        :: "['a::partial_order set, 'a] => bool"
    56   is_Sup        :: "['a::order set, 'a] => bool"
    56   is_Sup        :: "['a::partial_order set, 'a] => bool"
    57 
    57 
    58 defs
    58 defs
    59   is_inf_def    "is_inf x y inf ==
    59   is_inf_def    "is_inf x y inf ==
    60                    inf [= x & inf [= y &
    60                    inf [= x & inf [= y &
    61                    (ALL lb. lb [= x & lb [= y --> lb [= inf)"
    61                    (ALL lb. lb [= x & lb [= y --> lb [= inf)"
    69                    (ALL x:A. x [= sup) &
    69                    (ALL x:A. x [= sup) &
    70                    (ALL ub. (ALL x:A. x [= ub) --> sup [= ub)"
    70                    (ALL ub. (ALL x:A. x [= ub) --> sup [= ub)"
    71 
    71 
    72 
    72 
    73 
    73 
    74 (* binary minima and maxima (on lin_orders) *)
    74 (* binary minima and maxima (on linear_orders) *)
    75 
    75 
    76 constdefs
    76 constdefs
    77   minimum      :: "['a::lin_order, 'a] => 'a"
    77   minimum      :: "['a::linear_order, 'a] => 'a"
    78   "minimum x y == (if x [= y then x else y)"
    78   "minimum x y == (if x [= y then x else y)"
    79 
    79 
    80   maximum      :: "['a::lin_order, 'a] => 'a"
    80   maximum      :: "['a::linear_order, 'a] => 'a"
    81   "maximum x y == (if x [= y then y else x)"
    81   "maximum x y == (if x [= y then y else x)"
    82 
    82 
    83 end
    83 end