Theorem: LinearMap.det_eq_one_of_finrank_eq_zero
File: Mathlib/LinearAlgebra/Determinant.lean

tactic: classical
  refine' @LinearMap.det_cases M _ 𝕜 _ _ _ (fun t => t = 1) f _ rfl
  intro s b
  have : IsEmpty s := by
    rw [← Fintype.card_eq_zero_iff]
    exact (FiniteDimensional.finrank_eq_card_basis b).symm.trans h
  exact Matrix.det_isEmpty
state_before: R : Type ?u.957050
inst✝¹² : CommRing R
M✝ : Type ?u.957056
inst✝¹¹ : AddCommGroup M✝
inst✝¹⁰ : Module R M✝
M' : Type ?u.957641
inst✝⁹ : AddCommGroup M'
inst✝⁸ : Module R M'
ι : Type ?u.958183
inst✝⁷ : DecidableEq ι
inst✝⁶ : Fintype ι
e : Basis ι R M✝
A : Type ?u.958661
inst✝⁵ : CommRing A
inst✝⁴ : Module A M✝
κ : Type ?u.959159
inst✝³ : Fintype κ
𝕜 : Type u_1
inst✝² : Field 𝕜
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module 𝕜 M
h : FiniteDimensional.finrank 𝕜 M = 0
f : M →ₗ[𝕜] M
⊢ ↑LinearMap.det f = 1

tactic: refine' @LinearMap.det_cases M _ 𝕜 _ _ _ (fun t => t = 1) f _ rfl
state_before: R : Type ?u.957050
inst✝¹² : CommRing R
M✝ : Type ?u.957056
inst✝¹¹ : AddCommGroup M✝
inst✝¹⁰ : Module R M✝
M' : Type ?u.957641
inst✝⁹ : AddCommGroup M'
inst✝⁸ : Module R M'
ι : Type ?u.958183
inst✝⁷ : DecidableEq ι
inst✝⁶ : Fintype ι
e : Basis ι R M✝
A : Type ?u.958661
inst✝⁵ : CommRing A
inst✝⁴ : Module A M✝
κ : Type ?u.959159
inst✝³ : Fintype κ
𝕜 : Type u_1
inst✝² : Field 𝕜
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module 𝕜 M
h : FiniteDimensional.finrank 𝕜 M = 0
f : M →ₗ[𝕜] M
⊢ ↑LinearMap.det f = 1

tactic: intro s b
state_before: R : Type ?u.957050
inst✝¹² : CommRing R
M✝ : Type ?u.957056
inst✝¹¹ : AddCommGroup M✝
inst✝¹⁰ : Module R M✝
M' : Type ?u.957641
inst✝⁹ : AddCommGroup M'
inst✝⁸ : Module R M'
ι : Type ?u.958183
inst✝⁷ : DecidableEq ι
inst✝⁶ : Fintype ι
e : Basis ι R M✝
A : Type ?u.958661
inst✝⁵ : CommRing A
inst✝⁴ : Module A M✝
κ : Type ?u.959159
inst✝³ : Fintype κ
𝕜 : Type u_1
inst✝² : Field 𝕜
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module 𝕜 M
h : FiniteDimensional.finrank 𝕜 M = 0
f : M →ₗ[𝕜] M
⊢ ∀ (s : Finset M) (b : Basis { x // x ∈ s } 𝕜 M), (fun t => t = 1) (det (↑(toMatrix b b) f))

tactic: have : IsEmpty s := by
  rw [← Fintype.card_eq_zero_iff]
  exact (FiniteDimensional.finrank_eq_card_basis b).symm.trans h
state_before: R : Type ?u.957050
inst✝¹² : CommRing R
M✝ : Type ?u.957056
inst✝¹¹ : AddCommGroup M✝
inst✝¹⁰ : Module R M✝
M' : Type ?u.957641
inst✝⁹ : AddCommGroup M'
inst✝⁸ : Module R M'
ι : Type ?u.958183
inst✝⁷ : DecidableEq ι
inst✝⁶ : Fintype ι
e : Basis ι R M✝
A : Type ?u.958661
inst✝⁵ : CommRing A
inst✝⁴ : Module A M✝
κ : Type ?u.959159
inst✝³ : Fintype κ
𝕜 : Type u_1
inst✝² : Field 𝕜
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module 𝕜 M
h : FiniteDimensional.finrank 𝕜 M = 0
f : M →ₗ[𝕜] M
s : Finset M
b : Basis { x // x ∈ s } 𝕜 M
⊢ det (↑(toMatrix b b) f) = 1

tactic: exact Matrix.det_isEmpty
state_before: R : Type ?u.957050
inst✝¹² : CommRing R
M✝ : Type ?u.957056
inst✝¹¹ : AddCommGroup M✝
inst✝¹⁰ : Module R M✝
M' : Type ?u.957641
inst✝⁹ : AddCommGroup M'
inst✝⁸ : Module R M'
ι : Type ?u.958183
inst✝⁷ : DecidableEq ι
inst✝⁶ : Fintype ι
e : Basis ι R M✝
A : Type ?u.958661
inst✝⁵ : CommRing A
inst✝⁴ : Module A M✝
κ : Type ?u.959159
inst✝³ : Fintype κ
𝕜 : Type u_1
inst✝² : Field 𝕜
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module 𝕜 M
h : FiniteDimensional.finrank 𝕜 M = 0
f : M →ₗ[𝕜] M
s : Finset M
b : Basis { x // x ∈ s } 𝕜 M
this : IsEmpty { x // x ∈ s }
⊢ det (↑(toMatrix b b) f) = 1

tactic: rw [← Fintype.card_eq_zero_iff]
state_before: R : Type ?u.957050
inst✝¹² : CommRing R
M✝ : Type ?u.957056
inst✝¹¹ : AddCommGroup M✝
inst✝¹⁰ : Module R M✝
M' : Type ?u.957641
inst✝⁹ : AddCommGroup M'
inst✝⁸ : Module R M'
ι : Type ?u.958183
inst✝⁷ : DecidableEq ι
inst✝⁶ : Fintype ι
e : Basis ι R M✝
A : Type ?u.958661
inst✝⁵ : CommRing A
inst✝⁴ : Module A M✝
κ : Type ?u.959159
inst✝³ : Fintype κ
𝕜 : Type u_1
inst✝² : Field 𝕜
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module 𝕜 M
h : FiniteDimensional.finrank 𝕜 M = 0
f : M →ₗ[𝕜] M
s : Finset M
b : Basis { x // x ∈ s } 𝕜 M
⊢ IsEmpty { x // x ∈ s }

tactic: exact (FiniteDimensional.finrank_eq_card_basis b).symm.trans h
state_before: R : Type ?u.957050
inst✝¹² : CommRing R
M✝ : Type ?u.957056
inst✝¹¹ : AddCommGroup M✝
inst✝¹⁰ : Module R M✝
M' : Type ?u.957641
inst✝⁹ : AddCommGroup M'
inst✝⁸ : Module R M'
ι : Type ?u.958183
inst✝⁷ : DecidableEq ι
inst✝⁶ : Fintype ι
e : Basis ι R M✝
A : Type ?u.958661
inst✝⁵ : CommRing A
inst✝⁴ : Module A M✝
κ : Type ?u.959159
inst✝³ : Fintype κ
𝕜 : Type u_1
inst✝² : Field 𝕜
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module 𝕜 M
h : FiniteDimensional.finrank 𝕜 M = 0
f : M →ₗ[𝕜] M
s : Finset M
b : Basis { x // x ∈ s } 𝕜 M
⊢ Fintype.card { x // x ∈ s } = 0