Skip to content

feat(LinearAlgebra): rank-nullity theorems for Submodule map/comap#40599

Open
ChiCubed wants to merge 2 commits into
leanprover-community:masterfrom
ChiCubed:x3/relative-rank-nullity
Open

feat(LinearAlgebra): rank-nullity theorems for Submodule map/comap#40599
ChiCubed wants to merge 2 commits into
leanprover-community:masterfrom
ChiCubed:x3/relative-rank-nullity

Conversation

@ChiCubed

Copy link
Copy Markdown
Contributor

We show forms of the rank-nullity theorem involving Submodule.map and Submodule.comap. Together with LinearMap.ker_comp this provides a formula for the rank of the kernel of a composite (and, in finite dimensions at least, for the rank of the range).


I didn't explicitly write the aforementioned formula for rank ker (f ∘ g) since it is just LinearMap.ker_comp followed by LinearMap.lift_rank_comap, but perhaps it should be added for discoverability?

Open in Gitpod

@github-actions github-actions Bot added the new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community! label Jun 14, 2026
@github-actions

Copy link
Copy Markdown

Welcome new contributor!

Thank you for contributing to Mathlib! If you haven't done so already, please review our contribution guidelines, as well as the style guide and naming conventions. In particular, we kindly remind contributors that we have guidelines regarding the use of AI when making pull requests.

We use a review queue to manage reviews. If your PR does not appear there, it is probably because it is not successfully building (i.e., it doesn't have a green checkmark), has the awaiting-author tag, or another reason described in the Lifecycle of a PR. The review dashboard has a dedicated webpage which shows whether your PR is on the review queue, and (if not), why.

If you haven't already done so, please come to https://leanprover.zulipchat.com/, introduce yourself, and mention your new PR.

Thank you again for joining our community.

@github-actions

github-actions Bot commented Jun 14, 2026

Copy link
Copy Markdown

PR summary 13c9652f88

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff (regex)

+ LinearMap.lift_rank_comap
+ LinearMap.lift_rank_map_add_rank_ker_inf
+ LinearMap.rank_comap
+ LinearMap.rank_map_add_rank_ker_inf
+ ker_submoduleComap
+ ker_submoduleMap
+ map_subtype_submoduleOf
+ range_submoduleComap
+ range_submoduleMap
+ submoduleOfEquivInf

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.

Declarations diff (Lean)

Lean-aware diff — post-build, computed from the Lean environment (commit 13c9652).

  • +10 new declarations
  • −0 removed declarations
+LinearMap.ker_submoduleComap
+LinearMap.ker_submoduleMap
+LinearMap.lift_rank_comap
+LinearMap.lift_rank_map_add_rank_ker_inf
+LinearMap.range_submoduleComap
+LinearMap.range_submoduleMap
+LinearMap.rank_comap
+LinearMap.rank_map_add_rank_ker_inf
+Submodule.map_subtype_submoduleOf
+Submodule.submoduleOfEquivInf

No changes to strong technical debt.

No changes to weak technical debt.

Current commit 13c9652f88
Reference commit 4fcc8d62a4

This script lives in the mathlib-ci repository. To run it locally, from your mathlib4 directory:

git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci
../mathlib-ci/scripts/reporting/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

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

/-- If `p ≤ q`, then `p` as a subgroup of `q` is isomorphic to `p`. -/
theorem map_subtype_submoduleOf (p q : Submodule R M) :
map q.subtype (p.submoduleOf q) = (p ⊓ q :) := by

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This one doesn't need (_ :)

Suggested change
map q.subtype (p.submoduleOf q) = (p ⊓ q :) := by
map q.subtype (p.submoduleOf q) = p ⊓ q := by

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community! t-algebra Algebra (groups, rings, fields, etc)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants