Theorem: Matrix.isRegular_of_isLeftRegular_det
File: Mathlib/LinearAlgebra/Matrix/Adjugate.lean

tactic: constructor
state_before: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
hA : IsLeftRegular (det A)
⊢ IsRegular A

tactic: intro B C h
state_before: case left
m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
hA : IsLeftRegular (det A)
⊢ IsLeftRegular A

tactic: refine' hA.matrix _
state_before: case left
m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
hA : IsLeftRegular (det A)
B C : Matrix n n α
h : (fun x => A * x) B = (fun x => A * x) C
⊢ B = C

tactic: simp only at h ⊢
state_before: case left
m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
hA : IsLeftRegular (det A)
B C : Matrix n n α
h : (fun x => A * x) B = (fun x => A * x) C
⊢ (fun x => det A • x) B = (fun x => det A • x) C

tactic: rw [← Matrix.one_mul B, ← Matrix.one_mul C, ← Matrix.smul_mul, ← Matrix.smul_mul, ←
  adjugate_mul, Matrix.mul_assoc, Matrix.mul_assoc, ← mul_eq_mul A, h, mul_eq_mul]
state_before: case left
m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
hA : IsLeftRegular (det A)
B C : Matrix n n α
h : A * B = A * C
⊢ det A • B = det A • C

tactic: intro B C h
state_before: case right
m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
hA : IsLeftRegular (det A)
⊢ IsRightRegular A

tactic: simp only [mul_eq_mul] at h
state_before: case right
m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
hA : IsLeftRegular (det A)
B C : Matrix n n α
h : (fun x => x * A) B = (fun x => x * A) C
⊢ B = C

tactic: refine' hA.matrix _
state_before: case right
m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
hA : IsLeftRegular (det A)
B C : Matrix n n α
h : B ⬝ A = C ⬝ A
⊢ B = C

tactic: simp only
state_before: case right
m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
hA : IsLeftRegular (det A)
B C : Matrix n n α
h : B ⬝ A = C ⬝ A
⊢ (fun x => det A • x) B = (fun x => det A • x) C

tactic: rw [← Matrix.mul_one B, ← Matrix.mul_one C, ← Matrix.mul_smul, ← Matrix.mul_smul, ←
  mul_adjugate, ← Matrix.mul_assoc, ← Matrix.mul_assoc, h]
state_before: case right
m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
hA : IsLeftRegular (det A)
B C : Matrix n n α
h : B ⬝ A = C ⬝ A
⊢ det A • B = det A • C