@@ -226,6 +226,9 @@ Proof. by move=> y; rewrite inE => -[]. Qed.
226226Let  dr_ge0 x : {in dr x, forall  y : R, y >= 0}.
227227Proof . by move=> y; rewrite inE => -[] _ /ltW. Qed .
228228
229+ Lemma  sdist_ge0 x : 0 <= sdist x.
230+ Proof . by rewrite /sdist le_min !fun_if ler01 !inf_ge0 // !if_same. Qed .
231+ 
229232Lemma  image2_set1 A B C (S : set A) (eb : B) (f : A -> B -> C) :
230233  [set f x y | x in  S & y in  [set eb]] = [set f x eb | x in  S].
231234Proof .
@@ -279,7 +282,7 @@ rewrite !addrA addrC addrA addKr addrC.
279282by rewrite subr_gt0 ltr_wpDr // ltW.
280283Qed .
281284
282- Lemma  inf_dlxz x z :   
285+ Lemma  inf_dlxz x z :
283286  dl z = [set t + (z - x) | t in  dl x] -> 
284287  dl x !=set0 -> 
285288  x - inf (dl x) = z - inf (dl z).
@@ -292,6 +295,19 @@ rewrite dlxz -image2_set1 inf_sumE.
292295- exact: has_inf1.
293296Qed .
294297
298+ Lemma  inf_drxz x z :
299+   dr x = [set t + (z - x) | t in  dr z] ->
300+   dr z != set0 ->
301+   inf (dr x) = inf (dr z) + z - x.
302+ Proof .
303+ move=> drzx drz0.
304+ rewrite drzx -image2_set1 inf_sumE.
305+ - by rewrite inf1 addrA.
306+ - split. by apply/set0P.
307+   exists 0. move=> u. rewrite -inE. exact: dr_ge0.
308+ - exact: has_inf1.
309+ Qed .
310+ 
295311Definition  continuous_at_sorgenfrey_to_Rtopo x (f : sorgenfrey -> R) :=
296312  forall  eps : R, 0 < eps -> exists2 d : R, 0 < d & forall  y : R, x <= y < x + d -> `|f x - f y| < eps.
297313
@@ -350,31 +366,26 @@ case/boolP: (xepsE == set0).
350366    by rewrite subr_gt0 xt ltrBlDl (le_lt_trans tz).
351367  have Hr : `|Num.min 1 xr - Num.min 1 zr| < eps.
352368    rewrite /xr /zr.
353-     case/boolP: (dr z == set0) => [/eqP |] drz0.
369+     case/boolP: (dr z == set0) => [/eqP | /set0P ] drz0.
354370      move: drzx.
355371      rewrite drz0 image_set0 => /eqP ->.
356372      by rewrite subrr normr0.
357373    have drx0 : dr x !=set0.
358-       case/set0P  : drz0 => z0 drzz0.
374+       case : drz0 => z0 drzz0.
359375      rewrite drzx.
360376      exists (z0 + (z - x)) => /=.
361377      by exists z0.
362-     rewrite ifF.
363-       rewrite (le_lt_trans (abs_subr_min _ _ _ _)) //.
364-       rewrite subrr normr0 maxEle normr_ge0.
365-         rewrite drzx.
366-         rewrite -image2_set1.
367-         rewrite inf_sumE //.
368-           rewrite inf1.
369-           rewrite addrAC.
370-           rewrite subrr add0r.
371-           move/ltW: xz.
372-           rewrite ler_def.
373-           move/eqP ->.
374-           by rewrite ltrBlDl. 
375-         split. exact/set0P.
376-         exists 0. by move=> y [] _ /ltW.
377-     exact/negbTE/set0P.
378+     have inf_drlt : `|inf (dr x) - inf (dr z)| < eps.
379+       rewrite drzx -image2_set1 inf_sumE //.
380+         rewrite inf1 addrAC subrr add0r.
381+         move/ltW: xz.
382+         rewrite ler_def => /eqP ->.
383+         by rewrite ltrBlDl. 
384+       split => //.
385+       exists 0; by move=> y [] _ /ltW.
386+     rewrite ifF; last exact/negbTE/set0P.
387+     rewrite (le_lt_trans (abs_subr_min _ _ _ _)) //.
388+     by rewrite subrr normr0 maxEle normr_ge0.      
378389  have dlxz : dl z = [set t + (z - x) | t in dl x].
379390    apply: dl_shift => // t /=.
380391    rewrite in_itv /= => /andP[] xt tz.
@@ -407,49 +418,33 @@ case/boolP: (xepsE == set0).
407418    move/eqP /image_set0_set0 /eqP.
408419    by rewrite (negPf drz0).
409420  move=> drx0.
410-   have inf_drxz : inf (dr x) = inf (dr z) + z - x.
411-     rewrite drzx -image2_set1 inf_sumE.
412-     - by rewrite inf1 addrA.
413-     - split. by apply/set0P.
414-       exists 0. move=> u. rewrite -inE. exact: dr_ge0.
415-     - exact: has_inf1.
416-   rewrite -drzx inf_drxz.
421+   rewrite -drzx (inf_drxz drzx) //.
417422  rewrite addrC addrA addKr ltr_norml.
418423  rewrite (@lt_le_trans _ _ 0) ?ltrBlDl //= ?subr_ge0 ?ltW //. 
419424  by rewrite oppr_lt0.
420425move/set0P/xgetPex => /(_ eps).
421426rewrite -/eps' => -[] eps'E Heps'.
422427rewrite -/(sdist x) -/(sdist z).
423- have eps'l : forall t, x <= t < x + eps' -> 0 <=  sdist t < eps.
424-   move=> t Ht  /=.
428+ have eps'l : forall t, x <= t < x + eps' -> sdist t < eps.
429+   move=> t /andP[xt tx]  /=.
425430  rewrite /sdist.
426-   set xl : R := if _ then _ else 1.
427-   case: ifPn.
428-     move/negP; elim; apply/negP/set0P.
429-     exists (x+eps'-t).
430-     rewrite /dr /= (addrC _ (-t)) addrA subrr add0r eps'E.
431-     rewrite addrC subr_gt0 //; by case/andP: Ht.
432-   move=> drt0.
433-   rewrite le_min.
434-   rewrite gt_min.
435-   rewrite {1}/xl fun_if inf_ge0 // ler01 if_same /=.
436-   rewrite inf_ge0 /=; last by move=> u; rewrite inE => -[] _ /ltW.
437-   case/andP: Ht => xt tx.
438-   rewrite orbC (@le_lt_trans _ _ (eps'+x-t)) //.
431+   rewrite gt_min; apply/orP; right.
432+   have /negbTE -> : dr t != set0.
433+     apply/set0P; exists (x+eps'-t).
434+     by rewrite /dr /= (addrC _ (-t)) addrA subrr add0r eps'E addrC subr_gt0.
435+   rewrite (@le_lt_trans _ _ (eps'+x-t)) //.
439436    have [-> | infdr0] := eqVneq (inf (dr t)) 0.
440437      by rewrite subr_ge0 addrC ltW.
441438    rewrite le_inf_n0 // inE /dr /= (addrC _ (-t)) addrA subrr add0r addrC.
442439    by rewrite eps'E addrC subr_gt0.
443440  case/andP: Heps' => eps'0 Heps'.
444441  by rewrite (le_lt_trans _ Heps') // -addrA gerDl lerBlDl addr0.
445- have Hx : 0 <=  sdist x < eps.
442+ have Hx : sdist x < eps.
446443  by apply: eps'l; rewrite lexx ltrDl; case/andP: Heps'.
447- have Hz : 0 <=  sdist z < eps.
444+ have Hz : sdist z < eps.
448445  by apply: eps'l; rewrite zx ltW // xz.
449446rewrite -maxrN gt_max.
450- case/andP: Hx => Hx1 Hx2.
451- case/andP: Hz => Hz1 Hz2.
452- by rewrite opprB !ltrBlDr !ltr_wpDr.
447+ by rewrite opprB !ltrBlDr !ltr_wpDr // sdist_ge0.
453448Qed .
454449
455450Lemma  zeroset_sdist :  E = sdist @^-1` [set 0].
0 commit comments