From 748d716efb2f2f75946c8386e441ce1789806a39 Mon Sep 17 00:00:00 2001 From: Enrico Tassi Date: Wed, 22 May 2019 13:43:08 +0200 Subject: htmldoc regenerated --- docs/htmldoc/mathcomp.algebra.interval.html | 598 +++++++++++++++++++--------- 1 file changed, 417 insertions(+), 181 deletions(-) (limited to 'docs/htmldoc/mathcomp.algebra.interval.html') diff --git a/docs/htmldoc/mathcomp.algebra.interval.html b/docs/htmldoc/mathcomp.algebra.interval.html index d10a18d..e0e16ed 100644 --- a/docs/htmldoc/mathcomp.algebra.interval.html +++ b/docs/htmldoc/mathcomp.algebra.interval.html @@ -21,7 +21,6 @@
(* (c) Copyright 2006-2016 Microsoft Corporation and Inria.                  
 Distributed under the terms of CeCILL-B.                                  *)

-Require Import mathcomp.ssreflect.ssreflect.

@@ -76,31 +75,228 @@

-Section IntervalPo.
+Section LersifPo.

-CoInductive itv_bound (T : Type) : Type := BOpen_if of bool & T | BInfty.
-Notation BOpen := (BOpen_if true).
-Notation BClose := (BOpen_if false).
-CoInductive interval (T : Type) := Interval of itv_bound T & itv_bound T.
+Variable R : numDomainType.

-Variable (R : numDomainType).
+Definition lersif (x y : R) b := if b then x < y else x y.

-Definition pred_of_itv (i : interval R) : pred R :=
-  [pred x | let: Interval l u := i in
-      match l with
-        | BOpen aa < x
-        | BClose aa x
-        | BInftytrue
-      end &&
-      match u with
-        | BOpen bx < b
-        | BClose bx b
-        | BInftytrue
-      end].
-Canonical Structure itvPredType := Eval hnf in mkPredType pred_of_itv.
+ +
+Lemma subr_lersifr0 b (x y : R) : (y - x 0 ?< if b) = (y x ?< if b).
+ +
+Lemma subr_lersif0r b (x y : R) : (0 y - x ?< if b) = (x y ?< if b).
+ +
+Definition subr_lersif0 := (subr_lersifr0, subr_lersif0r).
+ +
+Lemma lersif_trans x y z b1 b2 :
+  x y ?< if b1 y z ?< if b2 x z ?< if b1 || b2.
+ +
+Lemma lersif01 b : 0 1 ?< if b.
+ +
+Lemma lersif_anti b1 b2 x y :
+  (x y ?< if b1) && (y x ?< if b2) =
+  if b1 || b2 then false else x == y.
+ +
+Lemma lersifxx x b : (x x ?< if b) = ~~ b.
+ +
+Lemma lersifNF x y b : y x ?< if ~~ b x y ?< if b = false.
+ +
+Lemma lersifS x y b : x < y x y ?< if b.
+ +
+Lemma lersifT x y : x y ?< if true = (x < y).
+ +
+Lemma lersifF x y : x y ?< if false = (x y).
+ +
+Lemma lersif_oppl b x y : - x y ?< if b = (- y x ?< if b).
+ +
+Lemma lersif_oppr b x y : x - y ?< if b = (y - x ?< if b).
+ +
+Lemma lersif_0oppr b x : 0 - x ?< if b = (x 0 ?< if b).
+ +
+Lemma lersif_oppr0 b x : - x 0 ?< if b = (0 x ?< if b).
+ +
+Lemma lersif_opp2 b : {mono -%R : x y /~ x y ?< if b}.
+ +
+Definition lersif_oppE := (lersif_0oppr, lersif_oppr0, lersif_opp2).
+ +
+Lemma lersif_add2l b x : {mono +%R x : y z / y z ?< if b}.
+ +
+Lemma lersif_add2r b x : {mono +%R^~ x : y z / y z ?< if b}.
+ +
+Definition lersif_add2 := (lersif_add2l, lersif_add2r).
+ +
+Lemma lersif_subl_addr b x y z : (x - y z ?< if b) = (x z + y ?< if b).
+ +
+Lemma lersif_subr_addr b x y z : (x y - z ?< if b) = (x + z y ?< if b).
+ +
+Definition lersif_sub_addr := (lersif_subl_addr, lersif_subr_addr).
+ +
+Lemma lersif_subl_addl b x y z : (x - y z ?< if b) = (x y + z ?< if b).
+ +
+Lemma lersif_subr_addl b x y z : (x y - z ?< if b) = (z + x y ?< if b).
+ +
+Definition lersif_sub_addl := (lersif_subl_addl, lersif_subr_addl).
+ +
+Lemma lersif_andb x y : {morph lersif x y : p q / p || q >-> p && q}.
+ +
+Lemma lersif_orb x y : {morph lersif x y : p q / p && q >-> p || q}.
+ +
+Lemma lersif_imply b1 b2 r1 r2 :
+  b2 ==> b1 r1 r2 ?< if b1 r1 r2 ?< if b2.
+ +
+Lemma lersifW b x y : x y ?< if b x y.
+ +
+Lemma ltrW_lersif b x y : x < y x y ?< if b.
+ +
+Lemma lersif_pmul2l b x : 0 < x {mono *%R x : y z / y z ?< if b}.
+ +
+Lemma lersif_pmul2r b x : 0 < x {mono *%R^~ x : y z / y z ?< if b}.
+ +
+Lemma lersif_nmul2l b x : x < 0 {mono *%R x : y z /~ y z ?< if b}.
+ +
+Lemma lersif_nmul2r b x : x < 0 {mono *%R^~ x : y z /~ y z ?< if b}.
+ +
+Lemma real_lersifN x y b : x \is Num.real y \is Num.real
+  x y ?< if ~~b = ~~ (y x ?< if b).
+ +
+Lemma real_lersif_norml b x y :
+  x \is Num.real
+  (`|x| y ?< if b) = ((- y x ?< if b) && (x y ?< if b)).
+ +
+Lemma real_lersif_normr b x y :
+  y \is Num.real
+  (x `|y| ?< if b) = ((x y ?< if b) || (x - y ?< if b)).
+ +
+Lemma lersif_nnormr b x y : y 0 ?< if ~~ b (`|x| y ?< if b) = false.
+ +
+End LersifPo.
+ +
+Notation "x <= y ?< 'if' b" := (lersif x y b)
+  (at level 70, y at next level,
+  format "x '[hv' <= y '/' ?< 'if' b ']'") : ring_scope.
+ +
+Section LersifOrdered.
+ +
+Variable (R : realDomainType) (b : bool) (x y z e : R).
+ +
+Lemma lersifN : (x y ?< if ~~ b) = ~~ (y x ?< if b).
+ +
+Lemma lersif_norml :
+  (`|x| y ?< if b) = (- y x ?< if b) && (x y ?< if b).
+ +
+Lemma lersif_normr :
+  (x `|y| ?< if b) = (x y ?< if b) || (x - y ?< if b).
+ +
+Lemma lersif_distl :
+  (`|x - y| e ?< if b) = (y - e x ?< if b) && (x y + e ?< if b).
+ +
+Lemma lersif_minr :
+  (x Num.min y z ?< if b) = (x y ?< if b) && (x z ?< if b).
+ +
+Lemma lersif_minl :
+  (Num.min y z x ?< if b) = (y x ?< if b) || (z x ?< if b).
+ +
+Lemma lersif_maxr :
+  (x Num.max y z ?< if b) = (x y ?< if b) || (x z ?< if b).
+ +
+Lemma lersif_maxl :
+  (Num.max y z x ?< if b) = (y x ?< if b) && (z x ?< if b).
+ +
+End LersifOrdered.
+ +
+Section LersifField.
+ +
+Variable (F : numFieldType) (b : bool) (z x y : F).
+ +
+Lemma lersif_pdivl_mulr : 0 < z x y / z ?< if b = (x × z y ?< if b).
+ +
+Lemma lersif_pdivr_mulr : 0 < z y / z x ?< if b = (y x × z ?< if b).
+ +
+Lemma lersif_pdivl_mull : 0 < z x z^-1 × y ?< if b = (z × x y ?< if b).
+ +
+Lemma lersif_pdivr_mull : 0 < z z^-1 × y x ?< if b = (y z × x ?< if b).
+ +
+Lemma lersif_ndivl_mulr : z < 0 x y / z ?< if b = (y x × z ?< if b).
+ +
+Lemma lersif_ndivr_mulr : z < 0 y / z x ?< if b = (x × z y ?< if b).
+ +
+Lemma lersif_ndivl_mull : z < 0 x z^-1 × y ?< if b = (y z × x ?< if b).
+ +
+Lemma lersif_ndivr_mull : z < 0 z^-1 × y x ?< if b = (z × x y ?< if b).
+ +
+End LersifField.
+ +
+Variant itv_bound (T : Type) : Type := BOpen_if of bool & T | BInfty.
+Notation BOpen := (BOpen_if true).
+Notation BClose := (BOpen_if false).
+Variant interval (T : Type) := Interval of itv_bound T & itv_bound T.

@@ -109,25 +305,81 @@ We provide the 9 following notations to help writing formal intervals
-Notation "`[ a , b ]" := (Interval (BClose a) (BClose b))
+Notation "`[ a , b ]" := (Interval (BClose a) (BClose b))
  (at level 0, a, b at level 9 , format "`[ a , b ]") : ring_scope.
-Notation "`] a , b ]" := (Interval (BOpen a) (BClose b))
+Notation "`] a , b ]" := (Interval (BOpen a) (BClose b))
  (at level 0, a, b at level 9 , format "`] a , b ]") : ring_scope.
-Notation "`[ a , b [" := (Interval (BClose a) (BOpen b))
+Notation "`[ a , b [" := (Interval (BClose a) (BOpen b))
  (at level 0, a, b at level 9 , format "`[ a , b [") : ring_scope.
-Notation "`] a , b [" := (Interval (BOpen a) (BOpen b))
+Notation "`] a , b [" := (Interval (BOpen a) (BOpen b))
  (at level 0, a, b at level 9 , format "`] a , b [") : ring_scope.
-Notation "`] '-oo' , b ]" := (Interval (BInfty _) (BClose b))
+Notation "`] '-oo' , b ]" := (Interval (BInfty _) (BClose b))
  (at level 0, b at level 9 , format "`] '-oo' , b ]") : ring_scope.
-Notation "`] '-oo' , b [" := (Interval (BInfty _) (BOpen b))
+Notation "`] '-oo' , b [" := (Interval (BInfty _) (BOpen b))
  (at level 0, b at level 9 , format "`] '-oo' , b [") : ring_scope.
-Notation "`[ a , '+oo' [" := (Interval (BClose a) (BInfty _))
+Notation "`[ a , '+oo' [" := (Interval (BClose a) (BInfty _))
  (at level 0, a at level 9 , format "`[ a , '+oo' [") : ring_scope.
-Notation "`] a , '+oo' [" := (Interval (BOpen a) (BInfty _))
+Notation "`] a , '+oo' [" := (Interval (BOpen a) (BInfty _))
  (at level 0, a at level 9 , format "`] a , '+oo' [") : ring_scope.
-Notation "`] -oo , '+oo' [" := (Interval (BInfty _) (BInfty _))
+Notation "`] -oo , '+oo' [" := (Interval (BInfty _) (BInfty _))
  (at level 0, format "`] -oo , '+oo' [") : ring_scope.
+
+Section IntervalEq.
+ +
+Variable T : eqType.
+ +
+Definition eq_itv_bound (b1 b2 : itv_bound T) : bool :=
+  match b1, b2 with
+    | BOpen_if a x, BOpen_if b y(a == b) && (x == y)
+    | BInfty, BInftytrue
+    | _, _false
+  end.
+ +
+Lemma eq_itv_boundP : Equality.axiom eq_itv_bound.
+ +
+Canonical itv_bound_eqMixin := EqMixin eq_itv_boundP.
+Canonical itv_bound_eqType :=
+  Eval hnf in EqType (itv_bound T) itv_bound_eqMixin.
+ +
+Definition eqitv (x y : interval T) : bool :=
+  let: Interval x x' := x in
+  let: Interval y y' := y in (x == y) && (x' == y').
+ +
+Lemma eqitvP : Equality.axiom eqitv.
+ +
+Canonical interval_eqMixin := EqMixin eqitvP.
+Canonical interval_eqType := Eval hnf in EqType (interval T) interval_eqMixin.
+ +
+End IntervalEq.
+ +
+Section IntervalPo.
+ +
+Variable R : numDomainType.
+ +
+Definition pred_of_itv (i : interval R) : pred R :=
+  [pred x | let: Interval l u := i in
+      match l with
+        | BOpen_if b lblb x ?< if b
+        | BInftytrue
+      end &&
+      match u with
+        | BOpen_if b ubx ub ?< if b
+        | BInftytrue
+      end].
+Canonical Structure itvPredType := PredType pred_of_itv.
+
@@ -138,258 +390,242 @@ Definition itv_rewrite (i : interval R) x : Type :=
  let: Interval l u := i in
    (match l with
-       | BClose a(a x) × (x < a = false)
-       | BOpen a(a x) × (a < x) × (x a = false)
-       | BInfty x : R, x == x
-     end ×
+       | BClose a(a x) × (x < a = false)
+       | BOpen a(a x) × (a < x) × (x a = false) × (x < a = false)
+       | BInfty x : R, x == x
+     end ×
    match u with
-       | BClose b(x b) × (b < x = false)
-       | BOpen b(x b) × (x < b) × (b x = false)
-       | BInfty x : R, x == x
-     end ×
+       | BClose b(x b) × (b < x = false)
+       | BOpen b(x b) × (x < b) × (b x = false) × (b < x = false)
+       | BInfty x : R, x == x
+     end ×
    match l, u with
       | BClose a, BClose b
-         (a b) × (b < a = false) × (a \in `[a, b]) × (b \in `[a, b])
+         (a b) × (b < a = false) × (a \in `[a, b]) × (b \in `[a, b])
       | BClose a, BOpen b
-         (a b) × (a < b) × (b a = false)
-         × (a \in `[a, b]) × (a \in `[a, b[)* (b \in `[a, b]) × (b \in `]a, b])
+         (a b) × (a < b) × (b a = false) × (b < a = false)
+         × (a \in `[a, b]) × (a \in `[a, b[)* (b \in `[a, b]) × (b \in `]a, b])
       | BOpen a, BClose b
-         (a b) × (a < b) × (b a = false)
-         × (a \in `[a, b]) × (a \in `[a, b[)* (b \in `[a, b]) × (b \in `]a, b])
+         (a b) × (a < b) × (b a = false) × (b < a = false)
+         × (a \in `[a, b]) × (a \in `[a, b[)* (b \in `[a, b]) × (b \in `]a, b])
       | BOpen a, BOpen b
-         (a b) × (a < b) × (b a = false)
-         × (a \in `[a, b]) × (a \in `[a, b[)* (b \in `[a, b]) × (b \in `]a, b])
-       | _, _ x : R, x == x
+         (a b) × (a < b) × (b a = false) × (b < a = false)
+         × (a \in `[a, b]) × (a \in `[a, b[)* (b \in `[a, b]) × (b \in `]a, b])
+       | _, _ x : R, x == x
    end)%type.

Definition itv_decompose (i : interval R) x : Prop :=
  let: Interval l u := i in
-  ((match l with
-    | BClose a(a x) : Prop
-    | BOpen a(a < x) : Prop
-    | BInftyTrue
-  end : Prop) ×
-  (match u with
-    | BClose b(x b) : Prop
-    | BOpen b(x < b) : Prop
-    | BInftyTrue
-  end : Prop))%type.
+  ((match l with
+    | BOpen_if b lb(lb x ?< if b) : Prop
+    | BInftyTrue
+  end : Prop) ×
+  (match u with
+    | BOpen_if b ub(x ub ?< if b) : Prop
+    | BInftyTrue
+  end : Prop))%type.

Lemma itv_dec : (x : R) (i : interval R),
-  reflect (itv_decompose i x) (x \in i).
- -
- -
-Definition lersif (x y : R) b := if b then x < y else x y.
- -
- -
-Lemma lersifxx x b: (x x ?< if b) = ~~ b.
+  reflect (itv_decompose i x) (x \in i).

-Lemma lersif_trans x y z b1 b2 :
-  x y ?< if b1 y z ?< if b2 x z ?< if b1 || b2.

-Lemma lersifW b x y : x y ?< if b x y.
- -
-Lemma lersifNF x y b : y x ?< if ~~ b x y ?< if b = false.
- -
-Lemma lersifS x y b : x < y x y ?< if b.
- -
-Lemma lersifT x y : x y ?< if true = (x < y).
- -
-Lemma lersifF x y : x y ?< if false = (x y).
- -
-Definition le_boundl b1 b2 :=
+Definition le_boundl (b1 b2 : itv_bound R) :=
  match b1, b2 with
-    | BOpen_if b1 x1, BOpen_if b2 x2x1 x2 ?< if (~~ b2 && b1)
-    | BOpen_if _ _, BInftyfalse
-    | _, _true
+    | BOpen_if b1 x1, BOpen_if b2 x2x1 x2 ?< if ~~ b2 && b1
+    | BOpen_if _ _, BInftyfalse
+    | _, _true
  end.

-Definition le_boundr b1 b2 :=
+Definition le_boundr (b1 b2 : itv_bound R) :=
  match b1, b2 with
-    | BOpen_if b1 x1, BOpen_if b2 x2x1 x2 ?< if (~~ b1 && b2)
-    | BInfty, BOpen_if _ _false
-    | _, _true
+    | BOpen_if b1 x1, BOpen_if b2 x2x1 x2 ?< if ~~ b1 && b2
+    | BInfty, BOpen_if _ _false
+    | _, _true
  end.

Lemma itv_boundlr bl br x :
-  (x \in Interval bl br) =
-  (le_boundl bl (BClose x)) && (le_boundr (BClose x) br).
+  (x \in Interval bl br) =
+  (le_boundl bl (BClose x)) && (le_boundr (BClose x) br).

-Lemma le_boundr_refl : reflexive le_boundr.
+Lemma le_boundl_refl : reflexive le_boundl.

-Hint Resolve le_boundr_refl.
+Hint Resolve le_boundl_refl : core.

-Lemma le_boundl_refl : reflexive le_boundl.
+Lemma le_boundr_refl : reflexive le_boundr.

-Hint Resolve le_boundl_refl.
+Hint Resolve le_boundr_refl : core.
+ +
+Lemma le_boundl_trans : transitive le_boundl.
+ +
+Lemma le_boundr_trans : transitive le_boundr.

Lemma le_boundl_bb x b1 b2 :
-  le_boundl (BOpen_if b1 x) (BOpen_if b2 x) = (b1 ==> b2).
+  le_boundl (BOpen_if b1 x) (BOpen_if b2 x) = (b1 ==> b2).

Lemma le_boundr_bb x b1 b2 :
-  le_boundr (BOpen_if b1 x) (BOpen_if b2 x) = (b2 ==> b1).
+  le_boundr (BOpen_if b1 x) (BOpen_if b2 x) = (b2 ==> b1).
+ +
+Lemma le_boundl_anti b1 b2 : (le_boundl b1 b2 && le_boundl b2 b1) = (b1 == b2).
+ +
+Lemma le_boundr_anti b1 b2 : (le_boundr b1 b2 && le_boundr b2 b1) = (b1 == b2).

Lemma itv_xx x bl br :
-  Interval (BOpen_if bl x) (BOpen_if br x) =i
-  if ~~ (bl || br) then pred1 x else pred0.
- +  Interval (BOpen_if bl x) (BOpen_if br x) =i
+  if ~~ (bl || br) then pred1 x else pred0.
+
-Lemma itv_gte ba xa bb xb : xb xa ?< if ~~ (ba || bb)
-   Interval (BOpen_if ba xa) (BOpen_if bb xb) =i pred0.
+Lemma itv_gte ba xa bb xb : xb xa ?< if ~~ (ba || bb)
+   Interval (BOpen_if ba xa) (BOpen_if bb xb) =i pred0.

Lemma boundl_in_itv : ba xa b,
-  xa \in Interval (BOpen_if ba xa) b =
-  if ba then false else le_boundr (BClose xa) b.
+  xa \in Interval (BOpen_if ba xa) b =
+  if ba then false else le_boundr (BClose xa) b.

Lemma boundr_in_itv : bb xb a,
-  xb \in Interval a (BOpen_if bb xb) =
-  if bb then false else le_boundl a (BClose xb).
+  xb \in Interval a (BOpen_if bb xb) =
+  if bb then false else le_boundl a (BClose xb).

-Definition bound_in_itv := (boundl_in_itv, boundr_in_itv).
+Definition bound_in_itv := (boundl_in_itv, boundr_in_itv).

-Lemma itvP : (x : R) (i : interval R), (x \in i) itv_rewrite i x.
+Lemma itvP : (x : R) (i : interval R), x \in i itv_rewrite i x.

-Hint Rewrite intP.
+
+Definition itv_intersection (x y : interval R) : interval R :=
+  let: Interval x x' := x in
+  let: Interval y y' := y in
+  Interval
+    (if le_boundl x y then y else x)
+    (if le_boundr x' y' then x' else y').
+ +
+Definition itv_intersection1i : left_id `]-oo, +oo[ itv_intersection.
+ +
+Definition itv_intersectioni1 : right_id `]-oo, +oo[ itv_intersection.
+ +
+Lemma itv_intersectionii : idempotent itv_intersection.
+
Definition subitv (i1 i2 : interval R) :=
  match i1, i2 with
-    | Interval a1 b1, Interval a2 b2le_boundl a2 a1 && le_boundr b1 b2
+    | Interval a1 b1, Interval a2 b2le_boundl a2 a1 && le_boundr b1 b2
  end.

-Lemma subitvP : (i2 i1 : interval R),
-  (subitv i1 i2) {subset i1 i2}.
+Lemma subitvP : (i2 i1 : interval R), subitv i1 i2 {subset i1 i2}.

-Lemma subitvPr : (a b1 b2 : itv_bound R),
-  le_boundr b1 b2 {subset (Interval a b1) (Interval a b2)}.
+Lemma subitvPr (a b1 b2 : itv_bound R) :
+  le_boundr b1 b2 {subset (Interval a b1) (Interval a b2)}.

-Lemma subitvPl : (a1 a2 b : itv_bound R),
-  le_boundl a2 a1 {subset (Interval a1 b) (Interval a2 b)}.
+Lemma subitvPl (a1 a2 b : itv_bound R) :
+  le_boundl a2 a1 {subset (Interval a1 b) (Interval a2 b)}.

-Lemma lersif_in_itv : ba bb xa xb x,
-  x \in Interval (BOpen_if ba xa) (BOpen_if bb xb)
-        xa xb ?< if ba || bb.
- -
-Lemma ltr_in_itv : ba bb xa xb x, ba || bb
-  x \in Interval (BOpen_if ba xa) (BOpen_if bb xb) xa < xb.
- +Lemma lersif_in_itv ba bb xa xb x :
+  x \in Interval (BOpen_if ba xa) (BOpen_if bb xb)
+        xa xb ?< if ba || bb.
+
-Lemma ler_in_itv : ba bb xa xb x,
-  x \in Interval (BOpen_if ba xa) (BOpen_if bb xb) xa xb.
+Lemma ltr_in_itv ba bb xa xb x :
+  ba || bb x \in Interval (BOpen_if ba xa) (BOpen_if bb xb) xa < xb.

-Lemma mem0_itvcc_xNx : x, (0 \in `[-x, x]) = (0 x).
- +Lemma ler_in_itv ba bb xa xb x :
+  x \in Interval (BOpen_if ba xa) (BOpen_if bb xb) xa xb.
+
-Lemma mem0_itvoo_xNx : x, 0 \in `](-x), x[ = (0 < x).
- +Lemma mem0_itvcc_xNx x : (0 \in `[-x, x]) = (0 x).
+
-Lemma itv_splitI : a b, x,
-  x \in Interval a b = (x \in Interval a (BInfty _)) && (x \in Interval (BInfty _) b).
+Lemma mem0_itvoo_xNx x : 0 \in `](-x), x[ = (0 < x).

-Lemma real_lersifN x y b : x \in Num.real y \in Num.real
-  x y ?< if ~~b = ~~ (y x ?< if b).
+Lemma itv_splitI : a b x,
+  x \in Interval a b =
+  (x \in Interval a (BInfty _)) && (x \in Interval (BInfty _) b).

Lemma oppr_itv ba bb (xa xb x : R) :
-  (-x \in Interval (BOpen_if ba xa) (BOpen_if bb xb)) =
-  (x \in Interval (BOpen_if bb (-xb)) (BOpen_if ba (-xa))).
+  (-x \in Interval (BOpen_if ba xa) (BOpen_if bb xb)) =
+  (x \in Interval (BOpen_if bb (-xb)) (BOpen_if ba (-xa))).

-Lemma oppr_itvoo (a b x : R) : (-x \in `]a, b[) = (x \in `](-b), (-a)[).
+Lemma oppr_itvoo (a b x : R) : (-x \in `]a, b[) = (x \in `](-b), (-a)[).

-Lemma oppr_itvco (a b x : R) : (-x \in `[a, b[) = (x \in `](-b), (-a)]).
+Lemma oppr_itvco (a b x : R) : (-x \in `[a, b[) = (x \in `](-b), (-a)]).

