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) *) (************************************************************************) Require Import QArith_base Orders QOrderedType GenericMinMax.
Local Open Scope Q_scope.
Qmin and Qmax are obtained the usual way from Qcompare.
Definition Qmax := gmax Qcompare. Definition Qmin := gmin Qcompare. Module QHasMinMax <: HasMinMax Q_as_OT. Module QMM := GenericMinMax Q_as_OT. Definition max := Qmax. Definition min := Qmin. Definition max_l := QMM.max_l. Definition max_r := QMM.max_r. Definition min_l := QMM.min_l. Definition min_r := QMM.min_r. End QHasMinMax. Module Q.
We obtain hence all the generic properties of max and min.
Include MinMaxProperties Q_as_OT QHasMinMax.
Compatibilities (consequences of monotonicity)
forall n m p : Q, Qmax (p + n) (p + m) == p + Qmax n mforall n m p : Q, Qmax (p + n) (p + m) == p + Qmax n mn, m, p:QQmax (p + n) (p + m) == p + Qmax n mn, m, p:QProper (Qeq ==> Qeq) (Qplus p)n, m, p:QProper (Qle ==> Qle) (Qplus p)n, m, p:QProper (Qle ==> Qle) (Qplus p)apply Qplus_le_compat; q_order. Qed.n, m, p, x, x':QHx:x <= x'p + x <= p + x'forall n m p : Q, Qmax (n + p) (m + p) == Qmax n m + pforall n m p : Q, Qmax (n + p) (m + p) == Qmax n m + pn, m, p:QQmax (n + p) (m + p) == Qmax n m + papply plus_max_distr_l. Qed.n, m, p:QQmax (p + n) (p + m) == p + Qmax n mforall n m p : Q, Qmin (p + n) (p + m) == p + Qmin n mforall n m p : Q, Qmin (p + n) (p + m) == p + Qmin n mn, m, p:QQmin (p + n) (p + m) == p + Qmin n mn, m, p:QProper (Qeq ==> Qeq) (Qplus p)n, m, p:QProper (Qle ==> Qle) (Qplus p)n, m, p:QProper (Qle ==> Qle) (Qplus p)apply Qplus_le_compat; q_order. Qed.n, m, p, x, x':QHx:x <= x'p + x <= p + x'forall n m p : Q, Qmin (n + p) (m + p) == Qmin n m + pforall n m p : Q, Qmin (n + p) (m + p) == Qmin n m + pn, m, p:QQmin (n + p) (m + p) == Qmin n m + papply plus_min_distr_l. Qed. End Q.n, m, p:QQmin (p + n) (p + m) == p + Qmin n m