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(ring_theory/algebraic): alg_hom from an algebraic extension to itself is bijective #15873

Closed
wants to merge 11 commits into from

Conversation

alreadydone
Copy link
Collaborator

@alreadydone alreadydone commented Aug 5, 2022

  • Generalizes alg_hom.bijective and alg_equiv_equiv_alg_hom and move them so that they can be derived from the generalized versions. Upgrade alg_equiv_equiv_alg_hom to a mul_equiv by introducing the monoid instance alg_hom.End on self-alg_homs.

  • Show that algebraicity of an algebra is preserved under alg_equiv (alg_equiv.is_algebraic_iff).

Zulip


Open in Gitpod

@alreadydone alreadydone added awaiting-review The author would like community review of the PR t-algebra Algebra (groups, rings, fields etc) labels Aug 5, 2022
alreadydone and others added 2 commits August 5, 2022 10:36
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Comment on lines 684 to 690
λ x hx, begin
rw [mem_root_set_iff' hp, ← f.comp_algebra_map, ← map_map, eval_map],
erw [eval₂_hom, (mem_root_set_iff' (λ h, _) x).1 hx],
{ apply _root_.map_zero },
rw [← f.comp_algebra_map, ← map_map, h] at hp,
exact hp (polynomial.map_zero f),
end
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
λ x hx, begin
rw [mem_root_set_iff' hp, ← f.comp_algebra_map, ← map_map, eval_map],
erw [eval₂_hom, (mem_root_set_iff' (λ h, _) x).1 hx],
{ apply _root_.map_zero },
rw [← f.comp_algebra_map, ← map_map, h] at hp,
exact hp (polynomial.map_zero f),
end
λ x, begin
have H : map (algebra_map T S) p ≠ 0,
{ contrapose! hp,
rw [← f.comp_algebra_map, ← map_map, hp, polynomial.map_zero] },
simp_rw [mem_root_set_iff' hp, mem_root_set_iff' H, eval_map, ← alg_hom_eval₂_algebra_map],
exact λ hx, hx.symm ▸ f.map_zero
end

It's possible that the have here should be a lemma? If we don't already have it (it seems simple!)

Copy link
Collaborator

Choose a reason for hiding this comment

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

Does polynomial.map_ne_zero help?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I golfed the proof further down to three lines. polynomial.map_ne_zero is for maps out of a division ring to a nontrivial target, where we have injectivity, so it doesn't help here (we doesn't even assume T is a domain).

Here we derives p.map (algebra_map T S) ≠ 0 from p.map (algebra_map T S') ≠ 0 from the existence of an alg_hom f, which is sort of "comap_ne_zero f`. I think this is the lemma @linesthatinterlace suggest that we extract, but it seems no other theorems in the same file can benefit from this, so I'd rather not.

@alreadydone alreadydone added awaiting-author A reviewer has asked the author a question or requested changes and removed awaiting-review The author would like community review of the PR labels Aug 6, 2022

/-- Bijection between algebra equivalences and algebra homomorphisms -/
noncomputable
def alg_equiv_equiv_alg_hom (ha : algebra.is_algebraic K L) : (L ≃ₐ[K] L) ≃ (L →ₐ[K] L) :=
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
def alg_equiv_equiv_alg_hom (ha : algebra.is_algebraic K L) : (L ≃ₐ[K] L) ≃ (L →ₐ[K] L) :=
@[simps] def alg_equiv_equiv_alg_hom (ha : algebra.is_algebraic K L) : (L ≃ₐ[K] L) ≃ (L →ₐ[K] L) :=

Also, can you prove that this equiv respects composition (it is a monoid equiv, but L →ₐ[K] L doesn't seem to be a monoid)?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I've introduced alg_hom.End by copying alg_equiv.aut and showed this is a mul_equiv. Moreover I moved the finite_dimensional case to this file but kept the original names. Let's see if CI passes!

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Alright CI passed. @riccardobrasca Can you check if you're happy with the new changes? Due to the upgrade from equiv to mul_equiv I have to insert .to_equiv at two occasions in galois.lean. Moreover one proof in an apparently unrelated file broke and I'm not sure why ...

@alreadydone alreadydone added awaiting-CI The author would like to see what CI has to say before doing more work. and removed awaiting-author A reviewer has asked the author a question or requested changes labels Aug 11, 2022
@alreadydone alreadydone added the awaiting-review The author would like community review of the PR label Aug 11, 2022
@alreadydone alreadydone removed the awaiting-CI The author would like to see what CI has to say before doing more work. label Aug 11, 2022
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.

Thanks 🎉

bors merge

@leanprover-community-bot-assistant leanprover-community-bot-assistant added ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.) and removed awaiting-review The author would like community review of the PR labels Aug 11, 2022
bors bot pushed a commit that referenced this pull request Aug 11, 2022
… itself is bijective (#15873)

+ Generalizes `alg_hom.bijective` and [alg_equiv_equiv_alg_hom](https://leanprover-community.github.io/mathlib_docs/linear_algebra/finite_dimensional.html#alg_equiv_equiv_alg_hom) and move them so that they can be derived from the generalized versions. Upgrade `alg_equiv_equiv_alg_hom` to a `mul_equiv` by introducing the monoid instance `alg_hom.End` on self-alg_homs.

+ Show that algebraicity of an algebra is preserved under alg_equiv (`alg_equiv.is_algebraic_iff`).

[Zulip](https://leanprover.zulipchat.com/#narrow/stream/304774-FLT-regular/topic/Project.20status/near/292112817)
@bors
Copy link

bors bot commented Aug 11, 2022

Pull request successfully merged into master.

Build succeeded:

@bors bors bot changed the title feat(ring_theory/algebraic): alg_hom from an algebraic extension to itself is bijective [Merged by Bors] - feat(ring_theory/algebraic): alg_hom from an algebraic extension to itself is bijective Aug 11, 2022
@bors bors bot closed this Aug 11, 2022
@bors bors bot deleted the algebraic_bijective branch August 11, 2022 18:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.) t-algebra Algebra (groups, rings, fields etc)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants