Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
363a6d5
Hahn-Banach theorem
mkerjean Mar 20, 2026
2308cce
minor linting
affeldt-aist Apr 15, 2026
3928fc9
definition of sub normed module
affeldt-aist Apr 15, 2026
b026dbc
todo
mkerjean Apr 15, 2026
c63bb15
subNormedModType factory
mkerjean Apr 17, 2026
8bd0de8
subNormedModType
mkerjean Apr 17, 2026
859a01b
fail subconvextvs
mkerjean Apr 17, 2026
11e1d1e
clean
mkerjean Apr 19, 2026
aa8a3ef
filter by hand (still broken)
affeldt-aist Apr 21, 2026
ce47738
instances instead of factories
mkerjean Apr 21, 2026
40c601b
subConvexTvsType at last
affeldt-aist Apr 21, 2026
b47f850
proofs
mkerjean Apr 21, 2026
52d186c
proofs
mkerjean Apr 21, 2026
12ffcf5
proofs
mkerjean Apr 22, 2026
97f25e4
proofs
mkerjean Apr 22, 2026
63e4d8e
proofs
mkerjean Apr 22, 2026
5ec852f
simplification of add_sub
affeldt-aist Apr 22, 2026
01fae6d
base convexe wip
mkerjean Apr 24, 2026
5db31d4
base convexe wip
mkerjean Apr 24, 2026
603184c
base convexe wip
mkerjean Apr 24, 2026
1cd50dd
missing join ?
mkerjean Apr 25, 2026
765ae55
sub locally convex
mkerjean May 1, 2026
9957359
lint
affeldt-aist May 2, 2026
75ef681
fix
affeldt-aist May 2, 2026
6d245eb
upd changelog (wip)
affeldt-aist May 2, 2026
ceece00
fix changelog
affeldt-aist May 2, 2026
b3df755
all_ssreflect -> all_{boot,order}
affeldt-aist May 3, 2026
655eac6
trying to green CI
affeldt-aist May 3, 2026
d621115
dummy structure to cheat the CI
affeldt-aist May 8, 2026
4257338
add doc
affeldt-aist May 9, 2026
fd4acf0
fix changelog
affeldt-aist May 9, 2026
03afbde
fix changelog
affeldt-aist May 9, 2026
892079e
fix changelog
affeldt-aist May 9, 2026
7c11d29
fix changelog
affeldt-aist May 9, 2026
908b065
deleting comments
mkerjean May 9, 2026
f4885c1
finalize changelog and doc
affeldt-aist May 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions CHANGELOG_UNRELEASED.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,6 @@
+ lemma `is_diff_mx`
+ instance `is_diff_mx`

### Changed

- moved from `measurable_structure.v` to `classical_sets.v`:
+ definition `preimage_set_system`
+ lemmas `preimage_set_system0`, `preimage_set_systemU`, `preimage_set_system_comp`,
`preimage_set_system_id`
- in `functions.v`:
+ lemmas `linfunP`, `linfun_eqP`
+ instances of `SubLmodule` and `pointedType` on `{linear _->_ | _ }`
Expand All @@ -123,9 +117,14 @@

- new files `signed_measure.v` and `radon_nikodym.v`
+ with the contents of `charge.v` (deprecated)

### Changed

- moved from `measurable_structure.v` to `classical_sets.v`:
+ definition `preimage_set_system`
+ lemmas `preimage_set_system0`, `preimage_set_systemU`, `preimage_set_system_comp`,
`preimage_set_system_id`

- moved from `measurable_structure.v` to `classical_sets.v`:
+ definition `preimage_set_system`
+ lemmas `preimage_set_system0`, `preimage_set_systemU`, `preimage_set_system_comp`,
Expand Down
52 changes: 52 additions & 0 deletions CHANGELOG_UNRELEASED_new.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Changelog (unreleased)

## [Unreleased]

### Added

- in `mathcomp_extra.v`:
+ lemmas `divDl_ge0`, `divDl_le1`
+ mixin `Zmodule_isSubNormed`
+ mixin `isTmp` and structure `SubNormedZmodule_tmp` (temporary kludge)

- in `unstable.v`:
+ lemmas `divD_onem`

- in `filter.v`:
+ mixin `isSubNbhs`, structure `SubNbhs`, notation `subNbhsType`

- in `topology_structure.v`:
+ structure `SubTopological`, notation `subTopologicalType`

- in `tvs.v`:
+ structure `SubConvexTvs`, notation `subConvexTvsType`

- in `normed_module.v`:
+ structure `SubNormedModule`, notation `subNormedModType`
+ instance `ent_xsection_filter`
+ factory `SubLmodule_isSubNormedmodule`

- new file `hahn_banach_theorem.v`:
+ module `LinearGraph`
* definitions `graph`, `linear_graph`
* lemmas `lingraph_00`, `lingraphZ`, `lingraphD`
+ module `HahnBanachZorn`
* definitions `extend_graph`, `le_graph`, `functional_graph`, `le_extend_graph`
* record `zorn_type`
* definition `zphi`
* lemma `zorn_type_eq`
* definition `zornS`
* lemmas `zornS_ex`, `domain_extend`, `hahn_banach_witness`
+ theorems `hahn_banach_extension`, `hahn_banach_extension_normed`

### Deprecated

### Renamed

### Generalized

### Removed




2 changes: 2 additions & 0 deletions _CoqProject
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ theories/normedtype_theory/urysohn.v
theories/normedtype_theory/vitali_lemma.v
theories/normedtype_theory/normedtype.v

theories/functional_analysis/hahn_banach_theorem.v

