Theorem: linearIndependent_bounded_of_finset_linearIndependent_bounded
File: Mathlib/LinearAlgebra/LinearIndependent.lean

Proof steps:
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
n : ℕ
H : ∀ (s : Finset M), (LinearIndependent R fun i => ↑i) → s.card ≤ n
⊢ ∀ (s : Set M), LinearIndependent (ι := { x // x ∈ s }) R Subtype.val → #↑s ≤ ↑n
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
n : ℕ
H : ∀ (s : Finset M), (LinearIndependent R fun i => ↑i) → s.card ≤ n
s : Set M
li : LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
⊢ #↑s ≤ ↑n
tactic: intro s li
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
n : ℕ
H : ∀ (s : Finset M), (LinearIndependent R fun i => ↑i) → s.card ≤ n
s : Set M
li : LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
⊢ #↑s ≤ ↑n
state_after: case H
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
n : ℕ
H : ∀ (s : Finset M), (LinearIndependent R fun i => ↑i) → s.card ≤ n
s : Set M
li : LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
⊢ ∀ (s_1 : Finset ↑s), s_1.card ≤ n
tactic: apply Cardinal.card_le_of
state_before: case H
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
n : ℕ
H : ∀ (s : Finset M), (LinearIndependent R fun i => ↑i) → s.card ≤ n
s : Set M
li : LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
⊢ ∀ (s_1 : Finset ↑s), s_1.card ≤ n
state_after: case H
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
n : ℕ
H : ∀ (s : Finset M), (LinearIndependent R fun i => ↑i) → s.card ≤ n
s : Set M
li : LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
t : Finset ↑s
⊢ t.card ≤ n
tactic: intro t
state_before: case H
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
n : ℕ
H : ∀ (s : Finset M), (LinearIndependent R fun i => ↑i) → s.card ≤ n
s : Set M
li : LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
t : Finset ↑s
⊢ t.card ≤ n
state_after: case H
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
n : ℕ
H : ∀ (s : Finset M), (LinearIndependent R fun i => ↑i) → s.card ≤ n
s : Set M
li : LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
t : Finset ↑s
⊢ (Finset.map (Embedding.subtype s) t).card ≤ n
tactic: rw [← Finset.card_map (Embedding.subtype s)]
state_before: case H
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
n : ℕ
H : ∀ (s : Finset M), (LinearIndependent R fun i => ↑i) → s.card ≤ n
s : Set M
li : LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
t : Finset ↑s
⊢ (Finset.map (Embedding.subtype s) t).card ≤ n
state_after: case H.a
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
n : ℕ
H : ∀ (s : Finset M), (LinearIndependent R fun i => ↑i) → s.card ≤ n
s : Set M
li : LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
t : Finset ↑s
⊢ LinearIndependent R fun i => ↑i
tactic: apply H
state_before: case H.a
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
n : ℕ
H : ∀ (s : Finset M), (LinearIndependent R fun i => ↑i) → s.card ≤ n
s : Set M
li : LinearIndependent (ι := { x // x ∈ s }) R Subtype.val
t : Finset ↑s
⊢ LinearIndependent R fun i => ↑i
state_after: no goals
tactic: apply linearIndependent_finset_map_embedding_subtype _ li