Theorem: Matrix.updateRow_eq_transvection
File: Mathlib/LinearAlgebra/Matrix/Transvection.lean

tactic: cases nonempty_fintype n
state_before: n : Type u_1
p : Type ?u.2735
R : Type u₂
𝕜 : Type ?u.2740
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Finite n
c : R
⊢ updateRow 1 i (OfNat.ofNat 1 i + c • OfNat.ofNat 1 j) = transvection i j c

tactic: ext (a b)
state_before: case intro
n : Type u_1
p : Type ?u.2735
R : Type u₂
𝕜 : Type ?u.2740
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Finite n
c : R
val✝ : Fintype n
⊢ updateRow 1 i (OfNat.ofNat 1 i + c • OfNat.ofNat 1 j) = transvection i j c

tactic: by_cases ha : i = a
state_before: case intro.a.h
n : Type u_1
p : Type ?u.2735
R : Type u₂
𝕜 : Type ?u.2740
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Finite n
c : R
val✝ : Fintype n
a b : n
⊢ updateRow 1 i (OfNat.ofNat 1 i + c • OfNat.ofNat 1 j) a b = transvection i j c a b

tactic: by_cases hb : j = b
state_before: case pos
n : Type u_1
p : Type ?u.2735
R : Type u₂
𝕜 : Type ?u.2740
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Finite n
c : R
val✝ : Fintype n
a b : n
ha : i = a
⊢ updateRow 1 i (OfNat.ofNat 1 i + c • OfNat.ofNat 1 j) a b = transvection i j c a b

case neg
n : Type u_1
p : Type ?u.2735
R : Type u₂
𝕜 : Type ?u.2740
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Finite n
c : R
val✝ : Fintype n
a b : n
ha : ¬i = a
⊢ updateRow 1 i (OfNat.ofNat 1 i + c • OfNat.ofNat 1 j) a b = transvection i j c a b

tactic: simp only [updateRow_self, transvection, ha, hb, Pi.add_apply, StdBasisMatrix.apply_same,
  one_apply_eq, Pi.smul_apply, mul_one, Algebra.id.smul_eq_mul, add_apply]
state_before: case pos
n : Type u_1
p : Type ?u.2735
R : Type u₂
𝕜 : Type ?u.2740
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Finite n
c : R
val✝ : Fintype n
a b : n
ha : i = a
hb : j = b
⊢ updateRow 1 i (OfNat.ofNat 1 i + c • OfNat.ofNat 1 j) a b = transvection i j c a b

tactic: simp only [updateRow_self, transvection, ha, hb, StdBasisMatrix.apply_of_ne, Pi.add_apply,
  Ne.def, not_false_iff, Pi.smul_apply, and_false_iff, one_apply_ne, Algebra.id.smul_eq_mul,
  MulZeroClass.mul_zero, add_apply]
state_before: case neg
n : Type u_1
p : Type ?u.2735
R : Type u₂
𝕜 : Type ?u.2740
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Finite n
c : R
val✝ : Fintype n
a b : n
ha : i = a
hb : ¬j = b
⊢ updateRow 1 i (OfNat.ofNat 1 i + c • OfNat.ofNat 1 j) a b = transvection i j c a b

tactic: simp only [updateRow_ne, transvection, ha, Ne.symm ha, StdBasisMatrix.apply_of_ne, add_zero,
  Algebra.id.smul_eq_mul, Ne.def, not_false_iff, DMatrix.add_apply, Pi.smul_apply,
  MulZeroClass.mul_zero, false_and_iff, add_apply]
state_before: case neg
n : Type u_1
p : Type ?u.2735
R : Type u₂
𝕜 : Type ?u.2740
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Finite n
c : R
val✝ : Fintype n
a b : n
ha : ¬i = a
⊢ updateRow 1 i (OfNat.ofNat 1 i + c • OfNat.ofNat 1 j) a b = transvection i j c a b