Theorem: finrank_eq_zero_of_basis_imp_not_finite
File: Mathlib/LinearAlgebra/Dimension/Finite.lean

Proof steps:
state_before: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁹ : Ring R
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
inst✝² : Nontrivial R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Module.Free R M
h : ∀ (s : Set M), Basis (↑s) R M → ¬s.Finite
⊢ finrank R M = 0
state_after: case inl
R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁹ : Ring R
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
inst✝² : Nontrivial R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Module.Free R M
h : ∀ (s : Set M), Basis (↑s) R M → ¬s.Finite
h✝ : Subsingleton R
⊢ finrank R M = 0

case inr
R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁹ : Ring R
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
inst✝² : Nontrivial R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Module.Free R M
h : ∀ (s : Set M), Basis (↑s) R M → ¬s.Finite
h✝ : Nontrivial R
⊢ finrank R M = 0
tactic: cases subsingleton_or_nontrivial R
state_before: case inr
R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁹ : Ring R
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
inst✝² : Nontrivial R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Module.Free R M
h : ∀ (s : Set M), Basis (↑s) R M → ¬s.Finite
h✝ : Nontrivial R
⊢ finrank R M = 0
state_after: case inr.intro.intro
R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁹ : Ring R
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
inst✝² : Nontrivial R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Module.Free R M
h : ∀ (s : Set M), Basis (↑s) R M → ¬s.Finite
h✝ : Nontrivial R
w✝ : Set M
b : Basis (↑w✝) R M
⊢ finrank R M = 0
tactic: obtain ⟨_, ⟨b⟩⟩ := (Module.free_iff_set R M).mp ‹_›
state_before: case inr.intro.intro
R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁹ : Ring R
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
inst✝² : Nontrivial R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Module.Free R M
h : ∀ (s : Set M), Basis (↑s) R M → ¬s.Finite
h✝ : Nontrivial R
w✝ : Set M
b : Basis (↑w✝) R M
⊢ finrank R M = 0
state_after: case inr.intro.intro
R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁹ : Ring R
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
inst✝² : Nontrivial R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Module.Free R M
h : ∀ (s : Set M), Basis (↑s) R M → ¬s.Finite
h✝ : Nontrivial R
w✝ : Set M
b : Basis (↑w✝) R M
this : Infinite ↑w✝
⊢ finrank R M = 0
tactic: have := Set.Infinite.to_subtype (h _ b)
state_before: case inr.intro.intro
R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁹ : Ring R
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
inst✝² : Nontrivial R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Module.Free R M
h : ∀ (s : Set M), Basis (↑s) R M → ¬s.Finite
h✝ : Nontrivial R
w✝ : Set M
b : Basis (↑w✝) R M
this : Infinite ↑w✝
⊢ finrank R M = 0
state_after: no goals
tactic: exact b.linearIndependent.finrank_eq_zero_of_infinite