ProCGroups.WreathProducts

39 Theorem | 17 Definition | 2 Abbreviation | 10 Instance

This module formalizes permutational wreath products.

import
Imported by

Declarations

def rightCosetMulAction (H : Subgroup G) :
    MulAction G (Quotient (QuotientGroup.rightRel H)) where
  smul g :=
    Quotient.map' (fun a => a * g⁻¹) fun a b hab => by
      rw [QuotientGroup.rightRel_apply] at hab ⊢
      simpa [mul_assoc] using hab
  one_smul q := by
    refine Quotient.inductionOn' q ?_
    intro a
    apply Quotient.sound'
    rw [QuotientGroup.rightRel_apply]
    simp only [inv_one, mul_one, mul_inv_cancel, one_mem]
  mul_smul g h q := by
    refine Quotient.inductionOn' q ?_
    intro a
    apply Quotient.sound'
    rw [QuotientGroup.rightRel_apply]
    simp only [mul_assoc, mul_inv_rev, inv_inv, inv_mul_cancel_left, mul_inv_cancel, one_mem]

Right multiplication on right cosets, expressed as the left action \(g\cdot [a]=[a g^{-1}]\).

@[simp 900] theorem rightCosetMulAction_mk_smul
    (H : Subgroup G) (g a : G) :
    letI

The right-coset action formula sends a coset representative to the expected multiplied representative.

Show proof
@[simp 900] theorem rightCosetMulAction_inv_mk_smul
    (H : Subgroup G) (g a : G) :
    letI

The inverse right-coset action formula sends a coset representative to the expected multiplied representative.

Show proof
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

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

Show proof
abbrev PermutationalWreathProduct :=
  (S → A) ⋊[(mulAutArrow (G := G) (A := S) (M := A))] G

The permutational wreath product attached to a \(G\)-set \(\Sigma\).

instance instTopologicalSpacePermutationalWreathProduct :
    TopologicalSpace (PermutationalWreathProduct A S G) :=
  TopologicalSpace.induced
    (SemidirectProduct.equivProd :
      PermutationalWreathProduct A S G ≃ (S → A) × G)
    inferInstance

The constructed object carries the topological space structure inherited from its construction.

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)

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

@[continuity] theorem continuous_permutationalWreathProduct_equivProd :
    Continuous
      (SemidirectProduct.equivProd :
        PermutationalWreathProduct A S G → (S → A) × G)

The product equivalence from the permutational wreath product to the function factor times the acting group is continuous.

Show proof
@[continuity] theorem continuous_permutationalWreathProduct_left :
    Continuous (fun x : PermutationalWreathProduct A S G => x.left)

The left-coordinate projection of the permutational wreath product is continuous.

Show proof
@[continuity] theorem continuous_permutationalWreathProduct_right :
    Continuous (fun x : PermutationalWreathProduct A S G => x.right)

The right-coordinate projection of the permutational wreath product is continuous.

Show proof
@[continuity] theorem continuous_permutationalWreathProduct_left_apply (s : S) :
    Continuous (fun x : PermutationalWreathProduct A S G => x.left s)

The wreath-product map evaluates componentwise on the base and permutation coordinates.

Show proof
instance instT2SpacePermutationalWreathProduct [T2Space A] [T2Space G] :
    T2Space (PermutationalWreathProduct A S G) :=
  (permutationalWreathProductHomeomorphProd (A := A) (S := S) (G := G)).symm.t2Space

The constructed object is Hausdorff, with its \(T_2\) structure inherited from the profinite construction.

instance instCompactSpacePermutationalWreathProduct [CompactSpace A] [CompactSpace G] :
    CompactSpace (PermutationalWreathProduct A S G) :=
  (permutationalWreathProductHomeomorphProd (A := A) (S := S) (G := G)).symm.compactSpace

The constructed object carries the compact space structure inherited from its profinite construction.

instance instTotallyDisconnectedSpacePermutationalWreathProduct
    [TotallyDisconnectedSpace A] [TotallyDisconnectedSpace G] :
    TotallyDisconnectedSpace (PermutationalWreathProduct A S G) :=
  Homeomorph.totallyDisconnectedSpace
    ((permutationalWreathProductHomeomorphProd (A := A) (S := S) (G := G)).symm)

The constructed object carries the totally disconnected space structure inherited from its profinite construction.

Definition functionPrecomp GitHub
def functionPrecomp (g : G) (f : S → A) : S → A :=
  fun s => f (g⁻¹ • s)

The function coordinate is precomposed by the inverse permutation induced by the \(G\)-action on \(S\).

@[simp] theorem functionPrecomp_apply (g : G) (f : S → A) (s : S) :
    functionPrecomp g f s = f (g⁻¹ • s)

The composite map is computed pointwise by applying the constituent coordinate formulas in succession.

Show proof
@[simp] theorem mulAutArrow_apply_eq_functionPrecomp (g : G) (f : S → A) :
    mulAutArrow (G := G) (A := S) (M := A) g f = functionPrecomp g f

The function coordinate is precomposed by the inverse permutation induced by the \(G\)-action on \(S\).

Show proof
theorem continuous_eval_of_discreteIndex :
    Continuous (fun p : (S → A) × S => p.1 p.2)

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

Show proof
theorem continuous_functionPrecomp :
    Continuous (fun p : G × (S → A) => functionPrecomp p.1 p.2)

The function coordinate is precomposed by the inverse permutation induced by the \(G\)-action on \(S\).

Show proof
@[simp 900] theorem permutationalWreathProduct_mul_left
    (x y : PermutationalWreathProduct A S G) :
    (x * y).left = x.left * functionPrecomp x.right y.left

The left coordinate of multiplication in the permutational wreath product is the pointwise product twisted by the right action.

Show proof
@[simp 900] theorem permutationalWreathProduct_inv_left
    (x : PermutationalWreathProduct A S G) :
    x⁻¹.left = functionPrecomp x.right⁻¹ x.left⁻¹

The left coordinate of the inverse in the permutational wreath product is computed pointwise using the inverse action.

Show proof
instance instContinuousMulPermutationalWreathProduct
    [ContinuousMul A] [ContinuousMul G] [ContinuousSMul G S] :
    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

Multiplication in the permutational wreath product is continuous for the product topology transported from the function and right factors.

instance instContinuousInvPermutationalWreathProduct
    [ContinuousInv A] [ContinuousInv G] [ContinuousSMul G S] :
    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
    simpa using hleft.prodMk hright

The permutational wreath product carries the topological group structure induced by its factors.

instance instIsTopologicalGroupPermutationalWreathProduct
    [IsTopologicalGroup A] [IsTopologicalGroup G] [ContinuousSMul G S] :
    IsTopologicalGroup (PermutationalWreathProduct A S G) :=
  { }

The object is a topological group with the induced group operations and topology.

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)

The canonical inclusion of the function factor is continuous.

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)

The canonical inclusion of the right factor is continuous.

def permutationalWreathProductRightContinuousHom :
    PermutationalWreathProduct A S G →ₜ* G where
  toMonoidHom := SemidirectProduct.rightHom
  continuous_toFun := continuous_permutationalWreathProduct_right

The projection to the right factor is a continuous homomorphism.

abbrev permutationalWreathProductRightKernel :
    Subgroup (PermutationalWreathProduct A S G) :=
  (SemidirectProduct.rightHom : PermutationalWreathProduct A S G →* G).ker

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

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)

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

theorem permutationalWreathProductInlToKernel_bijective :
    Function.Bijective
      ((permutationalWreathProductInlToKernelContinuousHom (A := A) (S := S) (G := G)) :
        (S → A) → permutationalWreathProductRightKernel (A := A) (S := S) (G := G))

The canonical inclusion of the function part into the kernel of the projection from the permutational wreath product is bijective.

Show proof
noncomputable def permutationalWreathProductInlKernelContinuousMulEquiv
    [CompactSpace A] [T2Space A]
    [CompactSpace G] [T2Space G]
    [DiscreteTopology S] :
    (S → A) ≃ₜ* permutationalWreathProductRightKernel (A := A) (S := S) (G := G) :=
  ContinuousMulEquiv.ofBijectiveCompactToT2
    (permutationalWreathProductInlToKernelContinuousHom (A := A) (S := S) (G := G))
    (permutationalWreathProductInlToKernelContinuousHom (A := A) (S := S) (G := G)).continuous_toFun
    (permutationalWreathProductInlToKernel_bijective (A := A) (S := S) (G := G))

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

theorem isProCGroup_permutationalWreathProduct
    (hForm : FiniteGroupClass.Formation C)
    (hIso : FiniteGroupClass.IsomClosed C)
    (hExt : FiniteGroupClass.ExtensionClosed C)
    [Finite S]
    [DiscreteTopology S]
    (hA : IsProCGroup C A)
    (hG : IsProCGroup C G) :
    IsProCGroup C (PermutationalWreathProduct A S G)

A permutational wreath product over a finite right factor is pro-\(C\) whenever both factors are pro-\(C\) and \(C\) is closed under finite products and extensions.

Show proof
@[simp] 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)

Pointwise multiplication formula in the permutational wreath product.

Show proof
@[simp] theorem permutationalWreathProduct_inv_left_apply
    (x : PermutationalWreathProduct A S G) (s : S) :
    x⁻¹.left s = (x.left (x.right • s))⁻¹

Pointwise inversion formula in the permutational wreath product.

Show proof
@[simp] theorem permutationalWreathProduct_inl_left_apply
    (f : S → A) (s : S) :
    (SemidirectProduct.inl f : PermutationalWreathProduct A S G).left s = f s

The wreath-product map evaluates componentwise on the base and permutation coordinates.

Show proof
@[simp] theorem permutationalWreathProduct_inr_left_apply
    (g : G) (s : S) :
    (SemidirectProduct.inr g : PermutationalWreathProduct A S G).left s = 1

The wreath-product map evaluates componentwise on the base and permutation coordinates.

Show proof
@[simp] theorem permutationalWreathProduct_rightHom_comp_inr :
    (SemidirectProduct.rightHom :
        PermutationalWreathProduct A S G →* G).comp SemidirectProduct.inr =
      MonoidHom.id G

Composing the right projection with the right-factor inclusion of the permutational wreath product is the identity.

Show proof
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]

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

def permutationalWreathProductMapLeft (α : A →* B) :
    PermutationalWreathProduct A S G →* PermutationalWreathProduct B S G :=
  SemidirectProduct.map (permutationalWreathProductMapFun (S := S) α) (MonoidHom.id G) fun g => by
    ext f s
    rfl

Functoriality of the permutational wreath product in the left factor.

@[simp] theorem permutationalWreathProductMapLeft_left_apply
    (α : A →* B) (x : PermutationalWreathProduct A S G) (s : S) :
    (permutationalWreathProductMapLeft (S := S) (G := G) α x).left s = α (x.left s)

The wreath-product map evaluates componentwise on the base and permutation coordinates.

Show proof
@[simp] theorem permutationalWreathProductMapLeft_right
    (α : A →* B) (x : PermutationalWreathProduct A S G) :
    (permutationalWreathProductMapLeft (S := S) (G := G) α x).right = x.right

The right component of the wreath-product or quotient-section map is the expected homomorphism.

Show proof
  theorem permutationalWreathProductMapLeft_injective
    (α : A →* B) (hα : Function.Injective α) :
    Function.Injective (permutationalWreathProductMapLeft (S := S) (G := G) α)

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

Show proof
theorem permutationalWreathProductMapLeft_surjective
    (α : A →* B) (hα : Function.Surjective α) :
    Function.Surjective (permutationalWreathProductMapLeft (S := S) (G := G) α)

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

Show proof
theorem injective_of_permutationalWreathProductMapLeft_injective
    (α : A →* B) (s : S)
    (hα : Function.Injective (permutationalWreathProductMapLeft (S := S) (G := G) α)) :
    Function.Injective α

If the wreath-product left-factor map is injective, then the original left-factor map is injective. A chosen point of \(\Sigma\) extracts the selected coordinate.

Show proof
theorem surjective_of_permutationalWreathProductMapLeft_surjective
    (α : A →* B) (s : S)
    (hα : Function.Surjective (permutationalWreathProductMapLeft (S := S) (G := G) α)) :
    Function.Surjective α

If the wreath-product left-factor map is surjective, then the original left-factor map is surjective. A chosen point of \(\Sigma\) extracts the selected coordinate.

Show proof
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
      simpa using α.continuous_toFun.comp
        ((continuous_apply s).comp continuous_permutationalWreathProduct_left)
    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

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

instance instMulActionRightCosetStandardEmbedding :
    MulAction G (Quotient (QuotientGroup.rightRel H)) :=
  rightCosetMulAction H

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

noncomputable def rightTransversalSection {T : Set G}
    (hT : Subgroup.IsComplement (H : Set G) T) :
    Quotient (QuotientGroup.rightRel H) → G :=
  fun q => (hT.rightQuotientEquiv q : G)

The underlying section attached to a right transversal.

@[simp] 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

The chosen right-transversal section represents the prescribed right coset.

Show proof
noncomputable def rightQuotientSectionCocycle
    (τ : Quotient (QuotientGroup.rightRel H) → G)
    (hτ : ∀ q, Quotient.mk'' (τ q) = q)
    (g : G) :
    Quotient (QuotientGroup.rightRel H) → H := by
  letI := rightCosetMulAction H
  intro q
  refine ⟨τ q * g * (τ (g⁻¹ • q))⁻¹, ?_⟩
  have hq :
      Quotient.mk'' (τ q * g) = g⁻¹ • q := by
    calc
      Quotient.mk'' (τ q * g)
          = g⁻¹ • (Quotient.mk'' (τ q) : Quotient (QuotientGroup.rightRel H)) := by
              symm
              rw [rightCosetMulAction_inv_mk_smul (H := H) g (τ q)]
      _ = g⁻¹ • q := by rw [hτ q]
  have hEq :
      (Quotient.mk'' (τ q * g) : Quotient (QuotientGroup.rightRel H)) =
        Quotient.mk'' (τ (g⁻¹ • q)) := by
    calc
      (Quotient.mk'' (τ q * g) : Quotient (QuotientGroup.rightRel H))
          = g⁻¹ • q := hq
      _ = Quotient.mk'' (τ (g⁻¹ • q)) := by symm; exact hτ (g⁻¹ • q)
  have hrel : QuotientGroup.rightRel H (τ q * g) (τ (g⁻¹ • q)) := Quotient.exact' hEq
  rw [QuotientGroup.rightRel_apply] at hrel
  simpa [mul_inv_rev] using H.inv_mem hrel

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

noncomputable 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

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

@[simp] 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

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

Show proof
@[simp] theorem rightQuotientSectionEmbedding_right
    (τ : Quotient (QuotientGroup.rightRel H) → G)
    (hτ : ∀ q, Quotient.mk'' (τ q) = q)
    (g : G) :
    (rightQuotientSectionEmbedding (H := H) τ hτ g).right = g

The right quotient section embedding lands in the right quotient component.

Show proof
@[simp] 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

The right component of the wreath-product or quotient-section map is the expected homomorphism.

Show proof
theorem rightQuotientSectionEmbedding_injective
    (τ : Quotient (QuotientGroup.rightRel H) → G)
    (hτ : ∀ q, Quotient.mk'' (τ q) = q) :
    Function.Injective (rightQuotientSectionEmbedding (H := H) τ hτ)

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

Show proof
instance instMulActionRightCosetStandardEmbeddingTopological :
    MulAction G (Quotient (QuotientGroup.rightRel H)) :=
  rightCosetMulAction H

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

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)

The right-quotient section embedding is continuous for the profinite quotient topology.

Show proof
def wreathLeftCoordinate
    (ψ : G →* PermutationalWreathProduct A S G) (s : S) : G → A :=
  fun g => (ψ g).left s

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

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₂

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

Show proof
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)⁻¹

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

Show proof
instance instMulActionRightCosetCoordinateRecovery :
    MulAction G (Quotient (QuotientGroup.rightRel H)) :=
  rightCosetMulAction H

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

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

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.

Show proof
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]

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.

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

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

Show proof
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]

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

@[simp] theorem wreathStabilizerProjection_apply
    (s : S) (x : PermutationalWreathProduct A S (MulAction.stabilizer G s)) :
    wreathStabilizerProjection (A := A) (G := G) s x = x.left s

The stabilizer projection evaluates the wreath-product function coordinate at the chosen fixed point.

Show proof
@[simp] 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)

The stabilizer projection is natural in the left factor.

Show proof
@[simp 900] 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⟩

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.

Show proof