Module

SimpleExtension.lean

Nyll.GaloisCohomology.Kummer.Concrete.SimpleExtension
17 declarations indexed from sourceView source ↗

Simple Kummer extensions

This file exposes the chosen singleton-radical construction used in Kummer theory. For b : Kˣ, it chooses an embedded field K(ⁿ√b) inside the separable closure and proves that, when K contains the n-th roots of unity, this is a finite cyclic Galois extension.

Declarations

KummerTheory.chosenSimpleKummerRoot

A chosen n-th root of b in the separable closure.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
def chosenSimpleKummerRoot
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) (b : Kˣ) :
    SeparableClosure K
KummerTheory.chosenSimpleKummerRoot_mem

The chosen root belongs to the maximal Kummer root set.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
theorem chosenSimpleKummerRoot_mem
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) (b : Kˣ) :
    chosenSimpleKummerRoot K n hnK b ∈
      kummerRootSet (K := K) (Omega := SeparableClosure K) n
        (maximalKummerSubgroup K n).1
KummerTheory.chosenSimpleKummerRoot_pow

The chosen element is an actual n-th root of b.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
theorem chosenSimpleKummerRoot_pow
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) (b : Kˣ) :
    chosenSimpleKummerRoot K n hnK b ^ (n : ℕ) =
      algebraMap K (SeparableClosure K) (b : K)
KummerTheory.chosenSimpleKummerExtension

The simple Kummer extension generated by the chosen root of b.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
def chosenSimpleKummerExtension
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) (b : Kˣ) :
    IntermediateField K (SeparableClosure K)
KummerTheory.chosenSimpleKummerExtension_le_maximalKummerExtension

The simple extension generated by one chosen radical is contained in the extension generated by all radicals of the maximal Kummer subgroup.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
theorem chosenSimpleKummerExtension_le_maximalKummerExtension
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) (b : Kˣ) :
    chosenSimpleKummerExtension K n hnK b ≤
      kummerRadicalExtension
        (K := K) (Omega := SeparableClosure K) n
          (maximalKummerSubgroup K n).1
KummerTheory.chosenSimpleKummerRootUnit

The chosen radical as a unit of K(ⁿ√b).

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
def chosenSimpleKummerRootUnit
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) (b : Kˣ) :
    (chosenSimpleKummerExtension K n hnK b)ˣ
KummerTheory.chosenSimpleKummerRootUnit_pow

The radical still has n-th power b in the simple extension.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
theorem chosenSimpleKummerRootUnit_pow
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) (b : Kˣ) :
    chosenSimpleKummerRootUnit K n hnK b ^ (n : ℕ) =
      Units.map
        (algebraMap K (chosenSimpleKummerExtension K n hnK b)).toMonoidHom b
KummerTheory.chosenSimpleKummerExtension_adjoin_root_eq_top

The chosen radical generates the whole simple extension.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
theorem chosenSimpleKummerExtension_adjoin_root_eq_top
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) (b : Kˣ) :
    let E := chosenSimpleKummerExtension K n hnK b
    IntermediateField.adjoin K
      {((chosenSimpleKummerRootUnit K n hnK b : Eˣ) : E)} = ⊤ := by
  let E := chosenSimpleKummerExtension K n hnK b
  let beta : E := (chosenSimpleKummerRootUnit K n hnK b : Eˣ)
  let R : IntermediateField K E :=
    IntermediateField.adjoin K {beta}
  change R = ⊤
  apply top_unique
  intro x _
  have hall : ∀ y : SeparableClosure K, ∀ hy : y ∈ E,
      (⟨y, hy⟩ : E) ∈ R := by
    intro y hy
    change y ∈ IntermediateField.adjoin K
      {chosenSimpleKummerRoot K n hnK b} at hy
    induction hy using IntermediateField.adjoin_induction with
    | mem y hy =>
        have hy' : y = chosenSimpleKummerRoot K n hnK b :=
          Set.mem_singleton_iff.mp hy
        subst y
        apply IntermediateField.subset_adjoin K
        rw [Set.mem_singleton_iff]
        apply Subtype.ext
        rfl
    | algebraMap a => exact R.algebraMap_mem a
    | add x y hx hy ihx ihy => exact R.add_mem ihx ihy
    | inv x hx ihx => exact R.inv_mem ihx
    | mul x y hx hy ihx ihy => exact R.mul_mem ihx ihy
  exact hall x.1 x.property
