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

tactic: simp only [le_rank_iff_exists_linearIndependent, Cardinal.lift_natCast, Cardinal.lift_eq_nat_iff,
  Cardinal.mk_set_eq_nat_iff_finset]
state_before: K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
n : ℕ
f : V →ₗ[K] V'
⊢ ↑n ≤ f.rank ↔ ∃ s, s.card = n ∧ LinearIndependent K fun (x : ↑↑s) => f ↑x
state_after: K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
n : ℕ
f : V →ₗ[K] V'
⊢ (∃ s, (∃ t, ↑t = s ∧ t.card = n) ∧ LinearIndependent K fun (x : ↑s) => f ↑x) ↔
    ∃ s, s.card = n ∧ LinearIndependent K fun (x : ↑↑s) => f ↑x

tactic: constructor
state_before: K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
n : ℕ
f : V →ₗ[K] V'
⊢ (∃ s, (∃ t, ↑t = s ∧ t.card = n) ∧ LinearIndependent K fun (x : ↑s) => f ↑x) ↔
    ∃ s, s.card = n ∧ LinearIndependent K fun (x : ↑↑s) => f ↑x
state_after: case mp
K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
n : ℕ
f : V →ₗ[K] V'
⊢ (∃ s, (∃ t, ↑t = s ∧ t.card = n) ∧ LinearIndependent K fun (x : ↑s) => f ↑x) →
    ∃ s, s.card = n ∧ LinearIndependent K fun (x : ↑↑s) => f ↑x

case mpr
K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
n : ℕ
f : V →ₗ[K] V'
⊢ (∃ s, s.card = n ∧ LinearIndependent K fun (x : ↑↑s) => f ↑x) →
    ∃ s, (∃ t, ↑t = s ∧ t.card = n) ∧ LinearIndependent K fun (x : ↑s) => f ↑x

tactic: rintro ⟨s, ⟨t, rfl, rfl⟩, si⟩
state_before: case mp
K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
n : ℕ
f : V →ₗ[K] V'
⊢ (∃ s, (∃ t, ↑t = s ∧ t.card = n) ∧ LinearIndependent K fun (x : ↑s) => f ↑x) →
    ∃ s, s.card = n ∧ LinearIndependent K fun (x : ↑↑s) => f ↑x
state_after: case mp.intro.intro.intro.intro
K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
f : V →ₗ[K] V'
t : Finset V
si : LinearIndependent K fun (x : ↑↑t) => f ↑x
⊢ ∃ s, s.card = t.card ∧ LinearIndependent K fun (x : ↑↑s) => f ↑x

tactic: exact ⟨t, rfl, si⟩
state_before: case mp.intro.intro.intro.intro
K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
f : V →ₗ[K] V'
t : Finset V
si : LinearIndependent K fun (x : ↑↑t) => f ↑x
⊢ ∃ s, s.card = t.card ∧ LinearIndependent K fun (x : ↑↑s) => f ↑x
state_after: no goals

tactic: rintro ⟨s, rfl, si⟩
state_before: case mpr
K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
n : ℕ
f : V →ₗ[K] V'
⊢ (∃ s, s.card = n ∧ LinearIndependent K fun (x : ↑↑s) => f ↑x) →
    ∃ s, (∃ t, ↑t = s ∧ t.card = n) ∧ LinearIndependent K fun (x : ↑s) => f ↑x
state_after: case mpr.intro.intro
K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
f : V →ₗ[K] V'
s : Finset V
si : LinearIndependent K fun (x : ↑↑s) => f ↑x
⊢ ∃ s_1, (∃ t, ↑t = s_1 ∧ t.card = s.card) ∧ LinearIndependent K fun (x : ↑s_1) => f ↑x

tactic: exact ⟨s, ⟨s, rfl, rfl⟩, si⟩
state_before: case mpr.intro.intro
K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
f : V →ₗ[K] V'
s : Finset V
si : LinearIndependent K fun (x : ↑↑s) => f ↑x
⊢ ∃ s_1, (∃ t, ↑t = s_1 ∧ t.card = s.card) ∧ LinearIndependent K fun (x : ↑s_1) => f ↑x
state_after: no goals