@@ -127,6 +127,40 @@ move=> xb; exists ((a + x) / 2) => /=.
127
127
by rewrite divr_gt0// -(opprK x) subr_gt0.
128
128
move=> r/=; rewrite ltr_pdivlMr// -ltrBlDr; apply: le_lt_trans.
129
129
by rewrite -lerBlDr opprK addrC (le_trans (ler_norm _))// ler_peMr// ler1n.
130
+
131
+ Section nbhs_lt_le.
132
+ Context {R : numFieldType}.
133
+ Implicit Types x z : R.
134
+
135
+ Lemma lt_nbhsl_lt x z : x < z -> \forall y \near x, x <= y -> y < z.
136
+ Proof.
137
+ move=> xz; near=> y.
138
+ rewrite le_eqVlt => /predU1P[<-//|].
139
+ near: y; exists (z - x) => /=; first by rewrite subr_gt0.
140
+ move=> y/= /[swap] xy; rewrite ltr0_norm ?subr_lt0//.
141
+ by rewrite opprD addrC ltrBlDr subrK opprK.
142
+ Unshelve. all: by end_near. Qed .
143
+
144
+ Lemma lt_nbhsl_le x z : x < z -> \forall y \near x, x <= y -> y <= z.
145
+ Proof .
146
+ by move=> xz; apply: filterS (lt_nbhsl_lt xz) => y /[apply] /ltW.
147
+ Qed .
148
+
149
+ End nbhs_lt_le.
150
+ #[deprecated(since="mathcomp-analysis 1.9.0", note="use `lt_nbhsl_lt` instead")]
151
+ Notation nbhs_lt := lt_nbhsl_lt (only parsing).
152
+ #[deprecated(since="mathcomp-analysis 1.9.0", note="use `lt_nbhsl_le` instead")]
153
+ Notation nbhs_le := lt_nbhsl_le (only parsing).
154
+
155
+ Lemma lt_nbhsr {R : realFieldType} (a z : R) : a < z ->
156
+ \forall x \near z, a < x.
157
+ Proof .
158
+ rewrite -subr_gt0 => za0; exists (z - a) => //= u/=.
159
+ rewrite ltrBrDl addrC -ltrBrDl => /lt_le_trans; apply.
160
+ rewrite lerBlDl.
161
+ have [uz|uz] := leP u z.
162
+ by rewrite ger0_norm ?subr_ge0// subrK.
163
+ by rewrite ltr0_norm ?subr_lt0// opprB addrAC -lerBlDr opprK lerD// ?ltW.
130
164
Qed .
131
165
132
166
Global Instance Proper_dnbhs_regular_numFieldType (R : numFieldType) (x : R^o) :
0 commit comments