Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Merged by Bors] - feat(LinearAlgebra): the Erdős-Kaplansky theorem #9159

Closed
wants to merge 20 commits into from

Conversation

alreadydone
Copy link
Contributor

@alreadydone alreadydone commented Dec 20, 2023

The dimension of an infinite dimensional dual space is equal to its cardinality. As a consequence (linearEquiv_dual_iff_finiteDimensional), a vector space is isomorphic to its dual iff it's finite dimensional.

The main argument is from https://mathoverflow.net/a/168624. There is a slicker proof in the field case but Vandermonde determinants don't work in a non-commutative ring.

Resolves TODO item posed by Julian Külshammer


Open in Gitpod

@alreadydone alreadydone added awaiting-review The author would like community review of the PR awaiting-CI t-algebra Algebra (groups, rings, fields etc) labels Dec 20, 2023
@alreadydone alreadydone changed the base branch from Cardinal_mk_closure to master December 20, 2023 09:15
@leanprover-community-mathlib4-bot leanprover-community-mathlib4-bot added the blocked-by-other-PR This PR depends on another PR to Mathlib label Dec 20, 2023
@leanprover-community-mathlib4-bot leanprover-community-mathlib4-bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. label Dec 21, 2023
refine Finset.sum_eq_zero fun i hi ↦ ?_
replace eq0 := congr_arg L.subtype (congr_fun eq0 ⟨i, hi⟩)
rw [Finset.sum_apply, map_sum] at eq0
have : SMulCommClass Lᵐᵒᵖ K K := ⟨fun _ _ _ ↦ mul_assoc _ _ _⟩
Copy link
Collaborator

Choose a reason for hiding this comment

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

Shouldn't this SMulCommClass exist somewhere in mathlib? either as an instance, or at least
as something that can be invoked right away?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The action of Lᵐᵒᵖ on K is itself obtained manually earlier in the proof rather than automatically:

letI := Module.compHom K (RingHom.op L.subtype)

So we can't expect Lean to know about the SMulCommClass here. I think mathlib currently lack actions by MulOpposite of subobjects and it feels like a big project to add them all, although actions by subobjects of MulOpposite should already be obtainable via typeclass inference, but we seem to be lacking a Subring analogue of Subgroup.op.

rw [e.rank_eq, e.toEquiv.cardinal_eq]
apply rank_pi_infinite

theorem lift_rank_lt_rank_dual' {V : Type v} [AddCommGroup V] [Module K V]
Copy link
Collaborator

Choose a reason for hiding this comment

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

(untested) can this theorem be proved as a lt_of_le_of_lt from a general lift_le type lemma, and the Erdös-Kaplansky?

Copy link
Contributor Author

@alreadydone alreadydone Dec 25, 2023

Choose a reason for hiding this comment

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

I'm not sure what you have in mind? The main content of this proof is that any field K is Nontrivial, so r < 2^r ≤ #(K^r) = rank_K(K^r) (where r = Module.rank K V and the equality is by Erdös-Kaplansky).

@leanprover-community-mathlib4-bot leanprover-community-mathlib4-bot removed the blocked-by-other-PR This PR depends on another PR to Mathlib label Dec 27, 2023
@alreadydone alreadydone removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. label Dec 27, 2023
Copy link
Member

@jcommelin jcommelin left a comment

Choose a reason for hiding this comment

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

LGTM, one minor comment.

bors d+

erw [nat_lt_lift_iff, one_lt_iff_nontrivial]
infer_instance

theorem lift_rank_lt_rank_dual {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V]
Copy link
Member

Choose a reason for hiding this comment

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

Should we have versions of these last two results in the equi-universic setting, that avoid the Cardinal.lift?
Maybe they should have a ' in their name, and the results should come with docstrings that cross-ref each other.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Certainly! No need of ', just remove lift from the names. (I use ' for the division ring version and no ' for the field version in this PR.)

@mathlib-bors
Copy link
Contributor

mathlib-bors bot commented Dec 27, 2023

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

@leanprover-community-mathlib4-bot leanprover-community-mathlib4-bot added delegated and removed awaiting-review The author would like community review of the PR labels Dec 27, 2023
@alreadydone alreadydone added the auto-merge-after-CI Please do not add manually. Requests for a bot to merge automatically once CI is done. label Dec 27, 2023
@leanprover-community-mathlib4-bot
Copy link
Collaborator

As this PR is labelled auto-merge-after-CI, we are now sending it to bors:

bors merge

mathlib-bors bot pushed a commit that referenced this pull request Dec 27, 2023
The dimension of an infinite dimensional dual space is equal to its cardinality. As a consequence (`linearEquiv_dual_iff_finiteDimensional`), a vector space is isomorphic to its dual iff it's finite dimensional.

The [main argument](https://github.com/leanprover-community/mathlib4/pull/9159/files#diff-cb173017e1157ddc4b9f868be06c18ec2a38f8cf82e856e18d59ed49f97395d8R146) is from https://mathoverflow.net/a/168624. There is a [slicker proof](https://mathoverflow.net/a/420455/3332) in the field case but Vandermonde determinants don't work in a non-commutative ring.

Resolves [TODO item](https://leanprover-community.github.io/mathlib4_docs/Mathlib/LinearAlgebra/Dual.html#TODO) posed by Julian Külshammer

- [x] depends on: #8941
- [x] depends on: #8942



Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>
@mathlib-bors
Copy link
Contributor

mathlib-bors bot commented Dec 27, 2023

Pull request successfully merged into master.

Build succeeded:

@mathlib-bors mathlib-bors bot changed the title feat(LinearAlgebra): the Erdős-Kaplansky theorem [Merged by Bors] - feat(LinearAlgebra): the Erdős-Kaplansky theorem Dec 27, 2023
@mathlib-bors mathlib-bors bot closed this Dec 27, 2023
@mathlib-bors mathlib-bors bot deleted the DimPiModule branch December 27, 2023 20:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
auto-merge-after-CI Please do not add manually. Requests for a bot to merge automatically once CI is done. delegated t-algebra Algebra (groups, rings, fields etc)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants