Skip to content

Commit 0cd073d

Browse files
committed
from open_basis to nbhs_basis in tvs
1 parent 723425a commit 0cd073d

2 files changed

Lines changed: 49 additions & 28 deletions

File tree

theories/normedtype_theory/tvs.v

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
(* mathcomp analysis (c) 2026 Inria and AIST. License: CeCILL-C. *)
2-
From HB Require Import structures.
1+
(* mathcomp analysis (c) 2026 Inria and AIST. License: CeCILL-C. *)
2+
From HB Require Import structures.
33
From mathcomp Require Import all_ssreflect_compat ssralg ssrnum vector.
44
From mathcomp Require Import interval_inference.
55
#[warning="-warn-library-file-internal-analysis"]
@@ -387,7 +387,7 @@ HB.end.
387387
HB.mixin Record Uniform_isConvexTvs (R : numDomainType) E
388388
& Uniform E & GRing.Lmodule R E := {
389389
locally_convex : exists2 B : set_system E,
390-
(forall b, b \in B -> convex_set b) & basis B
390+
(forall b, b \in B -> absolutely_convex_set b) & (nbhs_basis 0) B
391391
}.
392392

393393
#[short(type="convexTvsType")]
@@ -435,7 +435,7 @@ HB.factory Record PreTopologicalLmod_isConvexTvs (R : numDomainType) E
435435
add_continuous : continuous (fun x : E * E => x.1 + x.2) ;
436436
scale_continuous : continuous (fun z : R^o * E => z.1 *: z.2) ;
437437
locally_convex : exists2 B : set_system E,
438-
(forall b, b \in B -> convex_set b) & basis B
438+
(forall b, b \in B -> absolutely_convex_set b) & nbhs_basis 0 B
439439
}.
440440

441441
HB.builders Context R E & PreTopologicalLmod_isConvexTvs R E.
@@ -608,14 +608,28 @@ rewrite -[ltRHS]mul1r -(add_onemK l%:num) [ltRHS]mulrDl.
608608
by rewrite ltrD// ltr_pM2l// onem_gt0.
609609
Qed.
610610

611+
Let standard_ball_balanced_set (r : R) : balanced_set (ball (0 : R^o) r).
612+
Proof.
613+
move => t /= t1 z /= [y].
614+
rewrite -ball_normE /= !sub0r !normrN => + <-.
615+
rewrite normrM. Search ( _ * _ < _ * _).
616+
case: (eqVneq `|t| (1 : R)).
617+
by move=> -> ; rewrite mul1r.
618+
move=> t11.
619+
have : (`|t| <1) by rewrite lt_neqAle; apply/andP; split.
620+
by move => lt1 yr; rewrite -[ltRHS]mul1r ltr_pM ?normr_ge0.
621+
Qed.
622+
611623
Let standard_locally_convex_set :
612-
exists2 B : set_system R^o, (forall b, b \in B -> convex_set b) & basis B.
624+
exists2 B : set_system R^o, (forall b, b \in B -> absolutely_convex_set b) & nbhs_basis 0 B.
613625
Proof.
614-
exists [set B | exists x r, B = ball x r].
615-
by move=> B/= /[!inE]/= [[x]] [r] ->; exact: standard_ball_convex_set.
616-
split; first by move=> B [x] [r] ->; exact: ball_open.
617-
move=> x B; rewrite -nbhs_ballE/= => -[r] r0 Bxr /=.
618-
by exists (ball x r) => //=; split; [exists x, r|exact: ballxx].
626+
exists [set B | exists r, B = ball 0 r].
627+
move=> B/= /[!inE]/= [] [r] ->; split; first by exact: standard_ball_convex_set.
628+
by exact: standard_ball_balanced_set.
629+
move=> B [] r /= r0 /= Br.
630+
exists (ball 0 r); last by exact: Br.
631+
split; last by apply: ballxx.
632+
by exists r.
619633
Qed.
620634

621635
HB.instance Definition _ :=
@@ -655,28 +669,32 @@ by move=> [l [e f]] /= [] [Al Bl] [] Ae Be; apply: nU; split;
655669
Qed.
656670

