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
Conversation
λ 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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
λ 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!)
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
src/ring_theory/algebraic.lean
Outdated
|
||
/-- 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) := |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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)?
There was a problem hiding this comment.
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!
There was a problem hiding this comment.
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 ...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks 🎉
bors merge
… 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)
Pull request successfully merged into master. Build succeeded: |
alg_hom
from an algebraic extension to itself is bijectivealg_hom
from an algebraic extension to itself is bijective
Generalizes
alg_hom.bijective
and alg_equiv_equiv_alg_hom and move them so that they can be derived from the generalized versions. Upgradealg_equiv_equiv_alg_hom
to amul_equiv
by introducing the monoid instancealg_hom.End
on self-alg_homs.Show that algebraicity of an algebra is preserved under alg_equiv (
alg_equiv.is_algebraic_iff
).Zulip