Skip to content

[Merged by Bors] - feat: LinearMap.HasFiniteRange and the associated relation#39468

Closed
ADedecker wants to merge 17 commits into
masterfrom
pm_hasFiniteRank
Closed

[Merged by Bors] - feat: LinearMap.HasFiniteRange and the associated relation#39468
ADedecker wants to merge 17 commits into
masterfrom
pm_hasFiniteRank

Conversation

@ADedecker

@ADedecker ADedecker commented May 16, 2026

Copy link
Copy Markdown
Member

We add two predicates on linear maps: HasFiniteRange says that the range is finitely generated, and HasNoetherianRange says that the range is noetherian. We also add the equivalence relation on linear maps saying that two maps differ by a linear map with noetherian range, and prove that it's compatible with addition and composition.

This was originally written by @PatrickMassot at the May 2026 ICERM workshop as part of the project on Fredholm operators.

This also adds four supporting lemmas: map_smul_le_map, range_smul_le_range, ker_le_ker_smul and isNoetherian_map.


Open in Gitpod

@github-actions github-actions Bot added the t-algebra Algebra (groups, rings, fields, etc) label May 16, 2026
@github-actions

github-actions Bot commented May 16, 2026

Copy link
Copy Markdown

PR summary cf64666bd1

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference
Mathlib.Algebra.Module.LinearMap.FiniteRange (new file) 1268

Declarations diff

+ HasFiniteRange
+ HasFiniteRange.add
+ HasFiniteRange.cofg_ker
+ HasFiniteRange.comp_left
+ HasFiniteRange.comp_right
+ HasFiniteRange.fg_range
+ HasFiniteRange.hasNoetherianRange
+ HasFiniteRange.neg
+ HasFiniteRange.of_finite_dom
+ HasFiniteRange.of_isNoetherian_rng
+ HasFiniteRange.smul
+ HasFiniteRange.sub
+ HasFiniteRange.zero
+ HasNoetherianRange
+ HasNoetherianRange.add
+ HasNoetherianRange.comp_left
+ HasNoetherianRange.comp_right
+ HasNoetherianRange.hasFiniteRange
+ HasNoetherianRange.isNoetherian_range
+ HasNoetherianRange.neg
+ HasNoetherianRange.of_isNoetherian_dom
+ HasNoetherianRange.of_isNoetherian_rng
+ HasNoetherianRange.quotient_ker
+ HasNoetherianRange.smul
+ HasNoetherianRange.sub
+ HasNoetherianRange.zero
+ equiv_comp
+ equiv_comp_left
+ equiv_comp_right
+ equiv_iff_eqLocus_coFG
+ equiv_iff_hasFiniteRange
+ equiv_iff_hasNoetherianRange
+ equiv_iff_isNoetherian_quotient_eqLocus
+ equiv_of_eqOn_coFG
+ equiv_of_eqOn_of_isNoetherian
+ finiteRange
+ hasFiniteRange_iff_range
+ hasNoetherianRange_iff_hasFiniteRange
+ hasNoetherianRange_iff_quotient_ker
+ hasNoetherianRange_iff_range
+ isNoetherian_map
+ ker_coFG_iff_hasFiniteRange
+ ker_le_ker_smul
+ map_smul_le_map
+ mem_finiteRange_iff_hasFiniteRange
+ mem_finiteRange_iff_hasNoetherianRange
+ range_smul_le_range

You can run this locally as follows
## from your `mathlib4` directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci

## summary with just the declaration names:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh <optional_commit>

## more verbose report:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh long <optional_commit>

The doc-module for scripts/pr_summary/declarations_diff.sh in the mathlib-ci repository contains some details about this script.


No changes to strong technical debt.
No changes to weak technical debt.

@ocfnash ocfnash left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think we should name the new file Mathlib.LinearAlgebra.LinearMap.FiniteRank rather than Mathlib.LinearAlgebra.FiniteRankLinearMap.

Other than this, and the question about what should be the definition, this all looks perfect.

Comment thread Mathlib/Algebra/Module/LinearMap/FiniteRange.lean
Comment thread Mathlib/LinearAlgebra/FiniteRankLinearMap.lean Outdated
@ocfnash ocfnash added the awaiting-author A reviewer has asked the author a question or requested changes. label May 19, 2026
@mathlib-dependent-issues mathlib-dependent-issues Bot added the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label May 23, 2026
@ADedecker

Copy link
Copy Markdown
Member Author

-awaiting-author

@github-actions github-actions Bot removed the awaiting-author A reviewer has asked the author a question or requested changes. label May 23, 2026
@ADedecker

Copy link
Copy Markdown
Member Author

Regarding the naming, there's no LinearAlgebra/LinearMap folder and I don't think we should create it just for this. But I am again open to other suggestions.

@ADedecker ADedecker changed the title feat: LinearMap.HasFiniteRank and the associated relation feat: LinearMap.HasFiniteRange and the associated relation May 23, 2026
@mathlib-dependent-issues mathlib-dependent-issues Bot removed the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label May 25, 2026
@mathlib-dependent-issues

Copy link
Copy Markdown

This PR/issue depends on:

@ocfnash ocfnash left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks! Very nice.

As to the location for the new file, I had a typo in this comment but I intended to suggest that the new file could be a sibling of the existing Defs file in which LinearMap is defined. That would make it: Mathlib.Algebra.Module.LinearMap.FiniteRange.

However what you have proposed is also fine so I'll let you decide.

bors d+

Comment on lines +162 to +163
theorem hasFiniteRange_iff_ker {f : V →ₗ[K] V₂} :
f.HasFiniteRange ↔ f.ker.CoFG :=

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Assuming the simpNF linter is happy I suggest we flip the LHS and RHS and add simp:

Suggested change
theorem hasFiniteRange_iff_ker {f : V →ₗ[K] V₂} :
f.HasFiniteRange ↔ f.ker.CoFG :=
@[simp] theorem ker_coFG_iff {f : V →ₗ[K] V₂} :
f.ker.CoFG ↔ f.HasFiniteRange :=

(if not, this can stay as it is)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Done, but I kept hasFiniteRange in the name.

@mathlib-bors

mathlib-bors Bot commented May 25, 2026

Copy link
Copy Markdown
Contributor

✌️ ADedecker can now approve this pull request. To approve and merge a pull request, simply reply with bors r+. More detailed instructions are available here.

@mathlib-triage mathlib-triage Bot added the delegated This pull request has been delegated to the PR author (or occasionally another non-maintainer). label May 25, 2026
@ADedecker

Copy link
Copy Markdown
Member Author

Thanks for the review!

bors merge

@mathlib-triage mathlib-triage Bot added the ready-to-merge This PR has been sent to bors. label May 25, 2026
@ADedecker

Copy link
Copy Markdown
Member Author

bors r-

@mathlib-bors

mathlib-bors Bot commented May 25, 2026

Copy link
Copy Markdown
Contributor

Canceled.

Address comments or fix if necessary, and then someone with permission can run bors r+.

@mathlib-triage mathlib-triage Bot removed ready-to-merge This PR has been sent to bors. delegated This pull request has been delegated to the PR author (or occasionally another non-maintainer). labels May 25, 2026
@ADedecker

Copy link
Copy Markdown
Member Author

bors merge

@mathlib-triage mathlib-triage Bot added the ready-to-merge This PR has been sent to bors. label May 25, 2026
mathlib-bors Bot pushed a commit that referenced this pull request May 25, 2026
We add two predicates on linear maps: `HasFiniteRange` says that the range is finitely generated, and `HasNoetherianRange` says that the range is noetherian. We also add the equivalence relation on linear maps saying that two maps differ by a linear map with noetherian range, and prove that it's compatible with addition and composition.

This was originally written by @PatrickMassot at the May 2026 ICERM workshop as part of the project on Fredholm operators.

This also adds four supporting lemmas: `map_smul_le_map`, `range_smul_le_range`, `ker_le_ker_smul` and `isNoetherian_map`.
@mathlib-bors

mathlib-bors Bot commented May 25, 2026

Copy link
Copy Markdown
Contributor

Pull request successfully merged into master.

Build succeeded:

@mathlib-bors mathlib-bors Bot changed the title feat: LinearMap.HasFiniteRange and the associated relation [Merged by Bors] - feat: LinearMap.HasFiniteRange and the associated relation May 25, 2026
@mathlib-bors mathlib-bors Bot closed this May 25, 2026
b-mehta pushed a commit to b-mehta/mathlib4 that referenced this pull request Jun 2, 2026
…r-community#39468)

We add two predicates on linear maps: `HasFiniteRange` says that the range is finitely generated, and `HasNoetherianRange` says that the range is noetherian. We also add the equivalence relation on linear maps saying that two maps differ by a linear map with noetherian range, and prove that it's compatible with addition and composition.

This was originally written by @PatrickMassot at the May 2026 ICERM workshop as part of the project on Fredholm operators.

This also adds four supporting lemmas: `map_smul_le_map`, `range_smul_le_range`, `ker_le_ker_smul` and `isNoetherian_map`.
Bergschaf pushed a commit to Bergschaf/mathlib4 that referenced this pull request Jun 3, 2026
…r-community#39468)

We add two predicates on linear maps: `HasFiniteRange` says that the range is finitely generated, and `HasNoetherianRange` says that the range is noetherian. We also add the equivalence relation on linear maps saying that two maps differ by a linear map with noetherian range, and prove that it's compatible with addition and composition.

This was originally written by @PatrickMassot at the May 2026 ICERM workshop as part of the project on Fredholm operators.

This also adds four supporting lemmas: `map_smul_le_map`, `range_smul_le_range`, `ker_le_ker_smul` and `isNoetherian_map`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge This PR has been sent to bors. t-algebra Algebra (groups, rings, fields, etc)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants