Module

WreathProducts.lean

Nyll.ProCGroups.WreathProducts
68 declarations indexed from sourceView source ↗

Pro C Groups / Wreath Products

This module formalizes permutational wreath products.

Declarations

ProCGroups.WreathProducts.rightCosetMulAction

Right multiplication on right cosets, expressed as a left action by g • [a] = [a * g⁻¹].

Source context 5 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section RightCosets
variable {G : Type u} [Group G]
def rightCosetMulAction (H : Subgroup G) :
    MulAction G (Quotient (QuotientGroup.rightRel H))
ProCGroups.WreathProducts.rightCosetMulAction_mk_smul

Acting on a represented right coset multiplies its representative by the inverse on the right.

Source context 5 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section RightCosets
variable {G : Type u} [Group G]
theorem rightCosetMulAction_mk_smul
    (H : Subgroup G) (g a : G) :
    letI := rightCosetMulAction H
    g • (Quotient.mk'' a : Quotient (QuotientGroup.rightRel H)) =
      Quotient.mk'' (a * g⁻¹) :=
  rfl
ProCGroups.WreathProducts.rightCosetMulAction_inv_mk_smul

Acting by an inverse on a represented right coset multiplies its representative on the right.

Source context 5 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section RightCosets
variable {G : Type u} [Group G]
theorem rightCosetMulAction_inv_mk_smul
    (H : Subgroup G) (g a : G) :
    letI := rightCosetMulAction H
    g⁻¹ • (Quotient.mk'' a : Quotient (QuotientGroup.rightRel H)) =
      Quotient.mk'' (a * g) := by
  rw [rightCosetMulAction_mk_smul (H := H) g⁻¹ a]
  simp only [inv_inv]
ProCGroups.WreathProducts.continuous_rightCosetMulAction_inv_smul_of_open

For an open subgroup, the orbit map to the discrete right-coset space is continuous.

Source context 5 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section RightCosetTopology
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
theorem continuous_rightCosetMulAction_inv_smul_of_open
    (H : Subgroup G) (hH : IsOpen (H : Set G))
    [TopologicalSpace (Quotient (QuotientGroup.rightRel H))]
    [DiscreteTopology (Quotient (QuotientGroup.rightRel H))]
    (q : Quotient (QuotientGroup.rightRel H)) :
    letI := rightCosetMulAction H
    Continuous fun g : G => g⁻¹ • q := by
  rw [continuous_discrete_rng]
  intro q'
  classical
  let a : G := q.out
  let b : G := q'.out
  have hpre :
      (fun g : G => g⁻¹ • q) ⁻¹' (Set.singleton q') =
        (fun g : G => b * g⁻¹ * a⁻¹) ⁻¹' (H : Set G) := by
    ext g
    constructor
    · intro hg
      have hEq :
          (Quotient.mk'' (a * g) : Quotient (QuotientGroup.rightRel H)) =
            Quotient.mk'' b := by
        calc
          (Quotient.mk'' (a * g) : Quotient (QuotientGroup.rightRel H))
              = g⁻¹ • (Quotient.mk'' a : Quotient (QuotientGroup.rightRel H)) := by
                  rw [rightCosetMulAction_inv_mk_smul (H := H) g a]
          _ = g⁻¹ • q := by rw [Quotient.out_eq' q]
          _ = q' := by
            change g⁻¹ • q = q' at hg
            exact hg
          _ = Quotient.mk'' b := by simp only [Quotient.out_eq, b]
      have hrel : QuotientGroup.rightRel H (a * g) b := Quotient.eq''.mp hEq
      simpa [mul_inv_rev, mul_assoc] using (QuotientGroup.rightRel_apply.mp hrel)
    · intro hg
      have hrel : QuotientGroup.rightRel H (a * g) b := by
        rw [QuotientGroup.rightRel_apply]
        simpa [mul_inv_rev, mul_assoc] using hg
      calc
        g⁻¹ • q = g⁻¹ • (Quotient.mk'' a : Quotient (QuotientGroup.rightRel H)) := by
          rw [Quotient.out_eq' q]
        _ = Quotient.mk'' (a * g) := by
          rw [rightCosetMulAction_inv_mk_smul (H := H) g a]
        _ = Quotient.mk'' b := Quotient.eq''.mpr hrel
        _ = q' := Quotient.out_eq' q'
  change
    (fun g : G => g⁻¹ • q) ⁻¹'
      ({q'} : Set (Quotient (QuotientGroup.rightRel H))) =
        (fun g : G => b * g⁻¹ * a⁻¹) ⁻¹' (H : Set G) at hpre
  rw [hpre]
  exact hH.preimage ((continuous_const.mul continuous_inv).mul continuous_const)
ProCGroups.WreathProducts.PermutationalWreathProduct

The permutational wreath product attached to a G-set Σ.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section BasicDefinitions
variable (A : Type u) (S : Type v) (G : Type w)
variable [Group A] [Group G] [MulAction G S]
abbrev PermutationalWreathProduct
ProCGroups.WreathProducts.instTopologicalSpacePermutationalWreathProduct

Give a permutational wreath product the topology transported from its product representation.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
instance instTopologicalSpacePermutationalWreathProduct :
    TopologicalSpace (PermutationalWreathProduct A S G)
ProCGroups.WreathProducts.permutationalWreathProductHomeomorphProd

The topology on a permutational wreath product is the one transported from the product of the function factor and the right factor.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
def permutationalWreathProductHomeomorphProd :
    PermutationalWreathProduct A S G ≃ₜ (S → A) × G where
  toEquiv := SemidirectProduct.equivProd
  continuous_toFun := continuous_induced_dom
  continuous_invFun := by
    rw [continuous_induced_rng]
    simpa using (continuous_id : Continuous fun x : (S → A) × G => x)
ProCGroups.WreathProducts.continuous_permutationalWreathProduct_equivProd

The canonical equivalence from a permutational wreath product to its two factors is continuous.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
theorem continuous_permutationalWreathProduct_equivProd :
    Continuous
      (SemidirectProduct.equivProd :
        PermutationalWreathProduct A S G → (S → A) × G)
ProCGroups.WreathProducts.continuous_permutationalWreathProduct_left

Projection to the function factor of a permutational wreath product is continuous.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
theorem continuous_permutationalWreathProduct_left :
    Continuous (fun x : PermutationalWreathProduct A S G => x.left) :=
  continuous_fst.comp continuous_permutationalWreathProduct_equivProd
ProCGroups.WreathProducts.continuous_permutationalWreathProduct_right

Projection to the acting-group factor of a permutational wreath product is continuous.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
theorem continuous_permutationalWreathProduct_right :
    Continuous (fun x : PermutationalWreathProduct A S G => x.right) :=
  continuous_snd.comp continuous_permutationalWreathProduct_equivProd
ProCGroups.WreathProducts.continuous_permutationalWreathProduct_left_apply

Evaluation of the function factor at a fixed index is continuous.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
theorem continuous_permutationalWreathProduct_left_apply (s : S) :
    Continuous (fun x : PermutationalWreathProduct A S G => x.left s) :=
  (continuous_apply s).comp continuous_permutationalWreathProduct_left
ProCGroups.WreathProducts.instT2SpacePermutationalWreathProduct

A permutational wreath product is Hausdorff when both group factors are Hausdorff.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
instance instT2SpacePermutationalWreathProduct [T2Space A] [T2Space G] :
    T2Space (PermutationalWreathProduct A S G)
ProCGroups.WreathProducts.instCompactSpacePermutationalWreathProduct

A permutational wreath product is compact when both group factors are compact.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
instance instCompactSpacePermutationalWreathProduct [CompactSpace A] [CompactSpace G] :
    CompactSpace (PermutationalWreathProduct A S G)
ProCGroups.WreathProducts.instTotallyDisconnectedSpacePermutationalWreathProduct

A permutational wreath product is totally disconnected when both group factors are.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
instance instTotallyDisconnectedSpacePermutationalWreathProduct
    [TotallyDisconnectedSpace A] [TotallyDisconnectedSpace G] :
    TotallyDisconnectedSpace (PermutationalWreathProduct A S G)
ProCGroups.WreathProducts.functionPrecomp

Precomposition by the inverse permutation coming from the G-action on S. This is the action appearing in mulAutArrow.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
def functionPrecomp (g : G) (f : S → A) : S → A
ProCGroups.WreathProducts.functionPrecomp_apply

Precomposition by the action evaluates at the inverse translate of the index.

Source context 8 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
omit [Group A] [TopologicalSpace A] [TopologicalSpace G] in
theorem functionPrecomp_apply (g : G) (f : S → A) (s : S) :
    functionPrecomp g f s = f (g⁻¹ • s)
ProCGroups.WreathProducts.mulAutArrow_apply_eq_functionPrecomp

Mathlib's action on the function factor is precomposition by the inverse permutation.

Source context 8 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
omit [TopologicalSpace A] [TopologicalSpace G] in
theorem mulAutArrow_apply_eq_functionPrecomp (g : G) (f : S → A) :
    mulAutArrow (G := G) (A := S) (M := A) g f = functionPrecomp g f
ProCGroups.WreathProducts.continuous_eval_of_discreteIndex

Evaluation is jointly continuous on the product of a function space with a discrete index space.

Source context 11 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
section DiscreteIndex
variable [TopologicalSpace S] [DiscreteTopology S]
variable [ContinuousSMul G S] [ContinuousInv G]
omit [Group A] in
theorem continuous_eval_of_discreteIndex :
    Continuous (fun p : (S → A) × S => p.1 p.2) := by
  rw [continuous_iff_continuousAt]
  intro p
  have hs :
      Prod.snd ⁻¹' ({p.2} : Set S) ∈ nhds p := by
    refine IsOpen.mem_nhds ((isOpen_discrete ({p.2} : Set S)).preimage continuous_snd) ?_
    simp only [Set.mem_preimage, Set.mem_singleton_iff]
  have hEq :
      (fun q : (S → A) × S => q.1 q.2) =ᶠ[nhds p] fun q => q.1 p.2 := by
    refine Filter.eventuallyEq_iff_exists_mem.mpr ?_
    refine ⟨Prod.snd ⁻¹' ({p.2} : Set S), hs, ?_⟩
    intro q hq
    simp only [Set.mem_preimage, Set.mem_singleton_iff] at hq
    simp only [hq]
  exact ContinuousAt.congr
    (((continuous_apply p.2).comp continuous_fst).continuousAt) hEq.symm
ProCGroups.WreathProducts.continuous_functionPrecomp

The precomposition action on the function factor is continuous when the index space is discrete.

Source context 11 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
section DiscreteIndex
variable [TopologicalSpace S] [DiscreteTopology S]
variable [ContinuousSMul G S] [ContinuousInv G]
omit [Group A] in
theorem continuous_functionPrecomp :
    Continuous (fun p : G × (S → A) => functionPrecomp p.1 p.2) := by
  refine continuous_pi ?_
  intro s
  change Continuous (fun p : G × (S → A) => p.2 (p.1⁻¹ • s))
  have h :=
    (continuous_eval_of_discreteIndex (A := A) (S := S)).comp
      (continuous_snd.prodMk
        (((continuous_inv.comp continuous_fst).smul continuous_const) :
          Continuous (fun p : G × (S → A) => p.1⁻¹ • s)))
  change Continuous (fun p : G × (S → A) => p.2 (p.1⁻¹ • s)) at h
  exact h
ProCGroups.WreathProducts.permutationalWreathProduct_mul_left

The function factor of a product is the first function times the translate of the second.

Source context 11 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
section DiscreteIndex
variable [TopologicalSpace S] [DiscreteTopology S]
variable [ContinuousSMul G S] [ContinuousInv G]
omit [TopologicalSpace A] [TopologicalSpace G] [TopologicalSpace S] [DiscreteTopology S]
    [ContinuousSMul G S] [ContinuousInv G] in
theorem permutationalWreathProduct_mul_left
    (x y : PermutationalWreathProduct A S G) :
    (x * y).left = x.left * functionPrecomp x.right y.left
ProCGroups.WreathProducts.permutationalWreathProduct_inv_left

The function factor of an inverse is the translated pointwise inverse.

Source context 11 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
section DiscreteIndex
variable [TopologicalSpace S] [DiscreteTopology S]
variable [ContinuousSMul G S] [ContinuousInv G]
omit [TopologicalSpace A] [TopologicalSpace G] [TopologicalSpace S] [DiscreteTopology S]
    [ContinuousSMul G S] [ContinuousInv G] in
theorem permutationalWreathProduct_inv_left
    (x : PermutationalWreathProduct A S G) :
    x⁻¹.left = functionPrecomp x.right⁻¹ x.left⁻¹
ProCGroups.WreathProducts.instContinuousMulPermutationalWreathProduct

Multiplication in the permutational wreath product is continuous for a discrete index space.

Source context 10 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
section DiscreteIndex
variable [TopologicalSpace S] [DiscreteTopology S]
variable [ContinuousSMul G S] [ContinuousInv G]
instance instContinuousMulPermutationalWreathProduct
    [ContinuousMul A] [ContinuousMul G] :
    ContinuousMul (PermutationalWreathProduct A S G) where
  continuous_mul := by
    refine continuous_induced_rng.2 ?_
    change Continuous
      (fun p : PermutationalWreathProduct A S G × PermutationalWreathProduct A S G =>
        ((p.1 * p.2).left, (p.1 * p.2).right))
    have hleft :
        Continuous
          (fun p : PermutationalWreathProduct A S G × PermutationalWreathProduct A S G =>
            p.1.left * functionPrecomp p.1.right p.2.left) :=
      (continuous_permutationalWreathProduct_left.comp continuous_fst).mul
        (continuous_functionPrecomp.comp
          ((continuous_permutationalWreathProduct_right.comp continuous_fst).prodMk
            (continuous_permutationalWreathProduct_left.comp continuous_snd)))
    have hright :
        Continuous
          (fun p : PermutationalWreathProduct A S G × PermutationalWreathProduct A S G =>
            p.1.right * p.2.right) :=
      (continuous_permutationalWreathProduct_right.comp continuous_fst).mul
        (continuous_permutationalWreathProduct_right.comp continuous_snd)
    simpa using hleft.prodMk hright
ProCGroups.WreathProducts.instContinuousInvPermutationalWreathProduct

Inversion in the permutational wreath product is continuous for a discrete index space.

Source context 10 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
section DiscreteIndex
variable [TopologicalSpace S] [DiscreteTopology S]
variable [ContinuousSMul G S] [ContinuousInv G]
instance instContinuousInvPermutationalWreathProduct
    [ContinuousInv A] :
    ContinuousInv (PermutationalWreathProduct A S G) where
  continuous_inv := by
    refine continuous_induced_rng.2 ?_
    change Continuous
      (fun x : PermutationalWreathProduct A S G => (x⁻¹.left, x⁻¹.right))
    have hleft :
        Continuous
          (fun x : PermutationalWreathProduct A S G =>
            functionPrecomp x.right⁻¹ x.left⁻¹) :=
      continuous_functionPrecomp.comp
        ((continuous_permutationalWreathProduct_right.inv).prodMk
          (continuous_permutationalWreathProduct_left.inv))
    have hright :
        Continuous (fun x : PermutationalWreathProduct A S G => x.right⁻¹) :=
      continuous_permutationalWreathProduct_right.inv
    have hfun :
        (fun x : PermutationalWreathProduct A S G => (x⁻¹.left, x⁻¹.right)) =
          fun x => (functionPrecomp x.right⁻¹ x.left⁻¹, x.right⁻¹) := by
      funext x
      apply Prod.ext
      · exact permutationalWreathProduct_inv_left x
      · rfl
    rw [hfun]
    exact hleft.prodMk hright
ProCGroups.WreathProducts.instIsTopologicalGroupPermutationalWreathProduct

The transported topology makes the permutational wreath product a topological group.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
instance instIsTopologicalGroupPermutationalWreathProduct
    [TopologicalSpace S] [DiscreteTopology S] [ContinuousSMul G S]
    [IsTopologicalGroup A] [IsTopologicalGroup G] :
    IsTopologicalGroup (PermutationalWreathProduct A S G)
ProCGroups.WreathProducts.permutationalWreathProductInlContinuousHom

The canonical inclusion of the function factor is continuous.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
def permutationalWreathProductInlContinuousHom :
    (S → A) →ₜ* PermutationalWreathProduct A S G where
  toMonoidHom := SemidirectProduct.inl
  continuous_toFun := by
    refine continuous_induced_rng.2 ?_
    change Continuous
      (fun f : S → A =>
        ((SemidirectProduct.inl f : PermutationalWreathProduct A S G).left,
          (SemidirectProduct.inl f : PermutationalWreathProduct A S G).right))
    simpa using (continuous_id.prodMk continuous_const)
ProCGroups.WreathProducts.permutationalWreathProductInrContinuousHom

The canonical inclusion of the right factor is continuous.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
def permutationalWreathProductInrContinuousHom :
    G →ₜ* PermutationalWreathProduct A S G where
  toMonoidHom := SemidirectProduct.inr
  continuous_toFun := by
    refine continuous_induced_rng.2 ?_
    change Continuous
      (fun g : G =>
        ((SemidirectProduct.inr g : PermutationalWreathProduct A S G).left,
          (SemidirectProduct.inr g : PermutationalWreathProduct A S G).right))
    simpa using (continuous_const.prodMk continuous_id)
ProCGroups.WreathProducts.permutationalWreathProductRightContinuousHom

The projection to the right factor is a continuous homomorphism.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section Topology
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace G]
def permutationalWreathProductRightContinuousHom :
    PermutationalWreathProduct A S G →ₜ* G where
  toMonoidHom := SemidirectProduct.rightHom
  continuous_toFun := continuous_permutationalWreathProduct_right
ProCGroups.WreathProducts.permutationalWreathProductRightKernel

The kernel of the right projection on a permutational wreath product.

Source context 11 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section ProCStructure
open ProCGroups.ProC
variable {C : FiniteGroupClass.{u}}
variable {A : Type u} {S : Type u} {G : Type u}
variable [Group A] [Group G] [MulAction G S] [Fintype S]
variable [TopologicalSpace A] [TopologicalSpace S] [TopologicalSpace G]
variable [IsTopologicalGroup A] [IsTopologicalGroup G]
variable [ContinuousSMul G S]
abbrev permutationalWreathProductRightKernel :
    Subgroup (PermutationalWreathProduct A S G)
ProCGroups.WreathProducts.permutationalWreathProductInlToKernelContinuousHom

The canonical inclusion of the function factor, with codomain restricted to the kernel of the right projection.

Source context 11 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section ProCStructure
open ProCGroups.ProC
variable {C : FiniteGroupClass.{u}}
variable {A : Type u} {S : Type u} {G : Type u}
variable [Group A] [Group G] [MulAction G S] [Fintype S]
variable [TopologicalSpace A] [TopologicalSpace S] [TopologicalSpace G]
variable [IsTopologicalGroup A] [IsTopologicalGroup G]
variable [ContinuousSMul G S]
def permutationalWreathProductInlToKernelContinuousHom :
    (S → A) →ₜ* permutationalWreathProductRightKernel (A := A) (S := S) (G := G) where
  toMonoidHom :=
    { toFun := fun f => ⟨SemidirectProduct.inl f, by simp only
        [permutationalWreathProductRightKernel, MonoidHom.mem_ker,
        SemidirectProduct.rightHom_inl]⟩
      map_one' := by
        apply Subtype.ext
        simp only [map_one, OneMemClass.coe_one]
      map_mul' := by
        intro f g
        apply Subtype.ext
        simp only [map_mul, MulMemClass.mk_mul_mk]}
  continuous_toFun :=
    by
      exact Continuous.subtype_mk
        (permutationalWreathProductInlContinuousHom (A := A) (S := S) (G := G)).continuous_toFun
        (by
          intro f
          change (permutationalWreathProductInlContinuousHom (A := A) (S := S) (G := G) f).right = 1
          rfl)
ProCGroups.WreathProducts.permutationalWreathProductInlToKernel_bijective

Inclusion of the function factor is a bijection onto the kernel of the right projection.

Source context 12 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section ProCStructure
open ProCGroups.ProC
variable {C : FiniteGroupClass.{u}}
variable {A : Type u} {S : Type u} {G : Type u}
variable [Group A] [Group G] [MulAction G S] [Fintype S]
variable [TopologicalSpace A] [TopologicalSpace S] [TopologicalSpace G]
variable [IsTopologicalGroup A] [IsTopologicalGroup G]
variable [ContinuousSMul G S]
omit [Fintype S] [TopologicalSpace S] [IsTopologicalGroup A] [IsTopologicalGroup G]
    [ContinuousSMul G S] in
theorem permutationalWreathProductInlToKernel_bijective :
    Function.Bijective
      ((permutationalWreathProductInlToKernelContinuousHom (A := A) (S := S) (G := G)) :
        (S → A) → permutationalWreathProductRightKernel (A := A) (S := S) (G := G))
ProCGroups.WreathProducts.permutationalWreathProductInlKernelContinuousMulEquiv

The kernel of the right projection is topologically isomorphic to the function factor.

Source context 11 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section ProCStructure
open ProCGroups.ProC
variable {C : FiniteGroupClass.{u}}
variable {A : Type u} {S : Type u} {G : Type u}
variable [Group A] [Group G] [MulAction G S] [Fintype S]
variable [TopologicalSpace A] [TopologicalSpace S] [TopologicalSpace G]
variable [IsTopologicalGroup A] [IsTopologicalGroup G]
variable [ContinuousSMul G S]
def permutationalWreathProductInlKernelContinuousMulEquiv
    [CompactSpace A] [T2Space A]
    [T2Space G] :
    (S → A) ≃ₜ* permutationalWreathProductRightKernel (A := A) (S := S) (G := G)
ProCGroups.WreathProducts.hasOpenNormalBasisInClass_permutationalWreathProduct

A permutational wreath product has an open-normal \(C\)-basis whenever both factors do and C is closed under finite products and extensions.

Source context 12 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section ProCStructure
open ProCGroups.ProC
variable {C : FiniteGroupClass.{u}}
variable {A : Type u} {S : Type u} {G : Type u}
variable [Group A] [Group G] [MulAction G S] [Fintype S]
variable [TopologicalSpace A] [TopologicalSpace S] [TopologicalSpace G]
variable [IsTopologicalGroup A] [IsTopologicalGroup G]
variable [ContinuousSMul G S]
omit [Fintype S] in
theorem hasOpenNormalBasisInClass_permutationalWreathProduct
    [CompactSpace A] [T2Space A] [TotallyDisconnectedSpace A]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hForm : FiniteGroupClass.Formation C)
    (hIso : FiniteGroupClass.IsomClosed C)
    (hExt : FiniteGroupClass.ExtensionClosed C)
    [DiscreteTopology S]
    (hA : HasOpenNormalBasisInClass C A)
    (hG : HasOpenNormalBasisInClass C G) :
    HasOpenNormalBasisInClass C (PermutationalWreathProduct A S G)
ProCGroups.WreathProducts.permutationalWreathProduct_mul_left_apply

Pointwise multiplication formula in the permutational wreath product.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section BasicLemmas
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
theorem permutationalWreathProduct_mul_left_apply
    (x y : PermutationalWreathProduct A S G) (s : S) :
    (x * y).left s = x.left s * y.left (x.right⁻¹ • s)
ProCGroups.WreathProducts.permutationalWreathProduct_inv_left_apply

Pointwise inversion formula in the permutational wreath product.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section BasicLemmas
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
theorem permutationalWreathProduct_inv_left_apply
    (x : PermutationalWreathProduct A S G) (s : S) :
    x⁻¹.left s = (x.left (x.right • s))⁻¹
ProCGroups.WreathProducts.permutationalWreathProduct_inl_left_apply

The function coordinate of the left-factor inclusion is the included function.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section BasicLemmas
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
theorem permutationalWreathProduct_inl_left_apply
    (f : S → A) (s : S) :
    (SemidirectProduct.inl f : PermutationalWreathProduct A S G).left s = f s
ProCGroups.WreathProducts.permutationalWreathProduct_inr_left_apply

The function coordinate of the right-factor inclusion is constantly one.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section BasicLemmas
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
theorem permutationalWreathProduct_inr_left_apply
    (g : G) (s : S) :
    (SemidirectProduct.inr g : PermutationalWreathProduct A S G).left s = 1
ProCGroups.WreathProducts.permutationalWreathProduct_rightHom_comp_inr

The right projection is a retraction of the right-factor inclusion.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section BasicLemmas
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
theorem permutationalWreathProduct_rightHom_comp_inr :
    (SemidirectProduct.rightHom :
        PermutationalWreathProduct A S G →* G).comp SemidirectProduct.inr =
      MonoidHom.id G
ProCGroups.WreathProducts.permutationalWreathProductMapFun

Pointwise application of a group homomorphism to the function factor of a wreath product.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section LeftFactorFunctoriality
variable {A : Type u} {B : Type v} {S : Type w} {G : Type*}
variable [Group A] [Group B] [Group G] [MulAction G S]
def permutationalWreathProductMapFun (α : A →* B) : (S → A) →* (S → B) where
  toFun f := α ∘ f
  map_one' := by
    funext s
    simp only [Function.comp_apply, Pi.one_apply, map_one]
  map_mul' f g := by
    funext s
    simp only [Function.comp_apply, Pi.mul_apply, map_mul]
ProCGroups.WreathProducts.permutationalWreathProductMapLeft

Functoriality of the permutational wreath product in the left factor.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section LeftFactorFunctoriality
variable {A : Type u} {B : Type v} {S : Type w} {G : Type*}
variable [Group A] [Group B] [Group G] [MulAction G S]
def permutationalWreathProductMapLeft (α : A →* B) :
    PermutationalWreathProduct A S G →* PermutationalWreathProduct B S G
ProCGroups.WreathProducts.permutationalWreathProductMapLeft_left_apply

Mapping the left factor applies the given homomorphism pointwise to the function coordinate.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section LeftFactorFunctoriality
variable {A : Type u} {B : Type v} {S : Type w} {G : Type*}
variable [Group A] [Group B] [Group G] [MulAction G S]
theorem permutationalWreathProductMapLeft_left_apply
    (α : A →* B) (x : PermutationalWreathProduct A S G) (s : S) :
    (permutationalWreathProductMapLeft (S := S) (G := G) α x).left s = α (x.left s)
ProCGroups.WreathProducts.permutationalWreathProductMapLeft_right

Mapping the left factor leaves the acting-group coordinate unchanged.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section LeftFactorFunctoriality
variable {A : Type u} {B : Type v} {S : Type w} {G : Type*}
variable [Group A] [Group B] [Group G] [MulAction G S]
theorem permutationalWreathProductMapLeft_right
    (α : A →* B) (x : PermutationalWreathProduct A S G) :
    (permutationalWreathProductMapLeft (S := S) (G := G) α x).right = x.right
ProCGroups.WreathProducts.permutationalWreathProductMapLeft_injective

Injectivity of the left-factor map is inherited by the wreath-product map.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section LeftFactorFunctoriality
variable {A : Type u} {B : Type v} {S : Type w} {G : Type*}
variable [Group A] [Group B] [Group G] [MulAction G S]
theorem permutationalWreathProductMapLeft_injective
    (α : A →* B) (hα : Function.Injective α) :
    Function.Injective (permutationalWreathProductMapLeft (S := S) (G := G) α)
ProCGroups.WreathProducts.permutationalWreathProductMapLeft_surjective

Surjectivity of the left-factor map is inherited by the wreath-product map.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section LeftFactorFunctoriality
variable {A : Type u} {B : Type v} {S : Type w} {G : Type*}
variable [Group A] [Group B] [Group G] [MulAction G S]
theorem permutationalWreathProductMapLeft_surjective
    (α : A →* B) (hα : Function.Surjective α) :
    Function.Surjective (permutationalWreathProductMapLeft (S := S) (G := G) α)
ProCGroups.WreathProducts.injective_of_permutationalWreathProductMapLeft_injective

If the wreath-product left-factor map is injective, then the original left-factor map is injective. A chosen point of Σ extracts the relevant coordinate.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section LeftFactorFunctoriality
variable {A : Type u} {B : Type v} {S : Type w} {G : Type*}
variable [Group A] [Group B] [Group G] [MulAction G S]
theorem injective_of_permutationalWreathProductMapLeft_injective
    (α : A →* B) (s : S)
    (hα : Function.Injective (permutationalWreathProductMapLeft (S := S) (G := G) α)) :
    Function.Injective α
ProCGroups.WreathProducts.surjective_of_permutationalWreathProductMapLeft_surjective

If the wreath-product left-factor map is surjective, then the original left-factor map is surjective. A chosen point of Σ extracts the relevant coordinate.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section LeftFactorFunctoriality
variable {A : Type u} {B : Type v} {S : Type w} {G : Type*}
variable [Group A] [Group B] [Group G] [MulAction G S]
theorem surjective_of_permutationalWreathProductMapLeft_surjective
    (α : A →* B) (s : S)
    (hα : Function.Surjective (permutationalWreathProductMapLeft (S := S) (G := G) α)) :
    Function.Surjective α
ProCGroups.WreathProducts.permutationalWreathProductMapLeftContinuous

Functoriality of the permutational wreath product in the left factor, upgraded to a continuous homomorphism.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section LeftFactorFunctorialityTopological
variable {A : Type u} {B : Type v} {S : Type w} {G : Type*}
variable [Group A] [Group B] [Group G] [MulAction G S]
variable [TopologicalSpace A] [TopologicalSpace B] [TopologicalSpace G]
def permutationalWreathProductMapLeftContinuous
    (α : A →ₜ* B) :
    PermutationalWreathProduct A S G →ₜ* PermutationalWreathProduct B S G where
  toMonoidHom := permutationalWreathProductMapLeft (S := S) (G := G) α.toMonoidHom
  continuous_toFun := by
    refine continuous_induced_rng.2 ?_
    change Continuous
      (fun x : PermutationalWreathProduct A S G =>
        ((permutationalWreathProductMapLeft (S := S) (G := G) α.toMonoidHom x).left,
          (permutationalWreathProductMapLeft (S := S) (G := G) α.toMonoidHom x).right))
    have hleft :
        Continuous
          (fun x : PermutationalWreathProduct A S G =>
            (permutationalWreathProductMapLeft (S := S) (G := G) α.toMonoidHom x).left) := by
      refine continuous_pi ?_
      intro s
      change Continuous (fun x : PermutationalWreathProduct A S G => α (x.left s))
      have h := α.continuous_toFun.comp
        (continuous_permutationalWreathProduct_left_apply
          (A := A) (S := S) (G := G) s)
      change Continuous (fun x : PermutationalWreathProduct A S G => α (x.left s)) at h
      exact h
    have hright :
        Continuous
          (fun x : PermutationalWreathProduct A S G =>
            (permutationalWreathProductMapLeft (S := S) (G := G) α.toMonoidHom x).right) := by
      simpa using continuous_permutationalWreathProduct_right
    exact hleft.prodMk hright
ProCGroups.WreathProducts.instMulActionRightCosetStandardEmbedding

The right-coset standard embedding carries the natural multiplication action used in the wreath-product construction.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section StandardEmbedding
variable {G : Type u} [Group G]
variable (H : Subgroup G)
instance instMulActionRightCosetStandardEmbedding :
    MulAction G (Quotient (QuotientGroup.rightRel H))
ProCGroups.WreathProducts.rightTransversalSection

The underlying section attached to a right transversal.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section StandardEmbedding
variable {G : Type u} [Group G]
variable (H : Subgroup G)
attribute [-instance] instMulActionRightCosetStandardEmbedding
def rightTransversalSection {T : Set G}
    (hT : Subgroup.IsComplement (H : Set G) T) :
    Quotient (QuotientGroup.rightRel H) → G
ProCGroups.WreathProducts.rightTransversalSection_spec

The representative selected by a right transversal lies over the prescribed right coset.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section StandardEmbedding
variable {G : Type u} [Group G]
variable (H : Subgroup G)
attribute [-instance] instMulActionRightCosetStandardEmbedding
theorem rightTransversalSection_spec {T : Set G}
    (hT : Subgroup.IsComplement (H : Set G) T)
    (q : Quotient (QuotientGroup.rightRel H)) :
    Quotient.mk'' (rightTransversalSection (H := H) hT q) = q
ProCGroups.WreathProducts.rightQuotientSectionCocycle

The cocycle attached to a section of the right quotient by H.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section StandardEmbedding
variable {G : Type u} [Group G]
variable (H : Subgroup G)
attribute [-instance] instMulActionRightCosetStandardEmbedding
def rightQuotientSectionCocycle
    (τ : Quotient (QuotientGroup.rightRel H) → G)
    (hτ : ∀ q, Quotient.mk'' (τ q) = q)
    (g : G) :
    Quotient (QuotientGroup.rightRel H) → H
ProCGroups.WreathProducts.rightQuotientSectionEmbedding

The standard wreath-product embedding attached to a section of the right quotient by H.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section StandardEmbedding
variable {G : Type u} [Group G]
variable (H : Subgroup G)
attribute [-instance] instMulActionRightCosetStandardEmbedding
def rightQuotientSectionEmbedding
    (τ : Quotient (QuotientGroup.rightRel H) → G)
    (hτ : ∀ q, Quotient.mk'' (τ q) = q) :
    G →* PermutationalWreathProduct H (Quotient (QuotientGroup.rightRel H)) G where
  toFun g := ⟨rightQuotientSectionCocycle (H := H) τ hτ g, g⟩
  map_one' := by
    apply SemidirectProduct.ext
    · funext q
      apply Subtype.ext
      simp only [rightQuotientSectionCocycle, mul_one, inv_one, one_smul, mul_inv_cancel,
  SemidirectProduct.one_left, Pi.one_apply, OneMemClass.coe_one]
    · rfl
  map_mul' g₁ g₂ := by
    apply SemidirectProduct.ext
    · funext q
      apply Subtype.ext
      simp only [rightQuotientSectionCocycle, mul_inv_rev, mul_smul, mul_assoc,
          SemidirectProduct.mk_eq_inl_mul_inr,
  permutationalWreathProduct_mul_left_apply, permutationalWreathProduct_inl_left_apply,
      SemidirectProduct.right_inl,
  inv_one, one_smul, permutationalWreathProduct_inr_left_apply, SemidirectProduct.right_inr,
      mul_one, one_mul,
  MulMemClass.mk_mul_mk, inv_mul_cancel_left]
    · rfl
ProCGroups.WreathProducts.rightQuotientSectionEmbedding_left_apply

Pointwise formula for the standard wreath-product embedding attached to a right-quotient section.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section StandardEmbedding
variable {G : Type u} [Group G]
variable (H : Subgroup G)
attribute [-instance] instMulActionRightCosetStandardEmbedding
theorem rightQuotientSectionEmbedding_left_apply
    (τ : Quotient (QuotientGroup.rightRel H) → G)
    (hτ : ∀ q, Quotient.mk'' (τ q) = q)
    (g : G) (q : Quotient (QuotientGroup.rightRel H)) :
    (rightQuotientSectionEmbedding (H := H) τ hτ g).left q =
      rightQuotientSectionCocycle (H := H) τ hτ g q
ProCGroups.WreathProducts.rightQuotientSectionEmbedding_right

The standard wreath-product embedding preserves the acting-group coordinate.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section StandardEmbedding
variable {G : Type u} [Group G]
variable (H : Subgroup G)
attribute [-instance] instMulActionRightCosetStandardEmbedding
theorem rightQuotientSectionEmbedding_right
    (τ : Quotient (QuotientGroup.rightRel H) → G)
    (hτ : ∀ q, Quotient.mk'' (τ q) = q)
    (g : G) :
    (rightQuotientSectionEmbedding (H := H) τ hτ g).right = g
ProCGroups.WreathProducts.rightQuotientSectionEmbedding_rightHom

The right projection is a retraction of the standard right-quotient embedding.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section StandardEmbedding
variable {G : Type u} [Group G]
variable (H : Subgroup G)
attribute [-instance] instMulActionRightCosetStandardEmbedding
theorem rightQuotientSectionEmbedding_rightHom
    (τ : Quotient (QuotientGroup.rightRel H) → G)
    (hτ : ∀ q, Quotient.mk'' (τ q) = q) :
    (SemidirectProduct.rightHom :
        PermutationalWreathProduct H (Quotient (QuotientGroup.rightRel H)) G →* G).comp
        (rightQuotientSectionEmbedding (H := H) τ hτ) = MonoidHom.id G
ProCGroups.WreathProducts.rightQuotientSectionEmbedding_injective

The standard embedding attached to a right-quotient section is injective.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section StandardEmbedding
variable {G : Type u} [Group G]
variable (H : Subgroup G)
attribute [-instance] instMulActionRightCosetStandardEmbedding
theorem rightQuotientSectionEmbedding_injective
    (τ : Quotient (QuotientGroup.rightRel H) → G)
    (hτ : ∀ q, Quotient.mk'' (τ q) = q) :
    Function.Injective (rightQuotientSectionEmbedding (H := H) τ hτ)
ProCGroups.WreathProducts.instMulActionRightCosetStandardEmbeddingTopological

The topological right-coset standard embedding carries the natural multiplication action used in the wreath-product construction.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section StandardEmbeddingTopological
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
variable (H : Subgroup G)
instance instMulActionRightCosetStandardEmbeddingTopological :
    MulAction G (Quotient (QuotientGroup.rightRel H))
ProCGroups.WreathProducts.continuous_rightQuotientSectionEmbedding

A continuous right-quotient section gives a continuous standard wreath-product embedding.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section StandardEmbeddingTopological
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
variable (H : Subgroup G)
attribute [-instance] instMulActionRightCosetStandardEmbeddingTopological
theorem continuous_rightQuotientSectionEmbedding
    [TopologicalSpace (Quotient (QuotientGroup.rightRel H))]
    [DiscreteTopology (Quotient (QuotientGroup.rightRel H))]
    (hH : IsOpen (H : Set G))
    (τ : Quotient (QuotientGroup.rightRel H) → G)
    (hτ : ∀ q, Quotient.mk'' (τ q) = q)
    (hτcont : Continuous τ) :
    Continuous
      (rightQuotientSectionEmbedding (H := H) τ hτ :
        G → PermutationalWreathProduct H (Quotient (QuotientGroup.rightRel H)) G)
ProCGroups.WreathProducts.wreathLeftCoordinate

The left coordinate of an element of a wreath product, viewed as a function of the group element on the source.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section CocycleFormulas
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
def wreathLeftCoordinate
    (ψ : G →* PermutationalWreathProduct A S G) (s : S) : G → A
ProCGroups.WreathProducts.wreathLeftCoordinate_mul

The cocycle formula for the left coordinates of a homomorphism into a wreath product whose right factor is the identity.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section CocycleFormulas
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
theorem wreathLeftCoordinate_mul
    (ψ : G →* PermutationalWreathProduct A S G)
    (hψ :
      (SemidirectProduct.rightHom : PermutationalWreathProduct A S G →* G).comp ψ =
        MonoidHom.id G)
    (s : S) (g₁ g₂ : G) :
    wreathLeftCoordinate ψ s (g₁ * g₂) =
      wreathLeftCoordinate ψ s g₁ *
        wreathLeftCoordinate ψ (g₁⁻¹ • s) g₂
ProCGroups.WreathProducts.wreathLeftCoordinate_inv

Inversion formula for the left coordinates of a homomorphism into a wreath product whose right factor is the identity.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section CocycleFormulas
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
theorem wreathLeftCoordinate_inv
    (ψ : G →* PermutationalWreathProduct A S G)
    (hψ :
      (SemidirectProduct.rightHom : PermutationalWreathProduct A S G →* G).comp ψ =
        MonoidHom.id G)
    (s : S) (g : G) :
    wreathLeftCoordinate ψ s g⁻¹ =
      (wreathLeftCoordinate ψ (g • s) g)⁻¹
ProCGroups.WreathProducts.instMulActionRightCosetCoordinateRecovery

The coordinate-recovery map for the right-coset standard embedding is compatible with the natural multiplication action.

Source context 7 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section RightQuotientCoordinateRecovery
variable {A : Type u} {G : Type v}
variable [Group A] [Group G]
variable (H : Subgroup G)
instance instMulActionRightCosetCoordinateRecovery :
    MulAction G (Quotient (QuotientGroup.rightRel H))
ProCGroups.WreathProducts.wreathLeftCoordinate_eq_basepoint_of_rightQuotientSection

Basepoint form: if a homomorphism into the wreath product has identity right factor and sends the chosen section to elements whose basepoint coordinate is trivial, then the basepoint coordinate of the induced subgroup cocycle recovers the original left coordinate.

Source context 8 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section RightQuotientCoordinateRecovery
variable {A : Type u} {G : Type v}
variable [Group A] [Group G]
variable (H : Subgroup G)
attribute [-instance] instMulActionRightCosetCoordinateRecovery
theorem wreathLeftCoordinate_eq_basepoint_of_rightQuotientSection
    (τ : Quotient (QuotientGroup.rightRel H) → G)
    (hτ : ∀ q, Quotient.mk'' (τ q) = q)
    (ψ : G →* PermutationalWreathProduct A (Quotient (QuotientGroup.rightRel H)) G)
    (hψ :
      (SemidirectProduct.rightHom :
          PermutationalWreathProduct A (Quotient (QuotientGroup.rightRel H)) G →* G).comp ψ =
        MonoidHom.id G)
    (hτpure :
      ∀ q : Quotient (QuotientGroup.rightRel H),
        wreathLeftCoordinate ψ
            (Quotient.mk'' (1 : G) : Quotient (QuotientGroup.rightRel H)) (τ q) = 1)
    (g : G) (q : Quotient (QuotientGroup.rightRel H)) :
    wreathLeftCoordinate ψ
        (Quotient.mk'' (1 : G) : Quotient (QuotientGroup.rightRel H))
        (rightQuotientSectionCocycle (H := H) τ hτ g q) =
      wreathLeftCoordinate ψ q g
ProCGroups.WreathProducts.rightQuotientBasepointProjectionHom

Basepoint evaluation on the stabilizer subgroup of the trivial right coset, expressed for a homomorphism into the wreath product whose right factor is the identity.

Source context 8 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section RightQuotientCoordinateRecovery
variable {A : Type u} {G : Type v}
variable [Group A] [Group G]
variable (H : Subgroup G)
attribute [-instance] instMulActionRightCosetCoordinateRecovery
def rightQuotientBasepointProjectionHom
    (ψ : G →* PermutationalWreathProduct A (Quotient (QuotientGroup.rightRel H)) G)
    (hψ :
      (SemidirectProduct.rightHom :
          PermutationalWreathProduct A (Quotient (QuotientGroup.rightRel H)) G →* G).comp ψ =
        MonoidHom.id G) :
    H →* A where
  toFun h :=
    wreathLeftCoordinate ψ
      (Quotient.mk'' (1 : G) : Quotient (QuotientGroup.rightRel H)) h.1
  map_one' := by
    simp only [wreathLeftCoordinate, OneMemClass.coe_one, map_one, SemidirectProduct.one_left,
        Pi.one_apply]
  map_mul' a b := by
    change
      wreathLeftCoordinate ψ
          (Quotient.mk'' (1 : G) : Quotient (QuotientGroup.rightRel H))
          (a.1 * b.1) =
        wreathLeftCoordinate ψ
            (Quotient.mk'' (1 : G) : Quotient (QuotientGroup.rightRel H)) a.1 *
          wreathLeftCoordinate ψ
            (Quotient.mk'' (1 : G) : Quotient (QuotientGroup.rightRel H)) b.1
    rw [wreathLeftCoordinate_mul (ψ := ψ) hψ
      (Quotient.mk'' (1 : G) : Quotient (QuotientGroup.rightRel H)) a.1 b.1]
    have ha :
        a.1⁻¹ • (Quotient.mk'' (1 : G) : Quotient (QuotientGroup.rightRel H)) =
          (Quotient.mk'' (1 : G) : Quotient (QuotientGroup.rightRel H)) := by
      rw [rightCosetMulAction_inv_mk_smul (H := H) a.1 1]
      apply Quotient.sound'
      rw [QuotientGroup.rightRel_apply]
      simp only [one_mul, H.inv_mem a.2]
    simp only [ha]
ProCGroups.WreathProducts.rightQuotientBasepointProjectionHom_apply_cocycle

The basepoint projection on H evaluates the section cocycle by the corresponding left coordinate, provided the chosen section has trivial basepoint coordinate.

Source context 8 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section RightQuotientCoordinateRecovery
variable {A : Type u} {G : Type v}
variable [Group A] [Group G]
variable (H : Subgroup G)
attribute [-instance] instMulActionRightCosetCoordinateRecovery
theorem rightQuotientBasepointProjectionHom_apply_cocycle
    (τ : Quotient (QuotientGroup.rightRel H) → G)
    (hτ : ∀ q, Quotient.mk'' (τ q) = q)
    (ψ : G →* PermutationalWreathProduct A (Quotient (QuotientGroup.rightRel H)) G)
    (hψ :
      (SemidirectProduct.rightHom :
          PermutationalWreathProduct A (Quotient (QuotientGroup.rightRel H)) G →* G).comp ψ =
        MonoidHom.id G)
    (hτpure :
      ∀ q : Quotient (QuotientGroup.rightRel H),
        wreathLeftCoordinate ψ
            (Quotient.mk'' (1 : G) : Quotient (QuotientGroup.rightRel H)) (τ q) = 1)
    (g : G) (q : Quotient (QuotientGroup.rightRel H)) :
    rightQuotientBasepointProjectionHom (H := H) ψ hψ
        (rightQuotientSectionCocycle (H := H) τ hτ g q) =
      wreathLeftCoordinate ψ q g
ProCGroups.WreathProducts.wreathStabilizerProjection

Evaluation at a fixed point is a homomorphism on the wreath product over the stabilizer of that point.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section StabilizerProjection
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
def wreathStabilizerProjection (s : S) :
    PermutationalWreathProduct A S (MulAction.stabilizer G s) →* A where
  toFun x := x.left s
  map_one' := rfl
  map_mul' x y := by
    have hx : x.right⁻¹ • s = s := by
      exact MulAction.mem_stabilizer_iff.mp x.right⁻¹.2
    simp only [permutationalWreathProduct_mul_left_apply, hx]
ProCGroups.WreathProducts.wreathStabilizerProjection_apply

The stabilizer projection evaluates the function coordinate at the fixed point.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section StabilizerProjection
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
theorem wreathStabilizerProjection_apply
    (s : S) (x : PermutationalWreathProduct A S (MulAction.stabilizer G s)) :
    wreathStabilizerProjection (A := A) (G := G) s x = x.left s
ProCGroups.WreathProducts.wreathStabilizerProjection_mapLeft

The stabilizer projection is natural in the left factor.

Source context 6 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section StabilizerProjection
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
theorem wreathStabilizerProjection_mapLeft
    {B : Type*} [Group B]
    (α : A →* B) (s : S)
    (x : PermutationalWreathProduct A S (MulAction.stabilizer G s)) :
    wreathStabilizerProjection (A := B) (G := G) s
        (permutationalWreathProductMapLeft
          (S := S) (G := MulAction.stabilizer G s) α x) =
      α (wreathStabilizerProjection (A := A) (G := G) s x)
ProCGroups.WreathProducts.rightQuotientSectionEmbedding_left_basepoint_of_mem

Basepoint form: on the subgroup H, the left coordinate of the standard embedding at the trivial right coset is the given element, provided the section is normalized at the basepoint.

Source context 8 commands

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

open scoped Pointwise
namespace ProCGroups.WreathProducts
universe u v w
section StabilizerProjection
variable {A : Type u} {S : Type v} {G : Type w}
variable [Group A] [Group G] [MulAction G S]
section RightQuotientBasepoint
variable {H : Subgroup G}
theorem rightQuotientSectionEmbedding_left_basepoint_of_mem
    (τ : Quotient (QuotientGroup.rightRel H) → G)
    (hτ : ∀ q, Quotient.mk'' (τ q) = q)
    (hτ1 : τ (Quotient.mk'' (1 : G) : Quotient (QuotientGroup.rightRel H)) = 1)
    {g : G} (hg : g ∈ H) :
    (rightQuotientSectionEmbedding (H := H) τ hτ g).left
        (Quotient.mk'' (1 : G) : Quotient (QuotientGroup.rightRel H)) =
      ⟨g, hg⟩