(* File: ML_int.v    (last edited on 25/10/2000  (c) Klaus Weich  *)
(* Axiomisation of the ML type "int" *)

(* Specifications: *)
Axiom Int : Set.
Axiom Less : Int -> Int -> Prop.
Axiom Equal : Int -> Int -> Prop.
Axiom int_succ : forall x : Int, {y : Int | Less x y}.
Axiom int_null : Int.
Axiom equal_dec : forall x y : Int, {Equal x y} + {~ Equal x y}.
Axiom less_dec : forall x y : Int, {Less x y} + {~ Less x y}.
Axiom
notequal_notless_greater :
forall x y : Int, ~ Equal x y -> ~ Less x y -> Less y x.
Axiom less_trans : forall x y z : Int, Less x y -> Less y z -> Less x z.
Axiom equal_less_less : forall x y z : Int, Equal x y -> Less y z -> Less x z.
Axiom less_equal_less : forall x y z : Int, Less x y -> Equal y z -> Less x z.
Axiom equal_sym : forall x y : Int, Equal x y -> Equal y x.
Axiom equal_trans : forall x y z : Int, Equal x y -> Equal y z -> Equal x z.
Axiom equal_refl : forall x : Int, Equal x x.
Axiom equal_eq : forall x y : Int, Equal x y -> x = y.
Axiom less_irrefl : forall x : Int, Less x x -> False.
Lemma equal_dec_refl :
forall (i : Int) (A : Set) (a b : A),
match equal_dec i i with
| left _ => a
| right _ => b
end = a.