@@ -100,7 +100,20 @@ HB.builders Context R E of TopologicalLmod_isEvt R E.
100100 Unshelve. all: by end_near.
101101 Qed .
102102
103-
103+ Lemma nbhs_scaler: forall (U : set E) (r : R) (x :E), (
104+ r != 0) -> nbhs x U -> nbhs (r *:x) ( *:%R r @` U).
105+ Proof .
106+ move => U r x r0 U0; move: (@scale_continuous ((r^-1,r *:x)) U).
107+ rewrite /= scalerA mulrC divrr ?scale1r ?unitfE //= =>/(_ U0).
108+ case=>//= [B] [B1 B2] BU.
109+ near=> z => //=.
110+ exists (r^-1*:z).
111+ apply: (BU (r^-1,z)); split => //=; last by near: z.
112+ by apply: nbhs_singleton.
113+ by rewrite scalerA divrr ?scale1r ?unitfE //=.
114+ Unshelve. all: by end_near.
115+ Qed .
116+
104117 Lemma nbhsT: forall (U : set E), forall (x : E), nbhs 0 U -> nbhs x (+%R x @`U).
105118 Proof .
106119 move => U x U0.
@@ -154,30 +167,39 @@ HB.builders Context R E of TopologicalLmod_isEvt R E.
154167
155168Lemma nbhsE_subproof : nbhs = nbhs_ entourage.
156169Proof .
170+ have lem: (-1 != (0 : R)) by rewrite oppr_eq0 oner_eq0.
157171rewrite /nbhs_ /=; apply: funext => x; rewrite /filter_from /=.
158172apply: funext => U; apply: propext => /=; rewrite /entourage /=; split.
159- move=> nU; exists [set xy | U(x + (xy.1 - xy.2))].
160- exists ((fun z => z-x) @` U); split.
161- rewrite -(addrN x) addrC; move: (nbhs_add (-x) nU).
162- have -> : [set ((- x)%R + x0)%E | x0 in U] = [set z - x | z in U].
163- apply: funext => z /=; apply: propext; split;
164- by move=> [x0 U0]; rewrite addrC=> H; exists x0.
165- by [].
166- move => xy; rewrite !inE /= => [[z] Uz ] <-.
167- by rewrite addrCA subrr addr0.
168- move => /= z. (*issue*) admit.
173+ pose V := [set v | (x-v) \in U] : set E.
174+ move=> nU; exists [set xy | (xy.1 - xy.2) \in V].
175+ exists V;split.
176+ move: (nbhs_add (x) (nbhs_scaler lem nU))=> /=.
177+ rewrite scaleN1r subrr /= /V.
178+ have -> : [set (x + x0)%E | x0 in [set -1 *: x | x in U]]
179+ = [set v | x - v \in U].
180+ apply: funext => /= v /=; rewrite inE; apply: propext; split.
181+ by move => [x0 [x1]] Ux1 <- <-; rewrite scaleN1r opprB addrCA subrr addr0.
182+ move=> Uxy. exists (v - x). exists (x -v) => //.
183+ by rewrite scaleN1r opprB.
184+ by rewrite addrCA subrr addr0 //.
185+ by [].
186+ by move=> xy; rewrite !inE=> Vxy; rewrite /= !inE.
187+ by move=> y; rewrite /V /= !inE /= opprB addrCA subrr addr0 inE.
169188move=> [A [U0 [NU UA]] H].
170189near=> z; apply: H => /=; rewrite -inE; apply: UA => /=.
171190near: z; rewrite nearE.
172- move: (nbhsT x NU)=> /=.
173- have -> : [set (x + x0)%E | x0 in U0] = (fun x0 : E => x - x0 \in U0).
174- apply:funext => z /=; rewrite inE; apply: propext; split.
175- move=> [x0 H <-]; rewrite -opprB -addrAC addrN add0r.
176- admit (*issue*).
177- move=> Uxz; exists (z-x). admit (*issue*).
178- by rewrite addrCA subrr addr0.
191+ move: (nbhsT x (nbhs0_scaler lem NU))=> /=.
192+ have -> :
193+ [set (x + x0)%E | x0 in [set -1 *: x | x in U0]] = (fun x0 : E => x - x0 \in U0).
194+ apply:funext => /= z /=; apply: propext; split.
195+ move=> [x0] [x1 Ux1 <-] <-.
196+ rewrite -opprB. rewrite addrAC subrr add0r inE scaleN1r opprK //.
197+ rewrite inE => Uxz. exists (z-x). exists (x-z) => //.
198+ by rewrite scalerBr !scaleN1r opprK addrC.
199+ by rewrite addrCA subrr addr0.
179200by [].
180- Admitted .
201+ Unshelve. all: by end_near.
202+ Qed .
181203
182204HB.instance Definition _ := Nbhs_isUniform_mixin.Build E
183205 entourage_filter entourage_refl_subproof
@@ -203,7 +225,7 @@ Lemma add_continuousE (R : numDomainType) (E : evtType R):
203225continuous (fun (xy : E*E )=> xy.1 + xy.2).
204226Proof .
205227apply: add_continuous.
206- Admitted .
228+ Qed .
207229
208230End bacasable.
209231
0 commit comments