@@ -112,6 +112,42 @@ exists x => // z /=; rewrite sub0r normrN.
112
112
by apply: le_lt_trans; rewrite ler_norm.
113
113
Qed .
114
114
115
+
116
+ Section nbhs_lt_le.
117
+ Context {R : numFieldType}.
118
+ Implicit Types x z : R.
119
+
120
+ Lemma lt_nbhsl_lt x z : x < z -> \forall y \near x, x <= y -> y < z.
121
+ Proof .
122
+ move=> xz; near=> y.
123
+ rewrite le_eqVlt => /predU1P[<-//|].
124
+ near: y; exists (z - x) => /=; first by rewrite subr_gt0.
125
+ move=> y/= /[swap] xy; rewrite ltr0_norm ?subr_lt0//.
126
+ by rewrite opprD addrC ltrBlDr subrK opprK.
127
+ Unshelve. all: by end_near. Qed .
128
+
129
+ Lemma lt_nbhsl_le x z : x < z -> \forall y \near x, x <= y -> y <= z.
130
+ Proof .
131
+ by move=> xz; apply: filterS (lt_nbhsl_lt xz) => y /[apply] /ltW.
132
+ Qed .
133
+
134
+ End nbhs_lt_le.
135
+ #[deprecated(since="mathcomp-analysis 1.9.0", note="use `lt_nbhsl_lt` instead")]
136
+ Notation nbhs_lt := lt_nbhsl_lt (only parsing).
137
+ #[deprecated(since="mathcomp-analysis 1.9.0", note="use `lt_nbhsl_le` instead")]
138
+ Notation nbhs_le := lt_nbhsl_le (only parsing).
139
+
140
+ Lemma lt_nbhsr {R : realFieldType} (a z : R) : a < z ->
141
+ \forall x \near z, a < x.
142
+ Proof .
143
+ rewrite -subr_gt0 => za0; exists (z - a) => //= u/=.
144
+ rewrite ltrBrDl addrC -ltrBrDl => /lt_le_trans; apply.
145
+ rewrite lerBlDl.
146
+ have [uz|uz] := leP u z.
147
+ by rewrite ger0_norm ?subr_ge0// subrK.
148
+ by rewrite ltr0_norm ?subr_lt0// opprB addrAC -lerBlDr opprK lerD// ?ltW.
149
+ Qed .
150
+
115
151
Global Instance Proper_dnbhs_regular_numFieldType (R : numFieldType) (x : R^o) :
116
152
ProperFilter x^'.
117
153
Proof .
0 commit comments