Built with Alectryon, running Coq+SerAPI v8.10.0+0.7.0. Coq sources are in this panel; goals and messages will appear in the other. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus.
(************************************************************************) (* * The Coq Proof Assistant / The Coq Development Team *) (* v * INRIA, CNRS and contributors - Copyright 1999-2018 *) (* <O___,, * (see CREDITS file for the list of authors) *) (* \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) *) (************************************************************************) (* Evgeny Makarov, INRIA, 2007 *) (************************************************************************) Require Export ZMul. Module ZOrderProp (Import Z : ZAxiomsMiniSig'). Include ZMulProp Z.
Instances of earlier theorems for m == 0
forall n : t, n ~= 0 <-> n < 0 \/ 0 < nintro; apply lt_gt_cases. Qed.forall n : t, n ~= 0 <-> n < 0 \/ 0 < nforall n : t, n <= 0 \/ 0 < nintro; apply le_gt_cases. Qed.forall n : t, n <= 0 \/ 0 < nforall n : t, n < 0 \/ 0 <= nintro; apply lt_ge_cases. Qed.forall n : t, n < 0 \/ 0 <= nforall n : t, n <= 0 \/ 0 <= nintro; apply le_ge_cases. Qed. Ltac zinduct n := induction_maker n ltac:(apply order_induction_0).forall n : t, n <= 0 \/ 0 <= n
Theorems that are either not valid on N or have different proofs
on N and Z
forall n : t, P n < nintro n; rewrite <- (succ_pred n) at 2; apply lt_succ_diag_r. Qed.forall n : t, P n < nforall n : t, P n <= nintro; apply lt_le_incl; apply lt_pred_l. Qed.forall n : t, P n <= nforall n m : t, n < m <-> n <= P mforall n m : t, n < m <-> n <= P mapply lt_succ_r. Qed.n, m:tn < S (P m) <-> n <= P mforall n : t, ~ n <= P nintro; rewrite <- lt_le_pred; apply lt_irrefl. Qed.forall n : t, ~ n <= P nforall n m : t, P n < m <-> n <= mforall n m : t, P n < m <-> n <= msymmetry; apply le_succ_l. Qed.n, m:tP n < m <-> S (P n) <= mforall n m : t, n < m -> P n < mintros; apply lt_pred_le; now apply lt_le_incl. Qed.forall n m : t, n < m -> P n < mforall n m : t, n <= m -> P n <= mintros; apply lt_le_incl; now apply lt_pred_le. Qed.forall n m : t, n <= m -> P n <= mforall n m : t, n < P m -> n < mintros n m H; apply lt_trans with (P m); [assumption | apply lt_pred_l]. Qed.forall n m : t, n < P m -> n < mforall n m : t, n <= P m -> n <= mintros; apply lt_le_incl; now apply lt_le_pred. Qed.forall n m : t, n <= P m -> n <= mforall n m : t, n < m <-> P n < P mintros; rewrite lt_le_pred; symmetry; apply lt_pred_le. Qed.forall n m : t, n < m <-> P n < P mforall n m : t, n <= m <-> P n <= P mintros; rewrite <- lt_pred_le; now rewrite lt_le_pred. Qed.forall n m : t, n <= m <-> P n <= P mforall n m : t, S n < m <-> n < P mintros n m; now rewrite (pred_lt_mono (S n) m), pred_succ. Qed.forall n m : t, S n < m <-> n < P mforall n m : t, S n <= m <-> n <= P mintros n m; now rewrite (pred_le_mono (S n) m), pred_succ. Qed.forall n m : t, S n <= m <-> n <= P mforall n m : t, P n < m <-> n < S mintros; rewrite lt_pred_le; symmetry; apply lt_succ_r. Qed.forall n m : t, P n < m <-> n < S mforall n m : t, P n <= m <-> n <= S mintros n m; now rewrite (pred_le_mono n (S m)), pred_succ. Qed.forall n m : t, P n <= m <-> n <= S mforall n : t, P n ~= nintro; apply lt_neq; apply lt_pred_l. Qed.forall n : t, P n ~= nforall n m : t, n < m -> m < 0 -> n < -1forall n m : t, n < m -> m < 0 -> n < -1n, m:tH1:n < mH2:m < 0n < -1n, m:tH1:n < mH2:m <= P 0n < -1n, m:tH1:n < mH2:m <= -1n < -1n, m:tH1:n < mH2:m <= P 0P 0 == -1n, m:tH1:n < mH2:m <= P 0P 0 == -1now rewrite one_succ, opp_pred, opp_0. Qed. End ZOrderProp.n, m:tH1:n < mH2:m <= P 0- P 0 == 1