Module mathcomp.analysis.normedtype_theory.num_normedtype
From mathcomp Require Import boot order finmap ssralg ssrnum ssrint.From mathcomp Require Import interval interval_inference archimedean rat.
#[warning="-warn-library-file-internal-analysis"]
From mathcomp Require Import unstable.
From mathcomp Require Import boolp classical_sets functions.
From mathcomp Require Import cardinality set_interval reals real_interval.
From mathcomp Require Import topology prodnormedzmodule.
Reserved Notation "f @`[ a , b ]" (format "f @`[ a , b ]").
Reserved Notation "f @`] a , b [" (format "f @`] a , b [").
Reserved Notation "+oo_ R" (at level 3, left associativity, format "+oo_ R").
Reserved Notation "-oo_ R" (at level 3, left associativity, format "-oo_ R").
Unset SsrOldRewriteGoalsOrder.
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
Import Order.TTheory GRing.Theory Num.Def Num.Theory.
Import numFieldTopology.Exports.
Local Open Scope classical_set_scope.
Local Open Scope ring_scope.
Lemma
Source code
((a \in `[a, b]) = (a <= b)) *
((b \in `[a, b]) = (a <= b)) *
((a \in `[a, b[) = (a < b)) *
((b \in `]a, b]) = (a < b)) *
(a \in `[a, +oo[) *
(a \in `]-oo, a]).
Proof.
Notation
Source code
(`[minr (f a) (f b), maxr (f a) (f b)]) : ring_scope.
Notation
Source code
(`[minr (f a) (f b), maxr (f a) (f b)]%classic) : classical_set_scope.
Notation
Source code
(`](minr (f a) (f b)), (maxr (f a) (f b))[) : ring_scope.
Notation
Source code
(`](minr (f a) (f b)), (maxr (f a) (f b))[%classic) : classical_set_scope.
Section image_interval.
Variable : realDomainType.
Implicit Types (a b : R) (f : R -> R).
Lemma
Source code
{homo f : / x \in `[a, b] >-> x \in f @`[a, b]}.
Proof.
Lemma
Source code
{homo f : / x \in `]a, b[ >-> x \in f @`]a, b[}.
Proof.
have ltab : a < b by rewrite (itvP xab).
have: f a <= f b by rewrite flt ?bound_itvE ltW.
by case: leP => // fafb _; rewrite in_itv/= !fle ?in_itv/= ?(itvP xab, lexx).
have: f a >= f b by rewrite flt ?bound_itvE ?ltW.
by case: leP => // fafb _; rewrite in_itv/= !fle ?in_itv/= ?(itvP xab, lexx).
Qed.
Lemma
Source code
monotonic `[a, b] f -> set_surj `[a, b] (f @`[a, b]) f ->
(f @` `[a, b] = f @`[a, b])%classic.
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
{in `[a, b] &, {homo f : / x <= y}} ->
set_surj `[a, b] `[f a, f b] f ->
f @` `[a, b] = `[f a, f b]%classic.
Proof.
by rewrite mono_surj_image_segment ?inc_segment_image//; left.
Qed.
Lemma
Source code
{in `[a, b] &, {homo f : /~ x <= y}} ->
set_surj `[a, b] `[f b, f a] f ->
f @` `[a, b] = `[f b, f a]%classic.
Proof.
by rewrite mono_surj_image_segment ?dec_segment_image//; right.
Qed.
Lemma
Source code
{in `[a, b] &, {homo f : / x <= y}} ->
set_surj `[a, b] `[f a, f b] f ->
forall , reflect (exists2 , x \in `[a, b] & f x = y) (y \in `[f a, f b]).
Proof.
Lemma
Source code
{in `[a, b] &, {homo f : /~ x <= y}} ->
set_surj `[a, b] `[f b, f a] f ->
forall , reflect (exists2 , x \in `[a, b] & f x = y) (y \in `[f b, f a]).
Proof.
Lemma
Source code
monotonic `[a, b] f -> set_surj `[a, b] (f @`[a, b]) f ->
forall , reflect (exists2 , x \in `[a, b] & f x = y) (y \in f @`[a, b]).
Proof.
End image_interval.
Lemma
Source code
Proof.
Section nbhs_pseudoMetricType.
Context { : numDomainType} { : pseudoMetricType R}.
Lemma
Source code
~ (forall
Source code
{ : {posnum R} | ball x d%:num `<=` ~` P}.
Proof.
Lemma
Source code
~ (forall
Source code
nbhs x (~` P).
Proof.
Lemma
Source code
nbhs x (~` P) -> { : {posnum R} | ball x d%:num `<=` ~` P}.
Proof.
Lemma
Source code
{ : {posnum R} | forall , ball x d%:num y -> P y}.
Proof.
End nbhs_pseudoMetricType.
Global Instance
Source code
ProperFilter x^'.
Proof.
#[global] Hint Extern 0 (ProperFilter _^') =>
solve[apply: Proper_dnbhs_numFieldType] : typeclass_instances.
Definition
Source code
fun => exists , M \is Num.real /\ forall , M < x -> P x.
Arguments pinfty_nbhs R : clear implicits.
Definition
pinfty_nbhs : forall R : numFieldType, set_system R pinfty_nbhs is not universe polymorphic Arguments pinfty_nbhs R _ pinfty_nbhs is transparent Expands to: Constant mathcomp.analysis.normedtype_theory.num_normedtype.pinfty_nbhs Declared in library mathcomp.analysis.normedtype_theory.num_normedtype, line 219, characters 11-22
Source code
fun => exists , M \is Num.real /\ forall , x < M -> P x.
Arguments ninfty_nbhs R : clear implicits.
Notation
Source code
Notation
Source code
Notation
Source code
Notation
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Section infty_nbhs_instances.
Context { : numFieldType}.
Implicit Types r : R.
Global Instance
Source code
Proof.
by move=> P [M [Mreal MP]]; exists (M + 1); apply MP; rewrite ltrDl.
split=> /= [|P Q [MP [MPr gtMP]] [MQ [MQr gtMQ]] |P Q sPQ [M [Mr gtM]]].
- by exists 0.
- exists (maxr MP MQ); split=> [|x]; first exact: max_real.
by rewrite comparable_gt_max ?real_comparable // => /andP[/gtMP ? /gtMQ].
- by exists M; split => // ? /gtM /sPQ.
Qed.
Global Instance
Source code
Proof.
move=> P [M [Mr ltMP]]; exists (M - 1).
by apply: ltMP; rewrite gtrDl oppr_lt0.
split=> /= [|P Q [MP [MPr ltMP]] [MQ [MQr ltMQ]] |P Q sPQ [M [Mr ltM]]].
- by exists 0.
- exists (minr MP MQ); split=> [|x]; first exact: min_real.
by rewrite comparable_lt_min ?real_comparable // => /andP[/ltMP ? /ltMQ].
- by exists M; split => // x /ltM /sPQ.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
(\forall \near +oo, A k) -> exists2 , m < M & A M.
Proof.
by exists M; near: M => //; apply: nbhs_pinfty_gt.
Unshelve. all: by end_near. Qed.
Lemma
Source code
(\forall \near +oo, A k) -> exists2 , m <= M & A M.
Proof.
by exists M; near: M => //; apply: nbhs_pinfty_ge.
Unshelve. all: by end_near. Qed.
Lemma
Source code
(\forall \near +oo, A k) -> exists2 , M > 0 & A M.
Proof.
Lemma
Source code
(\forall \near +oo, A k) -> (\forall \near +oo, A (k / 2)).
Proof.
by move=> x; rewrite -ltr_pdivlMr //; exact: AM.
Qed.
Lemma
Source code
~ (\forall \near +oo, P x) <->
forall : R, M \is Num.real -> exists2 , M < x & ~ P x.
Proof.
Lemma
Source code
~ (\forall \near -oo, P x) <->
forall : R, M \is Num.real -> exists2 , x < M & ~ P x.
Proof.
End infty_nbhs_instances.
#[global] Hint Extern 0 (is_true (_ < ?x)) => match goal with
H : x \is_near _ |- _ => solve[near: x; now apply: nbhs_pinfty_gt] end : core.
#[global] Hint Extern 0 (is_true (_ <= ?x)) => match goal with
H : x \is_near _ |- _ => solve[near: x; now apply: nbhs_pinfty_ge] end : core.
#[global] Hint Extern 0 (is_true (_ > ?x)) => match goal with
H : x \is_near _ |- _ => solve[near: x; now apply: nbhs_ninfty_lt] end : core.
#[global] Hint Extern 0 (is_true (_ >= ?x)) => match goal with
H : x \is_near _ |- _ => solve[near: x; now apply: nbhs_ninfty_le] end : core.
#[global] Hint Extern 0 (is_true (?x \is Num.real)) => match goal with
H : x \is_near _ |- _ => solve[near: x; now apply: nbhs_pinfty_real] end : core.
#[global] Hint Extern 0 (is_true (?x \is Num.real)) => match goal with
H : x \is_near _ |- _ => solve[near: x; now apply: nbhs_ninfty_real] end : core.
Section cvg_infty_numField.
Context { : numFieldType}.
Let
Source code
F --> +oo;
forall , A \is Num.real -> \forall \near F, A <= x;
forall , A \is Num.real -> \forall \near F, A < x;
\forall \near +oo, \forall \near F, A < x;
\forall \near +oo, \forall \near F, A <= x ].
Proof.
- move=> AF A Areal; near +oo_R => B.
by near do apply: (@lt_le_trans _ _ B) => //=; apply: AF.
- by move=> Foo; near do apply: Foo => //.
- by apply: filterS => ?; apply: filterS => ?; apply: ltW.
case=> [A [AR AF]] P [x [xR Px]]; near +oo_R => B.
by near do [apply: Px; apply: (@lt_le_trans _ _ B) => //]; apply: AF.
Unshelve. all: by end_near. Qed.
Let
Source code
F --> -oo;
forall , A \is Num.real -> \forall \near F, A >= x;
forall , A \is Num.real -> \forall \near F, A > x;
\forall \near -oo, \forall \near F, A > x;
\forall \near -oo, \forall \near F, A >= x ].
Proof.
- move=> AF A Areal; near -oo_R => B.
by near do apply: (@le_lt_trans _ _ B) => //; apply: AF.
- by move=> Foo; near do apply: Foo => //.
- by apply: filterS => ?; apply: filterS => ?; apply: ltW.
case=> [A [AR AF]] P [x [xR Px]]; near -oo_R => B.
by near do [apply: Px; apply: (@le_lt_trans _ _ B) => //]; apply: AF.
Unshelve. all: end_near. Qed.
Context {} { : set_system T} { : Filter F}.
Implicit Types f : T -> R.
Lemma
Source code
f @ F --> +oo <-> forall , A \is Num.real -> \forall \near F, A <= f x.
Proof.
Lemma
Source code
f @ F --> +oo <-> forall , A \is Num.real -> \forall \near F, A < f x.
Proof.
Lemma
Source code
f @ F --> +oo <-> \forall \near +oo, \forall \near F, A < f x.
Proof.
Lemma
Source code
f @ F --> +oo <-> \forall \near +oo, \forall \near F, A <= f x.
Proof.
Lemma
Source code
f @ F --> -oo <-> forall , A \is Num.real -> \forall \near F, A >= f x.
Proof.
Lemma
Source code
f @ F --> -oo <-> forall , A \is Num.real -> \forall \near F, A > f x.
Proof.
Lemma
Source code
f @ F --> -oo <-> \forall \near -oo, \forall \near F, A > f x.
Proof.
Lemma
Source code
f @ F --> -oo <-> \forall \near -oo, \forall \near F, A >= f x.
Proof.
Lemma
Source code
f @ F --> +oo -> forall , A \is Num.real -> \forall \near F, A <= f x.
Proof.
Lemma
Source code
f @ F --> +oo -> forall , A \is Num.real -> \forall \near F, A < f x.
Proof.
Lemma
Source code
f @ F --> -oo -> forall , A \is Num.real -> \forall \near F, A >= f x.
Proof.
Lemma
Source code
f @ F --> -oo -> forall , A \is Num.real -> \forall \near F, A > f x.
Proof.
Lemma
Source code
Proof.
by near do rewrite -lerN2 ?opprK; apply: Foo; rewrite rpredN.
Unshelve. all: end_near. Qed.
Lemma
Source code
End cvg_infty_numField.
Section cvg_infty_realField.
Context { : realFieldType}.
Context {} { : set_system T} { : Filter F} ( : T -> R).
Lemma
Source code
Lemma
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
End cvg_infty_realField.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
(((f n)%:R : R) @[ --> F] --> +oo) <-> (f @ F --> \oo).
Proof.
Section gt0_cvg.
Context { : realFieldType} { : set_system R} { : Filter F}.
Variables ( : R) ( : R -> R).
Hypothesis : 0 < M.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
End gt0_cvg.
Lemma
Source code
( : set_system T) :
f x @[ --> -oo] --> l <-> (f \o -%R) x @[ --> +oo] --> l.
Proof.
Lemma
Source code
( : set_system T) :
f x @[ --> +oo] --> l <-> (f \o -%R) x @[ --> -oo] --> l.
Proof.
Section monotonic_itv_bigcup.
Context { : realType}.
Implicit Types (F : R -> R) (a : R).
Lemma
Source code
{in `[a, +oo[ &, {homo F : /~ x < y}} ->
F x @[ --> +oo] --> -oo ->
(`]-oo, F a[ = \bigcup_ `]F (a + i.+1%:R), F a[)%classic.
Proof.
- move=> y/= [n _]/=; rewrite in_itv/= => /andP[Fany yFa].
have [i iFan] : exists , F (a + i.+1%:R) < F a - n%:R.
move/cvgrNy_lt : nyF.
move/(_ (F a - n%:R)) => [z [zreal zFan]].
by exists (truncn (z - a)); rewrite zFan// -ltrBlDl truncnS_gt.
by exists i => //=; rewrite in_itv/= yFa (lt_le_trans _ Fany).
- move=> z/= [n _ /=]; rewrite in_itv/= => /andP[Fanz zFa].
exists (truncn (F a - F (a + n.+1%:R))).+1 => //=.
rewrite in_itv/= zFa andbT lerBlDr -lerBlDl ltW//.
by rewrite -truncn_le_nat le_truncn// lerB// ltW.
Qed.
Lemma
Source code
{in `[a, +oo[ &, {homo F : /~ x < y}} ->
(`]F (a + n%:R), F a[ = \bigcup_( < n) `]F (a + i.+1%:R), F a[)%classic.
Proof.
- move: n => [|n]; first by rewrite addr0 set_itvoo0.
by apply: (@bigcup_sup _ _ n) => /=.
- apply: bigcup_sub => k/= kn; apply: subset_itvr; rewrite bnd_simp.
move: kn; rewrite leq_eqVlt => /predU1P[<-//|kn].
by rewrite ltW// decrF ?in_itv/= ?andbT ?lerDl//= ltrD2l ltr_nat.
Qed.
Lemma
Source code
{in `]-oo, a] &, {homo F : / x < y}} ->
F x @[ --> -oo] --> -oo ->
(`]-oo, F a] = \bigcup_ `]F (a - i.+1%:R), F a])%classic.
Proof.
- move=> y/= [n _]/=; rewrite in_itv/= => /andP[Fany yFa].
have [i iFan] : exists , F (a - i.+1%:R) < F a - n%:R.
move/cvgrNy_lt : nyF => /(_ (F a - n%:R))[z [zreal zFan]].
exists (truncn (a - z)).
by rewrite zFan// ltrBlDr -ltrBlDl -truncn_le_nat.
by exists i => //=; rewrite in_itv/= yFa andbT (lt_le_trans _ Fany).
- move=> z/= [n _ /=]; rewrite in_itv/= => /andP[Fanz zFa].
exists (truncn (F a - F (a - n.+1%:R))).+1 => //=.
rewrite in_itv/= zFa andbT lerBlDr -lerBlDl ltW//.
by rewrite -truncn_le_nat le_truncn// lerB// ltW.
Qed.
Lemma
Source code
{in `]-oo, a] &, {homo F : / x < y}} ->
(`]F (a - n%:R), F a] = \bigcup_( < n) `]F (a - i.+1%:R), F a])%classic.
Proof.
- move: n => [|n]; first by rewrite subr0 set_itvoc0.
by apply: (@bigcup_sup _ _ n) => /=.
- apply: bigcup_sub => k/= kn; apply: subset_itvr; rewrite bnd_simp.
move: kn; rewrite leq_eqVlt => /predU1P[<-//|kn].
by rewrite ltW// incrF ?in_itv/= ?andbT ?gerBl ?ler_ltB ?ltr_nat.
Qed.
End monotonic_itv_bigcup.
Section open_closed_sets.
Context { : realFieldType}.
Implicit Types x y : R.
Lemma
Source code
Proof.
by rewrite /= ltr_distlC subrKC => /andP[].
Qed.
Lemma
Source code
Proof.
by rewrite /= ltr_distlC subKr => /andP[].
Qed.
Lemma
Source code
Proof.
Lemma
Source code
open [set : R^o | x \in Interval a b].
Proof.
- have -> : [set | a < x < b] = [set | a < x] `&` [set | x < b].
by rewrite predeqE => r; rewrite /mkset; split => [/andP[? ?] //|[-> ->]].
by apply openI; [exact: open_gt | exact: open_lt].
- by under eq_set do rewrite itv_ge// inE.
- by under eq_set do rewrite in_itv andbT/=; exact: open_gt.
- exact: open_lt.
- by rewrite (_ : mkset _ = setT); [rewrite predeqE | exact: openT].
Qed.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
closed [set : R^o | x \in Interval a b].
Proof.
do ?by under eq_set do rewrite itv_ge// inE falseE; apply: closed0.
- have -> : `[a, b]%classic = [set | x >= a] `&` [set | x <= b].
by rewrite predeqE => ?; rewrite /= in_itv/=; split=> [/andP[]|[->]].
by apply closedI; [exact: closed_ge | exact: closed_le].
- by under eq_set do rewrite in_itv andbT/=; exact: closed_ge.
- exact: closed_le.
Qed.
End open_closed_sets.
#[global] Hint Extern 0 (open _) => now apply: open_gt : core.
#[global] Hint Extern 0 (open _) => now apply: open_lt : core.
#[global] Hint Extern 0 (open _) => now apply: open_neq : core.
#[global] Hint Extern 0 (closed _) => now apply: closed_ge : core.
#[global] Hint Extern 0 (closed _) => now apply: closed_le : core.
#[global] Hint Extern 0 (closed _) => now apply: closed_eq : core.
#[global] Hint Extern 0 (open _) => now apply: interval_open : core.
Section near_in_itv.
Context { : realFieldType} ( : R).
Lemma
Source code
{in `]a, b[, forall , \forall \near y, z \in `]a, b[}.
Proof.
Lemma
Source code
{in `]a, +oo[, forall , \forall \near y, z \in `]a, +oo[}.
Proof.
Lemma
Source code
{in `]-oo, b[, forall , \forall \near y, z \in `]-oo, b[}.
Proof.
End near_in_itv.
Lemma
Source code
\forall \near \oo, r < n%:R.
Proof.
Lemma
Source code
\forall \near \oo, n.+1%:R^-1 < e%:num.
Proof.
Lemma
Source code
\forall \near \oo, 1 / 2 ^+ n < e%:num.
Proof.
rewrite mul1r invf_plt ?unfold_in//=; apply: upper_nthrootP.
near: n; eexists; last by move=> m; exact.
by [].
Unshelve. all: by end_near. Qed.
Section interval.
Variable : numDomainType.
Definition
ninfty_nbhs : forall R : numFieldType, set_system R ninfty_nbhs is not universe polymorphic Arguments ninfty_nbhs R _ ninfty_nbhs is transparent Expands to: Constant mathcomp.analysis.normedtype_theory.num_normedtype.ninfty_nbhs Declared in library mathcomp.analysis.normedtype_theory.num_normedtype, line 222, characters 11-22 is_interval : forall [R : numDomainType], set R -> Prop is_interval is not universe polymorphic Arguments is_interval [R] E%_classical_set_scope is_interval is transparent Expands to: Constant mathcomp.analysis.normedtype_theory.num_normedtype.is_interval Declared in library mathcomp.analysis.normedtype_theory.num_normedtype, line 735, characters 11-22
Source code
forall , E x -> E y -> forall , x <= z <= y -> E z.
Lemma
Source code
is_interval E <-> forall , E x -> E y -> forall , x < z < y -> E z.
Proof.
Lemma
Source code
Proof.
End interval.
Lemma
Source code
~ has_lbound X -> ~ has_ubound X -> X = setT.
Proof.
Section open_union_rat.
Variable : realType.
Implicit Types A U : set R.
Let
Source code
Let
Source code
Let
Source code
Definition
bigcup_ointsub : forall [R : realType], set R -> rat -> set R bigcup_ointsub is not universe polymorphic Arguments bigcup_ointsub [R] U%_classical_set_scope q%_ring_scope _ bigcup_ointsub is transparent Expands to: Constant mathcomp.analysis.normedtype_theory.num_normedtype.bigcup_ointsub Declared in library mathcomp.analysis.normedtype_theory.num_normedtype, line 776, characters 11-25
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
open A -> is_interval A -> A `<=` U -> A (ratr q) ->
A `<=` bigcup_ointsub U q.
Proof.
Lemma
Source code
Proof.
Source code
U = \bigcup_( in [set | ratr q \in U]) bigcup_ointsub U q.
Proof.
by rewrite bigcup0// => q _; rewrite bigcup_ointsub0.
apply/seteqP; split=> [x Ux|x [p _ Ipx]]; last exact: bigcup_ointsub_sub Ipx.
suff [q Iqx] : exists , bigcup_ointsub U q x.
by exists q => //=; rewrite in_setE; case: Iqx => A [[_ _ +] ? _]; exact.
have : nbhs x U by rewrite nbhsE /=; exists U.
rewrite -nbhs_ballE /nbhs_ball /nbhs_ball_ => -[_/posnumP[r] xrU].
have /rat_in_itvoo[q qxxr] : (x - r%:num < x + r%:num)%R.
by rewrite ltrBlDr -addrA ltrDl.
exists q, `](x - r%:num)%R, (x + r%:num)%R[%classic; last first.
by rewrite /= in_itv/= ltrBlDl ltrDr// ltrDl//; apply/andP.
split=> //; split; [exact: interval_open|exact: interval_is_interval|].
move=> y /=; rewrite in_itv/= => /andP[xy yxr]; apply xrU => /=.
rewrite /ball /= /ball_ /= in xrU *; have [yx|yx] := leP x y.
by rewrite ler0_norm ?subr_le0// opprB ltrBlDl.
by rewrite gtr0_norm ?subr_gt0// ltrBlDr -ltrBlDl.
Qed.
End open_union_rat.
Section ball_realFieldType.
Variables ( : realFieldType).
Lemma
Source code
Proof.
End ball_realFieldType.
Section interval_realType.
Variable : realType.
Lemma
Source code
~ has_lbound X -> has_ubound X -> X° = [set | r < sup X].
Proof.
rewrite -(open_subsetE _ (@open_lt _ _)) => r rsupX.
move/has_lbPn : lX => /(_ r)[y Xy yr].
have hsX : has_sup X by split => //; exists y.
have /sup_adherent/(_ hsX)[e Xe] : 0 < sup X - r by rewrite subr_gt0.
by rewrite subKr => re; apply: (iX y e); rewrite ?ltW.
Qed.
Lemma
Source code
has_lbound X -> ~ has_ubound X -> X° = [set | inf X < r].
Proof.
rewrite -(open_subsetE _ (@open_gt _ _)) => r infXr.
move/has_ubPn : uX => /(_ r)[y Xy yr].
have hiX : has_inf X by split => //; exists y.
have /inf_adherent/(_ hiX)[e Xe] : 0 < r - inf X by rewrite subr_gt0.
by rewrite addrC subrK => er; apply: (iX e y); rewrite ?ltW.
Qed.
Lemma
Source code
has_lbound X -> has_ubound X -> X° = [set | inf X < r < sup X].
Proof.
apply/andP; split;
[exact: left_bounded_interior|exact: right_bounded_interior].
rewrite -open_subsetE; first exact: (@interval_open _ (BRight _) (BLeft _)).
move=> r /andP[iXr rsX].
have [X0|/set0P X0] := eqVneq X set0.
by move: (lt_trans iXr rsX); rewrite X0 inf_out ?sup_out ?ltxx // => - [[]].
have hiX : has_inf X by split.
have /inf_adherent/(_ hiX)[e Xe] : 0 < r - inf X by rewrite subr_gt0.
rewrite addrC subrK => er.
have hsX : has_sup X by split.
have /sup_adherent/(_ hsX)[f Xf] : 0 < sup X - r by rewrite subr_gt0.
by rewrite subKr => rf; apply: (iX e f); rewrite ?ltW.
Qed.
Lemma
Source code
Proof.
Lemma
Source code
[set` Interval (BSide a x) (BSide b y)]° = `]x, y[%classic.
Proof.
rewrite le_eqVlt => /predU1P[-> |yx].
by case: a; case: b; rewrite set_itvoo0 ?set_itvE ?interior_set1 ?interior0.
rewrite !set_itv_ge ?interior0//.
- by case: a; case: b; rewrite bnd_simp -?leNgt -?ltNge ?ltW.
- by rewrite bnd_simp -leNgt ltW.
rewrite interval_bounded_interior//; first exact: interval_is_interval.
rewrite inf_itv; first by case: a; case b; rewrite bnd_simp ?ltW.
rewrite sup_itv; first by case: a; case b; rewrite bnd_simp ?ltW.
exact: set_itvoo.
Qed.
Lemma
Source code
[set` Interval (BSide b x) (BInfty _ false)]° = `]x, +oo[%classic.
Proof.
- exact: interval_is_interval.
- by apply: hasNubound_itv; rewrite lt_eqF.
- rewrite inf_itv; first by case: b; rewrite bnd_simp ?ltW.
by rewrite set_itvoy.
Qed.
Lemma
Source code
[set` Interval (BInfty _ true) (BSide b y)]° = `]-oo, y[%classic.
Proof.
- exact: interval_is_interval.
- by apply: hasNlbound_itv; rewrite gt_eqF.
- rewrite sup_itv; first by case b; rewrite bnd_simp ?ltW.
exact: set_itvNyo.
Qed.
Lemma
Source code
[set` Interval (BInfty R true) (BInfty _ false)]° = `]-oo, +oo[%classic.
Proof.
Definition
interior_itv : forall R : realType, (forall (x y : R) (a b : bool), [set` Interval (BSide a x) (BSide b y)]°%classic = `]x, y[%classic) * (forall (x : R) (b : bool), [set` Interval (BSide b x) +oo%O]°%classic = `]x, +oo[%classic) * (forall (y : R) (b : bool), [set` Interval -oo%O (BSide b y)]°%classic = `]-oo, y[%classic) * (`]-oo, +oo[°%classic = `]-oo, +oo[%classic) interior_itv is not universe polymorphic Arguments interior_itv R interior_itv is transparent Expands to: Constant mathcomp.analysis.normedtype_theory.num_normedtype.interior_itv Declared in library mathcomp.analysis.normedtype_theory.num_normedtype, line 934, characters 11-23
Source code
(interior_itv_bnd, interior_itv_bndy, interior_itv_Nybnd, interior_itv_Nyy).
End interval_realType.