Theorem: le_rank_iff_exists_linearIndependent_finset
File: Mathlib/LinearAlgebra/Dimension/FreeAndStrongRankCondition.lean

tactic: simp only [le_rank_iff_exists_linearIndependent, mk_set_eq_nat_iff_finset]
state_before: K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
n : ℕ
⊢ ↑n ≤ Module.rank K V ↔ ∃ s, s.card = n ∧ LinearIndependent (ι := { x // x ∈ ↑s }) K Subtype.val
state_after: K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
n : ℕ
⊢ (∃ s, (∃ t, ↑t = s ∧ t.card = n) ∧ LinearIndependent (ι := { x // x ∈ s }) K Subtype.val) ↔
    ∃ s, s.card = n ∧ LinearIndependent (ι := { x // x ∈ ↑s }) K Subtype.val

tactic: constructor
state_before: K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
n : ℕ
⊢ (∃ s, (∃ t, ↑t = s ∧ t.card = n) ∧ LinearIndependent (ι := { x // x ∈ s }) K Subtype.val) ↔
    ∃ s, s.card = n ∧ LinearIndependent (ι := { x // x ∈ ↑s }) K Subtype.val
state_after: case mp
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
n : ℕ
⊢ (∃ s, (∃ t, ↑t = s ∧ t.card = n) ∧ LinearIndependent (ι := { x // x ∈ s }) K Subtype.val) →
    ∃ s, s.card = n ∧ LinearIndependent (ι := { x // x ∈ ↑s }) K Subtype.val

case mpr
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
n : ℕ
⊢ (∃ s, s.card = n ∧ LinearIndependent (ι := { x // x ∈ ↑s }) K Subtype.val) →
    ∃ s, (∃ t, ↑t = s ∧ t.card = n) ∧ LinearIndependent (ι := { x // x ∈ s }) K Subtype.val

tactic: rintro ⟨s, ⟨t, rfl, rfl⟩, si⟩
state_before: case mp
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
n : ℕ
⊢ (∃ s, (∃ t, ↑t = s ∧ t.card = n) ∧ LinearIndependent (ι := { x // x ∈ s }) K Subtype.val) →
    ∃ s, s.card = n ∧ LinearIndependent (ι := { x // x ∈ ↑s }) K Subtype.val
state_after: case mp.intro.intro.intro.intro
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
t : Finset V
si : LinearIndependent (ι := { x // x ∈ ↑t }) K Subtype.val
⊢ ∃ s, s.card = t.card ∧ LinearIndependent (ι := { x // x ∈ ↑s }) K Subtype.val

tactic: exact ⟨t, rfl, si⟩
state_before: case mp.intro.intro.intro.intro
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
t : Finset V
si : LinearIndependent (ι := { x // x ∈ ↑t }) K Subtype.val
⊢ ∃ s, s.card = t.card ∧ LinearIndependent (ι := { x // x ∈ ↑s }) K Subtype.val
state_after: no goals

tactic: rintro ⟨s, rfl, si⟩
state_before: case mpr
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
n : ℕ
⊢ (∃ s, s.card = n ∧ LinearIndependent (ι := { x // x ∈ ↑s }) K Subtype.val) →
    ∃ s, (∃ t, ↑t = s ∧ t.card = n) ∧ LinearIndependent (ι := { x // x ∈ s }) K Subtype.val
state_after: case mpr.intro.intro
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
s : Finset V
si : LinearIndependent (ι := { x // x ∈ ↑s }) K Subtype.val
⊢ ∃ s_1, (∃ t, ↑t = s_1 ∧ t.card = s.card) ∧ LinearIndependent (ι := { x // x ∈ s_1 }) K Subtype.val

tactic: exact ⟨s, ⟨s, rfl, rfl⟩, si⟩
state_before: case mpr.intro.intro
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
s : Finset V
si : LinearIndependent (ι := { x // x ∈ ↑s }) K Subtype.val
⊢ ∃ s_1, (∃ t, ↑t = s_1 ∧ t.card = s.card) ∧ LinearIndependent (ι := { x // x ∈ s_1 }) K Subtype.val
state_after: no goals