theories/sequences.v
theories/realfun.v
theories/exp.v
Expand Down
49 changes: 34 additions & 15 deletions classical/filter.v
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(* mathcomp analysis (c) 2017 Inria and AIST. License: CeCILL-C. *)
(* mathcomp analysis (c) 2026 Inria and AIST. License: CeCILL-C. *)
From HB Require Import structures.
From mathcomp Require Import all_ssreflect_compat all_algebra finmap.
From mathcomp Require Import boolp classical_sets functions wochoice.
Expand All @@ -15,21 +15,31 @@ From mathcomp Require Import cardinality mathcomp_extra fsbigop set_interval.
(* *)
(* ## Structure of filter *)
(* ``` *)
(* filteredType U == interface type for types whose *)
(* elements represent sets of sets on U *)
(* These sets are intended to be filters *)
(* on U but this is not enforced yet. *)
(* The HB class is called Filtered. *)
(* It extends Pointed. *)
(* nbhs p == set of sets associated to p (in a *)
(* filtered type) *)
(* pfilteredType U == a pointed and filtered type *)
(* hasNbhs == factory for filteredType *)
(* filteredType U == interface type for types whose elements *)
(* represent sets of sets on U *)
(* These sets are intended to be filters on U *)
(* but this is not enforced yet. *)
(* The HB class is called Filtered. *)
(* It extends Pointed. *)
(* nbhs p == set of sets associated to p (in a filtered *)
(* type) *)
(* pfilteredType U == a pointed and filtered type *)
(* hasNbhs == factory for filteredType *)
(* nbhsType == type of a structure that has a set system *)
(* of neighborhoods associated to each point *)
(* pnbhsType == same has nbhsType for pointed types *)
(* continuous f == f is continuous w.r.t the topology *)
(* filterI_iter F n == nth stage of recursively building the *)
(* filter of finite intersections of F *)
(* finI_from D f == set of \bigcap_(i in E) f i where E is *)
(* a finite subset of D *)
(* isSubNbhs V S U == interface that states the continuity of val *)
(* for U which has a subChoiceType and a *)
(* nbhsType *)
(* subNbhsType V S == structure that extends a *)
(* subChoiceType/nbhsType with the isSubNbhs *)
(* interface *)
(* The HB class is SubNbhs. *)
(* filterI_iter F n == nth stage of recursively building the *)
(* filter of finite intersections of F *)
(* finI_from D f == set of \bigcap_(i in E) f i where E is a *)
(* a finite subset of D *)
(* ``` *)
(* *)
(* We endow several standard types with the structure of filter, e.g.: *)
Expand Down Expand Up @@ -951,6 +961,15 @@ Lemma continuous_comp (R S T : nbhsType) (f : R -> S) (g : S -> T) x :
{for x, continuous (g \o f)}.
Proof. exact: cvg_comp. Qed.

HB.mixin Record isSubNbhs
(V : nbhsType) (S : pred V) U & SubChoice V S U & Nbhs U := {
continuous_valE : continuous (val : U -> V)
}.

#[short(type="subNbhsType")]
HB.structure Definition SubNbhs (V : nbhsType) (S : pred V) :=
{ U of SubChoice V S U & Nbhs U & isSubNbhs V S U}.

Lemma near_fun (T T' : nbhsType) (f : T -> T') (x : T) (P : T' -> Prop) :
{for x, continuous f} ->
(\forall y \near f x, P y) -> (\near x, P (f x)).
Expand Down
36 changes: 34 additions & 2 deletions classical/mathcomp_extra.v
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
(* mathcomp analysis (c) 2026 Inria and AIST. License: CeCILL-C. *)
From HB Require Import structures.
From mathcomp Require Import all_ssreflect_compat finmap ssralg ssrnum ssrint.

(**md**************************************************************************)
Expand Down Expand Up @@ -93,10 +94,41 @@ Proof. by case: C => //= /ltW. Qed.
(* MathComp 2.6 additions *)
(**************************)

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

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

Lemma divDl_ge0 (R : numDomainType) (s t : R) (s0 : 0 <= s) (t0 : 0 <= t) :
0 <= s / (s + t).
Proof.
by apply: divr_ge0 => //; apply: addr_ge0.
Qed.

Lemma divDl_le1 (R : numFieldType) (s t : R) (s0 : 0 <= s) (t0 : 0 <= t) :
s / (s + t) <= 1.
Proof.
move: s0; rewrite le0r => /predU1P [->|s0]; first by rewrite mul0r.
by rewrite ler_pdivrMr ?mul1r ?lerDl // ltr_wpDr.
Qed.

HB.mixin Record Zmodule_isSubNormed (R : numDomainType)
(M : normedZmodType R) (S : pred M) T & SubChoice M S T
& Num.NormedZmodule R T := {
norm_valE : forall x , @Num.norm _ M ((val : T -> M) x) = @Num.norm _ T x
}.

(* SubNormedZmodule will appear in MC 2.6.0.
However, just duplicating it here causes an HB error in the CI with MC 2.6.0.
We therefore reproduce it with a different name and add a dummy
mixin to it to satisfy HB.
This will be removed when dropping support for MC 2.5.0 *)
HB.mixin Record isTmp (R : numDomainType) (V : normedZmodType R) (S : pred V)
(U : Type) := { field_tmp : True }.

#[short(type="subNormedZmodType")]
HB.structure Definition SubNormedZmodule_tmp (R : numDomainType)
(V : normedZmodType R) (S : pred V) :=
{ U of @isTmp R V S U & SubChoice V S U & Num.NormedZmodule R U &
GRing.SubZmodule V S U & Zmodule_isSubNormed R V S U }.
7 changes: 7 additions & 0 deletions classical/unstable.v
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,13 @@ Qed.
Lemma onemV (F : numFieldType) (x : F) : x != 0 -> x^-1.~ = (x - 1) / x.
Proof. by move=> ?; rewrite mulrDl divff// mulN1r. Qed.

Lemma divD_onem (R : realFieldType) (s t : R) (s0 : 0 < s) (t0 : 0 < t) :
(s / (s + t)).~ = t / (s + t).
Proof.
rewrite /onem.
by rewrite -(@divff _ (s + t)) ?gt_eqF ?addr_gt0// -mulrBl (addrC s) addrK.
Qed.

Lemma lez_abs2 (a b : int) : 0 <= a -> a <= b -> (`|a| <= `|b|)%N.
Proof. by case: a => //= n _; case: b. Qed.

Expand Down
2 changes: 2 additions & 0 deletions theories/Make
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ normedtype_theory/urysohn.v
normedtype_theory/vitali_lemma.v
normedtype_theory/normedtype.v

functional_analysis/hahn_banach_theorem.v

realfun.v
sequences.v
exp.v
Expand Down
Loading
Loading