@@ -243,28 +243,62 @@ rewrite !image2E.
243243by apply/seteqP; split => c /= [] [x y] /= [] Hx Hy <-; exists (y,x).
244244Qed .
245245
246+ Let dl_shift x z :
247+ x < z -> `]x, z] `<=` ~` E -> dl z = [set t + (z - x) | t in dl x].
248+ Proof .
249+ move=> xz xzNE.
250+ apply/seteqP; rewrite /dl; split => t /= [].
251+ move => ztE y0.
252+ case: (ltrP x (z-t)) => ztx.
253+ suff : z - t \notin E by rewrite ztE.
254+ rewrite -in_setC inE.
255+ apply: xzNE.
256+ by rewrite /= in_itv /= ztx lerBlDr lerDl.
257+ exists (x - (z-t)).
258+ by rewrite opprD addrA subrr opprK add0r ztE subr_ge0.
259+ by rewrite (addrC z) opprD opprK !addrA addrNK addrC addKr.
260+ move=> w [] xwE w0 <-.
261+ rewrite !opprD (addrCA z) !addrA addrK addrC opprK.
262+ by rewrite subr_ge0 ler_wpDl // ltW.
263+ Qed .
264+
265+ Let dr_shift x z :
266+ x < z -> `]x, z] `<=` ~` E -> dr x = [set t + (z - x) | t in dr z].
267+ Proof .
268+ move=> xz xzNE.
269+ apply/seteqP; rewrite /dr; split => t /= [].
270+ move => xtE y0.
271+ case: (ltrP z (x+t)) => zxt; last first.
272+ suff : x + t \notin E by rewrite xtE.
273+ rewrite -in_setC inE.
274+ apply: xzNE.
275+ by rewrite /= in_itv /= zxt ltrDl y0.
276+ exists (x + t - z).
277+ by rewrite addrA (addrC z) addrK xtE subr_gt0.
278+ by rewrite addrA (addrAC _ _ z) addrK (addrC x) addrK.
279+ move=> w [] xwE w0 <-.
280+ rewrite !addrA addrAC (addrC x) addrK addrC.
281+ by rewrite subr_gt0 ltr_wpDr // ltW.
282+ Qed .
283+
246284Lemma continuous_sdist :
247285 forall x, @continuous_at sorgenfrey Rtopo x sdist.
248286Proof .
249- move=> x N .
287+ move=> x B .
250288rewrite -(@filter_from_ballE R (GRing_regular__canonical__pseudometric_structure_PseudoMetric R)).
251- case => eps /= eps0 epsN .
289+ case => eps /= eps0 epsB .
252290pose xepsE := [set y | x + y \in E /\ 0 < y < eps].
253291pose eps' := xget eps xepsE.
254292exists (`[x,x+eps'[); split => //=.
255- - exists [set (x,x+eps')].
256- by move=> i /= ->.
293+ - exists [set (x,x+eps')] => //.
257294 by rewrite bigcup_set1.
258295- rewrite in_itv /= lexx ltrDl /eps' /=.
259- case: (xgetP eps xepsE) => //.
260- move=> y ->.
261- by rewrite /xepsE /= => -[] _ /andP[].
296+ by case: (xgetP eps xepsE) => // y -> [] _ /andP[].
262297rewrite -image_sub.
263298move=> y /= [] z.
264299rewrite in_itv /= => /andP[xz zx] <- {y}.
265- apply: epsN.
266- rewrite /ball /=.
267- rewrite /sdist.
300+ apply: epsB.
301+ rewrite /ball /sdist /=.
268302have [<-|xz'] := eqVneq x z.
269303 by rewrite subrr normr0.
270304have {xz xz'} xz: x < z by rewrite lt_neqAle xz'.
@@ -298,18 +332,12 @@ case/boolP: (xepsE == set0).
298332 suff : xepsE y by rewrite xepsE0.
299333 by rewrite /xepsE /= Hy y0 -(ltrD2l x) (le_lt_trans xyz).
300334 have dlxz : dl z = [set t + (z - x) | t in dl x].
301- apply/seteqP; rewrite /dl; split => t /= [].
302- move => ztE y0.
303- case: (ltrP x (z-t)) => ztx.
304- suff : z-t-x \in xepsE by rewrite xepsE0 inE.
305- rewrite inE /xepsE /= addrA (addrC x) addrK ztE.
306- by rewrite subr_gt0 ztx ltrBlDl ltrBlDr ltr_wpDr.
307- exists (x - (z-t)).
308- by rewrite opprD addrA subrr opprK add0r ztE subr_ge0.
309- by rewrite (addrC z) opprD opprK !addrA addrNK addrC addKr.
310- move=> w [] xwE w0 <-.
311- rewrite !opprD (addrCA z) !addrA addrK addrC opprK.
312- by rewrite subr_ge0 ler_wpDl // ltW.
335+ apply: dl_shift => // t /=.
336+ rewrite in_itv /= => /andP[] xt tz.
337+ apply: contraPnot xepsE0.
338+ rewrite -inE => Et; apply/eqP/set0P.
339+ exists (t-x); rewrite /xepsE /= addrA (addrC x) addrK.
340+ by rewrite subr_gt0 xt ltrBlDl (le_lt_trans tz).
313341 have [dlx0|] := eqVneq (dl x) set0.
314342 rewrite dlx0 inf0 subr0.
315343 case: ifPn => xinE.
0 commit comments