-Lemma oppr_itvoc (a b x : R) : (-x \in `]a, b]) = (x \in `[(-b), (-a)[).
+Lemma oppr_itvoc (a b x : R) : (-x \in `]a, b]) = (x \in `[(-b), (-a)[).

-Lemma oppr_itvcc (a b x : R) : (-x \in `[a, b]) = (x \in `[(-b), (-a)]).
+Lemma oppr_itvcc (a b x : R) : (-x \in `[a, b]) = (x \in `[(-b), (-a)]).

End IntervalPo.

-Notation BOpen := (BOpen_if true).
-Notation BClose := (BOpen_if false).
-Notation "`[ a , b ]" := (Interval (BClose a) (BClose b))
-  (at level 0, a, b at level 9 , format "`[ a , b ]") : ring_scope.
-Notation "`] a , b ]" := (Interval (BOpen a) (BClose b))
-  (at level 0, a, b at level 9 , format "`] a , b ]") : ring_scope.
-Notation "`[ a , b [" := (Interval (BClose a) (BOpen b))
-  (at level 0, a, b at level 9 , format "`[ a , b [") : ring_scope.
-Notation "`] a , b [" := (Interval (BOpen a) (BOpen b))
-  (at level 0, a, b at level 9 , format "`] a , b [") : ring_scope.
-Notation "`] '-oo' , b ]" := (Interval (BInfty _) (BClose b))
-  (at level 0, b at level 9 , format "`] '-oo' , b ]") : ring_scope.
-Notation "`] '-oo' , b [" := (Interval (BInfty _) (BOpen b))
-  (at level 0, b at level 9 , format "`] '-oo' , b [") : ring_scope.
-Notation "`[ a , '+oo' [" := (Interval (BClose a) (BInfty _))
-  (at level 0, a at level 9 , format "`[ a , '+oo' [") : ring_scope.
-Notation "`] a , '+oo' [" := (Interval (BOpen a) (BInfty _))
-  (at level 0, a at level 9 , format "`] a , '+oo' [") : ring_scope.
-Notation "`] -oo , '+oo' [" := (Interval (BInfty _) (BInfty _))
-  (at level 0, format "`] -oo , '+oo' [") : ring_scope.
+Section IntervalOrdered.

-Notation "x <= y ?< 'if' b" := (lersif x y b)
-  (at level 70, y at next level,
-  format "x '[hv' <= y '/' ?< 'if' b ']'") : ring_scope.
+Variable R : realDomainType.

-Section IntervalOrdered.
+Lemma le_boundl_total : total (@le_boundl R).
+ +
+Lemma le_boundr_total : total (@le_boundr R).
+ +
+Lemma itv_splitU (xc : R) bc a b : xc \in Interval a b
+   y, y \in Interval a b =
+    (y \in Interval a (BOpen_if (~~ bc) xc))
+    || (y \in Interval (BOpen_if bc xc) b).

-Variable R : realDomainType.
+Lemma itv_splitU2 (x : R) a b : x \in Interval a b
+   y, y \in Interval a b =
+    [|| (y \in Interval a (BOpen x)), (y == x)
+      | (y \in Interval (BOpen x) b)].

-Lemma lersifN (x y : R) b : (x y ?< if ~~ b) = ~~ (y x ?< if b).
- +Lemma itv_intersectionC : commutative (@itv_intersection R).
+ +
+Lemma itv_intersectionA : associative (@itv_intersection R).
+
-Lemma itv_splitU (xc : R) bc a b : xc \in Interval a b
-   y, y \in Interval a b =
-    (y \in Interval a (BOpen_if (~~ bc) xc))
-    || (y \in Interval (BOpen_if bc xc) b).
+Canonical itv_intersection_monoid :=
+  Monoid.Law itv_intersectionA (@itv_intersection1i R) (@itv_intersectioni1 R).

-Lemma itv_splitU2 (x : R) a b : x \in Interval a b
-   y, y \in Interval a b =
-    [|| (y \in Interval a (BOpen x)), (y == x)
-      | (y \in Interval (BOpen x) b)].
+Canonical itv_intersection_comoid := Monoid.ComLaw itv_intersectionC.

End IntervalOrdered.
@@ -401,14 +637,14 @@ Variable R : realFieldType.

-Lemma mid_in_itv : ba bb (xa xb : R), xa xb ?< if (ba || bb)
-   mid xa xb \in Interval (BOpen_if ba xa) (BOpen_if bb xb).
+Lemma mid_in_itv : ba bb (xa xb : R), xa xb ?< if ba || bb
+   mid xa xb \in Interval (BOpen_if ba xa) (BOpen_if bb xb).

-Lemma mid_in_itvoo : (xa xb : R), xa < xb mid xa xb \in `]xa, xb[.
+Lemma mid_in_itvoo : (xa xb : R), xa < xb mid xa xb \in `]xa, xb[.

-Lemma mid_in_itvcc : (xa xb : R), xa xb mid xa xb \in `[xa, xb].
+Lemma mid_in_itvcc : (xa xb : R), xa xb mid xa xb \in `[xa, xb].

End IntervalField.
-- cgit v1.2.3