Module

Classes.lean

Nyll.ProCGroups.FiniteGroups.Classes
60 declarations indexed from sourceView source ↗

Finite-group classes and their closure properties

FiniteGroupClass bundles an isomorphism-invariant predicate whose members are finite. The module provides universe-independent membership through finite-group representatives and defines the closure conditions used throughout the pro-\(C\) library, including formations, varieties, Melnikov formations, hereditary classes, and full formations.

Declarations

ProCGroups.GroupClass

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

Source context 2 commands

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

namespace ProCGroups
universe u v w
abbrev GroupClass
ProCGroups.FiniteGroupClass

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

Source context 2 commands

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

namespace ProCGroups
universe u v w
structure FiniteGroupClass where
  /-- The membership predicate selecting the group carriers that belong to the class. -/
  pred : GroupClass.{u}
  /-- Membership supplies a `Finite` instance for the selected group. -/
  finite_of_mem : ∀ {G : Type u} [Group G], pred G → Finite G
  /--
  Membership transports forward across a multiplicative equivalence, making the predicate
  independent of the chosen carrier for a finite group.
  -/
  mem_of_mulEquiv :
    ∀ {G H : Type u} [Group G] [Group H], (G ≃* H) → pred G → pred H
ProCGroups.instCoeFunFiniteGroupClass

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

Source context 2 commands

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

namespace ProCGroups
universe u v w
instance instCoeFunFiniteGroupClass : CoeFun FiniteGroupClass (fun _ => GroupClass.{u}) where
  coe C := C.pred
ProCGroups.FiniteGroupClass.finite

Members of a bundled finite-group class are finite.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem finite {C : FiniteGroupClass.{u}} {G : Type u} [Group G] (hG : C G) : Finite G
ProCGroups.FiniteGroupClass.MemAcrossUniverses

Cross-universe membership in a finite-group class: G belongs when it is multiplicatively equivalent to a member represented in the carrier universe of C.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
def MemAcrossUniverses (C : FiniteGroupClass.{u}) (G : Type v) [Group G] : Prop
ProCGroups.FiniteGroupClass.finite_of_memAcrossUniverses

Cross-universe membership still certifies that the represented group is finite.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem finite_of_memAcrossUniverses {C : FiniteGroupClass.{u}}
    {G : Type v} [Group G] (hG : C.MemAcrossUniverses G) : Finite G
ProCGroups.FiniteGroupClass.memAcrossUniverses_of_mem

Native membership gives cross-universe membership in the class's own universe.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem memAcrossUniverses_of_mem {C : FiniteGroupClass.{u}}
    {G : Type u} [Group G] (hG : C G) : C.MemAcrossUniverses G
ProCGroups.FiniteGroupClass.mem_of_memAcrossUniverses

In the class's own universe, cross-universe membership reduces to native membership.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem mem_of_memAcrossUniverses {C : FiniteGroupClass.{u}}
    {G : Type u} [Group G] (hG : C.MemAcrossUniverses G) : C G
ProCGroups.FiniteGroupClass.memAcrossUniverses_iff

Cross-universe membership agrees with the original predicate in the original universe.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem memAcrossUniverses_iff (C : FiniteGroupClass.{u})
    {G : Type u} [Group G] : C.MemAcrossUniverses G ↔ C G
ProCGroups.FiniteGroupClass.memAcrossUniverses_iff_of_mulEquiv

Cross-universe membership is invariant under a multiplicative equivalence, even when the two carriers live in different universes.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem memAcrossUniverses_iff_of_mulEquiv (C : FiniteGroupClass.{u})
    {G : Type v} {K : Type w} [Group G] [Group K] (e : G ≃* K) :
    C.MemAcrossUniverses G ↔ C.MemAcrossUniverses K
ProCGroups.FiniteGroupClass.memAcrossUniverses_ulift_iff

ULift does not affect cross-universe membership. This is the preferred public replacement for ad hoc Type-0 lowering lemmas.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem memAcrossUniverses_ulift_iff (C : FiniteGroupClass.{u})
    (G : Type v) [Group G] :
    C.MemAcrossUniverses (ULift.{w} G) ↔ C.MemAcrossUniverses G
ProCGroups.FiniteGroupClass.ulift_mem_iff

In the native universe, ULift invariance also holds for the original predicate.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem ulift_mem_iff (C : FiniteGroupClass.{u}) (G : Type u) [Group G] :
    C (ULift.{u} G) ↔ C G
ProCGroups.FiniteGroupClass.objectPropertyAcrossUniverses

The object property represented by C on finite groups in any target universe.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
def objectPropertyAcrossUniverses (C : FiniteGroupClass.{u}) :
    CategoryTheory.ObjectProperty FiniteGrp.{v}
ProCGroups.FiniteGroupClass.objectPropertyAcrossUniverses_isClosedUnderIsomorphisms

The cross-universe categorical object property is closed under isomorphisms.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
instance objectPropertyAcrossUniverses_isClosedUnderIsomorphisms
    (C : FiniteGroupClass.{u}) :
    C.objectPropertyAcrossUniverses.IsClosedUnderIsomorphisms where
  of_iso {G H} e hG := by
    let eGrp : G.toGrp ≅ H.toGrp :=
      (CategoryTheory.inducedFunctor FiniteGrp.toGrp).mapIso e
    exact (C.memAcrossUniverses_iff_of_mulEquiv eGrp.groupIsoToMulEquiv).1 hG
ProCGroups.FiniteGroupClass.ContainsTrivialQuotients

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.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
class ContainsTrivialQuotients (C : FiniteGroupClass.{u}) : Prop where
  /-- Every group with at most one element belongs to `C`, regardless of its chosen carrier. -/
  of_subsingleton : ∀ {Q : Type u} [Group Q], Subsingleton Q → C Q
ProCGroups.FiniteGroupClass.IsomClosed

The finite group class is closed under isomorphism.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
def IsomClosed (C : FiniteGroupClass.{u}) : Prop
ProCGroups.FiniteGroupClass.isomClosed

Every finite-group class is invariant under multiplicative equivalence by construction.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem isomClosed (C : FiniteGroupClass.{u}) : IsomClosed C
ProCGroups.FiniteGroupClass.objectProperty

The canonical categorical object property attached to a finite-group class.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
def objectProperty (C : FiniteGroupClass.{u}) : CategoryTheory.ObjectProperty FiniteGrp.{u}
ProCGroups.FiniteGroupClass.objectProperty_isClosedUnderIsomorphisms

The categorical object property of a finite-group class is closed under isomorphisms.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
instance objectProperty_isClosedUnderIsomorphisms (C : FiniteGroupClass.{u}) :
    C.objectProperty.IsClosedUnderIsomorphisms where
  of_iso {G H} e hG := by
    let eGrp : G.toGrp ≅ H.toGrp :=
      (CategoryTheory.inducedFunctor FiniteGrp.toGrp).mapIso e
    exact C.mem_of_mulEquiv eGrp.groupIsoToMulEquiv hG
ProCGroups.FiniteGroupClass.SubgroupClosed

The finite group class is closed under taking subgroups.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
def SubgroupClosed (C : FiniteGroupClass.{u}) : Prop
ProCGroups.FiniteGroupClass.NormalSubgroupClosed

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

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
def NormalSubgroupClosed (C : FiniteGroupClass.{u}) : Prop
ProCGroups.FiniteGroupClass.QuotientClosed

The finite group class is closed under quotients.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
def QuotientClosed (C : FiniteGroupClass.{u}) : Prop
ProCGroups.FiniteGroupClass.FiniteProductClosed

Closed under forming finite direct products.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
def FiniteProductClosed (C : FiniteGroupClass.{u}) : Prop
ProCGroups.FiniteGroupClass.FiniteSubdirectProductClosed

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.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
def FiniteSubdirectProductClosed (C : FiniteGroupClass.{u}) : Prop
ProCGroups.FiniteGroupClass.ExtensionClosed

The finite group class is closed under extensions.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
def ExtensionClosed (C : FiniteGroupClass.{u}) : Prop
ProCGroups.FiniteGroupClass.Formation

A formation is a family of finite groups closed under quotients and finite fiber or subdirect products; the empty finite subdirect product supplies membership of the trivial group.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
structure Formation (C : FiniteGroupClass.{u}) : Prop where
  /-- Membership in `C` descends to quotients by arbitrary normal subgroups. -/
  quotientClosed : QuotientClosed C
  /--
  A finite group belongs to `C` when it embeds as a subdirect product of finitely many members
  of `C`.
  -/
  finiteSubdirectProductClosed : FiniteSubdirectProductClosed C
ProCGroups.FiniteGroupClass.Variety

