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 boolp classical_sets 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.
Context {
Source code
Implicit Types (i j : interval T) (x y : T) (a : itv_bound T).
Definition
continuous_at : forall [T U : nbhsType], T -> (T -> U) -> Prop continuous_at is not universe polymorphic Arguments continuous_at [T U] x f%_function_scope continuous_at is transparent Expands to: Constant mathcomp.classical.filter.continuous_at Declared in library mathcomp.classical.filter, line 973, characters 11-24
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
globally : forall {T : Type}, set T -> set_system T globally is not universe polymorphic Arguments globally {T}%_type_scope A%_classical_set_scope _ / The reduction tactics unfold globally when applied to 3 arguments globally is transparent Expands to: Constant mathcomp.classical.filter.globally Declared in library mathcomp.classical.filter, line 999, characters 11-19
Source code
Definition
frechet_filter : forall [T : Type], set (set T) frechet_filter is not universe polymorphic Arguments frechet_filter [T]%_type_scope _ frechet_filter is transparent Expands to: Constant mathcomp.classical.filter.frechet_filter Declared in library mathcomp.classical.filter, line 1021, characters 11-25
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.15.0", note="use `set_itv1` instead")]
Notation
Source code
Section set_itv_orderType.
Context {} { : 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.
Context {} { : 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.
Context { : 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.
Context { : 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.
Context { : numDomainType}.
Implicit Types (E : set R) (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.
Context { : realDomainType}.
Implicit Types (E : set R) (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.
Lemma
Source code
-%R @` [set` Interval -oo%O (BSide b x)] =
[set` Interval (BSide (negb b) (- x)) +oo%O].
Proof.
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))].
Context {} { : 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.
Context {} { : 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.
Context { : 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
prod_filter_on : forall [T U : Type], filter_on T -> filter_on U -> filter_on (T * U) prod_filter_on is not universe polymorphic Arguments prod_filter_on [T U]%_type_scope F G prod_filter_on is transparent Expands to: Constant mathcomp.classical.filter.prod_filter_on Declared in library mathcomp.classical.filter, line 1050, characters 10-24
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
in_filter_prod : forall {T U : Type} {F : set_system T} {G : set_system U}, in_filter (T:=T) F -> in_filter (T:=U) G -> in_filter (T:=T * U) (filter_prod F G) in_filter_prod is not universe polymorphic Arguments in_filter_prod {T U}%_type_scope {F G} P Q in_filter_prod is transparent Expands to: Constant mathcomp.classical.filter.in_filter_prod Declared in library mathcomp.classical.filter, line 1076, characters 19-33
Source code
Lemma
Source code
Lemma
Source code
Lemma
Source code
Definition
near_simpl : (forall (U : Type) (T : filteredType U) (x : T) (P : set U), (\forall x0 \near nbhs x, P x0) = (\near x, P x)) * (forall (U : Type) (T : filteredType U) (x : T) (P : set U), nbhs x P = (\near x, P x)) * (forall (X : Type) (fX : filteredType X) (x : fX) (P : set X), nbhs x P = (\near x, P x)) * (forall (T : Type) (F : filter_on T) (P : set T), (\near F, P F) = (\forall x \near F, P x)) * (forall (T U : Type) (f : T -> U) (F : set_system T) (P : set U), (\forall y \near (f x @[x --> F])%classic, P y) = (\near F, P (f F))) * (forall (T U : Type) (f : T -> set U) (F : set_system T) (P : set U), (\forall y \near (f x `@[x --> F])%classic, P y) = (\near F, exists y : U, f F y /\ P y)) * (forall (T T' U U' : Type) (f : T -> U) (g : T' -> U') (F : set_system T) (G : set_system T') (P : U -> set U'), Filter F -> Filter G -> (\forall y \near (f x @[x --> F])%classic & y' \near (g x @[x --> G])%classic, P y y') = (\near F & G, P (f F) (g G))) near_simpl is not universe polymorphic near_simpl is transparent Expands to: Constant mathcomp.classical.filter.NearMap.near_simpl Declared in library mathcomp.classical.filter, line 1146, characters 11-21
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.
Context { : 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
cvg_to_comp_2 : forall [T U V W : Type] [F : set_system T] [G : set_system U] [H : set_system V] [I : set_system W], Filter F -> Filter G -> Filter H -> forall [f : T -> U] [g : T -> V] [h : U -> V -> W], (f x @[x --> F] --> G)%classic -> (g x @[x --> F] --> H)%classic -> (h x.1 x.2 @[x --> (G, H)] --> I)%classic -> (h (f x) (g x) @[x --> F] --> I)%classic cvg_to_comp_2 is not universe polymorphic Expanded type for implicit arguments cvg_to_comp_2 : forall [T U V W : Type] [F : set_system T] [G : set_system U] [H : set_system V] [I : set_system W], Filter F -> Filter G -> Filter H -> forall [f : T -> U] [g : T -> V] [h : U -> V -> W], (f x @[x --> F] --> G)%classic -> (g x @[x --> F] --> H)%classic -> (h x.1 x.2 @[x --> (G, H)] --> I)%classic -> forall [t : set W], nbhs I t -> F ((fun x : T => h (f x) (g x)) @^-1` t)%classic Arguments cvg_to_comp_2 [T U V W]%_type_scope [F G H I] FF FG FH [f g h]%_function_scope _ _ _ [t] _ cvg_to_comp_2 is transparent Expands to: Constant mathcomp.classical.filter.cvg_to_comp_2 Declared in library mathcomp.classical.filter, line 1172, characters 11-24
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
within_filter_on : forall [T : Type], set T -> filter_on T -> filter_on T within_filter_on is not universe polymorphic Arguments within_filter_on [T]%_type_scope D%_classical_set_scope F within_filter_on is transparent Expands to: Constant mathcomp.classical.filter.within_filter_on Declared in library mathcomp.classical.filter, line 1240, characters 10-26
Source code
Definition
subset_filter : forall [T : finType] (p : T -> bool) [s1 s2 : seq T], s1 \subset s2 -> [seq a <- s1 | p a] \subset [seq a <- s2 | p a] subset_filter is not universe polymorphic Arguments subset_filter [T] p%_function_scope [s1 s2]%_seq_scope _ subset_filter is opaque Expands to: Constant mathcomp.boot.fintype.subset_filter Declared in library mathcomp.boot.fintype, line 710, characters 6-19
Source code
(forall , is_open_itv (F k)) /\ A `<=` \bigcup_ (F k)].
Definition
powerset_filter_from : forall {Y : Type}, set_system Y -> set_system (set Y) powerset_filter_from is not universe polymorphic Arguments powerset_filter_from {Y}%_type_scope F _ powerset_filter_from is transparent Expands to: Constant mathcomp.classical.filter.powerset_filter_from Declared in library mathcomp.classical.filter, line 1285, characters 11-31
Source code
match i with
| `]-oo, _[ | `]_, +oo[ | `]-oo, +oo[ => true
| _ => false
end.
Definition
principal_filter : forall {X : Type}, X -> set_system X principal_filter is not universe polymorphic Arguments principal_filter {X}%_type_scope x _ principal_filter is transparent Expands to: Constant mathcomp.classical.filter.principal_filter Declared in library mathcomp.classical.filter, line 1378, characters 11-27
Source code
Definition
principal_filter_type : Type -> Type principal_filter_type is not universe polymorphic Arguments principal_filter_type P%_type_scope principal_filter_type is transparent Expands to: Constant mathcomp.classical.filter.principal_filter_type Declared in library mathcomp.classical.filter, line 1382, characters 11-32
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
filterI_iter : forall {T : Type}, set_system T -> nat -> set (set T) filterI_iter is not universe polymorphic Arguments filterI_iter {T}%_type_scope F n%_nat_scope _ filterI_iter is transparent Expands to: Constant mathcomp.classical.filter.filterI_iter Declared in library mathcomp.classical.filter, line 1530, characters 9-21
Source code
match i with
| `[_, +oo[ | `]-oo, _] | `]-oo, +oo[ => true
| _ => false
end.
Definition
open_finI_from : forall [I : choiceType] [T : Type], set I -> (I -> set T) -> set (set T) open_finI_from is not universe polymorphic Arguments open_finI_from [I] [T]%_type_scope D%_classical_set_scope f%_function_scope _ open_finI_from is transparent Expands to: Constant mathcomp.classical.filter.open_finI_from Declared in library mathcomp.classical.filter, line 1562, characters 11-25
Source code
Definition
finI : forall [I : choiceType] [T : Type], set I -> (I -> set T) -> Prop finI is not universe polymorphic Arguments finI [I] [T]%_type_scope D%_classical_set_scope f%_function_scope finI is transparent Expands to: Constant mathcomp.classical.filter.finI Declared in library mathcomp.classical.filter, line 1635, characters 11-15
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].