(****************************************************************************)
(*                 The Calculus of Inductive Constructions                  *)
(*                                                                          *)
(*                                Projet Coq                                *)
(*                                                                          *)
(*                     INRIA        LRI-CNRS        ENS-CNRS                *)
(*              Rocquencourt         Orsay          Lyon                    *)
(*                                                                          *)
(*                                 Coq V6.2                                 *)
(*                               May 1st 1998                               *)
(*                                                                          *)
(****************************************************************************)
(*                                   Gt.v                                   *)
(****************************************************************************)

(* Omega solves all theorems of Gt.v except the ones mentionning the        *) 
(* predecessor on natural numbers                                           *)

Require Omega.
Require Le_omega.
Require Lt_omega.

Theorem gt_Sn_O : (n:nat)(gt (S n) O).
Proof.
Intros; Omega.
Qed.
Hint gt_Sn_O.

Theorem gt_Sn_n : (n:nat)(gt (S n) n).
Proof.
Intros; Omega.
Qed.
Hint gt_Sn_n.

Theorem le_S_gt : (n,m:nat)(le (S n) m)->(gt m n).
Proof.
Intros; Omega.
Qed.
Immediate le_S_gt.

Theorem gt_n_S : (n,m:nat)(gt n m)->(gt (S n) (S m)).
Proof.
Intros; Omega.
Qed.
Hint gt_n_S.

Theorem gt_trans_S : (n,m,p:nat)(gt (S n) m)->(gt m p)->(gt n p).
Proof.
Intros; Omega.
Qed.

Theorem le_gt_trans : (n,m,p:nat)(le m n)->(gt m p)->(gt n p).
Proof.
Intros; Omega.
Qed.

Theorem gt_le_trans : (n,m,p:nat)(gt n m)->(le p m)->(gt n p).
Proof.
Intros; Omega.
Qed.

Lemma le_not_gt : (n,m:nat)(le n m)->~(gt n m).
Proof le_not_lt.
Hint le_not_gt.

Lemma gt_antirefl : (n:nat)~(gt n n).
Proof lt_n_n.
Hint gt_antirefl.

Lemma gt_not_sym : (n,m:nat)(gt n m)->~(gt m n).
Proof [n,m:nat](lt_not_sym m n).

Lemma gt_not_le : (n,m:nat)(gt n m)->~(le n m).
Proof.
Intros; Omega.
Qed.
Hint gt_not_le.

Lemma gt_trans : (n,m,p:nat)(gt n m)->(gt m p)->(gt n p).
Proof.
Intros; Omega.
Qed.

Lemma gt_S_n : (n,p:nat)(gt (S p) (S n))->(gt p n).
Proof.
Intros; Omega.
Qed.
Immediate gt_S_n.

Lemma gt_S_le : (n,p:nat)(gt (S p) n)->(le n p).
Proof.
Intros; Omega.
Qed.
Immediate gt_S_le.

Lemma gt_le_S : (n,p:nat)(gt p n)->(le (S n) p).
Proof.
Intros; Omega.
Qed.
Hint gt_le_S.

Lemma le_gt_S : (n,p:nat)(le n p)->(gt (S p) n).
Proof.
Intros; Omega.
Qed.
Hint le_gt_S.

Lemma gt_pred : (n,p:nat)(gt p (S n))->(gt (pred p) n).
Proof.
Auto.
(* Omega does not recognize pred and fails *)
Qed.
Immediate gt_pred.

Theorem gt_S : (n,m:nat)(gt (S n) m)->((gt n m)\/(<nat>m=n)).
Proof.
Intros; Omega.
Qed.

Theorem gt_O_eq : (n:nat)((gt n O)\/(<nat>O=n)).
Proof.
Intros; Omega.
Qed.

Require Plus.

Lemma simpl_gt_plus_l : (n,m,p:nat)(gt (plus p n) (plus p m))->(gt n m).
Proof.
Intros; Omega.
Qed.

Lemma gt_reg_l : (n,m,p:nat)(gt n m)->(gt (plus p n) (plus p m)).
Proof.
Intros; Omega.
Qed.
Hint gt_reg_l.


(* $Id: Gt_omega.v,v 1.1 1998/07/02 13:22:16 loiseleu Exp $ *)
