Module mathcomp.classical.set_interval
From HB Require Import structures.From mathcomp Require Import boot order ssralg ssrnum interval.
#[warning="-warn-library-file-internal-analysis"]
From mathcomp Require Import unstable.
From mathcomp Require Import mathcomp_extra boolp classical_sets.
From mathcomp Require Import functions.
Unset SsrOldRewriteGoalsOrder.
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
Import Order.TTheory GRing.Theory Num.Def Num.Theory.
Local Open Scope classical_set_scope.
Local Open Scope ring_scope.
Variables (
Source code
Implicit Types (i j : interval T) (x y : T) (a : itv_bound T).
Definition
neitv : forall {disp : disp_t} {T : porderType disp}, interval T -> bool neitv is not universe polymorphic Arguments neitv {disp T} i neitv is transparent Expands to: Constant mathcomp.classical.set_interval.neitv Declared in library mathcomp.classical.set_interval, line 72, characters 11-16
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
by rewrite predeqE => r /=; rewrite ij.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
[set` j] `<=` [set` i] -> {in i, forall , P x} -> {in j, forall , P x}.
Proof.
Lemma
Source code
(x <= y)%O -> (z <= u)%O ->
`]y, z[ `<=` [set` Interval (BSide b0 x) (BSide b1 u)].
Proof.
move=> x0/=; rewrite 2!in_itv/= => /andP[].
by move=> /(le_lt_trans xy) ->/= /lt_le_trans; exact.
by move: b0 b1 => [] [] /=; [exact: subset_itv_oo_co|exact: subset_itv_oo_cc|
exact: subset_refl|exact: subset_itv_oo_oc].
Qed.
Lemma
Source code
[set` Interval a b] `<=` [set` Interval a c].
Lemma
Source code
[set` Interval a b] `<=` [set` Interval c b].
Lemma
Source code
[set` Interval a b] `<=` [set` Interval c d].
Proof.
Lemma
Source code
(BLeft c <= a)%O -> (b <= BRight e)%O ->
[set` Interval a b] `<=` [set` `[c, e]].
Proof.
case: a ca az => [[|]/=|[|]//] a; rewrite bnd_simp => ca az.
- rewrite (le_trans ca az)/=.
move: b be zb => [[|]/= b|[|]//]; rewrite bnd_simp => be.
by move=> /ltW/le_trans; exact.
by move=> /le_trans; exact.
- rewrite (le_trans ca (ltW az))/=.
move: b be zb => [[|]/= b|[|]//]; rewrite bnd_simp => be.
by move=> /ltW/le_trans; exact.
by move=> /le_trans; exact.
Qed.
Lemma
Source code
(BLeft c < a)%O -> (b < BRight e)%O ->
[set` Interval a b] `<=` [set` `]c, e[].
Proof.
case: a ca az => [[|]/=|[|]//] a; rewrite bnd_simp => ca az.
rewrite (lt_le_trans ca az)/=.
move: b be zb => [[|]/= b|[|]//]; rewrite bnd_simp => be.
by move=> /lt_le_trans; exact.
by move=> /le_lt_trans; exact.
rewrite (le_lt_trans ca az)/=.
move: b be zb => [[|]/= b|[|]//]; rewrite bnd_simp => be.
by move=> /lt_le_trans; exact.
by move=> /le_lt_trans; exact.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Definition
set_itv_infty_set0 : forall [disp : disp_t] (T : porderType disp), (forall a : itv_bound T, [set` Interval a -oo%O]%classic = set0) * (forall a : itv_bound T, [set` Interval +oo%O a]%classic = set0) set_itv_infty_set0 is not universe polymorphic Arguments set_itv_infty_set0 [disp] T set_itv_infty_set0 is transparent Expands to: Constant mathcomp.classical.set_interval.set_itv_infty_set0 Declared in library mathcomp.classical.set_interval, line 193, characters 11-29
Source code
Definition
set_itvE : forall [disp : disp_t] (T : porderType disp), (forall x : T, `[x, x]%classic = [set x]%classic) * (forall x : T, `]x, x[%classic = set0) * (forall x : T, `]x, x]%classic = set0) * (forall x : T, `[x, x[%classic = set0) * (forall x y : T, `]x, y[%classic = [set z | (x < z < y)%O]%classic) * (forall x y : T, `[x, y]%classic = [set z | (x <= z <= y)%O]%classic) * (forall x y : T, `]x, y]%classic = [set z | (x < z <= y)%O]%classic) * (forall x y : T, `[x, y[%classic = [set z | (x <= z < y)%O]%classic) * (`]-oo, +oo[%classic = [set: T]%classic) * (forall x : T, `]x, +oo[%classic = [set z | (x < z)%O]%classic) * (forall x : T, `[x, +oo[%classic = [set z | (x <= z)%O]%classic) * (forall x : T, `]-oo, x[%classic = [set z | (z < x)%O]%classic) * (forall x : T, `]-oo, x]%classic = [set z | (z <= x)%O]%classic) * ((forall a : itv_bound T, [set` Interval a -oo%O]%classic = set0) * (forall a : itv_bound T, [set` Interval +oo%O a]%classic = set0)) set_itvE is not universe polymorphic Arguments set_itvE [disp] T set_itvE is transparent Expands to: Constant mathcomp.classical.set_interval.set_itvE Declared in library mathcomp.classical.set_interval, line 195, characters 11-19
Source code
set_itvcc, set_itvoc, set_itvco, set_itvNyy, set_itvoy,
set_itvcy, set_itvNyo, set_itvNyc, set_itv_infty_set0).
Lemma
Source code
Proof.
Lemma
Source code
[set` Interval a (BLeft x)] `|` [set x] = [set` Interval a (BRight x)].
Proof.
Lemma
Source code
x |` [set` Interval (BRight x) a] = [set` Interval (BLeft x) a].
Proof.
Lemma
Source code
[set` Interval a (BSide b x)] `|` [set x] = [set` Interval a (BRight x)].
Proof.
by apply: setUidl => ? /= ->; rewrite itv_boundlr ax lexx.
Qed.
Lemma
Source code
x |` [set` Interval (BSide b x) a] = [set` Interval (BLeft x) a].
Proof.
by apply: setUidr => ? /= ->; rewrite itv_boundlr ax lexx.
Qed.
Lemma
Source code
(x <= y)%O ->
[set` Interval (BSide b1 x) (BSide b2 y)] `|` [set x; y] = `[x, y]%classic.
Proof.
Lemma
Source code
[set` Interval a (BSide b x)] `\ x = [set` Interval a (BLeft x)].
Proof.
Lemma
Source code
[set` Interval (BSide b x) a] `\ x = [set` Interval (BRight x) a].
Proof.
apply/seteqP; split => [z|z] /=; rewrite !in_itv/=.
move=> [/andP[xz ->]]; rewrite andbT => /eqP.
by rewrite lt_neqAle eq_sym => ->.
move=> /andP[]; rewrite lt_neqAle => /andP[xz zx ->].
by rewrite andbT; split => //; exact/nesym/eqP.
Qed.
Lemma
Source code
[set` Interval (BSide b1 x) (BSide b2 y)] `\` [set x; y] = `]x, y[%classic.
End set_itv_porderType.
Arguments neitv {disp T} _.
#[deprecated(since="mathcomp-analysis 1.10.0", note="renamed to `set_itvNyy`")]
Notation
Source code
#[deprecated(since="mathcomp-analysis 1.10.0", note="renamed to `set_itvoy`")]
Notation
Source code
#[deprecated(since="mathcomp-analysis 1.10.0", note="renamed to `set_itvcy`")]
Notation
Source code
#[deprecated(since="mathcomp-analysis 1.10.0", note="renamed to `set_itvNyo`")]
Notation
Source code
#[deprecated(since="mathcomp-analysis 1.10.0", note="renamed to `set_itvNyc`")]
Notation
Source code
#[deprecated(since="mathcomp-analysis 1.10.0", note="renamed to `set_itv_ybnd`")]
Notation
Source code
#[deprecated(since="mathcomp-analysis 1.10.0", note="renamed to `set_itv_bndNy`")]
Notation
Source code
#[deprecated(since="mathcomp-analysis 1.15.0", note="use `set_itv1` instead")]
Notation
Source code
Section set_itv_orderType.
Variables ( : Order.disp_t) ( : orderType d).
Implicit Types a b x y : itv_bound T.
Lemma
Source code
([set` Interval a y] = [set` Interval a x] `|` [set` Interval x y])%classic.
Proof.
move=> /[swap].
rewrite le_eqVlt => /predU1P[-> ay|]; first by rewrite set_itvxx setU0.
move: y => [yb y/=|[|]]; last 2 first.
by case: x => [|[|]].
move=> _ ax; apply/seteqP; split => [z|z] /=.
rewrite !in_itv/= !andbT => -> /=; apply/orP.
by move: x => [[|] x/=|[|]//] in ax *; rewrite leNgt ?(orbN,orNb).
rewrite !in_itv/= !andbT => -[/andP[]|]//.
move: x => [[|] x/=|[|]//] in ax *; move: a => [[|] a/=|[|]//] in ax * => //.
- by apply/le_trans; exact/ltW.
- exact/lt_le_trans.
- by move=> /(le_lt_trans ax) /ltW.
- exact/lt_trans.
move=> xy ax; apply/seteqP; split => [z|z] /=.
rewrite !in_itv /= => /andP[].
move: a ax => [b t /=|[]//= oox _].
move=> tx -> zxy /=; rewrite zxy andbT/=; apply/orP.
by case: x xy tx => [[|] x/=|[|]//] xy tx; rewrite leNgt ?(orbN,orNb).
move=> ->; rewrite andbT; apply/orP.
by move: x => [[|] x/=|[|]//] in oox xy *; rewrite leNgt ?(orbN,orNb).
rewrite !in_itv/=.
move: a ax => [b t /= tx| [/= oox|/= oox]].
- move=> [/andP[-> zx]|].
move: x => [[|] x|[|]//]/= in xy tx zx *.
case: yb => /= in xy *.
by rewrite (lt_trans zx _).
by rewrite (ltW (lt_le_trans zx _)).
rewrite bnd_simp in xy.
case: yb => /=.
by rewrite (le_lt_trans zx _).
by rewrite (ltW (le_lt_trans zx _)).
move: x => [[|] x|[|]//]/= in xy tx *; rewrite bnd_simp in xy tx.
+ move=> /andP[xz ->]; rewrite andbT.
case: b => /=.
by rewrite (le_trans _ xz)// ltW.
by rewrite (lt_le_trans tx).
move=> /andP[xz ->]; rewrite andbT.
case: b tx => /= tx; rewrite bnd_simp in tx.
by rewrite ltW// (le_lt_trans _ xz).
by rewrite (lt_trans tx).
- move: x => [[|] x|[|]//]/= in xy oox *; move=> [|].
+ case: yb => /= in xy *.
by move=> /lt_trans; exact.
rewrite bnd_simp in xy.
by move=> /lt_le_trans => /(_ _ xy)/ltW.
+ by move=> /andP[].
+ case: yb => /= in xy *.
by move=> /le_lt_trans; apply.
by move=> /le_trans; apply; exact/ltW.
+ by move=> /andP[].
- by move: x => [[|] x|[|]//]/= in xy oox *.
Qed.
Lemma
Source code
[set` Interval a b] `\ c =
[set` Interval a (BLeft c)] `|` [set` Interval (BRight c) b].
Proof.
- rewrite neq_lt => /orP[xc|cx]; [left|right].
+ move: cab xab; rewrite !itv_boundlr => /andP[ac cb] /andP[ax xb].
by rewrite ax/= bnd_simp.
+ move: cab xab; rewrite !itv_boundlr => /andP[ac cb] /andP[ax xb].
by rewrite xb andbT bnd_simp.
- move: cab; rewrite !itv_boundlr => /andP[ac cb] /andP[ax].
rewrite bnd_simp => xc.
rewrite ax/= (le_trans _ cb) ?bnd_simp ?(ltW xc)//; split => //.
by apply/eqP; rewrite lt_eqF.
- move: cab; rewrite !itv_boundlr => /andP[ac cb] /andP[+ xb].
rewrite bnd_simp => cx.
rewrite xb/= andbT (le_trans ac)/= ?bnd_simp ?(ltW cx)//; split => //.
by apply/eqP; rewrite gt_eqF.
Qed.
Lemma
Source code
neitv (Interval (BSide b1 x) (BSide b2 y)) ->
[set` Interval (BSide b1 x) (BSide b2 y)] `\` `]x, y[ =
(if b1 then [set x] else set0) `|` (if b2 then set0 else [set y]).
Proof.
apply/seteqP; split => z/=; rewrite !in_itv/=; last first.
move: b1 b2 xy.
by move=> [] [] /[!bnd_simp]/= + []// -> => ->; rewrite ?(lexx,ltxx,andbF).
case=> /[swap] /negP; rewrite negb_and.
move: b1 b2 {xy} => [] [] /= + /andP[]; rewrite ?ltNge !negbK.
- by move=> /orP[*|->//]; left; exact/le_anti/andP.
- by case/orP => *; [left|right]; exact/le_anti/andP.
- by case/orP => ->.
- by move=> /orP[->//|*]; right; exact/le_anti/andP.
Qed.
Lemma
Source code
neitv `[x, y] ->
`[x, y] `\` [set` Interval (BSide b1 x) (BSide b2 y)] =
(if b1 then set0 else [set x]) `|` (if b2 then [set y] else set0).
Proof.
apply/seteqP; split => z/=; rewrite !in_itv/=; last first.
move: b1 b2 xy.
by move=> [] [] /[!bnd_simp]/= + []// -> => ->; rewrite ?(lexx,ltxx,andbF).
case=> /[swap] /negP; rewrite negb_and.
move: b1 b2 {xy} => [] [] /= + /andP[]; rewrite -?leNgt.
- by move=> /orP[/negPf ->//|*]; right; exact/le_anti/andP.
- by case/orP => /negPf ->.
- by case/orP => *; [left|right]; exact/le_anti/andP.
- by move=> /orP[*|/negPf ->//]; left; exact/le_anti/andP.
Qed.
Lemma
Source code
neitv (Interval (BSide b x) a) ->
[set` Interval (BSide b x) a] `\` `]x, +oo[ = if b then [set x] else set0.
Proof.
Lemma
Source code
neitv (Interval a (BSide b x)) ->
[set` Interval a (BSide b x)] `\` `]-oo, x[ = if b then set0 else [set x].
Proof.
Lemma
Source code
neitv (Interval (BLeft x) a) ->
[set` Interval (BLeft x) a] `\` [set` Interval (BSide b x) +oo%O] =
(if b then set0 else [set x]).
Proof.
Lemma
Source code
neitv (Interval a (BRight x)) ->
[set` Interval a (BRight x)] `\` [set` Interval -oo%O (BSide b x)] =
(if b then [set x] else set0).
Proof.
End set_itv_orderType.
Lemma
Source code
Source code
~~ (b1 < b2)%O -> [set` Interval b1 b2] = set0.
Section set_itv_latticeType.
Variables ( : Order.disp_t) ( : latticeType d).
Implicit Types (i j : interval T) (x y : T) (a : itv_bound T).
Lemma
Source code
End set_itv_latticeType.
Section set_itv_numFieldType.
Variable : numFieldType.
Implicit Types i : interval R.
Lemma
Source code
Proof.
by move=> /mem_miditv ii; apply/set0P; exists (miditv i).
Qed.
Lemma
Source code
End set_itv_numFieldType.
Lemma
Source code
Proof.
Section interval_has_bound.
Variable : numDomainType.
Lemma
Source code
has_lbound [set` Interval (BSide b x) a].
Lemma
Source code
has_ubound [set` Interval a (BSide b x)].
End interval_has_bound.
Section subr_image.
Variable : numDomainType.
Implicit Types E : set R.
Implicit Types x : R.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
End subr_image.
Section interval_hasNbound.
Variable : realDomainType.
Implicit Types E : set R.
Implicit Types x : R.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
~ has_lbound [set` Interval -oo%O a].
Proof.
suff: ~ has_lbound `]-oo, r[%classic.
by case: b => //; apply/contra_not/subset_has_lbound => x /ltW.
apply/has_lbPn => x; exists (minr (r - 1) (x - 1)).
by rewrite !set_itvE/= gt_min ltrBlDr ltrDl ltr01.
by rewrite gt_min orbC ltrBlDr ltrDl ltr01.
case=> r /(_ (r - 1)) /=; rewrite in_itv /= => /(_ erefl).
by apply/negP; rewrite -ltNge ltrBlDr ltrDl.
Qed.
Lemma
Source code
~ has_ubound [set` Interval a +oo%O].
Proof.
suff: ~ has_ubound `]r, +oo[%classic.
case: b => //; apply/contra_not/subset_has_ubound => x.
by rewrite !set_itvE => /ltW.
apply/has_ubPn => x; rewrite !set_itvE; exists (maxr (r + 1) (x + 1));
by rewrite ?in_itv /= ?andbT lt_max ltrDl ltr01 // orbT.
case=> r /(_ (r + 1)) /=; rewrite in_itv /= => /(_ erefl).
by apply/negP; rewrite -ltNge ltrDl.
Qed.
End interval_hasNbound.
#[global] Hint Extern 0 (has_lbound _) => solve[apply: has_lbound_itv] : core.
#[global] Hint Extern 0 (has_ubound _) => solve[apply: has_ubound_itv] : core.
#[global]
Hint Extern 0 (~ has_lbound _) => solve[by apply: hasNlbound_itv] : core.
#[global]
Hint Extern 0 (~ has_ubound _) => solve[by apply: hasNubound_itv] : core.
Lemma
Source code
-%R @` [set` Interval (BSide b x) +oo%O] =
[set` Interval -oo%O (BSide (negb b) (- x))].
Proof.
Notation
Source code
Lemma
Source code
-%R @` [set` Interval -oo%O (BSide b x)] =
[set` Interval (BSide (negb b) (- x)) +oo%O].
Proof.
Notation
Source code
Lemma
Source code
-%R @` [set` Interval (BSide a x) (BSide b y)] =
[set` Interval (BSide (~~ b) (- y)) (BSide (~~ a) (- x))].
Proof.
Lemma
Source code
-%R @` `]x, y[%classic = `](- y), (- x)[%classic.
Proof.
Lemma
Source code
-%R @^-1` [set` Interval (BSide ba a) (BInfty _ bb)] =
[set` Interval (BInfty _ (~~ bb)) (BSide (~~ ba) (- a))].
Lemma
Source code
-%R @^-1` [set` Interval (BSide ba a) (BSide bb b)] =
[set` Interval (BSide (~~ bb) (- b)) (BSide (~~ ba) (- a))].
Variables ( : Order.disp_t) ( : porderType d).
Implicit Types (a : itv_bound T) (x y : T) (i j : interval T) (b : bool).
Lemma
Source code
Proof.
End set_itv_porderType.
Section set_itv_orderType.
Variables ( : Order.disp_t) ( : orderType d).
Implicit Types (a : itv_bound T) (x y : T) (i j : interval T) (b : bool).
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
~` [set` i] = [set` Interval -oo%O i.1] `|` [set` Interval i.2 +oo%O].
Lemma
Source code
[set` i] = [set` Interval i.1 +oo%O] `\` [set` Interval i.2 +oo%O].
Proof.
Lemma
Source code
[set` Interval -oo%O (BSide b x)] `|`
[set` Interval (BSide b x) +oo%O] = [set: T].
Proof.
End set_itv_orderType.
Section line_path_factor_numDomainType.
Variable : numDomainType.
Implicit Types (a b t r : R) (A : set R).
Lemma
Source code
(b - t \in Interval (BSide x a) (BSide y b)) =
(a + t \in Interval (BSide (~~ y) a) (BSide (~~ x) b)).
Proof.
Lemma
Source code
(b - a \in Interval (BSide x 0) (BSide y b)) =
(a \in Interval (BSide (~~ y) 0) (BSide (~~ x) b)).
Lemma
Source code
Proof.
Definition
line_path : forall [R : numDomainType], R -> R -> R -> R line_path is not universe polymorphic Arguments line_path [R] (a b t)%_ring_scope line_path is transparent Expands to: Constant mathcomp.classical.set_interval.line_path Declared in library mathcomp.classical.set_interval, line 705, characters 11-20
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Definition
factor : forall [R : numDomainType], R -> R -> R -> join_GRing_PzRing_between_Algebra_BaseZmodule_and_GRing_PzSemiRing R factor is not universe polymorphic Arguments factor [R] (a b x)%_ring_scope factor is transparent Expands to: Constant mathcomp.classical.set_interval.factor Declared in library mathcomp.classical.set_interval, line 736, characters 11-17
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Definition
ndline_path : forall [R : numDomainType] [a b : R], (a < b)%R -> R -> R ndline_path is not universe polymorphic Arguments ndline_path [R] [a b]%_ring_scope _ t%_ring_scope ndline_path is transparent Expands to: Constant mathcomp.classical.set_interval.ndline_path Declared in library mathcomp.classical.set_interval, line 749, characters 11-22
Source code
Lemma
Source code
Proof.
End line_path_factor_numDomainType.
#[deprecated(since="mathcomp-analysis 1.12.0", note="use `memB_itv0` instead")]
Notation
Source code
Section line_path_factor_numFieldType.
Variable : numFieldType.
Implicit Types (a b t r : R) (A : set R).
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
apply: homo_mono (line_pathK _) (leW_factor _) (leW_line_path _) => //.
by rewrite lt_eqF.
Qed.
Lemma
Source code
Proof.
apply: homo_mono (factorK _) (leW_line_path _) (leW_factor _) => //.
by rewrite lt_eqF.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Let
Source code
Proof.
.
Source code
Source code
@Can2.Build _ _ setT setT (ndline_path ab) (factor a b)
(fun _ _ => I) (fun _ _ => I)
(in1W (line_pathK (ltNeq ab))) (in1W (factorK (ltNeq ab))).
Lemma
Source code
set_bij [set` Interval (BSide ba 0) (BSide bb 1)]
[set` Interval (BSide ba a) (BSide bb b)] (line_path a b).
Proof.
apply: bij_subr => //=; rewrite setTI ?ndline_pathE.
apply/predeqP => t /=; rewrite !in_itv/= {1}line_pathEl line_pathEr.
rewrite -lteifBlDr subrr -lteif_pdivrMr ?subr_gt0// mul0r.
rewrite -lteifBrDr subrr -lteif_ndivrMr ?subr_lt0// mul0r.
by rewrite lteifBrDl addr0.
Qed.
Lemma
Source code
set_bij [set` Interval (BSide ba a) (BSide bb b)]
[set` Interval (BSide ba 0) (BSide bb 1)] (factor a b).
Proof.
by apply/splitbij_sub_sym => //; apply: line_path_itv_bij.
Qed.
Lemma
Source code
set_fun [set` Interval (BSide ba 0) (BSide bb 1)]
[set` Interval (BSide ba a) (BSide bb b)] (line_path a b).
Proof.
Lemma
Source code
Proof.
by move=> lt_ab; case: (line_path_itv_bij true false lt_ab).
Qed.
Lemma
Source code
line_path a b @` [set` Interval (BSide ba 0) (BSide bb 1)] =
[set` Interval (BSide ba a) (BSide bb b)].
Proof.
Lemma
Source code
factor a b @` [set` Interval (BSide ba a) (BSide bb b)] =
[set` Interval (BSide ba 0) (BSide bb 1)].
Proof.
Lemma
Source code
Proof.
End line_path_factor_numFieldType.
Lemma
Source code
set_fun [set` Interval (BSide ba a) (BSide bb b)]
[set` Interval (BSide ba 0) (BSide bb 1)] (factor a b).
Proof.
Lemma
Source code
all neitv s -> forall , i \in s -> i.1 != +oo%O.
Proof.
by rewrite boo => /sne /negP; apply; rewrite set_itv_infty_set0.
Qed.
Lemma
Source code
all neitv s -> forall , i \in s -> i.2 != -oo%O.
Proof.
by rewrite boo => /sne /negP; apply; rewrite set_itv_infty_set0.
Qed.
Lemma
Source code
Source code
( : set nat) : [set` def] = set0 ->
trivIset D (fun => [set` nth def s i]) <->
trivIset D (fun => nth set0 [seq [set` j] | <- s] i).
Proof.
- have [si|si] := ltP i (size s); last first.
by rewrite (nth_default set0) ?size_map// set0I.
have [sj|sj] := ltP j (size s); last first.
by rewrite setIC (nth_default set0) ?size_map// set0I.
by rewrite (nth_map def) // (nth_map def) // ss.
- have [?|h] := ltP i (size s); last by rewrite (nth_default def h) def0 set0I.
have [?|h] := ltP j (size s); last by rewrite (nth_default def h) def0 setI0.
by have := ss _ _ Di Dj ij; rewrite (nth_map def) // (nth_map def).
Qed.
Section disjoint_itv.
Context {
Source code
Definition
disjoint_itv : forall {disp : disp_t} {T : porderType disp}, rel (interval T) disjoint_itv is not universe polymorphic Arguments disjoint_itv {disp T} _ _ disjoint_itv is transparent Expands to: Constant mathcomp.classical.set_interval.disjoint_itv Declared in library mathcomp.classical.set_interval, line 905, characters 11-23
Source code
fun => [disjoint [set` a] & [set` b]].
Lemma
Source code
Proof.
Lemma
Source code
disjoint_itv (Interval -oo%O (BSide b x)) (Interval (BSide b x) +oo%O).
End disjoint_itv.
Section disjoint_itv_orderType.
Context {
Source code
Lemma
Source code
disjoint_itv i j <-> ~~ neitv (itv_meet i j).
Proof.
by split => [/negPn//|?]; apply/negPn.
Qed.
End disjoint_itv_orderType.
Section disjoint_itv_numDomain.
Context { : numDomainType}.
Import Order.Theory.
Lemma
Source code
(forall , x \in i -> y \in j -> x < y) -> disjoint_itv i j.
Proof.
End disjoint_itv_numDomain.
Section open_endpoints.
Context {} { : porderType d}.
Implicit Types (i : interval T).
Definition
is_open_itv : forall {d : disp_t} {T : porderType d}, set T -> Prop is_open_itv is not universe polymorphic Arguments is_open_itv {d T} A%_classical_set_scope is_open_itv is transparent Expands to: Constant mathcomp.classical.set_interval.is_open_itv Declared in library mathcomp.classical.set_interval, line 948, characters 11-22
Source code
Definition
open_itv_cover : forall {d : disp_t} {T : porderType d}, set T -> set (nat -> set T) open_itv_cover is not universe polymorphic Arguments open_itv_cover {d T} A%_classical_set_scope _ open_itv_cover is transparent Expands to: Constant mathcomp.classical.set_interval.open_itv_cover Declared in library mathcomp.classical.set_interval, line 950, characters 11-25
Source code
(forall , is_open_itv (F k)) /\ A `<=` \bigcup_ (F k)].
Definition
itv_is_open_unbounded : forall {d : disp_t} {T : porderType d}, interval T -> bool itv_is_open_unbounded is not universe polymorphic Arguments itv_is_open_unbounded {d T} i itv_is_open_unbounded is transparent Expands to: Constant mathcomp.classical.set_interval.itv_is_open_unbounded Declared in library mathcomp.classical.set_interval, line 953, characters 11-32
Source code
match i with
| `]-oo, _[ | `]_, +oo[ | `]-oo, +oo[ => true
| _ => false
end.
Definition
itv_is_oo : forall {d : disp_t} {T : porderType d}, interval T -> bool itv_is_oo is not universe polymorphic Arguments itv_is_oo {d T} i itv_is_oo is transparent Expands to: Constant mathcomp.classical.set_interval.itv_is_oo Declared in library mathcomp.classical.set_interval, line 959, characters 11-20
Source code
Definition
itv_open_ends : forall {d : disp_t} {T : porderType d}, interval T -> bool itv_open_ends is not universe polymorphic Arguments itv_open_ends {d T} i itv_open_ends is transparent Expands to: Constant mathcomp.classical.set_interval.itv_open_ends Declared in library mathcomp.classical.set_interval, line 961, characters 11-24
Source code
Lemma
Source code
itv_open_ends (Interval l (BSide b t)) -> b = true.
Proof.
Lemma
Source code
itv_open_ends (Interval l (BInfty T b)) -> b = false.
Proof.
Lemma
Source code
itv_open_ends (Interval (BSide b t) l) -> b = false.
Proof.
Lemma
Source code
itv_open_ends (Interval (BInfty T b) l) -> b = true.
Proof.
Lemma
Source code
Proof.
End open_endpoints.
Section closed_endpoints.
Context {} { : porderType d}.
Implicit Types (i : interval T).
Definition
itv_is_closed_unbounded : forall {d : disp_t} {T : porderType d}, interval T -> bool itv_is_closed_unbounded is not universe polymorphic Arguments itv_is_closed_unbounded {d T} i itv_is_closed_unbounded is transparent Expands to: Constant mathcomp.classical.set_interval.itv_is_closed_unbounded Declared in library mathcomp.classical.set_interval, line 988, characters 11-34
Source code
match i with
| `[_, +oo[ | `]-oo, _] | `]-oo, +oo[ => true
| _ => false
end.
Definition
itv_is_cc : forall {d : disp_t} {T : porderType d}, interval T -> bool itv_is_cc is not universe polymorphic Arguments itv_is_cc {d T} i itv_is_cc is transparent Expands to: Constant mathcomp.classical.set_interval.itv_is_cc Declared in library mathcomp.classical.set_interval, line 994, characters 11-20
Source code
Definition
itv_closed_ends : forall {d : disp_t} {T : porderType d}, interval T -> bool itv_closed_ends is not universe polymorphic Arguments itv_closed_ends {d T} i itv_closed_ends is transparent Expands to: Constant mathcomp.classical.set_interval.itv_closed_ends Declared in library mathcomp.classical.set_interval, line 996, characters 11-26
Source code
End closed_endpoints.
Lemma
Source code
itv_open_ends i -> itv_open_ends j -> itv_open_ends (i `&` j)%O.
Proof.
rewrite /itv_open_ends/= ?orbF ?andbT -?negb_or ?le_total//=.
Qed.
Lemma
Source code
[set` i] `&` [set` j] !=set0 -> [set` (i `|` j)%O] = [set` i] `|` [set` j].
Proof.
move: i j ip jp pij => [x y] [a b] /andP[xp py] /andP[ap pb] pab.
rewrite eqEsubset; split => /= r /=; first last.
by move=> -[ra|rb]; [exact/(le_trans ra)/leUl|exact/(le_trans rb)/leUr].
rewrite (@itv_splitUeq _ T p (x `&` a)%O)// => /orP[].
- move=> /andP[xar rp]; have /orP[ax|xa] := le_total a x.
+ right; apply/andP; split; first by rewrite (le_trans _ xar)// leIidr.
by rewrite (le_trans rp)// (le_trans _ pb)// bnd_simp.
+ left; apply/andP; split; first by rewrite (le_trans _ xar)// leIidl.
by rewrite (le_trans rp)// (le_trans _ py)//= bnd_simp.
- move=> /predU1P[->|/andP[pr ryb]]; first by left; apply/andP.
have /orP[bly|ylb] := le_total b y.
+ left; apply/andP; split; last by rewrite (le_trans ryb)// leUidr.
by rewrite (le_trans _ pr)// (le_trans xp)//= bnd_simp.
+ right; apply/andP; split; last by rewrite (le_trans ryb)// leUidl.
by rewrite (le_trans ap)// (le_trans _ pr)//= bnd_simp.
Qed.
Lemma
Source code
[set` (i `&` j)%O] = [set` i] `&` [set` j].