Skip to content

Commit ebb71fd

Browse files
mkerjeanCohenCyril
andcommitted
adding seminorms to tvs
adding also initial fam topology, gauge functions, and subbase 0basis Co-authored-by: Reynald Affeldt <reynald.affeldt@aist.go.jp> Co-authored-by: Cyril Cohen <cyril.cohen@inria.fr>
1 parent b9bfb0c commit ebb71fd

13 files changed

Lines changed: 2340 additions & 73 deletions

File tree

CHANGELOG_UNRELEASED.md

Lines changed: 68 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,6 @@
9393
+ lemma `is_diff_mx`
9494
+ instance `is_diff_mx`
9595

96-
### Changed
97-
98-
- moved from `measurable_structure.v` to `classical_sets.v`:
99-
+ definition `preimage_set_system`
100-
+ lemmas `preimage_set_system0`, `preimage_set_systemU`, `preimage_set_system_comp`,
101-
`preimage_set_system_id`
10296
- in `functions.v`:
10397
+ lemmas `linfunP`, `linfun_eqP`
10498
+ instances of `SubLmodule` and `pointedType` on `{linear _->_ | _ }`
@@ -123,13 +117,55 @@
123117

124118
- new files `signed_measure.v` and `radon_nikodym.v`
125119
+ with the contents of `charge.v` (deprecated)
126-
120+
127121
### Changed
128122

129123
- moved from `measurable_structure.v` to `classical_sets.v`:
130124
+ definition `preimage_set_system`
131125
+ lemmas `preimage_set_system0`, `preimage_set_systemU`, `preimage_set_system_comp`,
132126
`preimage_set_system_id`
127+
128+
- moved from `measurable_structure.v` to `classical_sets.v`:
129+
+ definition `preimage_set_system`
130+
+ lemmas `preimage_set_system0`, `preimage_set_systemU`, `preimage_set_system_comp`,
131+
`preimage_set_system_id`
132+
- in `functions.v`:
133+
+ lemmas `linfunP`, `linfun_eqP`
134+
+ instances of `SubLmodule` and `pointedType` on `{linear _->_ | _ }`
135+
136+
- in `tvs.v`:
137+
+ structure `LinearContinuous`
138+
+ factory `isLinearContinuous`
139+
+ instance of `ChoiceType` on `{linear_continuous _ -> _ }`
140+
+ instance of `LinearContinuous` with the composition of two functions of type `LinearContinuous`
141+
+ instance of `LinearContinuous` with the sum of two functions of type `LinearContinuous`
142+
+ instance of `LinearContinuous` with the scalar multiplication of a function of type
143+
`LinearContinuous`
144+
+ instance of `Continuous` on \-f when f is of type `LinearContinuous`
145+
+ instance of `SubModClosed` on `{linear_continuous _ -> _}`
146+
+ instance of `SubLModule` on `{linear_continuous _ -> _ }`
147+
+ instance of `LinearContinuous` on the null function
148+
+ notations `{linear_continuous _ -> _ | _ }` and `{linear_continuous _ -> _ }`
149+
+ definitions `lcfun`, `lcfun_key, `lcfunP`
150+
+ lemmas `lcfun_eqP`, `null_fun_continuous`, `fun_cvgD`,
151+
`fun_cvgN`, `fun_cvgZ`, `fun_cvgZr`
152+
+ lemmas `lcfun_continuous` and `lcfun_linear`
153+
154+
+ ...
155+
- in `derive.v`:
156+
+ lemmas `derivable_max`, `derive_maxl`, `derive_maxr` `derivable_min`, `derive_minl`, `derive_minr`
157+
+ lemmas `derivable0`, `derive0`, `is_derive0`
158+
- in `topology_structure.v`:
159+
+ lemma `not_limit_pointE`
160+
161+
- in `separation_axioms.v`:
162+
+ lemmas `limit_point_closed`
163+
- in `convex.v`:
164+
+ lemma `convex_setW`
165+
- in `convex.v`:
166+
+ lemma `convexW`
167+
168+
### Changed
133169

134170
- moved from `topology_structure.v` to `filter.v`:
135171
+ lemma `continuous_comp` (and generalized)
@@ -183,6 +219,31 @@
183219
`ae_eq_Radon_Nikodym_SigmaFinite`, `Radon_Nikodym_change_of_variables`,
184220
`Radon_Nikodym_cscale`, `Radon_Nikodym_cadd`, `Radon_Nikodym_chain_rule`
185221

222+
- in set_interval.v
223+
+ `setUitv1`, `setU1itv`, `setDitv1l`, `setDitv1r` (generalized)
224+
- in `mathcomp_extra.v`:
225+
+ lemmas `divDl_ge0`, `divDl_le1`
226+
+ mixin `Zmodule_isSubNormed`
227+
+ structure `SubNormedZmodule`, notation `subNormedZmodType`
228+
229+
- in `unstable.v`:
230+
+ lemmas `divD_onem`
231+
232+
### Changed
233+
234+
- moved from `measurable_structure.v` to `classical_sets.v`:
235+
+ definition `preimage_set_system`
236+
+ lemmas `preimage_set_system0`, `preimage_set_systemU`, `preimage_set_system_comp`,
237+
`preimage_set_system_id`
238+
239+
- moved from `topology_structure.v` to `filter.v`:
240+
+ lemma `continuous_comp` (and generalized)
241+
242+
- in `numfun.v`:
243+
+ `fune_abse` renamed to `funeposDneg` and direction of the equality changed
244+
+ `funeposneg` renamed to `funeposBneg` and direction of the equality changed
245+
+ `funeD_posD` renamed to `funeDB` and direction of the equality changed
246+
186247
### Renamed
187248

188249
- in `tvs.v`:

CHANGELOG_UNRELEASED_new.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Changelog (unreleased)
2+
3+
## [Unreleased]
4+
5+
### Added
6+
7+
- in `mathcomp_extra.v`:
8+
+ lemmas `divDl_ge0`, `divDl_le1`
9+
+ mixin `Zmodule_isSubNormed`
10+
+ mixin `isTmp` and structure `SubNormedZmodule_tmp` (temporary kludge)
11+
12+
- in `unstable.v`:
13+
+ lemmas `divD_onem`
14+
15+
- in `filter.v`:
16+
+ mixin `isSubNbhs`, structure `SubNbhs`, notation `subNbhsType`
17+
18+
- in `topology_structure.v`:
19+
+ structure `SubTopological`, notation `subTopologicalType`
20+
21+
- in `tvs.v`:
22+
+ structure `SubConvexTvs`, notation `subConvexTvsType`
23+
24+
- in `normed_module.v`:
25+
+ structure `SubNormedModule`, notation `subNormedModType`
26+
+ instance `ent_xsection_filter`
27+
+ factory `SubLmodule_isSubNormedmodule`
28+
29+
- new file `hahn_banach_theorem.v`:
30+
+ module `LinearGraph`
31+
* definitions `graph`, `linear_graph`
32+
* lemmas `lingraph_00`, `lingraphZ`, `lingraphD`
33+
+ module `HahnBanachZorn`
34+
* definitions `extend_graph`, `le_graph`, `functional_graph`, `le_extend_graph`
35+
* record `zorn_type`
36+
* definition `zphi`
37+
* lemma `zorn_type_eq`
38+
* definition `zornS`
39+
* lemmas `zornS_ex`, `domain_extend`, `hahn_banach_witness`
40+
+ theorems `hahn_banach_extension`, `hahn_banach_extension_normed`
41+
42+
### Deprecated
43+
44+
### Renamed
45+
46+
### Generalized
47+
48+
### Removed
49+
50+
51+
52+

_CoqProject

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ theories/normedtype_theory/urysohn.v
8888
theories/normedtype_theory/vitali_lemma.v
8989
theories/normedtype_theory/normedtype.v
9090

91+
theories/functional_analysis/hahn_banach_theorem.v
92+
9193
theories/sequences.v
9294
theories/realfun.v
9395
theories/exp.v

classical/filter.v

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(* mathcomp analysis (c) 2017 Inria and AIST. License: CeCILL-C. *)
1+
(* mathcomp analysis (c) 2026 Inria and AIST. License: CeCILL-C. *)
22
From HB Require Import structures.
33
From mathcomp Require Import all_ssreflect_compat all_algebra finmap.
44
From mathcomp Require Import boolp classical_sets functions wochoice.
@@ -15,21 +15,31 @@ From mathcomp Require Import cardinality mathcomp_extra fsbigop set_interval.
1515
(* *)
1616
(* ## Structure of filter *)
1717
(* ``` *)
18-
(* filteredType U == interface type for types whose *)
19-
(* elements represent sets of sets on U *)
20-
(* These sets are intended to be filters *)
21-
(* on U but this is not enforced yet. *)
22-
(* The HB class is called Filtered. *)
23-
(* It extends Pointed. *)
24-
(* nbhs p == set of sets associated to p (in a *)
25-
(* filtered type) *)
26-
(* pfilteredType U == a pointed and filtered type *)
27-
(* hasNbhs == factory for filteredType *)
18+
(* filteredType U == interface type for types whose elements *)
19+
(* represent sets of sets on U *)
20+
(* These sets are intended to be filters on U *)
21+
(* but this is not enforced yet. *)
22+
(* The HB class is called Filtered. *)
23+
(* It extends Pointed. *)
24+
(* nbhs p == set of sets associated to p (in a filtered *)
25+
(* type) *)
26+
(* pfilteredType U == a pointed and filtered type *)
27+
(* hasNbhs == factory for filteredType *)
28+
(* nbhsType == type of a structure that has a set system *)
29+
(* of neighborhoods associated to each point *)
30+
(* pnbhsType == same has nbhsType for pointed types *)
2831
(* continuous f == f is continuous w.r.t the topology *)
29-
(* filterI_iter F n == nth stage of recursively building the *)
30-
(* filter of finite intersections of F *)
31-
(* finI_from D f == set of \bigcap_(i in E) f i where E is *)
32-
(* a finite subset of D *)
32+
(* isSubNbhs V S U == interface that states the continuity of val *)
33+
(* for U which has a subChoiceType and a *)
34+
(* nbhsType *)
35+
(* subNbhsType V S == structure that extends a *)
36+
(* subChoiceType/nbhsType with the isSubNbhs *)
37+
(* interface *)
38+
(* The HB class is SubNbhs. *)
39+
(* filterI_iter F n == nth stage of recursively building the *)
40+
(* filter of finite intersections of F *)
41+
(* finI_from D f == set of \bigcap_(i in E) f i where E is a *)
42+
(* a finite subset of D *)
3343
(* ``` *)
3444
(* *)
3545
(* We endow several standard types with the structure of filter, e.g.: *)
@@ -951,6 +961,15 @@ Lemma continuous_comp (R S T : nbhsType) (f : R -> S) (g : S -> T) x :
951961
{for x, continuous (g \o f)}.
952962
Proof. exact: cvg_comp. Qed.
953963

964+
HB.mixin Record isSubNbhs
965+
(V : nbhsType) (S : pred V) U & SubChoice V S U & Nbhs U := {
966+
continuous_valE : continuous (val : U -> V)
967+
}.
968+
969+
#[short(type="subNbhsType")]
970+
HB.structure Definition SubNbhs (V : nbhsType) (S : pred V) :=
971+
{ U of SubChoice V S U & Nbhs U & isSubNbhs V S U}.
972+
954973
Lemma near_fun (T T' : nbhsType) (f : T -> T') (x : T) (P : T' -> Prop) :
955974
{for x, continuous f} ->
956975
(\forall y \near f x, P y) -> (\near x, P (f x)).

classical/mathcomp_extra.v

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
(* mathcomp analysis (c) 2026 Inria and AIST. License: CeCILL-C. *)
2+
From HB Require Import structures.
23
From mathcomp Require Import all_ssreflect_compat finmap ssralg ssrnum ssrint.
34

45
(**md**************************************************************************)
@@ -93,10 +94,41 @@ Proof. by case: C => //= /ltW. Qed.
9394
(* MathComp 2.6 additions *)
9495
(**************************)
9596

96-
(* PR in progress: https://github.com/math-comp/math-comp/pull/1515 *)
9797
Lemma intrD1 {R : pzRingType} (i : int) : (i + 1)%:~R = i%:~R + 1 :> R.
9898
Proof. by rewrite intrD. Qed.
9999

100-
(* PR in progress: https://github.com/math-comp/math-comp/pull/1515 *)
101100
Lemma intr1D {R : pzRingType} (i : int) : (1 + i)%:~R = 1 + i%:~R :> R.
102101
Proof. by rewrite intrD. Qed.
102+
103+
Lemma divDl_ge0 (R : numDomainType) (s t : R) (s0 : 0 <= s) (t0 : 0 <= t) :
104+
0 <= s / (s + t).
105+
Proof.
106+
by apply: divr_ge0 => //; apply: addr_ge0.
107+
Qed.
108+
109+
Lemma divDl_le1 (R : numFieldType) (s t : R) (s0 : 0 <= s) (t0 : 0 <= t) :
110+
s / (s + t) <= 1.
111+
Proof.
112+
move: s0; rewrite le0r => /predU1P [->|s0]; first by rewrite mul0r.
113+
by rewrite ler_pdivrMr ?mul1r ?lerDl // ltr_wpDr.
114+
Qed.
115+
116+
HB.mixin Record Zmodule_isSubNormed (R : numDomainType)
117+
(M : normedZmodType R) (S : pred M) T & SubChoice M S T
118+
& Num.NormedZmodule R T := {
119+
norm_valE : forall x , @Num.norm _ M ((val : T -> M) x) = @Num.norm _ T x
120+
}.
121+
122+
(* SubNormedZmodule will appear in MC 2.6.0.
123+
However, just duplicating it here causes an HB error in the CI with MC 2.6.0.
124+
We therefore reproduce it with a different name and add a dummy
125+
mixin to it to satisfy HB.
126+
This will be removed when dropping support for MC 2.5.0 *)
127+
HB.mixin Record isTmp (R : numDomainType) (V : normedZmodType R) (S : pred V)
128+
(U : Type) := { field_tmp : True }.
129+
130+
#[short(type="subNormedZmodType")]
131+
HB.structure Definition SubNormedZmodule_tmp (R : numDomainType)
132+
(V : normedZmodType R) (S : pred V) :=
133+
{ U of @isTmp R V S U & SubChoice V S U & Num.NormedZmodule R U &
134+
GRing.SubZmodule V S U & Zmodule_isSubNormed R V S U }.

classical/unstable.v

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,13 @@ Qed.
369369
Lemma onemV (F : numFieldType) (x : F) : x != 0 -> x^-1.~ = (x - 1) / x.
370370
Proof. by move=> ?; rewrite mulrDl divff// mulN1r. Qed.
371371

372+
Lemma divD_onem (R : realFieldType) (s t : R) (s0 : 0 < s) (t0 : 0 < t) :
373+
(s / (s + t)).~ = t / (s + t).
374+
Proof.
375+
rewrite /onem.
376+
by rewrite -(@divff _ (s + t)) ?gt_eqF ?addr_gt0// -mulrBl (addrC s) addrK.
377+
Qed.
378+
372379
Lemma lez_abs2 (a b : int) : 0 <= a -> a <= b -> (`|a| <= `|b|)%N.
373380
Proof. by case: a => //= n _; case: b. Qed.
374381

theories/Make

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ normedtype_theory/urysohn.v
5555
normedtype_theory/vitali_lemma.v
5656
normedtype_theory/normedtype.v
5757

58+
functional_analysis/hahn_banach_theorem.v
59+
60+
5861
realfun.v
5962
sequences.v
6063
exp.v

0 commit comments

Comments
 (0)