(* File: ML_int.v    (last edited on 25/10/2000  (c) Klaus Weich  *)

(* Axiomisation of the ML type "int" *)

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.