657671
Local Lemma prod_locally_convex :
658-
exists2 B : set_system (E * F), (forall b, b \in B -> convex_set b) & basis B.
672+
exists2 B : set_system (E * F), (forall b, b \in B -> absolutely_convex_set b) & nbhs_basis (0,0) B.
659673
Proof.
660-
have [Be Bcb Beb] := @locally_convex K E.
674+
have [Be Bce Beb] := @locally_convex K E.
661675
have [Bf Bcf Bfb] := @locally_convex K F.
662-
pose B := [set ef : set (E * F) | open ef /\
676+
pose B := [set ef : set (E * F) |
663677
exists be, exists2 bf, Be be & Bf bf /\ be `*` bf = ef].
664-
have : basis B.
665-
rewrite /basis/=; split; first by move=> b => [] [].
666-
move=> /= [x y] ef [[ne nf]] /= [Ne Nf] Nef.
667-
case: Beb => Beo /(_ x ne Ne) /= -[a] [] Bea ax ea.
668-
case: Bfb => Bfo /(_ y nf Nf) /= -[b] [] Beb yb fb.
669-
exists [set z | a z.1 /\ b z.2]; last first.
670-
by apply: subset_trans Nef => -[zx zy] /= [] /ea + /fb.
671-
split=> //=; split; last by exists a, b.
672-
rewrite openE => [[z z'] /= [az bz]]; exists (a, b) => /=; last by [].
673-
rewrite !nbhsE /=; split; first by exists a => //; split => //; exact: Beo.
674-
by exists b => //; split => // []; exact: Bfo.
675-
exists B => // => b; rewrite inE /= => [[]] bo [] be [] bf Bee [] Bff <-.
676-
move => [x1 y1] [x2 y2] l /[!inE] /= -[xe1 yf1] [xe2 yf2].
678+
have lem : nbhs_basis (0,0) B.
679+
move=> /= b [/= [be bf] [/= nbe nbf]] /= befb /=.
680+
have [/= be' [Beb' be'0] bbe] := Beb be nbe.
681+
have [/= bf' [Bfb' bf'0] bbf] := Bfb bf nbf.
682+
exists (be' `*` bf').
683+
split; first by exists be'; exists bf'.
684+
split => //=.
685+
apply: subset_trans; last by exact: befb.
686+
move => t /= [bet bft]; split; first by apply: bbe.
687+
by apply: bbf.
688+
exists B => // => b; rewrite inE /= => [[]] be [] bf Bee [] Bff <-.
689+
have [convbe balbe] := Bce be (mem_set Bee).
690+
have [convbf balbf] := Bcf bf (mem_set Bff).
677691
split.
678-
by apply/set_mem/Bcb; [exact/mem_set|exact/mem_set|exact/mem_set].
679-
by apply/set_mem/Bcf; [exact/mem_set|exact/mem_set|exact/mem_set].
692+
move => [x1 y1] [x2 y2] l /[!inE] /= -[xe1 yf1] [xe2 yf2];split.
693+
by apply/set_mem/convbe;[exact/mem_set|exact/mem_set].
694+
by apply/set_mem/convbf;[exact/mem_set|exact/mem_set].
695+
move=> r [r1 [x1 y1]] [[x2 y2]]/= [bex bfy] [] <- <-; split.
696+
by apply/balbe; [exact: r1|exists x2].
697+
by apply/balbf; [exact: r1|exists y2].
680698
Qed.
681699

682700
HB.instance Definition _ := PreTopologicalNmodule_isTopologicalNmodule.Build

theories/topology_theory/topology_structure.v

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,9 @@ Definition open_nbhs (p : T) (A : set T) := open A /\ A p.
120120
Definition basis (B : set (set T)) :=
121121
B `<=` open /\ forall x, filter_from [set U | B U /\ U x] id --> x.
122122

123+
Definition nbhs_basis x (B : set (set T)) :=
124+
filter_from [set U | B U /\ U x] id --> x.
125+
123126
Definition second_countable := exists2 B, countable B & basis B.
124127

125128
Global Instance nbhs_pfilter (p : T) : ProperFilter (nbhs p).

0 commit comments

Comments
 (0)