@@ -279,27 +279,43 @@ rewrite !addrA addrAC (addrC x) addrK addrC.
279279by rewrite subr_gt0 ltr_wpDr // ltW.
280280Qed .
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.
284287Proof .
285- move=> x B.
288+ move=> H B.
286289rewrite -(@filter_from_ballE R (GRing_regular__canonical__pseudometric_structure_PseudoMetric R)).
287290case => 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.
295297rewrite -image_sub.
296298move=> y /= [] z.
297299rewrite in_itv /= => /andP[xz zx] <- {y}.
298300apply: 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.
300315have [<-|xz'] := eqVneq x z.
301316 by rewrite subrr normr0.
302317have {xz xz'} xz: x < z by rewrite lt_neqAle xz'.
318+ rewrite /sdist.
303319set xr : R := if dr x == set0 then _ else _.
304320set zr : R := if dr z == set0 then _ else _.
305321case/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