@@ -1399,39 +1399,43 @@ by move/oppr_inj; apply/fI.
13991399Qed .
14001400
14011401Lemma itv_continuous_inj_mono f (I : interval R) :
1402- {within [set` I], continuous f} -> {in I &, injective f} -> monotonous I f.
1402+ {within [set` I], continuous f} -> {in I &, injective f} ->
1403+ strict_monotonic I f.
14031404Proof .
14041405move=> fC fI.
14051406case: (pselect (exists a b, [/\ a \in I , b \in I & a < b])); last first.
1406- move=> N2I; left => x y xI yI; suff -> : x = y by rewrite ?lexx .
1407- by apply: contra_notP N2I => /eqP ; case: ltgtP; [exists x, y|exists y, x|].
1407+ move=> N2I; left => x y xI yI xy; apply: contra_notT N2I .
1408+ by rewrite -leNgt ; case: ltgtP xy ; [exists x, y|exists y, x|].
14081409move=> [a [b [aI bI lt_ab]]].
14091410have /orP[faLfb|fbLfa] := le_total (f a) (f b).
1410- by left; apply: itv_continuous_inj_le => //; exists a, b; rewrite ?faLfb.
1411- by right; apply: itv_continuous_inj_ge => //; exists a, b; rewrite ?fbLfa.
1411+ - left; apply/monoW_in/leW_mono_in/itv_continuous_inj_le => //.
1412+ by exists a, b; rewrite faLfb.
1413+ - right; apply/monoW_in/leW_nmono_in/itv_continuous_inj_ge => //.
1414+ by exists a, b; rewrite ?fbLfa.
14121415Qed .
14131416
14141417Lemma segment_continuous_inj_le f a b :
1415- f a <= f b -> {within `[a, b], continuous f} -> {in `[a, b] &, injective f} ->
1418+ f a <= f b -> {within `[a, b], continuous f} ->
1419+ {in `[a, b] &, injective f} ->
14161420 {in `[a, b] &, {mono f : x y / x <= y}}.
14171421Proof .
1418- move=> fafb fct finj; have [//|] := itv_continuous_inj_mono fct finj.
1422+ move=> fafb fct finj; have [/le_mono_in/ /|] := itv_continuous_inj_mono fct finj.
14191423have [aLb|bLa|<-] := ltrgtP a b; first 1 last.
14201424- by move=> _ x ?; rewrite itv_ge// -ltNge.
14211425- by move=> _ x y /itvxxP-> /itvxxP->; rewrite !lexx.
1422- move=> /(_ a b); rewrite !bound_itvE fafb.
1423- by move=> /(_ (ltW aLb) (ltW aLb)); rewrite lt_geF.
1426+ move/le_nmono_in /(_ a b); rewrite !bound_itvE fafb.
1427+ by move=> /(_ (ltW aLb) (ltW aLb)); rewrite lt_geF.
14241428Qed .
14251429
14261430Lemma segment_continuous_inj_ge f a b :
14271431 f a >= f b -> {within `[a, b], continuous f} -> {in `[a, b] &, injective f} ->
14281432 {in `[a, b] &, {mono f : x y /~ x <= y}}.
14291433Proof .
1430- move=> fafb fct finj; have [|//] := itv_continuous_inj_mono fct finj.
1434+ move=> fafb fct finj; have [|/le_nmono_in/ /] := itv_continuous_inj_mono fct finj.
14311435have [aLb|bLa|<-] := ltrgtP a b; first 1 last.
14321436- by move=> _ x ?; rewrite itv_ge// -ltNge.
14331437- by move=> _ x y /itvxxP-> /itvxxP->; rewrite !lexx.
1434- move=> /(_ b a); rewrite !bound_itvE fafb.
1438+ move/le_mono_in /(_ b a); rewrite !bound_itvE fafb.
14351439by move=> /(_ (ltW aLb) (ltW aLb)); rewrite lt_geF.
14361440Qed .
14371441
@@ -1480,11 +1484,13 @@ Qed.
14801484
14811485Lemma segment_can_mono a b f g : a <= b ->
14821486 {within `[a, b], continuous f} -> {in `[a, b], cancel f g} ->
1483- monotonous (f @`[a, b]) g.
1487+ strict_monotonic (f @`[a, b]) g.
14841488Proof .
1485- move=> le_ab fct fK; rewrite /monotonous/=; case: ltrgtP => fab; [left|right..];
1486- do ?by [apply: segment_can_le|apply: segment_can_ge].
1487- by move=> x y /itvxxP<- /itvxxP<-; rewrite !lexx.
1489+ move=> le_ab fct fK.
1490+ rewrite /strict_monotonic/=; case: ltrgtP => fab; [left|right..].
1491+ - exact/monoW_in/leW_mono_in/segment_can_le.
1492+ - exact/monoW_in/leW_nmono_in/segment_can_ge.
1493+ - by move=> x y /itvxxP<- /itvxxP<-; rewrite ltxx.
14881494Qed .
14891495
14901496Lemma segment_continuous_surjective a b f : a <= b ->
@@ -1510,7 +1516,7 @@ Lemma continuous_inj_image_segment a b f : a <= b ->
15101516 f @` `[a, b] = (f @`[a, b])%classic.
15111517Proof .
15121518move=> leab fct finj; apply: mono_surj_image_segment => //.
1513- exact: itv_continuous_inj_mono.
1519+ exact/strict_monotonicW/ itv_continuous_inj_mono.
15141520exact: segment_continuous_surjective.
15151521Qed .
15161522
@@ -1527,7 +1533,7 @@ Lemma segment_continuous_can_sym a b f g : a <= b ->
15271533 {in f @`[a, b], cancel g f}.
15281534Proof .
15291535move=> aLb ctf fK; have g_mono := segment_can_mono aLb ctf fK.
1530- have f_mono := itv_continuous_inj_mono ctf (can_in_inj fK).
1536+ have /strict_monotonicW f_mono := itv_continuous_inj_mono ctf (can_in_inj fK).
15311537have f_surj := segment_continuous_surjective aLb ctf.
15321538have fIP := mono_surj_image_segmentP aLb f_mono f_surj.
15331539suff: {in f @`[a, b], {on `[a, b], cancel g & f}}.
@@ -1566,7 +1572,8 @@ have [aLb|bLa|] := ltgtP a b; first last.
15661572 by move=> /andP[/le_trans] /[apply]; rewrite leNgt bLa.
15671573have le_ab : a <= b by rewrite ltW.
15681574have [aab bab] : a \in `[a, b] /\ b \in `[a, b] by rewrite !bound_itvE ltW.
1569- have fab : f @` `[a, b] = `[f a, f b]%classic by exact:inc_surj_image_segment.
1575+ have fab : f @` `[a, b] = `[f a, f b]%classic.
1576+ by apply: inc_surj_image_segment => //; exact/monoW_in.
15701577pose g := pinv `[a, b] f; have fK : {in `[a, b], cancel f g}.
15711578 by rewrite -[mem _]mem_setE; apply: pinvKV; rewrite !mem_setE.
15721579have gK : {in `[f a, f b], cancel g f} by move=> z zab; rewrite pinvK// fab inE.
@@ -1644,16 +1651,20 @@ by move=> y /=; rewrite -oppr_itvcc => /f_surj[x ? /(canLR opprK)<-]; exists x.
16441651Qed .
16451652
16461653Lemma segment_mono_surj_continuous a b f :
1647- monotonous `[a, b] f -> set_surj `[a, b] (f @`[a, b]) f ->
1654+ strict_monotonic `[a, b] f -> set_surj `[a, b] (f @`[a, b]) f ->
16481655 {within `[a, b], continuous f}.
16491656Proof .
1650- rewrite continuous_subspace_in => -[fle |fge] f_surj x /set_mem /= xab.
1657+ rewrite continuous_subspace_in => -[flt |fge] f_surj x /set_mem /= xab.
16511658 have leab : a <= b by rewrite (itvP xab).
1652- have fafb : f a <= f b by rewrite fle // ?bound_itvE.
1653- by apply: segment_inc_surj_continuous => //; case: ltrP f_surj fafb.
1659+ have fafb : f a <= f b.
1660+ by move/ltW_homo_in : flt => ->//; rewrite ?bound_itvE.
1661+ apply: segment_inc_surj_continuous => //; case: ltrP f_surj fafb => //.
1662+ by move=> fafb f_surj _; exact/le_mono_in.
16541663have leab : a <= b by rewrite (itvP xab).
1655- have fafb : f b <= f a by rewrite fge // ?bound_itvE.
1656- by apply: segment_dec_surj_continuous => //; case: ltrP f_surj fafb.
1664+ have fafb : f b <= f a.
1665+ by move/ltW_nhomo_in : fge => ->//; rewrite ?bound_itvE.
1666+ apply: segment_dec_surj_continuous => //; case: ltrP f_surj fafb => //.
1667+ by move=> fafb f_surj _; exact/le_nmono_in.
16571668Qed .
16581669
16591670Lemma segment_can_le_continuous a b f g : a <= b ->
@@ -2854,22 +2865,19 @@ Lemma lhopital :
28542865 df x / dg x @[x --> c] --> l -> f x / g x @[x --> c^'] --> l.
28552866Proof .
28562867move=> fgcl; apply/cvg_at_right_left_dnbhs.
2857- - apply (@lhopital_at_right R f df g dg c b l); try exact/cvg_at_right_filter.
2868+ - apply: (@lhopital_at_right R f df g dg c b l); try exact/cvg_at_right_filter.
28582869 + by move: cab; rewrite in_itv/= => /andP[].
28592870 + move=> x xac; apply: fdf; rewrite set_itv_splitU ?in_setU//=.
28602871 by apply/orP; right; rewrite inE.
28612872 + move=> x xac; apply: gdg; rewrite set_itv_splitU ?in_setU//=.
28622873 by apply/orP; right; rewrite inE.
28632874 + move=> x xac; apply: cdg; rewrite set_itv_splitU ?in_setU//=.
28642875 by apply/orP; right; rewrite inE.
2865- - apply (@lhopital_at_left R f df g dg a c l); try exact/cvg_at_left_filter.
2876+ - apply: (@lhopital_at_left R f df g dg a c l); try exact/cvg_at_left_filter.
28662877 + by move: cab; rewrite in_itv/= => /andP[].
2867- + move=> x xac; apply: fdf; rewrite set_itv_splitU ?in_setU//=.
2868- + by apply/orP; left; rewrite inE.
2869- + move=> x xac; apply: gdg; rewrite set_itv_splitU ?in_setU//=.
2870- by apply/orP; left; rewrite inE.
2871- + move=> x xac; apply: cdg; rewrite set_itv_splitU ?in_setU//=.
2872- by apply/orP; left; rewrite inE.
2878+ + by move=> x xac; apply: fdf; rewrite set_itv_splitU ?in_setU// mem_setE xac.
2879+ + by move=> x xac; apply: gdg; rewrite set_itv_splitU ?in_setU// mem_setE xac.
2880+ + by move=> x xac; apply: cdg; rewrite set_itv_splitU ?in_setU// mem_setE xac.
28732881Qed .
28742882
28752883End lhopital.
0 commit comments