Theorem: Subgroup.smul_diff_smul'
File: Mathlib/GroupTheory/SchurZassenhaus.lean

tactic: letI := H.fintypeQuotientOfFiniteIndex
state_before: G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.IsCommutative
inst✝ : H.FiniteIndex
α β : ↑(leftTransversals ↑H)
hH : H.Normal
g : Gᵐᵒᵖ
⊢ diff (MonoidHom.id ↥H) (g • α) (g • β) = ⟨(unop g)⁻¹ * ↑(diff (MonoidHom.id ↥H) α β) * unop g, ⋯⟩
state_after: G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.IsCommutative
inst✝ : H.FiniteIndex
α β : ↑(leftTransversals ↑H)
hH : H.Normal
g : Gᵐᵒᵖ
this : Fintype (G ⧸ H) := H.fintypeQuotientOfFiniteIndex
⊢ diff (MonoidHom.id ↥H) (g • α) (g • β) = ⟨(unop g)⁻¹ * ↑(diff (MonoidHom.id ↥H) α β) * unop g, ⋯⟩

tactic: refine (Fintype.prod_equiv (MulAction.toPerm g).symm _ _ fun x ↦ ?_).trans (map_prod ϕ _ _).symm
state_before: G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.IsCommutative
inst✝ : H.FiniteIndex
α β : ↑(leftTransversals ↑H)
hH : H.Normal
g : Gᵐᵒᵖ
this : Fintype (G ⧸ H) := H.fintypeQuotientOfFiniteIndex
ϕ : ↥H →* ↥H := { toFun := fun h => ⟨(unop g)⁻¹ * ↑h * unop g, ⋯⟩, map_one' := ⋯, map_mul' := ⋯ }
⊢ diff (MonoidHom.id ↥H) (g • α) (g • β) = ⟨(unop g)⁻¹ * ↑(diff (MonoidHom.id ↥H) α β) * unop g, ⋯⟩
state_after: G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.IsCommutative
inst✝ : H.FiniteIndex
α β : ↑(leftTransversals ↑H)
hH : H.Normal
g : Gᵐᵒᵖ
this : Fintype (G ⧸ H) := H.fintypeQuotientOfFiniteIndex
ϕ : ↥H →* ↥H := { toFun := fun h => ⟨(unop g)⁻¹ * ↑h * unop g, ⋯⟩, map_one' := ⋯, map_mul' := ⋯ }
x : G ⧸ H
⊢ (MonoidHom.id ↥H) ⟨(↑((toEquiv ⋯) x))⁻¹ * ↑((toEquiv ⋯) x), ⋯⟩ =
    ϕ
      ((MonoidHom.id ↥H)
        ⟨(↑((toEquiv ⋯) ((Equiv.symm (toPerm g)) x)))⁻¹ * ↑((toEquiv ⋯) ((Equiv.symm (toPerm g)) x)), ⋯⟩)

tactic: simp only [ϕ, smul_apply_eq_smul_apply_inv_smul, smul_eq_mul_unop, mul_inv_rev, mul_assoc,
  MonoidHom.id_apply, toPerm_symm_apply, MonoidHom.coe_mk, OneHom.coe_mk]
state_before: G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.IsCommutative
inst✝ : H.FiniteIndex
α β : ↑(leftTransversals ↑H)
hH : H.Normal
g : Gᵐᵒᵖ
this : Fintype (G ⧸ H) := H.fintypeQuotientOfFiniteIndex
ϕ : ↥H →* ↥H := { toFun := fun h => ⟨(unop g)⁻¹ * ↑h * unop g, ⋯⟩, map_one' := ⋯, map_mul' := ⋯ }
x : G ⧸ H
⊢ (MonoidHom.id ↥H) ⟨(↑((toEquiv ⋯) x))⁻¹ * ↑((toEquiv ⋯) x), ⋯⟩ =
    ϕ
      ((MonoidHom.id ↥H)
        ⟨(↑((toEquiv ⋯) ((Equiv.symm (toPerm g)) x)))⁻¹ * ↑((toEquiv ⋯) ((Equiv.symm (toPerm g)) x)), ⋯⟩)
state_after: no goals

tactic: rw [Subtype.ext_iff, coe_mk, coe_one, mul_one, inv_mul_self]
state_before: G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.IsCommutative
inst✝ : H.FiniteIndex
α β : ↑(leftTransversals ↑H)
hH : H.Normal
g : Gᵐᵒᵖ
this : Fintype (G ⧸ H) := H.fintypeQuotientOfFiniteIndex
⊢ (fun h => ⟨(unop g)⁻¹ * ↑h * unop g, ⋯⟩) 1 = 1
state_after: no goals

tactic: simp only [Subtype.ext_iff, coe_mk, coe_mul, mul_assoc, mul_inv_cancel_left]
state_before: G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.IsCommutative
inst✝ : H.FiniteIndex
α β : ↑(leftTransversals ↑H)
hH : H.Normal
g : Gᵐᵒᵖ
this : Fintype (G ⧸ H) := H.fintypeQuotientOfFiniteIndex
h₁ h₂ : ↥H
⊢ { toFun := fun h => ⟨(unop g)⁻¹ * ↑h * unop g, ⋯⟩, map_one' := ⋯ }.toFun (h₁ * h₂) =
    { toFun := fun h => ⟨(unop g)⁻¹ * ↑h * unop g, ⋯⟩, map_one' := ⋯ }.toFun h₁ *
      { toFun := fun h => ⟨(unop g)⁻¹ * ↑h * unop g, ⋯⟩, map_one' := ⋯ }.toFun h₂
state_after: no goals