Module

Theorem5Dot1FaithfulAbelianExtension.lean

Nyll.Yamaguchi26AbfaithfulGalois.Theorem5Dot1FaithfulAbelianExtension
13 declarations indexed from sourceView source ↗

Lemma 5.1: faithful abelian extensions with bounded derived length

Source: Yamaguchi, arXiv:2610.05634v1, Lemma 5.1. We use the finite group of functions with constant right differences along the last derived subgroup. It contains the manuscript's W and transversal function. Its difference map is invariant under left translation; its kernel consists of functions on the quotient. This gives the same bound on the derived length.

Imports7
  • Mathlib.GroupTheory.Solvable
  • Mathlib.GroupTheory.SemidirectProduct
  • Mathlib.Data.ZMod.Basic
  • Mathlib.Algebra.Group.ULift
  • Mathlib.Algebra.Group.TypeTags.Finite
  • Mathlib.Basic.Finite.Prod
  • Mathlib.Data.Fintype.Pi
Imported by2

Declarations

Yamaguchi26AbfaithfulGalois.FaithfulAbelianExtension.functions

Functions whose right difference along D is independent of the base point.

Source context 5 commands

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

namespace Yamaguchi26AbfaithfulGalois
namespace FaithfulAbelianExtension
universe u v
variable {A : Type u} [Group A] (D : Subgroup A)
variable (M : Type v) [CommGroup M]
def functions : Subgroup (A → M) where
  carrier := {f | ∀ (x y : A) (d : D), f (x * d) * f y = f (y * d) * f x}
  one_mem' := by
    intro x y d
    rfl
  mul_mem' := by
    intro f g hf hg x y d
    change (f (x * d) * g (x * d)) * (f y * g y) =
      (f (y * d) * g (y * d)) * (f x * g x)
    calc
      _ = (f (x * d) * f y) * (g (x * d) * g y) := by ac_rfl
      _ = (f (y * d) * f x) * (g (y * d) * g x) := by rw [hf x y d, hg x y d]
      _ = _ := by ac_rfl
  inv_mem' := by
    intro f hf x y d
    change (f (x * d))⁻¹ * (f y)⁻¹ = (f (y * d))⁻¹ * (f x)⁻¹
    rw [← mul_inv, ← mul_inv, hf x y d]
Yamaguchi26AbfaithfulGalois.FaithfulAbelianExtension.translate

Left translation preserves constant right differences.

Source context 5 commands

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

namespace Yamaguchi26AbfaithfulGalois
namespace FaithfulAbelianExtension
universe u v
variable {A : Type u} [Group A] (D : Subgroup A)
variable (M : Type v) [CommGroup M]
def translate (a : A) : MulAut (functions D M) where
  toFun f := ⟨fun x => f.val (a⁻¹ * x), by
    intro x y d
    simpa only [mul_assoc] using f.property (a⁻¹ * x) (a⁻¹ * y) d⟩
  invFun f := ⟨fun x => f.val (a * x), by
    intro x y d
    simpa only [mul_assoc] using f.property (a * x) (a * y) d⟩
  left_inv f := by
    apply Subtype.ext
    funext x
    change f.val (a⁻¹ * (a * x)) = f.val x
    rw [inv_mul_cancel_left]
  right_inv f := by
    apply Subtype.ext
    funext x
    change f.val (a * (a⁻¹ * x)) = f.val x
    rw [mul_inv_cancel_left]
  map_mul' f g := rfl
Yamaguchi26AbfaithfulGalois.FaithfulAbelianExtension.action

The translation action on the constructed abelian group.

Source context 5 commands

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

namespace Yamaguchi26AbfaithfulGalois
namespace FaithfulAbelianExtension
universe u v
variable {A : Type u} [Group A] (D : Subgroup A)
variable (M : Type v) [CommGroup M]
def action : A →* MulAut (functions D M) where
  toFun := translate D M
  map_one' := by
    apply MulEquiv.ext
    intro f
    apply Subtype.ext
    funext x
    change f.val ((1 : A)⁻¹ * x) = f.val x
    rw [inv_one, one_mul]
  map_mul' a b := by
    apply MulEquiv.ext
    intro f
    apply Subtype.ext
    funext x
    change f.val ((a * b)⁻¹ * x) = f.val (b⁻¹ * (a⁻¹ * x))
    rw [mul_inv_rev, mul_assoc]
Yamaguchi26AbfaithfulGalois.FaithfulAbelianExtension.difference

The right differences, regarded as a homomorphism to an abelian function group.

Source context 5 commands

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

namespace Yamaguchi26AbfaithfulGalois
namespace FaithfulAbelianExtension
universe u v
variable {A : Type u} [Group A] (D : Subgroup A)
variable (M : Type v) [CommGroup M]
def difference : functions D M →* (D → M) where
  toFun f d := f.val d / f.val 1
  map_one' := by
    funext d
    exact one_div_one
  map_mul' f g := by
    funext d
    change (f.val d * g.val d) / (f.val 1 * g.val 1) = (f.val d / f.val 1) * (g.val d / g.val 1)
    rw [div_mul_div_comm]
Yamaguchi26AbfaithfulGalois.FaithfulAbelianExtension.difference_action

Left translation leaves every right difference unchanged.

Source context 5 commands

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

namespace Yamaguchi26AbfaithfulGalois
namespace FaithfulAbelianExtension
universe u v
variable {A : Type u} [Group A] (D : Subgroup A)
variable (M : Type v) [CommGroup M]
theorem difference_action (a : A) (f : functions D M) :
    difference D M (action D M a f) = difference D M f
Yamaguchi26AbfaithfulGalois.FaithfulAbelianExtension.constant_of_difference_eq_one

Trivial right differences mean that a function is constant on right cosets.

Source context 5 commands

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

namespace Yamaguchi26AbfaithfulGalois
namespace FaithfulAbelianExtension
universe u v
variable {A : Type u} [Group A] (D : Subgroup A)
variable (M : Type v) [CommGroup M]
theorem constant_of_difference_eq_one (f : functions D M)
    (hf : difference D M f = 1) (x : A) (d : D) :
    f.val (x * d) = f.val x
Yamaguchi26AbfaithfulGalois.FaithfulAbelianExtension.action_eq_self_of_difference_eq_one

Normality identifies left and right cosets, so D fixes the difference kernel.

Source context 5 commands

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

namespace Yamaguchi26AbfaithfulGalois
namespace FaithfulAbelianExtension
universe u v
variable {A : Type u} [Group A] (D : Subgroup A)
variable (M : Type v) [CommGroup M]
theorem action_eq_self_of_difference_eq_one [D.Normal]
    (a : D) (f : functions D M) (hf : difference D M f = 1) :
    action D M (a : A) f = f
Yamaguchi26AbfaithfulGalois.FaithfulAbelianExtension.coordinate

The coordinate of an element relative to a chosen right-coset representative.

Source context 5 commands

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

namespace Yamaguchi26AbfaithfulGalois
namespace FaithfulAbelianExtension
universe u v
variable {A : Type u} [Group A] (D : Subgroup A)
variable (M : Type v) [CommGroup M]
def coordinate [D.Normal] (x : A) : D
Yamaguchi26AbfaithfulGalois.FaithfulAbelianExtension.coordinate_mul

Right multiplication by D multiplies the transversal coordinate by the same element.

Source context 5 commands

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

namespace Yamaguchi26AbfaithfulGalois
namespace FaithfulAbelianExtension
universe u v
variable {A : Type u} [Group A] (D : Subgroup A)
variable (M : Type v) [CommGroup M]
theorem coordinate_mul [D.Normal] (x : A) (d : D) :
    coordinate D (x * d) = coordinate D x * d
Yamaguchi26AbfaithfulGalois.FaithfulAbelianExtension.action_injective

A coefficient group containing D detects the part of the action missed by quotient functions.

Source context 5 commands

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

namespace Yamaguchi26AbfaithfulGalois
namespace FaithfulAbelianExtension
universe u v
variable {A : Type u} [Group A] (D : Subgroup A)
variable (M : Type v) [CommGroup M]
theorem action_injective [D.Normal] [Nontrivial M]
    (ι : D →* M) (hι : Function.Injective ι) :
    Function.Injective (action D M)
Yamaguchi26AbfaithfulGalois.FaithfulAbelianExtension.extensionDifference

The difference homomorphism extends across the semidirect product because its action is trivial.

Source context 5 commands

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

namespace Yamaguchi26AbfaithfulGalois
namespace FaithfulAbelianExtension
universe u v
variable {A : Type u} [Group A] (D : Subgroup A)
variable (M : Type v) [CommGroup M]
def extensionDifference : (functions D M) ⋊[action D M] A →* (D → M) where
  toFun b := difference D M b.left
  map_one' := map_one (difference D M)
  map_mul' b c := by
    change difference D M (b.left * action D M b.right c.left) = _
    rw [map_mul, difference_action]
Yamaguchi26AbfaithfulGalois.FaithfulAbelianExtension.difference_eq_one_of_mem_derived

The first derived subgroup has trivial differences.

Source context 5 commands

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

namespace Yamaguchi26AbfaithfulGalois
namespace FaithfulAbelianExtension
universe u v
variable {A : Type u} [Group A] (D : Subgroup A)
variable (M : Type v) [CommGroup M]
theorem difference_eq_one_of_mem_derived
    {b : (functions D M) ⋊[action D M] A}
    (hb : b ∈ derivedSeries ((functions D M) ⋊[action D M] A) 1) :
    difference D M b.left = 1
Yamaguchi26AbfaithfulGalois.faithful_abelian_extension_solvable_length

Lemma 5.1: every finite group of derived length at most m ≥ 2 has a faithful action on a finite abelian group whose semidirect product has the same bound.

Source context 2 commands

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

namespace Yamaguchi26AbfaithfulGalois
universe u
theorem faithful_abelian_extension_solvable_length
    (A : Type u) [Group A] [Finite A] (m : ℕ) (hm : 2 ≤ m)
    (hA : derivedSeries A m = ⊥) :
    ∃ (C : Type u) (_ : CommGroup C) (_ : Finite C) (φ : A →* MulAut C),
      Function.Injective φ ∧ derivedSeries (C ⋊[φ] A) m = ⊥