(************************************************************************)
(*         *      The Rocq Prover / The Rocq Development Team           *)
(*  v      *         Copyright INRIA, CNRS and contributors             *)
(* <O___,, * (see version control and CREDITS file for authors & dates) *)
(*   \VV/  **************************************************************)
(*    //   *    This file is distributed under the terms of the         *)
(*         *     GNU Lesser General Public License Version 2.1          *)
(*         *     (see LICENSE file for the text of the license)         *)
(************************************************************************)
Require Export Orders.
Set Implicit Arguments.
Unset Strict Implicit.
(** * Properties of [compare] *)
Module Type CompareFacts (Import O:DecStrOrder').
Local Infix "?=" := compare (at level 70, no associativity).

(* Specifications: *)
Lemma compare_eq_iff x y : (x ?= y) = Eq <-> x==y.
Lemma compare_eq x y : (x ?= y) = Eq -> x==y.
Lemma compare_lt_iff x y : (x ?= y) = Lt <-> x<y.
Lemma compare_gt_iff x y : (x ?= y) = Gt <-> y<x.
Lemma compare_nlt_iff x y : (x ?= y) <> Lt <-> ~(x<y).
Lemma compare_ngt_iff x y : (x ?= y) <> Gt <-> ~(y<x).
Global Hint Rewrite compare_eq_iff compare_lt_iff compare_gt_iff : order.