Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 27b0a76

Browse files
committed
feat(ring_theory/adjoin): adjoin_range_eq_range_aeval (#9179)
Co-authored-by: Chris Hughes <chrishughes24@gmail.com>
1 parent bf0b5df commit 27b0a76

File tree

5 files changed

+30
-6
lines changed

5 files changed

+30
-6
lines changed

src/field_theory/splitting_field.lean

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -454,12 +454,14 @@ alg_equiv.symm $ alg_equiv.of_bijective
454454
(alg_hom.cod_restrict
455455
(adjoin_root.lift_hom _ x $ minpoly.aeval F x) _
456456
(λ p, adjoin_root.induction_on _ p $ λ p,
457-
(algebra.adjoin_singleton_eq_range F x).symm ▸ (polynomial.aeval _).mem_range.mpr ⟨p, rfl⟩))
457+
(algebra.adjoin_singleton_eq_range_aeval F x).symm ▸
458+
(polynomial.aeval _).mem_range.mpr ⟨p, rfl⟩))
458459
⟨(alg_hom.injective_cod_restrict _ _ _).2 $ (alg_hom.injective_iff _).2 $ λ p,
459460
adjoin_root.induction_on _ p $ λ p hp, ideal.quotient.eq_zero_iff_mem.2 $
460461
ideal.mem_span_singleton.2 $ minpoly.dvd F x hp,
461462
λ y,
462-
let ⟨p, hp⟩ := (set_like.ext_iff.1 (algebra.adjoin_singleton_eq_range F x) (y : R)).1 y.2 in
463+
let ⟨p, hp⟩ := (set_like.ext_iff.1
464+
(algebra.adjoin_singleton_eq_range_aeval F x) (y : R)).1 y.2 in
463465
⟨adjoin_root.mk _ p, subtype.eq hp⟩⟩
464466

465467
open finset

src/ring_theory/adjoin/basic.lean

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,29 @@ le_antisymm
206206
(λ p ⟨n, hn⟩ hp, by rw [alg_hom.map_mul, mv_polynomial.aeval_def _ (mv_polynomial.X _),
207207
mv_polynomial.eval₂_X]; exact subalgebra.mul_mem _ hp (subset_adjoin hn)))
208208

209-
theorem adjoin_singleton_eq_range (x : A) : adjoin R {x} = (polynomial.aeval x).range :=
209+
lemma adjoin_range_eq_range_aeval {σ : Type*} (f : σ → A) :
210+
adjoin R (set.range f) = (mv_polynomial.aeval f).range :=
211+
begin
212+
ext x,
213+
simp only [adjoin_eq_range, alg_hom.mem_range],
214+
split,
215+
{ rintros ⟨p, rfl⟩,
216+
use mv_polynomial.rename (function.surj_inv (@@set.surjective_onto_range f)) p,
217+
rw [← alg_hom.comp_apply],
218+
refine congr_fun (congr_arg _ _) _,
219+
ext,
220+
simp only [mv_polynomial.rename_X, function.comp_app, mv_polynomial.aeval_X, alg_hom.coe_comp],
221+
simpa [subtype.ext_iff] using function.surj_inv_eq (@@set.surjective_onto_range f) i },
222+
{ rintros ⟨p, rfl⟩,
223+
use mv_polynomial.rename (set.range_factorization f) p,
224+
rw [← alg_hom.comp_apply],
225+
refine congr_fun (congr_arg _ _) _,
226+
ext,
227+
simp only [mv_polynomial.rename_X, function.comp_app, mv_polynomial.aeval_X, alg_hom.coe_comp,
228+
set.range_factorization_coe] }
229+
end
230+
231+
theorem adjoin_singleton_eq_range_aeval (x : A) : adjoin R {x} = (polynomial.aeval x).range :=
210232
le_antisymm
211233
(adjoin_le $ set.singleton_subset_iff.2 ⟨polynomial.X, polynomial.eval₂_X _ _⟩)
212234
(λ y ⟨p, (hp : polynomial.aeval x p = y)⟩, hp ▸ polynomial.induction_on p

src/ring_theory/adjoin/power_basis.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ begin
4545
have := hx'.mem_span_pow,
4646
rw minpoly_eq at this,
4747
apply this,
48-
{ rw [adjoin_singleton_eq_range] at hy,
48+
{ rw [adjoin_singleton_eq_range_aeval] at hy,
4949
obtain ⟨f, rfl⟩ := (aeval x).mem_range.mp hy,
5050
use f,
5151
ext,

src/ring_theory/adjoin_root.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ polynomial.induction_on p (λ x, by { rw aeval_C, refl })
101101

102102
theorem adjoin_root_eq_top : algebra.adjoin R ({root f} : set (adjoin_root f)) = ⊤ :=
103103
algebra.eq_top_iff.2 $ λ x, induction_on f x $ λ p,
104-
(algebra.adjoin_singleton_eq_range R (root f)).symm ▸ ⟨p, aeval_eq p⟩
104+
(algebra.adjoin_singleton_eq_range_aeval R (root f)).symm ▸ ⟨p, aeval_eq p⟩
105105

106106
@[simp] lemma eval₂_root (f : polynomial R) : f.eval₂ (of f) (root f) = 0 :=
107107
by rw [← algebra_map_eq, ← aeval_def, aeval_eq, mk_self]

src/ring_theory/integral_closure.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ begin
168168
rcases finset.mem_image.1 hs with ⟨k, hk, rfl⟩, clear hk,
169169
exact (algebra.adjoin R {x}).pow_mem (algebra.subset_adjoin (set.mem_singleton _)) k },
170170
intros r hr, change r ∈ algebra.adjoin R ({x} : set A) at hr,
171-
rw algebra.adjoin_singleton_eq_range at hr,
171+
rw algebra.adjoin_singleton_eq_range_aeval at hr,
172172
rcases (aeval x).mem_range.mp hr with ⟨p, rfl⟩,
173173
rw ← mod_by_monic_add_div p hfm,
174174
rw ← aeval_def at hfx,

0 commit comments

Comments
 (0)