@@ -36,13 +36,14 @@ gen have fxy : f / {in I &, injective f} ->
3636 {in I &, forall x y, x < y -> f x != f y}.
3737 move=> fI x y xI yI xLy; apply/negP => /eqP /fI => /(_ xI yI) xy.
3838 by move: xLy; rewrite xy ltxx.
39- gen have main : f / forall c, {within [set` I], continuous f} -> {in I &, injective f} ->
39+ gen have main : f / forall c, {within [set` I], continuous f} ->
40+ {in I &, injective f} ->
4041 {in I &, forall a b, f a < f b -> a < c -> c < b -> f a < f c /\ f c < f b}.
4142 move=> c fC fI a b aI bI faLfb aLc cLb.
4243 have intP := interval_is_interval aI bI.
4344 have cI : c \in I by rewrite intP// (ltW aLc) ltW.
4445 have ctsACf : {within `[a, c], continuous f}.
45- apply: (continuous_subspaceW _ fC) => x /= ; rewrite inE => /itvP axc.
46+ apply: (continuous_subspaceW _ fC) => x; rewrite /= inE => /itvP axc.
4647 by rewrite intP// axc/= (le_trans _ (ltW cLb))// axc.
4748 have ctsCBf : {within `[c, b], continuous f}.
4849 apply: (continuous_subspaceW _ fC) => x /=; rewrite inE => /itvP axc.
@@ -80,7 +81,7 @@ have aux a c b : a \in I -> b \in I -> a < c -> c < b ->
8081 have fanfb : f a != f b by apply: (fxy f fI).
8182 have decr : f b < f a -> f b < f c /\ f c < f a.
8283 have ofC : {within [set` I], continuous (-f)}.
83- move=> x ; apply: continuous_comp; [exact: fC | exact: continuousN].
84+ move=> ? ; apply: continuous_comp; [exact: fC | exact: continuousN].
8485 have ofI : {in I &, injective (-f)} by move=>> ? ? /oppr_inj/fI ->.
8586 rewrite -[X in X < _ -> _](opprK (f b)) ltr_oppl => ofaLofb.
8687 have := main _ c ofC ofI a b aI bI ofaLofb aLc cLb.
@@ -194,11 +195,10 @@ Lemma segment_can_ge a b f g : a <= b ->
194195 {in `[f b, f a] &, {mono g : x y /~ x <= y}}.
195196Proof .
196197move=> aLb fC fK x y xfbfa yfbfa; rewrite -ler_opp2.
197- apply: (@segment_can_le (- b) (- a) (f \o -%R) (- g));
198- rewrite /= ?ler_opp2 ?opprK//.
199- pose fun_neg : (subspace `[-b,-a] -> subspace `[a,b]) :=
200- ([fun of @GRing.opp R] : {fun `[-b,-a] >-> `[a,b]}).
201- move=> z; apply: (@continuous_comp _ _ _ fun_neg); last exact: fC.
198+ apply: (@segment_can_le (- b) (- a) (f \o -%R) (- g));
199+ rewrite /= ?ler_opp2 ?opprK //.
200+ pose fun_neg : (subspace `[-b,-a] -> subspace `[a,b]) := @GRing.opp R.
201+ move=> z; apply: (@continuous_comp _ _ _ [fun of fun_neg]); last exact: fC.
202202 exact/subspaceT_continuous/continuous_subspaceT/opp_continuous.
203203by move=> z zab; rewrite -[- g]/(@GRing.opp _ \o g)/= fK ?opprK// oppr_itvcc.
204204Qed .
@@ -286,17 +286,17 @@ Lemma segment_inc_surj_continuous a b f :
286286Proof .
287287move=> fle f_surj; have [f_inj flt] := (inc_inj_in fle, leW_mono_in fle).
288288have [aLb|bLa|] := ltgtP a b; first last.
289- - move=> ->.
290- rewrite (_ : (`[b,b])%classic = [set b]); first exact: continuous_subspace1.
291- rewrite eqEsubset; split=>z /=; rewrite itvxx; first by move=> ?; apply/eqP.
289+ - move=> ->; rewrite (_ : (`[b,b])%classic = [set b]).
290+ exact: continuous_subspace1.
291+ rewrite eqEsubset; split => z; rewrite /= itvxx.
292+ by move=> ?; apply/eqP.
292293 by move=>/eqP.
293294- rewrite continuous_subspace_in => z /set_mem /=; rewrite in_itv /=.
294295 by move=> /andP [az zb]; move: (le_trans az zb) bLa; rewrite ltNge => ->.
295296have le_ab : a <= b by rewrite ltW.
296297have [aab bab] : a \in `[a, b] /\ b \in `[a, b] by rewrite !bound_itvE ltW.
297298have fab : f @` `[a, b] = `[f a, f b]%classic by exact:inc_surj_image_segment.
298- pose g := pinv `[a, b] f.
299- have fK : {in `[a, b], cancel f g}.
299+ pose g := pinv `[a, b] f; have fK : {in `[a, b], cancel f g}.
300300 by rewrite -[mem _]mem_setE; apply: pinvKV; rewrite !mem_setE.
301301have gK : {in `[f a, f b], cancel g f} by move=> z zab; rewrite pinvK// fab inE.
302302have gle : {in `[f a, f b] &, {mono g : x y / x <= y}}.
@@ -308,23 +308,23 @@ rewrite continuous_subspace_in; move=> x xab.
308308have xabcc : x \in `[a, b] by move: xab; rewrite mem_setE.
309309have fxab : f x \in `[(f a), (f b)] by rewrite in_itv/= !fle.
310310have fxabcc : f x \in `[f a, f b] by apply: subset_itv.
311- move: (xabcc); rewrite in_itv //= => /andP [ax xb].
311+ move: (xabcc); rewrite in_itv //= => /andP [ax xb].
312312apply/cvg_distP => _ /posnumP[e]; rewrite !near_simpl; near=> y.
313313rewrite (@le_lt_trans _ _ (e%:num / 2%:R))//; last first.
314314 by rewrite ltr_pdivr_mulr// ltr_pmulr// ltr1n.
315315rewrite ler_distlC; near: y.
316316pose u := minr (f x + e%:num / 2) (f b).
317317pose l := maxr (f x - e%:num / 2) (f a).
318318have ufab : u \in `[f a, f b].
319- rewrite !in_itv/= le_minl ?le_minr lexx ?fle// le_ab orbT ?andbT.
320- by rewrite ler_paddr// fle // ?(itvP xabcc) .
319+ rewrite !in_itv /= le_minl ?le_minr lexx ?fle // le_ab orbT ?andbT.
320+ by rewrite ler_paddr // fle .
321321have lfab : l \in `[f a, f b].
322- rewrite !in_itv/= le_maxl ?le_maxr lexx ?fle// le_ab orbT ?andbT/= .
323- by rewrite ler_subl_addr ler_paddr// fle ?(itvP xabcc) // lexx.
322+ rewrite !in_itv/= le_maxl ?le_maxr lexx ?fle// le_ab orbT ?andbT.
323+ by rewrite ler_subl_addr ler_paddr// fle // lexx.
324324have guab : g u \in `[a, b].
325- rewrite !in_itv; apply/andP; split; move: (ufab); rewrite in_itv /= => /andP.
326- by case; rewrite -gle // ?fK // bound_itvE fle.
327- by case => _; rewrite -gle // ?fK // bound_itvE fle.
325+ rewrite !in_itv; apply/andP; split; move: (ufab); rewrite in_itv => /andP.
326+ by case; rewrite /= -gle // ?fK // bound_itvE fle.
327+ by case => _; rewrite /= -gle // ?fK // bound_itvE fle.
328328have glab : g l \in `[a, b].
329329 rewrite !in_itv; apply/andP; split; move: (lfab); rewrite in_itv /= => /andP.
330330 by case; rewrite -gle // ?fK // bound_itvE fle.
@@ -340,30 +340,31 @@ have lltfb : l < f b.
340340case: pselect => // _; rewrite near_withinE; near_simpl.
341341move: (ax); rewrite le_eqVlt => /orP [].
342342 rewrite eq_sym=> /eqP ? ; subst.
343- near=> y => /[dup] yab; rewrite /= in_itv /= = > /andP [ay yb] .
344- apply/andP;split.
345- by apply (@le_trans _ _ (f a)); rewrite ?fle //ler_subl_addr; exact: ler_paddr.
343+ near=> y => /[dup] yab; rewrite /= in_itv = > /andP [? ?]; apply/andP; split .
344+ apply (@le_trans _ _ (f a)); rewrite ?fle // ler_subl_addr.
345+ exact: ler_paddr.
346346 apply: ltW; suff : f y < u by rewrite lt_minr => /andP[->].
347- rewrite -?[f y < _]glt // ?fK //; first last.
348- by rewrite in_itv /= ; apply/andP; split ; rewrite fle .
349- by near: y; near_simpl ; apply: open_lt ; rewrite /= -flt // ?gK.
347+ rewrite -?[f y < _]glt // ?fK //.
348+ by near: y; near_simpl ; apply: open_lt ; rewrite /= -flt // ?gK .
349+ by rewrite in_itv /= ; apply/andP; split ; rewrite fle.
350350move: (xb); rewrite le_eqVlt => /orP [].
351- move=> /eqP ?; subst => _.
352- near=> y => /[dup] yab; rewrite /= in_itv /= => /andP [ay yb ].
351+ move=> /eqP ?; subst => _.
352+ near=> y => /[dup] yab; rewrite /= in_itv /= => /andP [? ? ].
353353 apply/andP;split; first last.
354354 by apply (@le_trans _ _ (f b)); rewrite ?fle //; exact: ler_paddr.
355355 apply: ltW; suff : l < f y by rewrite lt_maxl => /andP[->].
356- rewrite -?[_ < f y]glt // ?fK //; first last.
357- by rewrite in_itv /= ; apply/andP; split ; rewrite fle .
358- near: y; near_simpl ; apply: open_gt ; rewrite /= -flt // ?gK //.
356+ rewrite -?[_ < f y]glt // ?fK //.
357+ by near: y; near_simpl ; apply: open_gt ; rewrite /= -flt // ?gK // .
358+ by rewrite in_itv /= ; apply/andP; split ; rewrite fle.
359359move=> ? ?; have xoab : x \in `]a, b[ by rewrite in_itv /=; apply/andP; split.
360- near=> y; suff: l <= f y <= u by rewrite le_maxl le_minr -!andbA => /and4P[-> _ ->].
361- have yab : y \in `[a, b] by apply: subset_itv_oo_cc; near: y; apply: near_in_itv.
360+ near=> y; suff: l <= f y <= u.
361+ by rewrite le_maxl le_minr -!andbA => /and4P[-> _ ->].
362+ have ? : y \in `[a, b] by apply: subset_itv_oo_cc; near: y; apply: near_in_itv.
362363have fyab : f y \in `[f a, f b] by rewrite in_itv/= !fle// ?ltW.
363364rewrite -[l <= _]gle -?[_ <= u]gle// ?fK //.
364365apply: subset_itv_oo_cc; near: y; apply: near_in_itv; rewrite in_itv /=.
365366rewrite -[x]fK // !glt//= lt_minr lt_maxl ?andbT ltr_subl_addr ltr_spaddr //.
366- by apply/and3P; (split => //; last by rewrite flt); apply/andP; split; rewrite // flt.
367+ by apply/and3P; split; rewrite // flt.
367368Unshelve. all: by end_near. Qed .
368369
369370Lemma segment_dec_surj_continuous a b f :
@@ -392,7 +393,6 @@ have fafb : f b <= f a by rewrite fge // ?bound_itvE.
392393by apply: segment_dec_surj_continuous => //; case: ltrP f_surj fafb.
393394Qed .
394395
395-
396396Lemma segment_can_le_continuous a b f g : a <= b ->
397397 {within `[a, b], continuous f} ->
398398 {in `[a, b], cancel f g} ->
0 commit comments