@@ -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