Theorem: LieAlgebra.SpecialLinear.sl_non_abelian
File: Mathlib/Algebra/Lie/Classical.lean

tactic: rcases Fintype.exists_pair_of_one_lt_card h with ⟨j, i, hij⟩
state_before: n : Type u_1
p : Type ?u.17923
q : Type ?u.17926
l : Type ?u.17929
R : Type u₂
inst✝⁶ : DecidableEq n
inst✝⁵ : DecidableEq p
inst✝⁴ : DecidableEq q
inst✝³ : DecidableEq l
inst✝² : CommRing R
inst✝¹ : Fintype n
inst✝ : Nontrivial R
h : 1 < Fintype.card n
⊢ ¬IsLieAbelian { x // x ∈ sl n R }

tactic: let A := Eb R i j hij
state_before: case intro.intro
n : Type u_1
p : Type ?u.17923
q : Type ?u.17926
l : Type ?u.17929
R : Type u₂
inst✝⁶ : DecidableEq n
inst✝⁵ : DecidableEq p
inst✝⁴ : DecidableEq q
inst✝³ : DecidableEq l
inst✝² : CommRing R
inst✝¹ : Fintype n
inst✝ : Nontrivial R
h : 1 < Fintype.card n
j i : n
hij : j ≠ i
⊢ ¬IsLieAbelian { x // x ∈ sl n R }

tactic: let B := Eb R j i hij.symm
state_before: case intro.intro
n : Type u_1
p : Type ?u.17923
q : Type ?u.17926
l : Type ?u.17929
R : Type u₂
inst✝⁶ : DecidableEq n
inst✝⁵ : DecidableEq p
inst✝⁴ : DecidableEq q
inst✝³ : DecidableEq l
inst✝² : CommRing R
inst✝¹ : Fintype n
inst✝ : Nontrivial R
h : 1 < Fintype.card n
j i : n
hij : j ≠ i
A : { x // x ∈ sl n R } := Eb R i j hij
⊢ ¬IsLieAbelian { x // x ∈ sl n R }

tactic: intro c
state_before: case intro.intro
n : Type u_1
p : Type ?u.17923
q : Type ?u.17926
l : Type ?u.17929
R : Type u₂
inst✝⁶ : DecidableEq n
inst✝⁵ : DecidableEq p
inst✝⁴ : DecidableEq q
inst✝³ : DecidableEq l
inst✝² : CommRing R
inst✝¹ : Fintype n
inst✝ : Nontrivial R
h : 1 < Fintype.card n
j i : n
hij : j ≠ i
A : { x // x ∈ sl n R } := Eb R i j hij
B : { x // x ∈ sl n R } := Eb R j i (_ : i ≠ j)
⊢ ¬IsLieAbelian { x // x ∈ sl n R }

tactic: have c' : A.val ⬝ B.val = B.val ⬝ A.val := by
  rw [← sub_eq_zero, ← sl_bracket, c.trivial, ZeroMemClass.coe_zero]
state_before: case intro.intro
n : Type u_1
p : Type ?u.17923
q : Type ?u.17926
l : Type ?u.17929
R : Type u₂
inst✝⁶ : DecidableEq n
inst✝⁵ : DecidableEq p
inst✝⁴ : DecidableEq q
inst✝³ : DecidableEq l
inst✝² : CommRing R
inst✝¹ : Fintype n
inst✝ : Nontrivial R
h : 1 < Fintype.card n
j i : n
hij : j ≠ i
A : { x // x ∈ sl n R } := Eb R i j hij
B : { x // x ∈ sl n R } := Eb R j i (_ : i ≠ j)
c : IsLieAbelian { x // x ∈ sl n R }
⊢ False

tactic: simpa [stdBasisMatrix, Matrix.mul_apply, hij] using congr_fun (congr_fun c' i) i
state_before: case intro.intro
n : Type u_1
p : Type ?u.17923
q : Type ?u.17926
l : Type ?u.17929
R : Type u₂
inst✝⁶ : DecidableEq n
inst✝⁵ : DecidableEq p
inst✝⁴ : DecidableEq q
inst✝³ : DecidableEq l
inst✝² : CommRing R
inst✝¹ : Fintype n
inst✝ : Nontrivial R
h : 1 < Fintype.card n
j i : n
hij : j ≠ i
A : { x // x ∈ sl n R } := Eb R i j hij
B : { x // x ∈ sl n R } := Eb R j i (_ : i ≠ j)
c : IsLieAbelian { x // x ∈ sl n R }
c' : ↑A ⬝ ↑B = ↑B ⬝ ↑A
⊢ False

tactic: rw [← sub_eq_zero, ← sl_bracket, c.trivial, ZeroMemClass.coe_zero]
state_before: n : Type u_1
p : Type ?u.17923
q : Type ?u.17926
l : Type ?u.17929
R : Type u₂
inst✝⁶ : DecidableEq n
inst✝⁵ : DecidableEq p
inst✝⁴ : DecidableEq q
inst✝³ : DecidableEq l
inst✝² : CommRing R
inst✝¹ : Fintype n
inst✝ : Nontrivial R
h : 1 < Fintype.card n
j i : n
hij : j ≠ i
A : { x // x ∈ sl n R } := Eb R i j hij
B : { x // x ∈ sl n R } := Eb R j i (_ : i ≠ j)
c : IsLieAbelian { x // x ∈ sl n R }
⊢ ↑A ⬝ ↑B = ↑B ⬝ ↑A