Theorem: AddEquiv.arrowCongr_apply
File: Mathlib/Algebra/Group/Equiv/Basic.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
A : Type u_4
B : Type u_5
M✝ : Type u_6
N✝ : Type u_7
P✝ : Type u_8
Q✝ : Type u_9
G : Type u_10
H : Type u_11
inst✝² : EquivLike F α β
M : Type u_12
N : Type u_13
P : Type u_14
Q : Type u_15
inst✝¹ : Mul P
inst✝ : Mul Q
f : M ≃ N
g : P ≃* Q
h : M → P
⊢ (fun k m => g.symm (k (f m))) ((fun h n => g (h (f.symm n))) h) = h
state_after: case h
F : Type u_1
α : Type u_2
β : Type u_3
A : Type u_4
B : Type u_5
M✝ : Type u_6
N✝ : Type u_7
P✝ : Type u_8
Q✝ : Type u_9
G : Type u_10
H : Type u_11
inst✝² : EquivLike F α β
M : Type u_12
N : Type u_13
P : Type u_14
Q : Type u_15
inst✝¹ : Mul P
inst✝ : Mul Q
f : M ≃ N
g : P ≃* Q
h : M → P
x✝ : M
⊢ (fun k m => g.symm (k (f m))) ((fun h n => g (h (f.symm n))) h) x✝ = h x✝
tactic: ext
state_before: case h
F : Type u_1
α : Type u_2
β : Type u_3
A : Type u_4
B : Type u_5
M✝ : Type u_6
N✝ : Type u_7
P✝ : Type u_8
Q✝ : Type u_9
G : Type u_10
H : Type u_11
inst✝² : EquivLike F α β
M : Type u_12
N : Type u_13
P : Type u_14
Q : Type u_15
inst✝¹ : Mul P
inst✝ : Mul Q
f : M ≃ N
g : P ≃* Q
h : M → P
x✝ : M
⊢ (fun k m => g.symm (k (f m))) ((fun h n => g (h (f.symm n))) h) x✝ = h x✝
state_after: no goals
tactic: simp
state_before: F : Type u_1
α : Type u_2
β : Type u_3
A : Type u_4
B : Type u_5
M✝ : Type u_6
N✝ : Type u_7
P✝ : Type u_8
Q✝ : Type u_9
G : Type u_10
H : Type u_11
inst✝² : EquivLike F α β
M : Type u_12
N : Type u_13
P : Type u_14
Q : Type u_15
inst✝¹ : Mul P
inst✝ : Mul Q
f : M ≃ N
g : P ≃* Q
k : N → Q
⊢ (fun h n => g (h (f.symm n))) ((fun k m => g.symm (k (f m))) k) = k
state_after: case h
F : Type u_1
α : Type u_2
β : Type u_3
A : Type u_4
B : Type u_5
M✝ : Type u_6
N✝ : Type u_7
P✝ : Type u_8
Q✝ : Type u_9
G : Type u_10
H : Type u_11
inst✝² : EquivLike F α β
M : Type u_12
N : Type u_13
P : Type u_14
Q : Type u_15
inst✝¹ : Mul P
inst✝ : Mul Q
f : M ≃ N
g : P ≃* Q
k : N → Q
x✝ : N
⊢ (fun h n => g (h (f.symm n))) ((fun k m => g.symm (k (f m))) k) x✝ = k x✝
tactic: ext
state_before: case h
F : Type u_1
α : Type u_2
β : Type u_3
A : Type u_4
B : Type u_5
M✝ : Type u_6
N✝ : Type u_7
P✝ : Type u_8
Q✝ : Type u_9
G : Type u_10
H : Type u_11
inst✝² : EquivLike F α β
M : Type u_12
N : Type u_13
P : Type u_14
Q : Type u_15
inst✝¹ : Mul P
inst✝ : Mul Q
f : M ≃ N
g : P ≃* Q
k : N → Q
x✝ : N
⊢ (fun h n => g (h (f.symm n))) ((fun k m => g.symm (k (f m))) k) x✝ = k x✝
state_after: no goals
tactic: simp
state_before: F : Type u_1
α : Type u_2
β : Type u_3
A : Type u_4
B : Type u_5
M✝ : Type u_6
N✝ : Type u_7
P✝ : Type u_8
Q✝ : Type u_9
G : Type u_10
H : Type u_11
inst✝² : EquivLike F α β
M : Type u_12
N : Type u_13
P : Type u_14
Q : Type u_15
inst✝¹ : Mul P
inst✝ : Mul Q
f : M ≃ N
g : P ≃* Q
h k : M → P
⊢ { toFun := fun h n => g (h (f.symm n)), invFun := fun k m => g.symm (k (f m)), left_inv := ⋯, right_inv := ⋯ }.toFun
      (h * k) =
    { toFun := fun h n => g (h (f.symm n)), invFun := fun k m => g.symm (k (f m)), left_inv := ⋯, right_inv := ⋯ }.toFun
        h *
      { toFun := fun h n => g (h (f.symm n)), invFun := fun k m => g.symm (k (f m)), left_inv := ⋯,
            right_inv := ⋯ }.toFun
        k
state_after: case h
F : Type u_1
α : Type u_2
β : Type u_3
A : Type u_4
B : Type u_5
M✝ : Type u_6
N✝ : Type u_7
P✝ : Type u_8
Q✝ : Type u_9
G : Type u_10
H : Type u_11
inst✝² : EquivLike F α β
M : Type u_12
N : Type u_13
P : Type u_14
Q : Type u_15
inst✝¹ : Mul P
inst✝ : Mul Q
f : M ≃ N
g : P ≃* Q
h k : M → P
x✝ : N
⊢ { toFun := fun h n => g (h (f.symm n)), invFun := fun k m => g.symm (k (f m)), left_inv := ⋯, right_inv := ⋯ }.toFun
      (h * k) x✝ =
    ({ toFun := fun h n => g (h (f.symm n)), invFun := fun k m => g.symm (k (f m)), left_inv := ⋯,
              right_inv := ⋯ }.toFun
          h *
        { toFun := fun h n => g (h (f.symm n)), invFun := fun k m => g.symm (k (f m)), left_inv := ⋯,
              right_inv := ⋯ }.toFun
          k)
      x✝
tactic: ext
state_before: case h
F : Type u_1
α : Type u_2
β : Type u_3
A : Type u_4
B : Type u_5
M✝ : Type u_6
N✝ : Type u_7
P✝ : Type u_8
Q✝ : Type u_9
G : Type u_10
H : Type u_11
inst✝² : EquivLike F α β
M : Type u_12
N : Type u_13
P : Type u_14
Q : Type u_15
inst✝¹ : Mul P
inst✝ : Mul Q
f : M ≃ N
g : P ≃* Q
h k : M → P
x✝ : N
⊢ { toFun := fun h n => g (h (f.symm n)), invFun := fun k m => g.symm (k (f m)), left_inv := ⋯, right_inv := ⋯ }.toFun
      (h * k) x✝ =
    ({ toFun := fun h n => g (h (f.symm n)), invFun := fun k m => g.symm (k (f m)), left_inv := ⋯,
              right_inv := ⋯ }.toFun
          h *
        { toFun := fun h n => g (h (f.symm n)), invFun := fun k m => g.symm (k (f m)), left_inv := ⋯,
              right_inv := ⋯ }.toFun
          k)
      x✝
state_after: no goals
tactic: simp