Theorem: RootPairing.isOrthogonal_comm
File: Mathlib/LinearAlgebra/RootSystem/Defs.lean

tactic: rw [Commute, SemiconjBy]
state_before: ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
h : P.IsOrthogonal i j
⊢ Commute (P.reflection i) (P.reflection j)
state_after: ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
h : P.IsOrthogonal i j
⊢ P.reflection i * P.reflection j = P.reflection j * P.reflection i

tactic: ext v
state_before: ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
h : P.IsOrthogonal i j
⊢ P.reflection i * P.reflection j = P.reflection j * P.reflection i
state_after: case h
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
h : P.IsOrthogonal i j
v : M
⊢ (P.reflection i * P.reflection j) v = (P.reflection j * P.reflection i) v

tactic: replace h : P.pairing i j = 0 ∧ P.pairing j i = 0 := by simpa [IsOrthogonal] using h
state_before: case h
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
h : P.IsOrthogonal i j
v : M
⊢ (P.reflection i * P.reflection j) v = (P.reflection j * P.reflection i) v
state_after: case h
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
v : M
h : P.pairing i j = 0 ∧ P.pairing j i = 0
⊢ (P.reflection i * P.reflection j) v = (P.reflection j * P.reflection i) v

tactic: erw [LinearMap.mul_apply, LinearMap.mul_apply]
state_before: case h
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
v : M
h : P.pairing i j = 0 ∧ P.pairing j i = 0
⊢ (P.reflection i * P.reflection j) v = (P.reflection j * P.reflection i) v
state_after: case h
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
v : M
h : P.pairing i j = 0 ∧ P.pairing j i = 0
⊢ ↑(P.reflection i) (↑(P.reflection j) v) = ↑(P.reflection j) (↑(P.reflection i) v)

tactic: simp only [LinearEquiv.coe_coe, reflection_apply, map_sub, map_smul, root_coroot_eq_pairing,
  zero_smul, sub_zero, h]
state_before: case h
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
v : M
h : P.pairing i j = 0 ∧ P.pairing j i = 0
⊢ ↑(P.reflection i) (↑(P.reflection j) v) = ↑(P.reflection j) (↑(P.reflection i) v)
state_after: case h
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
v : M
h : P.pairing i j = 0 ∧ P.pairing j i = 0
⊢ v - (P.toLin v) (P.coroot i) • P.root i - (P.toLin v) (P.coroot j) • P.root j =
    v - (P.toLin v) (P.coroot j) • P.root j - (P.toLin v) (P.coroot i) • P.root i

tactic: abel
state_before: case h
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
v : M
h : P.pairing i j = 0 ∧ P.pairing j i = 0
⊢ v - (P.toLin v) (P.coroot i) • P.root i - (P.toLin v) (P.coroot j) • P.root j =
    v - (P.toLin v) (P.coroot j) • P.root j - (P.toLin v) (P.coroot i) • P.root i
state_after: no goals

tactic: simpa [IsOrthogonal] using h
state_before: ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
h : P.IsOrthogonal i j
v : M
⊢ P.pairing i j = 0 ∧ P.pairing j i = 0
state_after: no goals