Theorem: MulEquiv.toAdditive_apply_apply
File: Mathlib/Algebra/Group/Equiv/TypeTags.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
inst✝¹ : MulOneClass G
inst✝ : MulOneClass H
x : G ≃* H
⊢ (fun f =>
        { toFun := ⇑(MonoidHom.toAdditive.symm f.toAddMonoidHom),
          invFun := ⇑(MonoidHom.toAdditive.symm f.symm.toAddMonoidHom), left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯ })
      ((fun f =>
          { toFun := ⇑(MonoidHom.toAdditive f.toMonoidHom), invFun := ⇑(MonoidHom.toAdditive f.symm.toMonoidHom),
            left_inv := ⋯, right_inv := ⋯, map_add' := ⋯ })
        x) =
    x
state_after: case h
G : Type u_1
H : Type u_2
inst✝¹ : MulOneClass G
inst✝ : MulOneClass H
x : G ≃* H
x✝ : G
⊢ ((fun f =>
          { toFun := ⇑(MonoidHom.toAdditive.symm f.toAddMonoidHom),
            invFun := ⇑(MonoidHom.toAdditive.symm f.symm.toAddMonoidHom), left_inv := ⋯, right_inv := ⋯,
            map_mul' := ⋯ })
        ((fun f =>
            { toFun := ⇑(MonoidHom.toAdditive f.toMonoidHom), invFun := ⇑(MonoidHom.toAdditive f.symm.toMonoidHom),
              left_inv := ⋯, right_inv := ⋯, map_add' := ⋯ })
          x))
      x✝ =
    x x✝
tactic: ext
state_before: case h
G : Type u_1
H : Type u_2
inst✝¹ : MulOneClass G
inst✝ : MulOneClass H
x : G ≃* H
x✝ : G
⊢ ((fun f =>
          { toFun := ⇑(MonoidHom.toAdditive.symm f.toAddMonoidHom),
            invFun := ⇑(MonoidHom.toAdditive.symm f.symm.toAddMonoidHom), left_inv := ⋯, right_inv := ⋯,
            map_mul' := ⋯ })
        ((fun f =>
            { toFun := ⇑(MonoidHom.toAdditive f.toMonoidHom), invFun := ⇑(MonoidHom.toAdditive f.symm.toMonoidHom),
              left_inv := ⋯, right_inv := ⋯, map_add' := ⋯ })
          x))
      x✝ =
    x x✝
state_after: no goals
tactic: rfl
state_before: G : Type u_1
H : Type u_2
inst✝¹ : MulOneClass G
inst✝ : MulOneClass H
x : Additive G ≃+ Additive H
⊢ (fun f =>
        { toFun := ⇑(MonoidHom.toAdditive f.toMonoidHom), invFun := ⇑(MonoidHom.toAdditive f.symm.toMonoidHom),
          left_inv := ⋯, right_inv := ⋯, map_add' := ⋯ })
      ((fun f =>
          { toFun := ⇑(MonoidHom.toAdditive.symm f.toAddMonoidHom),
            invFun := ⇑(MonoidHom.toAdditive.symm f.symm.toAddMonoidHom), left_inv := ⋯, right_inv := ⋯,
            map_mul' := ⋯ })
        x) =
    x
state_after: case h
G : Type u_1
H : Type u_2
inst✝¹ : MulOneClass G
inst✝ : MulOneClass H
x : Additive G ≃+ Additive H
x✝ : Additive G
⊢ ((fun f =>
          { toFun := ⇑(MonoidHom.toAdditive f.toMonoidHom), invFun := ⇑(MonoidHom.toAdditive f.symm.toMonoidHom),
            left_inv := ⋯, right_inv := ⋯, map_add' := ⋯ })
        ((fun f =>
            { toFun := ⇑(MonoidHom.toAdditive.symm f.toAddMonoidHom),
              invFun := ⇑(MonoidHom.toAdditive.symm f.symm.toAddMonoidHom), left_inv := ⋯, right_inv := ⋯,
              map_mul' := ⋯ })
          x))
      x✝ =
    x x✝
tactic: ext
state_before: case h
G : Type u_1
H : Type u_2
inst✝¹ : MulOneClass G
inst✝ : MulOneClass H
x : Additive G ≃+ Additive H
x✝ : Additive G
⊢ ((fun f =>
          { toFun := ⇑(MonoidHom.toAdditive f.toMonoidHom), invFun := ⇑(MonoidHom.toAdditive f.symm.toMonoidHom),
            left_inv := ⋯, right_inv := ⋯, map_add' := ⋯ })
        ((fun f =>
            { toFun := ⇑(MonoidHom.toAdditive.symm f.toAddMonoidHom),
              invFun := ⇑(MonoidHom.toAdditive.symm f.symm.toAddMonoidHom), left_inv := ⋯, right_inv := ⋯,
              map_mul' := ⋯ })
          x))
      x✝ =
    x x✝
state_after: no goals
tactic: rfl