File: Mathlib/RingTheory/Polynomial/Eisenstein/IsIntegral.lean

full_name: _aux_Mathlib_RingTheory_Polynomial_Eisenstein_IsIntegral___macroRules_term𝓟_1
code: local notation "𝓟" => Submodule.span ℤ {(p : ℤ)}
goal: Lean.Macro

full_name: _aux_Mathlib_RingTheory_Polynomial_Eisenstein_IsIntegral___unexpand_Submodule_span_1
code: local notation "𝓟" => Submodule.span ℤ {(p : ℤ)}
goal: Lean.PrettyPrinter.Unexpander

full_name: cyclotomic_comp_X_add_one_isEisensteinAt
code: theorem cyclotomic_comp_X_add_one_isEisensteinAt [hp : Fact p.Prime] :
    ((cyclotomic p ℤ).comp (X + 1)).IsEisensteinAt 𝓟 
goal: ((Polynomial.cyclotomic p ℤ).comp (Polynomial.X + 1)).IsEisensteinAt (Submodule.span ℤ {↑p})

full_name: cyclotomic_prime_pow_comp_X_add_one_isEisensteinAt
code: theorem cyclotomic_prime_pow_comp_X_add_one_isEisensteinAt [hp : Fact p.Prime] (n : ℕ) :
    ((cyclotomic (p ^ (n + 1)) ℤ).comp (X + 1)).IsEisensteinAt 𝓟 
goal: ((Polynomial.cyclotomic (p ^ (n + 1)) ℤ).comp (Polynomial.X + 1)).IsEisensteinAt (Submodule.span ℤ {↑p})

full_name: _aux_Mathlib_RingTheory_Polynomial_Eisenstein_IsIntegral___macroRules_term𝓟_2
code: local notation "𝓟" => Submodule.span R {(p : R)}
goal: Lean.Macro

full_name: _aux_Mathlib_RingTheory_Polynomial_Eisenstein_IsIntegral___unexpand_Submodule_span_2
code: local notation "𝓟" => Submodule.span R {(p : R)}
goal: Lean.PrettyPrinter.Unexpander

full_name: dvd_coeff_zero_of_aeval_eq_prime_smul_of_minpoly_isEisensteinAt
code: /-- Let `K` be the field of fraction of an integrally closed domain `R` and let `L` be a separable
extension of `K`, generated by an integral power basis `B` such that the minimal polynomial of
`B.gen` is Eisenstein at `p`. Given `z : L` integral over `R`, if `Q : R[X]` is such that
`aeval B.gen Q = p • z`, then `p ∣ Q.coeff 0`. -/
theorem dvd_coeff_zero_of_aeval_eq_prime_smul_of_minpoly_isEisensteinAt {B : PowerBasis K L}
    (hp : Prime p) (hBint : IsIntegral R B.gen) {z : L} {Q : R[X]} (hQ : aeval B.gen Q = p • z)
    (hzint : IsIntegral R z) (hei : (minpoly R B.gen).IsEisensteinAt 𝓟) : p ∣ Q.coeff 0 
goal: p ∣ Q.coeff 0

full_name: mem_adjoin_of_dvd_coeff_of_dvd_aeval
code: theorem mem_adjoin_of_dvd_coeff_of_dvd_aeval {A B : Type*} [CommSemiring A] [CommRing B]
    [Algebra A B] [NoZeroSMulDivisors A B] {Q : A[X]} {p : A} {x z : B} (hp : p ≠ 0)
    (hQ : ∀ i ∈ range (Q.natDegree + 1), p ∣ Q.coeff i) (hz : aeval x Q = p • z) :
    z ∈ adjoin A ({x} : Set B) 
goal: z ∈ Algebra.adjoin A {x}

full_name: mem_adjoin_of_smul_prime_smul_of_minpoly_isEisensteinAt
code: /-- Let `K` be the field of fraction of an integrally closed domain `R` and let `L` be a separable
extension of `K`, generated by an integral power basis `B` such that the minimal polynomial of
`B.gen` is Eisenstein at `p`. Given `z : L` integral over `R`, if `p • z ∈ adjoin R {B.gen}`, then
`z ∈ adjoin R {B.gen}`. -/
theorem mem_adjoin_of_smul_prime_smul_of_minpoly_isEisensteinAt {B : PowerBasis K L}
    (hp : Prime p) (hBint : IsIntegral R B.gen) {z : L} (hzint : IsIntegral R z)
    (hz : p • z ∈ adjoin R ({B.gen} : Set L)) (hei : (minpoly R B.gen).IsEisensteinAt 𝓟) :
    z ∈ adjoin R ({B.gen} : Set L) 
goal: z ∈ Algebra.adjoin R {B.gen}

full_name: mem_adjoin_of_smul_prime_pow_smul_of_minpoly_isEisensteinAt
code: /-- Let `K` be the field of fraction of an integrally closed domain `R` and let `L` be a separable
extension of `K`, generated by an integral power basis `B` such that the minimal polynomial of
`B.gen` is Eisenstein at `p`. Given `z : L` integral over `R`, if `p ^ n • z ∈ adjoin R {B.gen}`,
then `z ∈ adjoin R {B.gen}`. Together with `Algebra.discr_mul_isIntegral_mem_adjoin` this result
often allows to compute the ring of integers of `L`. -/
theorem mem_adjoin_of_smul_prime_pow_smul_of_minpoly_isEisensteinAt {B : PowerBasis K L}
    (hp : Prime p) (hBint : IsIntegral R B.gen) {n : ℕ} {z : L} (hzint : IsIntegral R z)
    (hz : p ^ n • z ∈ adjoin R ({B.gen} : Set L)) (hei : (minpoly R B.gen).IsEisensteinAt 𝓟) :
    z ∈ adjoin R ({B.gen} : Set L) 
goal: z ∈ Algebra.adjoin R {B.gen}