Skip to content

Normed vector types, infinite norm, norm equivalence thm, continuity …#1718

Open
Tragicus wants to merge 5 commits intomath-comp:masterfrom
Tragicus:linear_findim_continuous
Open

Normed vector types, infinite norm, norm equivalence thm, continuity …#1718
Tragicus wants to merge 5 commits intomath-comp:masterfrom
Tragicus:linear_findim_continuous

Conversation

@Tragicus
Copy link
Collaborator

Continuity of linear functions in finite dimension

Motivation for this change
Checklist
  • added corresponding entries in CHANGELOG_UNRELEASED.md
  • added corresponding documentation in the headers

Reference: How to document

Merge policy

As a rule of thumb:

  • PRs with several commits that make sense individually and that
    all compile are preferentially merged into master.
  • PRs with disorganized commits are very likely to be squash-rebased.
Reminder to reviewers

@CohenCyril
Copy link
Member

@mkerjean FYI

@affeldt-aist affeldt-aist self-requested a review September 24, 2025 09:04
@affeldt-aist affeldt-aist added this to the 1.15.0 milestone Nov 4, 2025
@affeldt-aist
Copy link
Member

99d840c is just a linting commit

@affeldt-aist
Copy link
Member

I was also wondering whether we should not try to extract the lemmas about bigmax (of non-negative terms using 0 as the default element) or try to use bigmax with {nonneg _} because I know of at least to other PRs that are using the same elements (to deal with mx_norm or with variations of functions).

@affeldt-aist affeldt-aist modified the milestones: 1.15.0, 1.16.0 Jan 15, 2026
@Tragicus Tragicus force-pushed the linear_findim_continuous branch from 99d840c to 994f950 Compare January 20, 2026 14:01
@CohenCyril CohenCyril force-pushed the linear_findim_continuous branch from 1a0fa98 to 6f03a34 Compare February 28, 2026 00:08
@affeldt-aist
Copy link
Member

For example, Zmodule_isSemiNormed in MathComp provides a similar interface with the difference that norm is one of the field of the record (whereas here it is the subject). I guess the apparent duplication is unavoidable but doesn't it deserve a comment in the code?

@Tragicus Tragicus force-pushed the linear_findim_continuous branch 4 times, most recently from c7c7aa1 to e09f221 Compare March 6, 2026 14:09
Variable B : (\dim V').-tuple V.
Hypothesis Bbasis : basis_of V' B.

Definition max_norm x := \big[Order.max/0]_(i < \dim V') `|coord B i x|.
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inference of a Norm.type for max_norm fails because the instance requires B to be a basis. However, it feels wrong to me to add the hypothesis in the definition of max_norm. What do you think?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about adding the hypothesis "temporarily"? Just leave an issue to be addressed later or add a warning to indicate to the user that it is experimental. I apologize for proposing this option without understanding completely the problem but I was under the impression that other users (@mkerjean , @agontard) also have an interest in the abstraction.

Copy link
Member

@CohenCyril CohenCyril Mar 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Uh oh... this is more than fishy! This definition does depend on a basis (and not only the fact that the given tuple is a basis) and is thus morally not a valid vector space definition, which ought to be invariant wrt to the choice of a basis, and this one is clearly not. This is exactly why this definition does depend on a choice of basis. What it does is build the (unique) normed space on top of V that makes the given basis normal. This means that max_norm is probably not the right name (it would be the case when given a function, finite function or tuple with values in a normed vector space), probably the right name is something like norm_from_basis B Bbasis and normedVect_from_basis B Basis .

Copy link
Member

@CohenCyril CohenCyril Mar 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

However we can do slightly better: indeed we can amend the given candidate B, keeping the smallest initial family that is generating, pruning it in order to make it free, completing it thus making a basis out of it. If B was indeed a basis, the tuple would stay the same, otherwise we have a non canonical normed vector space, but that's life. It can still be useful though, because if we give it a free family, the generated norm will be unique on the vector space generated by this family, which is what a user might expect. I believe this is the right way to go.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can probably go further and generate a Hilbert space :)

Copy link
Member

@CohenCyril CohenCyril Mar 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No you do not have to assume B is generating, you can complete it to be generating. (I was tired when I wrote my previous messages)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, true, and in that case I might as well start from an empty B, i.e. get rid of B completely.

Copy link
Member

@CohenCyril CohenCyril Mar 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No... please don't do that. 😿 we have to be able to provide a basis!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have to be able to mention a basis that is normed.

Copy link
Member

@CohenCyril CohenCyril Mar 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed it is not useful for your application, but it is nice to control which class of basis become normed.

To answer your other question the max_norm I had in mind would be the norm of a product of normed vector spaces, e.g. vT ^ i or more generally {dffun forall i : 'I_n, vT_ i} where vT_ : normedVectType^i.

@affeldt-aist affeldt-aist force-pushed the linear_findim_continuous branch from e09f221 to 58ea15c Compare March 12, 2026 02:17
@affeldt-aist
Copy link
Member

I have rebased this PR on the current master and pushed force. There was a few conflicts because we recently generalized and moved a few lemmas from normed_module.v.

Comment on lines +642 to +643
Variables (K : numFieldType) (V : vectType K).
Let V' := @fullv _ V.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Convention is:

Suggested change
Variables (K : numFieldType) (V : vectType K).
Let V' := @fullv _ V.
Variables (K : numFieldType) (vT : vectType K).
Let V' := {:vT}

And V' can be inlined.

@affeldt-aist affeldt-aist modified the milestones: 1.16.0, 1.17.0 Mar 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants