ProCGroups.FiniteGroups.Classes

36 Theorem | 10 Definition | 1 Abbreviation | 8 Structure | 4 Class | 1 Instance

This module studies classes for pro cgroups. A class of groups, implemented as an unbundled predicate on group carriers. A finite-group class is a predicate on group carriers together with a proof that every member is finite.

import
  • Mathlib.Algebra.Group.PUnit
  • Mathlib.GroupTheory.QuotientGroup.Basic
Imported by

Declarations

abbrev GroupClass := ∀ (G : Type u) [Group G], Prop

A class of groups, implemented as an unbundled predicate on group carriers.

structure FiniteGroupClass where
  pred : GroupClass.{u}
  finite_of_mem : ∀ {G : Type u} [Group G], pred G → Finite G

A finite-group class is a predicate on group carriers together with a proof that every member is finite.

instance instCoeFunFiniteGroupClass : CoeFun FiniteGroupClass (fun _ => GroupClass.{u}) where
  coe C := C.pred

A finite group class coerces to its underlying predicate on finite groups.

def FiniteOnly (C : FiniteGroupClass.{u}) : Prop :=
  ∀ {G : Type u} [Group G], C G → Finite G

The class only contains finite groups.

theorem finite {C : FiniteGroupClass.{u}} {G : Type u} [Group G] (hG : C G) : Finite G

Members of a bundled finite-group class are finite.

Show proof
theorem finiteOnly (C : FiniteGroupClass.{u}) : FiniteOnly C

The finite-quotient predicate follows from the bundled class data.

Show proof
class ContainsTrivialQuotients (C : FiniteGroupClass.{u}) : Prop where
  of_subsingleton : ∀ {Q : Type u} [Group Q], Subsingleton Q → C Q

The finite-group class contains all trivial groups. This is the class-level form needed when a construction indexes over quotients and must include the terminal quotient. Formations provide this automatically via \(\mathrm{Formation.one\_mem}\); users of a formation should not add a separate hypothesis.

def IsomClosed (C : FiniteGroupClass.{u}) : Prop :=
  ∀ {G H : Type u} [Group G] [Group H], Nonempty (G ≃* H) → C G → C H

The finite group class is closed under isomorphism.

def SubgroupClosed (C : FiniteGroupClass.{u}) : Prop :=
  ∀ {G : Type u} [Group G] (H : Subgroup G), C G → C H

The finite group class is closed under taking subgroups.

def NormalSubgroupClosed (C : FiniteGroupClass.{u}) : Prop :=
  ∀ {G : Type u} [Group G] (N : Subgroup G) [N.Normal], C G → C N

A finite-group class is closed under taking normal subgroups.

def QuotientClosed (C : FiniteGroupClass.{u}) : Prop :=
  ∀ {G : Type u} [Group G] (N : Subgroup G) [N.Normal], C G → C (G ⧸ N)

The finite group class is closed under quotients.

def FiniteProductClosed (C : FiniteGroupClass.{u}) : Prop :=
  ∀ {ι : Type u} [Fintype ι] {G : ι → Type u} [∀ i, Group (G i)],
    (∀ i, C (G i)) → C (∀ i, G i)

Closed under forming finite direct products.

def FiniteSubdirectProductClosed (C : FiniteGroupClass.{u}) : Prop :=
  ∀ {ι : Type u} [Fintype ι] {G : Type u} [Group G]
    {H : ι → Type u} [∀ i, Group (H i)],
    (f : G →* ∀ i, H i) →
    Function.Injective f →
    (∀ i, Function.Surjective fun g : G => f g i) →
    (∀ i, C (H i)) →
    C G

Closed under forming finite subdirect products. We package a finite subdirect product as an injective homomorphism into a finite product whose coordinate maps are all surjective.

def ExtensionClosed (C : FiniteGroupClass.{u}) : Prop :=
  ∀ {E : Type u} [Group E] (N : Subgroup E) [N.Normal],
    C N → C (E ⧸ N) → C E

The finite group class is closed under extensions.

structure Formation (C : FiniteGroupClass.{u}) : Prop where
  quotientClosed : QuotientClosed C
  finiteSubdirectProductClosed : FiniteSubdirectProductClosed C

A formation of finite groups. Standard formation terminology starts with a family of finite groups containing the trivial group and then asks for closure under quotients and finite fiber/subdirect products. In this unbundled predicate formulation the trivial group condition is a theorem, \(unit membership\), because it follows from the empty finite subdirect product.

structure Variety (C : FiniteGroupClass.{u}) : Prop where
  subgroupClosed : SubgroupClosed C
  quotientClosed : QuotientClosed C
  finiteProductClosed : FiniteProductClosed C

A variety of finite groups.

structure MelnikovFormation (C : FiniteGroupClass.{u}) : Prop where
  formation : Formation C
  normalSubgroupClosed : NormalSubgroupClosed C
  extensionClosed : ExtensionClosed C

A Melnikov formation of finite groups. A Melnikov formation includes the underlying formation field directly, rather than re-proving it at every use site, so the standard formation formulation (including \(unit membership\)) is available immediately.

structure Hereditary (C : FiniteGroupClass.{u}) : Prop where
  of_injective :
    ∀ {G H : Type u} [Group G] [Group H],
      C H → (f : G →* H) → Function.Injective f → C G

A finite-group class is hereditary when it is closed under injective homomorphisms. This is the form used by finite-quotient comap constructions: a pullback quotient embeds into the target finite quotient, so membership descends along injections.

structure FullFormation (C : FiniteGroupClass.{u}) : Prop where
  melnikovFormation : MelnikovFormation C
  subgroupClosed : SubgroupClosed C

A full formation of finite groups. Equivalently, this is a Melnikov formation whose finite groups are closed under subgroups. The \(Hereditary\) injective-hom formulation is derived as FullFormation.hereditary.

class IsFormation (C : FiniteGroupClass.{u}) : Prop where
  formation : Formation C

Typeclass wrapper for a finite-group formation. Use this when a theorem only needs the closure package for a fixed finite class and should not carry a separate hForm: Formation C argument everywhere.

class IsMelnikovFormation (C : FiniteGroupClass.{u}) : Prop where
  melnikovFormation : MelnikovFormation C

Typeclass wrapper for a Melnikov formation.

class IsFullFormation (C : FiniteGroupClass.{u}) : Prop where
  fullFormation : FullFormation C

Typeclass wrapper for a full formation.

structure FiniteFormation where
  C : FiniteGroupClass.{u}
  formation : Formation C

Bundled finite-group formation data, useful when the class itself should travel as data.

structure FullFiniteFormation where
  C : FiniteGroupClass.{u}
  fullFormation : FullFormation C

Full finite-group formation data.

def isFormation_of_isMelnikovFormation
    (C : FiniteGroupClass.{u}) [hC : IsMelnikovFormation C] :
    IsFormation C where
  formation := hC.melnikovFormation.formation

A Melnikov formation typeclass supplies the underlying formation typeclass.

def isMelnikovFormation_of_isFullFormation
    (C : FiniteGroupClass.{u}) [hC : IsFullFormation C] :
    IsMelnikovFormation C where
  melnikovFormation := hC.fullFormation.melnikovFormation

A full formation typeclass supplies the underlying Melnikov formation typeclass.

theorem Formation.finiteOnly {C : FiniteGroupClass.{u}} (_hForm : Formation C) :
    FiniteOnly C

Formation members are finite because the underlying class is bundled as finite-quotient.

Show proof
theorem Variety.finiteOnly {C : FiniteGroupClass.{u}} (_hVar : Variety C) :
    FiniteOnly C

Variety members are finite because the underlying class is bundled as finite-quotient.

Show proof
theorem Formation.isomClosed {C : FiniteGroupClass.{u}} (hForm : Formation C) :
    IsomClosed C

A formation is closed under isomorphism.

Show proof
theorem Formation.finiteProductClosed {C : FiniteGroupClass.{u}}
    (hForm : Formation C) : FiniteProductClosed C

Every formation is closed under finite direct products.

Show proof
theorem Formation.one_mem {C : FiniteGroupClass.{u}} (hForm : Formation C) :
    C PUnit

Every formation contains the trivial group. This is the standard trivial-object clause. In this version it is derived from the empty finite subdirect product, so no separate hypothesis asserting that the trivial group belongs to the class is needed.

Show proof
theorem IsomClosed.of_mulEquiv {C : FiniteGroupClass.{u}}
    (hIso : IsomClosed C) {G H : Type u} [Group G] [Group H]
    (e : G ≃* H) (hG : C G) :
    C H

Use a specified multiplicative equivalence to transport membership in an isomorphism-closed finite-group class.

Show proof
theorem IsomClosed.iff_of_mulEquiv {C : FiniteGroupClass.{u}}
    (hIso : IsomClosed C) {G H : Type u} [Group G] [Group H]
    (e : G ≃* H) :
    C G ↔ C H

Membership in an isomorphism-closed finite-group class is invariant under a specified multiplicative equivalence.

Show proof
theorem containsTrivialQuotients_of_isomClosed_one_mem {C : FiniteGroupClass.{u}}
    (hIso : IsomClosed C) (hOne : C PUnit) :
    ContainsTrivialQuotients C

An isomorphism-closed class containing the trivial group contains every trivial group.

Show proof
theorem Formation.containsTrivialQuotients {C : FiniteGroupClass.{u}}
    (hForm : Formation C) :
    ContainsTrivialQuotients C

A formation contains the trivial quotients required by the pro-\(C\) construction.

Show proof
theorem finiteSubdirectProductClosed_of_isomClosed_subgroupClosed_finiteProductClosed
    {C : FiniteGroupClass.{u}}
    (hIso : IsomClosed C)
    (hSub : SubgroupClosed C)
    (hProd : FiniteProductClosed C) :
    FiniteSubdirectProductClosed C

Any isomorphism-closed subgroup-closed class that is closed under finite direct products is also closed under finite subdirect products.

Show proof
theorem variety_one_mem_of_isomClosed {C : FiniteGroupClass.{u}}
    (hVar : Variety C) (hIso : IsomClosed C) :
    C PUnit

An isomorphism-closed variety contains the trivial group.

Show proof
theorem one_mem_of_subgroupClosed_isomClosed {C : FiniteGroupClass.{u}}
    (hSub : SubgroupClosed C) (hIso : IsomClosed C)
    {G : Type u} [Group G] (hG : C G) :
    C PUnit

Any subgroup-closed, isomorphism-closed class that contains at least one group also contains the trivial group.

Show proof
theorem Hereditary.of_subgroupClosed_isomClosed {C : FiniteGroupClass.{u}}
    (hSub : SubgroupClosed C) (hIso : IsomClosed C) :
    Hereditary C

Subgroup- and isomorphism-closure imply the injective-hom hereditary form.

Show proof
theorem Hereditary.subgroupClosed {C : FiniteGroupClass.{u}}
    (hHer : Hereditary C) :
    SubgroupClosed C

The finite group class is closed under taking subgroups.

Show proof
theorem Hereditary.of_mulEquiv {C : FiniteGroupClass.{u}}
    (hHer : Hereditary C) {G H : Type u} [Group G] [Group H]
    (e : G ≃* H) (hH : C H) :
    C G

Use a specified multiplicative equivalence to transport membership in an isomorphism-closed finite-group class.

Show proof
theorem Hereditary.iff_of_mulEquiv {C : FiniteGroupClass.{u}}
    (hHer : Hereditary C) {G H : Type u} [Group G] [Group H]
    (e : G ≃* H) :
    C G ↔ C H

Membership in an isomorphism-closed finite-group class is invariant under a specified multiplicative equivalence.

Show proof
theorem MelnikovFormation.finiteOnly {C : FiniteGroupClass.{u}}
    (hC : MelnikovFormation C) : FiniteOnly C

The finite-quotient predicate follows from the bundled class data.

Show proof
theorem MelnikovFormation.quotientClosed {C : FiniteGroupClass.{u}}
    (hC : MelnikovFormation C) : QuotientClosed C

A Melnikov formation is closed under quotients.

Show proof
theorem MelnikovFormation.one_mem {C : FiniteGroupClass.{u}}
    (hC : MelnikovFormation C) : C PUnit

Every formation contains the trivial group. This is the standard trivial-object clause. In this version it is derived from the empty finite subdirect product, so no separate hypothesis asserting that the trivial group belongs to the class is needed.

Show proof
theorem MelnikovFormation.containsTrivialQuotients {C : FiniteGroupClass.{u}}
    (hC : MelnikovFormation C) :
    ContainsTrivialQuotients C

A Melnikov formation contains the trivial quotients.

Show proof
theorem MelnikovFormation.isomClosed {C : FiniteGroupClass.{u}}
    (hC : MelnikovFormation C) : IsomClosed C

A Melnikov formation is closed under isomorphism.

Show proof
theorem FullFormation.finiteOnly {C : FiniteGroupClass.{u}}
    (hC : FullFormation C) : FiniteOnly C

The finite-quotient predicate follows from the bundled class data.

Show proof
theorem FullFormation.quotientClosed {C : FiniteGroupClass.{u}}
    (hC : FullFormation C) : QuotientClosed C

A full formation is closed under quotients.

Show proof
theorem FullFormation.one_mem {C : FiniteGroupClass.{u}}
    (hC : FullFormation C) : C PUnit

Every formation contains the trivial group. This is the standard trivial-object clause. In this version it is derived from the empty finite subdirect product, so no separate hypothesis asserting that the trivial group belongs to the class is needed.

Show proof
theorem FullFormation.containsTrivialQuotients {C : FiniteGroupClass.{u}}
    (hC : FullFormation C) :
    ContainsTrivialQuotients C

A full formation contains the trivial quotients.

Show proof
theorem FullFormation.isomClosed {C : FiniteGroupClass.{u}}
    (hC : FullFormation C) : IsomClosed C

A full formation is closed under isomorphism.

Show proof
theorem FullFormation.normalSubgroupClosed {C : FiniteGroupClass.{u}}
    (hC : FullFormation C) : NormalSubgroupClosed C

A full formation is closed under normal subgroups.

Show proof
theorem FullFormation.extensionClosed {C : FiniteGroupClass.{u}}
    (hC : FullFormation C) : ExtensionClosed C

A formation is closed under extensions.

Show proof
theorem FullFormation.hereditary {C : FiniteGroupClass.{u}}
    (hC : FullFormation C) : Hereditary C

The subgroup-closed part of a full formation, in the injective-hom form used by finite quotient pullbacks.

Show proof
theorem variety_formation {C : FiniteGroupClass.{u}}
    (hVar : Variety C) (hIso : IsomClosed C) :
    Formation C

An isomorphism-closed variety is a formation in the unbundled FiniteGroupClass formulation.

Show proof
theorem Variety.closureBundle_of_isomClosed_extensionClosed {C : FiniteGroupClass.{u}}
    (hVar : Variety C)
    (hIso : IsomClosed C)
    (hExt : ExtensionClosed C) :
    Formation C ∧ SubgroupClosed C ∧ IsomClosed C ∧ QuotientClosed C ∧ ExtensionClosed C

A variety together with extension-closure packages the standard finite-class closure hypotheses used by the pro-\(C\) formulation.

Show proof
theorem MelnikovFormation.quotient_inf_mem {C : FiniteGroupClass.{u}}
    (hC : MelnikovFormation C)
    {G : Type u} [Group G]
    (N₁ N₂ : Subgroup G) [N₁.Normal] [N₂.Normal]
    (h₁ : C (G ⧸ N₁)) (h₂ : C (G ⧸ N₂)) :
    C (G ⧸ (N₁ ⊓ N₂))

For a Melnikov formation, the quotients by two normal subgroups lying in the class force the quotient by their intersection to lie in the class as well.

Show proof
theorem MelnikovFormation.closureBundle_of_subgroupClosed {C : FiniteGroupClass.{u}}
    (hC : MelnikovFormation C)
    (hSub : SubgroupClosed C) :
    Formation C ∧ SubgroupClosed C ∧ IsomClosed C ∧ QuotientClosed C ∧ ExtensionClosed C

A Melnikov formation with subgroup closure gives the standard finite-class closure bundle.

Show proof
theorem Formation.quotient_inf_mem {C : FiniteGroupClass.{u}}
    (hC : Formation C) {G : Type u} [Group G]
    (N₁ N₂ : Subgroup G) [N₁.Normal] [N₂.Normal]
    (h₁ : C (G ⧸ N₁)) (h₂ : C (G ⧸ N₂)) :
    C (G ⧸ (N₁ ⊓ N₂))

For a formation, the quotient by the intersection of two normal subgroups whose individual quotients lie in \(C\) also lies in \(C\). This is the two-factor form of (C4).

Show proof