Documentation

LeanPool.FltRegular.NumberTheory.KummersLemma.Field

The field-theoretic part of Kummer's lemma #

This file constructs Kummer's auxiliary polynomial and proves the associated splitting field is unramified.

theorem zeta_sub_one_pow_dvd_poly {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) :
theorem KummersLemma.natDegree_poly_aux {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) :
theorem KummersLemma.monic_poly_aux {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) :
noncomputable def KummersLemma.poly {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) :

The monic polynomial used in Kummer's lemma after dividing by (ζ - 1)^p.

Equations
Instances For
    theorem KummersLemma.poly_spec {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) :
    Polynomial.C ((.toInteger - 1) ^ p) * poly hp u hcong = (Polynomial.C (.toInteger - 1) * Polynomial.X - 1) ^ p + Polynomial.C u
    theorem KummersLemma.monic_poly {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) :
    (poly hp u hcong).Monic
    theorem KummersLemma.natDegree_poly {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) :
    (poly hp u hcong).natDegree = p
    theorem KummersLemma.map_poly {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) :
    theorem KummersLemma.irreducible_map_poly {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) (hu : ∀ (v : K), v ^ p (algebraMap (NumberField.RingOfIntegers K) K) u) :
    theorem KummersLemma.aeval_poly {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) {L : Type u_2} [Field L] [Algebra K L] (α : L) (e : α ^ p = (algebraMap K L) ((algebraMap (NumberField.RingOfIntegers K) K) u)) (m : ) :
    (Polynomial.aeval ((1 - ζ ^ m α) / (algebraMap K L) (ζ - 1))) (poly hp u hcong) = 0
    def KummersLemma.polyRoot {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) {L : Type u_2} [Field L] [Algebra K L] (α : L) (e : α ^ p = (algebraMap K L) ((algebraMap (NumberField.RingOfIntegers K) K) u)) (m : ) :

    The integral root obtained by the Kummer transform from a p-th root of u.

    Equations
    Instances For
      theorem KummersLemma.roots_poly {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) {L : Type u_2} [Field L] [Algebra K L] (α : L) (e : α ^ p = (algebraMap K L) ((algebraMap (NumberField.RingOfIntegers K) K) u)) :
      (Polynomial.map (algebraMap (NumberField.RingOfIntegers K) L) (poly hp u hcong)).roots = Multiset.map (fun (i : ) => (1 - ζ ^ i α) / (algebraMap K L) (ζ - 1)) (Finset.range p).val
      theorem KummersLemma.splits_poly {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) {L : Type u_2} [Field L] [Algebra K L] (α : L) (e : α ^ p = (algebraMap K L) ((algebraMap (NumberField.RingOfIntegers K) K) u)) :
      theorem KummersLemma.map_poly_eq_prod {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) {L : Type u_2} [Field L] [Algebra K L] (α : L) (e : α ^ p = (algebraMap K L) ((algebraMap (NumberField.RingOfIntegers K) K) u)) :
      theorem KummersLemma.minpoly_polyRoot'' {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) (hu : ∀ (v : K), v ^ p (algebraMap (NumberField.RingOfIntegers K) K) u) {L : Type u_2} [Field L] [Algebra K L] (α : L) (e : α ^ p = (algebraMap K L) ((algebraMap (NumberField.RingOfIntegers K) K) u)) (i : ) :
      minpoly K (polyRoot hp u hcong α e i) = Polynomial.map (algebraMap (NumberField.RingOfIntegers K) K) (poly hp u hcong)
      theorem KummersLemma.minpoly_polyRoot' {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) (hu : ∀ (v : K), v ^ p (algebraMap (NumberField.RingOfIntegers K) K) u) [NumberField K] {L : Type u_2} [Field L] [Algebra K L] (α : L) (e : α ^ p = (algebraMap K L) ((algebraMap (NumberField.RingOfIntegers K) K) u)) (i : ) :
      minpoly (NumberField.RingOfIntegers K) (polyRoot hp u hcong α e i) = poly hp u hcong
      theorem KummersLemma.separable_poly_aux {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) {L : Type u_2} [Field L] [Algebra K L] (α : L) (e : α ^ p = (algebraMap K L) ((algebraMap (NumberField.RingOfIntegers K) K) u)) :
      theorem KummersLemma.separable_poly {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) (hu : ∀ (v : K), v ^ p (algebraMap (NumberField.RingOfIntegers K) K) u) (I : Ideal (NumberField.RingOfIntegers K)) [I.IsMaximal] :
      theorem KummersLemma.polyRoot_spec {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) {L : Type u_2} [Field L] [Algebra K L] (α : L) (e : α ^ p = (algebraMap K L) ((algebraMap (NumberField.RingOfIntegers K) K) u)) (i : ) :
      α = (ζ ^ i)⁻¹ (1 - (ζ - 1) (polyRoot hp u hcong α e i))
      theorem KummersLemma.mem_adjoin_polyRoot {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) {L : Type u_2} [Field L] [Algebra K L] (α : L) (e : α ^ p = (algebraMap K L) ((algebraMap (NumberField.RingOfIntegers K) K) u)) (i : ) :
      α K[(polyRoot hp u hcong α e i)]
      theorem KummersLemma.isUnramified {K : Type u_1} {p : } [hpri : Fact (Nat.Prime p)] [Field K] (hp : p 2) {ζ : K} ( : IsPrimitiveRoot ζ p) (u : (NumberField.RingOfIntegers K)ˣ) (hcong : (.toInteger - 1) ^ p u - 1) (hu : ∀ (v : K), v ^ p (algebraMap (NumberField.RingOfIntegers K) K) u) [NumberField K] (L : Type u_2) [Field L] [Algebra K L] [Polynomial.IsSplittingField K L (Polynomial.X ^ p - Polynomial.C ((algebraMap (NumberField.RingOfIntegers K) K) u))] :