Skip to content

Commit 1d47607

Browse files
committed
add sorgenfrey epsilon delta
1 parent 1f40adf commit 1d47607

File tree

1 file changed

+36
-24
lines changed

1 file changed

+36
-24
lines changed

theories/showcase/sorgenfreyline.v

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -279,27 +279,43 @@ rewrite !addrA addrAC (addrC x) addrK addrC.
279279
by rewrite subr_gt0 ltr_wpDr // ltW.
280280
Qed.
281281

282-
Lemma continuous_sdist :
283-
forall x, @continuous_at sorgenfrey Rtopo x sdist.
282+
Definition continuous_at_sorgenfrey_to_Rtopo x (f : sorgenfrey -> R) :=
283+
forall eps : R, 0 < eps -> exists2 d : R, 0 < d & forall y : R, x <= y < x + d -> `|f x - f y| < eps.
284+
285+
Lemma continuous_at_sorgenfrey_to_RtopoP f x :
286+
continuous_at_sorgenfrey_to_Rtopo x f -> @continuous_at sorgenfrey Rtopo x f.
284287
Proof.
285-
move=> x B.
288+
move=> H B.
286289
rewrite -(@filter_from_ballE R (GRing_regular__canonical__pseudometric_structure_PseudoMetric R)).
287290
case => eps /= eps0 epsB.
288-
pose xepsE := [set y | x + y \in E /\ 0 < y < eps].
289-
pose eps' := xget eps xepsE.
290-
exists (`[x,x+eps'[); split => //=.
291-
- exists [set (x,x+eps')] => //.
291+
change (nbhs (f y @[y --> x]) B).
292+
case: (H eps eps0) => /= d d0 H'.
293+
exists (`[x,x+d[); split => //=.
294+
- exists [set (x,x+d)] => //.
292295
by rewrite bigcup_set1.
293-
- rewrite in_itv /= lexx ltrDl /eps' /=.
294-
by case: (xgetP eps xepsE) => // y -> [] _ /andP[].
296+
- by rewrite in_itv /= lexx ltrDl d0.
295297
rewrite -image_sub.
296298
move=> y /= [] z.
297299
rewrite in_itv /= => /andP[xz zx] <- {y}.
298300
apply: epsB.
299-
rewrite /ball /sdist /=.
301+
apply: H'.
302+
by rewrite xz zx.
303+
Qed.
304+
305+
Lemma continuous_sdist :
306+
forall x, @continuous_at sorgenfrey Rtopo x sdist.
307+
Proof.
308+
move=> x.
309+
apply: continuous_at_sorgenfrey_to_RtopoP => /= eps eps0.
310+
pose xepsE := [set y | x + y \in E /\ 0 < y < eps].
311+
pose eps' := xget eps xepsE.
312+
exists eps'.
313+
by rewrite /eps'; case: (xgetP eps xepsE) => // y -> [] _ /andP[].
314+
move=> z /andP [] xz zx.
300315
have [<-|xz'] := eqVneq x z.
301316
by rewrite subrr normr0.
302317
have {xz xz'} xz: x < z by rewrite lt_neqAle xz'.
318+
rewrite /sdist.
303319
set xr : R := if dr x == set0 then _ else _.
304320
set zr : R := if dr z == set0 then _ else _.
305321
case/boolP: (xepsE == set0).
@@ -319,19 +335,15 @@ case/boolP: (xepsE == set0).
319335
by rewrite subr_gt0 xt ltrBlDl (le_lt_trans tz).
320336
have Hr : `|Num.min 1 xr - Num.min 1 zr| < eps.
321337
rewrite /xr /zr.
322-
case: ifPn => drx0.
323-
suff -> : dr z == set0 by rewrite subrr normr0.
324-
apply/notP => /negP/set0P [] y [] Hy y0.
325-
suff : y + z - x \in dr x by rewrite (eqP drx0) inE.
326-
rewrite inE /dr /= addrA (addrC x) addrK addrC Hy.
327-
by rewrite subr_gt0 ltr_wpDr // ltW.
328-
have drz0 : dr z !=set0.
329-
case/set0P: drx0 => y [] Hy y0.
330-
exists (y + x - z).
331-
rewrite /dr /= addrA (addrC z) addrK addrC Hy subr_gt0 ltNge.
332-
split => //; apply/negP => xyz.
333-
suff : xepsE y by rewrite xepsE0.
334-
by rewrite /xepsE /= Hy y0 -(ltrD2l x) (le_lt_trans xyz).
338+
case/boolP: (dr z == set0) => [/eqP |] drz0.
339+
move: drzx.
340+
rewrite drz0 image_set0 => /eqP ->.
341+
by rewrite subrr normr0.
342+
have drx0 : dr x !=set0.
343+
case/set0P : drz0 => z0 drzz0.
344+
rewrite drzx.
345+
exists (z0 + (z - x)) => /=.
346+
by exists z0.
335347
rewrite ifF.
336348
rewrite (le_lt_trans (abs_subr_min _ _ _ _)) //.
337349
rewrite subrr normr0 maxEle normr_ge0.
@@ -345,7 +357,7 @@ case/boolP: (xepsE == set0).
345357
rewrite ler_def.
346358
move/eqP ->.
347359
by rewrite ltrBlDl.
348-
split. by [].
360+
split. exact/set0P.
349361
exists 0. by move=> y [] _ /ltW.
350362
exact/negbTE/set0P.
351363
have dlxz : dl z = [set t + (z - x) | t in dl x].

0 commit comments

Comments
 (0)