A variety of finite groups.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
structure Variety (C : FiniteGroupClass.{u}) : Prop where
  /-- Membership in `C` descends to subgroups. -/
  subgroupClosed : SubgroupClosed C
  /-- Membership in `C` descends to quotients by normal subgroups. -/
  quotientClosed : QuotientClosed C
  /-- Finite direct products of members of `C` again belong to `C`. -/
  finiteProductClosed : FiniteProductClosed C
ProCGroups.FiniteGroupClass.MelnikovFormation

A Melnikov formation includes the underlying formation data directly, so the standard formulation, including unit membership, is immediately available.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
structure MelnikovFormation (C : FiniteGroupClass.{u}) : Prop where
  /-- The quotient and finite-subdirect-product closure axioms of the underlying formation. -/
  formation : Formation C
  /-- Normal subgroups of members of `C` again belong to `C`. -/
  normalSubgroupClosed : NormalSubgroupClosed C
  /--
  A finite group belongs to `C` whenever a normal subgroup and the corresponding quotient both
  belong to `C`.
  -/
  extensionClosed : ExtensionClosed C
ProCGroups.FiniteGroupClass.Hereditary

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.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
structure Hereditary (C : FiniteGroupClass.{u}) : Prop where
  /--
  Membership pulls back along injective homomorphisms: a group embedded in a member of `C`
  itself belongs to `C`.
  -/
  of_injective :
    ∀ {G H : Type u} [Group G] [Group H],
      C H → (f : G →* H) → Function.Injective f → C G
ProCGroups.FiniteGroupClass.FullFormation

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.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
structure FullFormation (C : FiniteGroupClass.{u}) : Prop where
  /--
  The formation, normal-subgroup, and extension closure data supplied by a Melnikov formation.
  -/
  melnikovFormation : MelnikovFormation C
  /-- Arbitrary subgroups of members of `C` again belong to `C`. -/
  subgroupClosed : SubgroupClosed C
ProCGroups.FiniteGroupClass.Formation.isomClosed

A formation is closed under isomorphism.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem Formation.isomClosed {C : FiniteGroupClass.{u}} (_hForm : Formation C) :
    IsomClosed C
ProCGroups.FiniteGroupClass.Formation.finiteProductClosed

Every formation is closed under finite direct products.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem Formation.finiteProductClosed {C : FiniteGroupClass.{u}}
    (hForm : Formation C) : FiniteProductClosed C
ProCGroups.FiniteGroupClass.Formation.one_mem

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.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem Formation.one_mem {C : FiniteGroupClass.{u}} (hForm : Formation C) :
    C PUnit
ProCGroups.FiniteGroupClass.IsomClosed.of_mulEquiv

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

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
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
ProCGroups.FiniteGroupClass.IsomClosed.iff_of_mulEquiv

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

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
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
ProCGroups.FiniteGroupClass.containsTrivialQuotients_of_isomClosed_one_mem

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

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem containsTrivialQuotients_of_isomClosed_one_mem {C : FiniteGroupClass.{u}}
    (hIso : IsomClosed C) (hOne : C PUnit) :
    ContainsTrivialQuotients C
ProCGroups.FiniteGroupClass.Formation.containsTrivialQuotients

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

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem Formation.containsTrivialQuotients {C : FiniteGroupClass.{u}}
    (hForm : Formation C) :
    ContainsTrivialQuotients C
ProCGroups.FiniteGroupClass.finiteSubdirectProductClosed_of_isomClosed_subgroupClosed_finiteProductClosed

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

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem finiteSubdirectProductClosed_of_isomClosed_subgroupClosed_finiteProductClosed
    {C : FiniteGroupClass.{u}}
    (hIso : IsomClosed C)
    (hSub : SubgroupClosed C)
    (hProd : FiniteProductClosed C) :
    FiniteSubdirectProductClosed C
ProCGroups.FiniteGroupClass.variety_one_mem_of_isomClosed

An isomorphism-closed variety contains the trivial group.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem variety_one_mem_of_isomClosed {C : FiniteGroupClass.{u}}
    (hVar : Variety C) (hIso : IsomClosed C) :
    C PUnit
ProCGroups.FiniteGroupClass.one_mem_of_subgroupClosed_isomClosed

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

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
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
ProCGroups.FiniteGroupClass.Hereditary.of_subgroupClosed_isomClosed

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

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem Hereditary.of_subgroupClosed_isomClosed {C : FiniteGroupClass.{u}}
    (hSub : SubgroupClosed C) (hIso : IsomClosed C) :
    Hereditary C
ProCGroups.FiniteGroupClass.Hereditary.subgroupClosed

The finite group class is closed under taking subgroups.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem Hereditary.subgroupClosed {C : FiniteGroupClass.{u}}
    (hHer : Hereditary C) :
    SubgroupClosed C
ProCGroups.FiniteGroupClass.Hereditary.of_mulEquiv

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

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
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
ProCGroups.FiniteGroupClass.Hereditary.iff_of_mulEquiv

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

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
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
ProCGroups.FiniteGroupClass.MelnikovFormation.quotientClosed

A Melnikov formation is closed under quotients.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem MelnikovFormation.quotientClosed {C : FiniteGroupClass.{u}}
    (hC : MelnikovFormation C) : QuotientClosed C
ProCGroups.FiniteGroupClass.MelnikovFormation.one_mem

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.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem MelnikovFormation.one_mem {C : FiniteGroupClass.{u}}
    (hC : MelnikovFormation C) : C PUnit
ProCGroups.FiniteGroupClass.MelnikovFormation.containsTrivialQuotients

A Melnikov formation contains the trivial quotients.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem MelnikovFormation.containsTrivialQuotients {C : FiniteGroupClass.{u}}
    (hC : MelnikovFormation C) :
    ContainsTrivialQuotients C
ProCGroups.FiniteGroupClass.MelnikovFormation.isomClosed

A Melnikov formation is closed under isomorphism.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem MelnikovFormation.isomClosed {C : FiniteGroupClass.{u}}
    (hC : MelnikovFormation C) : IsomClosed C
ProCGroups.FiniteGroupClass.FullFormation.quotientClosed

A full formation is closed under quotients.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem FullFormation.quotientClosed {C : FiniteGroupClass.{u}}
    (hC : FullFormation C) : QuotientClosed C
ProCGroups.FiniteGroupClass.FullFormation.one_mem

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.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem FullFormation.one_mem {C : FiniteGroupClass.{u}}
    (hC : FullFormation C) : C PUnit
ProCGroups.FiniteGroupClass.FullFormation.containsTrivialQuotients

A full formation contains the trivial quotients.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem FullFormation.containsTrivialQuotients {C : FiniteGroupClass.{u}}
    (hC : FullFormation C) :
    ContainsTrivialQuotients C
ProCGroups.FiniteGroupClass.FullFormation.isomClosed

A full formation is closed under isomorphism.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem FullFormation.isomClosed {C : FiniteGroupClass.{u}}
    (hC : FullFormation C) : IsomClosed C
ProCGroups.FiniteGroupClass.FullFormation.normalSubgroupClosed

A full formation is closed under normal subgroups.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem FullFormation.normalSubgroupClosed {C : FiniteGroupClass.{u}}
    (hC : FullFormation C) : NormalSubgroupClosed C
ProCGroups.FiniteGroupClass.FullFormation.extensionClosed

A formation is closed under extensions.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem FullFormation.extensionClosed {C : FiniteGroupClass.{u}}
    (hC : FullFormation C) : ExtensionClosed C
ProCGroups.FiniteGroupClass.FullFormation.hereditary

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

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem FullFormation.hereditary {C : FiniteGroupClass.{u}}
    (hC : FullFormation C) : Hereditary C
ProCGroups.FiniteGroupClass.variety_formation

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

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem variety_formation {C : FiniteGroupClass.{u}}
    (hVar : Variety C) (hIso : IsomClosed C) :
    Formation C
ProCGroups.FiniteGroupClass.Variety.closureBundle_of_isomClosed_extensionClosed

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

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
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
ProCGroups.FiniteGroupClass.MelnikovFormation.quotient_inf_mem

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.

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
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₂))
ProCGroups.FiniteGroupClass.MelnikovFormation.closureBundle_of_subgroupClosed

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

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
theorem MelnikovFormation.closureBundle_of_subgroupClosed {C : FiniteGroupClass.{u}}
    (hC : MelnikovFormation C)
    (hSub : SubgroupClosed C) :
    Formation C ∧ SubgroupClosed C ∧ IsomClosed C ∧ QuotientClosed C ∧ ExtensionClosed C
ProCGroups.FiniteGroupClass.Formation.quotient_inf_mem

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).

Source context 3 commands

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

namespace ProCGroups
universe u v w
namespace FiniteGroupClass
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₂))