KummerTheory.chosenSimpleKummerExtension_finiteDimensional

The extension generated by the chosen simple Kummer root is finite-dimensional.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
theorem chosenSimpleKummerExtension_finiteDimensional
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) (b : Kˣ) :
    FiniteDimensional K (chosenSimpleKummerExtension K n hnK b)
KummerTheory.chosenSimpleKummerExtension_isAbelianGalois

If K contains μₙ, then K(ⁿ√b) / K is abelian Galois.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
theorem chosenSimpleKummerExtension_isAbelianGalois
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0)
    (hmu : (primitiveRoots (n : ℕ) K).Nonempty) (b : Kˣ) :
    IsAbelianGalois K (chosenSimpleKummerExtension K n hnK b)
KummerTheory.chosenSimpleKummer_rootQuotient_mem

Every Galois root quotient of the chosen radical is an n-th root of unity.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
theorem chosenSimpleKummer_rootQuotient_mem
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) (b : Kˣ)
    (sigma : Gal((chosenSimpleKummerExtension K n hnK b)/K)) :
    rootQuotient
        (K := K) (L := chosenSimpleKummerExtension K n hnK b)
        (chosenSimpleKummerRootUnit K n hnK b) sigma ∈
      nthRootsSubgroup (chosenSimpleKummerExtension K n hnK b) (n : ℕ)
KummerTheory.chosenSimpleKummerRootCharacter

The root quotient of the chosen radical is a character of the Galois group.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
def chosenSimpleKummerRootCharacter
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0)
    (hmu : (primitiveRoots (n : ℕ) K).Nonempty) (b : Kˣ) :
    Gal((chosenSimpleKummerExtension K n hnK b)/K) →*
      nthRootsSubgroup (chosenSimpleKummerExtension K n hnK b) (n : ℕ)
KummerTheory.chosenSimpleKummerRootCharacter_apply

The character attached to the chosen Kummer root agrees with the root quotient of the chosen generator.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
theorem chosenSimpleKummerRootCharacter_apply
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0)
    (hmu : (primitiveRoots (n : ℕ) K).Nonempty) (b : Kˣ)
    (sigma : Gal((chosenSimpleKummerExtension K n hnK b)/K)) :
    chosenSimpleKummerRootCharacter K n hnK hmu b sigma =
      ⟨rootQuotient
          (K := K) (L := chosenSimpleKummerExtension K n hnK b)
          (chosenSimpleKummerRootUnit K n hnK b) sigma,
        chosenSimpleKummer_rootQuotient_mem K n hnK b sigma⟩
KummerTheory.chosenSimpleKummerRootQuotient_eq_one_iff

A Galois automorphism fixes the chosen radical exactly when it is the identity.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
theorem chosenSimpleKummerRootQuotient_eq_one_iff
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0) (b : Kˣ)
    (sigma : Gal((chosenSimpleKummerExtension K n hnK b)/K)) :
    rootQuotient
        (K := K) (L := chosenSimpleKummerExtension K n hnK b)
        (chosenSimpleKummerRootUnit K n hnK b) sigma = 1 ↔
      sigma = 1
KummerTheory.chosenSimpleKummerRootCharacter_injective

Evaluation on the generating radical separates all automorphisms.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
theorem chosenSimpleKummerRootCharacter_injective
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0)
    (hmu : (primitiveRoots (n : ℕ) K).Nonempty) (b : Kˣ) :
    Function.Injective
      (chosenSimpleKummerRootCharacter K n hnK hmu b)
KummerTheory.chosenSimpleKummerExtension_isCyclic

The Galois group of a simple Kummer extension is cyclic.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
theorem chosenSimpleKummerExtension_isCyclic
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0)
    (hmu : (primitiveRoots (n : ℕ) K).Nonempty) (b : Kˣ) :
    IsCyclic Gal((chosenSimpleKummerExtension K n hnK b)/K)
KummerTheory.chosenSimpleKummerExtension_galois_pow_eq_one

Every automorphism of a simple Kummer extension has exponent dividing n.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace KummerTheory
variable (K : Type) [Field K]
theorem chosenSimpleKummerExtension_galois_pow_eq_one
    (n : ℕ+) (hnK : ((n : ℕ) : K) ≠ 0)
    (hmu : (primitiveRoots (n : ℕ) K).Nonempty) (b : Kˣ)
    (sigma : Gal((chosenSimpleKummerExtension K n hnK b)/K)) :
    sigma ^ (n : ℕ) = 1