Theorem: Finset.noncommProd_mul_distrib_aux
File: Mathlib/Data/Finset/NoncommProd.lean

tactic: intro x hx y hy h
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝² : Monoid β
inst✝¹ : Monoid γ
inst✝ : FunLike F β γ
s : Finset α
f g : α → β
comm_ff : (↑s).Pairwise fun x y => Commute (f x) (f y)
comm_gg : (↑s).Pairwise fun x y => Commute (g x) (g y)
comm_gf : (↑s).Pairwise fun x y => Commute (g x) (f y)
⊢ (↑s).Pairwise fun x y => Commute ((f * g) x) ((f * g) y)
state_after: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝² : Monoid β
inst✝¹ : Monoid γ
inst✝ : FunLike F β γ
s : Finset α
f g : α → β
comm_ff : (↑s).Pairwise fun x y => Commute (f x) (f y)
comm_gg : (↑s).Pairwise fun x y => Commute (g x) (g y)
comm_gf : (↑s).Pairwise fun x y => Commute (g x) (f y)
x : α
hx : x ∈ ↑s
y : α
hy : y ∈ ↑s
h : x ≠ y
⊢ Commute ((f * g) x) ((f * g) y)

tactic: apply Commute.mul_left <;> apply Commute.mul_right
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝² : Monoid β
inst✝¹ : Monoid γ
inst✝ : FunLike F β γ
s : Finset α
f g : α → β
comm_ff : (↑s).Pairwise fun x y => Commute (f x) (f y)
comm_gg : (↑s).Pairwise fun x y => Commute (g x) (g y)
comm_gf : (↑s).Pairwise fun x y => Commute (g x) (f y)
x : α
hx : x ∈ ↑s
y : α
hy : y ∈ ↑s
h : x ≠ y
⊢ Commute ((f * g) x) ((f * g) y)
state_after: case hac.hab
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝² : Monoid β
inst✝¹ : Monoid γ
inst✝ : FunLike F β γ
s : Finset α
f g : α → β
comm_ff : (↑s).Pairwise fun x y => Commute (f x) (f y)
comm_gg : (↑s).Pairwise fun x y => Commute (g x) (g y)
comm_gf : (↑s).Pairwise fun x y => Commute (g x) (f y)
x : α
hx : x ∈ ↑s
y : α
hy : y ∈ ↑s
h : x ≠ y
⊢ Commute (f x) (f y)

case hac.hac
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝² : Monoid β
inst✝¹ : Monoid γ
inst✝ : FunLike F β γ
s : Finset α
f g : α → β
comm_ff : (↑s).Pairwise fun x y => Commute (f x) (f y)
comm_gg : (↑s).Pairwise fun x y => Commute (g x) (g y)
comm_gf : (↑s).Pairwise fun x y => Commute (g x) (f y)
x : α
hx : x ∈ ↑s
y : α
hy : y ∈ ↑s
h : x ≠ y
⊢ Commute (f x) (g y)

case hbc.hab
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝² : Monoid β
inst✝¹ : Monoid γ
inst✝ : FunLike F β γ
s : Finset α
f g : α → β
comm_ff : (↑s).Pairwise fun x y => Commute (f x) (f y)
comm_gg : (↑s).Pairwise fun x y => Commute (g x) (g y)
comm_gf : (↑s).Pairwise fun x y => Commute (g x) (f y)
x : α
hx : x ∈ ↑s
y : α
hy : y ∈ ↑s
h : x ≠ y
⊢ Commute (g x) (f y)

case hbc.hac
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝² : Monoid β
inst✝¹ : Monoid γ
inst✝ : FunLike F β γ
s : Finset α
f g : α → β
comm_ff : (↑s).Pairwise fun x y => Commute (f x) (f y)
comm_gg : (↑s).Pairwise fun x y => Commute (g x) (g y)
comm_gf : (↑s).Pairwise fun x y => Commute (g x) (f y)
x : α
hx : x ∈ ↑s
y : α
hy : y ∈ ↑s
h : x ≠ y
⊢ Commute (g x) (g y)

tactic: exact comm_ff.of_refl hx hy
state_before: case hac.hab
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝² : Monoid β
inst✝¹ : Monoid γ
inst✝ : FunLike F β γ
s : Finset α
f g : α → β
comm_ff : (↑s).Pairwise fun x y => Commute (f x) (f y)
comm_gg : (↑s).Pairwise fun x y => Commute (g x) (g y)
comm_gf : (↑s).Pairwise fun x y => Commute (g x) (f y)
x : α
hx : x ∈ ↑s
y : α
hy : y ∈ ↑s
h : x ≠ y
⊢ Commute (f x) (f y)
state_after: no goals

tactic: exact (comm_gf hy hx h.symm).symm
state_before: case hac.hac
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝² : Monoid β
inst✝¹ : Monoid γ
inst✝ : FunLike F β γ
s : Finset α
f g : α → β
comm_ff : (↑s).Pairwise fun x y => Commute (f x) (f y)
comm_gg : (↑s).Pairwise fun x y => Commute (g x) (g y)
comm_gf : (↑s).Pairwise fun x y => Commute (g x) (f y)
x : α
hx : x ∈ ↑s
y : α
hy : y ∈ ↑s
h : x ≠ y
⊢ Commute (f x) (g y)
state_after: no goals

tactic: exact comm_gf hx hy h
state_before: case hbc.hab
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝² : Monoid β
inst✝¹ : Monoid γ
inst✝ : FunLike F β γ
s : Finset α
f g : α → β
comm_ff : (↑s).Pairwise fun x y => Commute (f x) (f y)
comm_gg : (↑s).Pairwise fun x y => Commute (g x) (g y)
comm_gf : (↑s).Pairwise fun x y => Commute (g x) (f y)
x : α
hx : x ∈ ↑s
y : α
hy : y ∈ ↑s
h : x ≠ y
⊢ Commute (g x) (f y)
state_after: no goals

tactic: exact comm_gg.of_refl hx hy
state_before: case hbc.hac
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝² : Monoid β
inst✝¹ : Monoid γ
inst✝ : FunLike F β γ
s : Finset α
f g : α → β
comm_ff : (↑s).Pairwise fun x y => Commute (f x) (f y)
comm_gg : (↑s).Pairwise fun x y => Commute (g x) (g y)
comm_gf : (↑s).Pairwise fun x y => Commute (g x) (f y)
x : α
hx : x ∈ ↑s
y : α
hy : y ∈ ↑s
h : x ≠ y
⊢ Commute (g x) (g y)
state_after: no goals