Theorem: infinite_basis_le_maximal_linearIndependent'
File: Mathlib/LinearAlgebra/Basis.lean

tactic: let Φ := fun k : κ => (b.repr (v k)).support
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
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✝⁴ : Nontrivial R
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
ι : Type w
b : Basis ι R M
inst✝ : Infinite ι
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
⊢ lift.{w', w} #ι ≤ lift.{w, w'} #κ
state_after: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
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✝⁴ : Nontrivial R
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
ι : Type w
b : Basis ι R M
inst✝ : Infinite ι
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
Φ : κ → Finset ι := fun k => (b.repr (v k)).support
⊢ lift.{w', w} #ι ≤ lift.{w, w'} #κ

tactic: have w₁ : #ι ≤ #(Set.range Φ) := by
  apply Cardinal.le_range_of_union_finset_eq_top
  exact union_support_maximal_linearIndependent_eq_range_basis b v i m
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
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✝⁴ : Nontrivial R
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
ι : Type w
b : Basis ι R M
inst✝ : Infinite ι
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
Φ : κ → Finset ι := fun k => (b.repr (v k)).support
⊢ lift.{w', w} #ι ≤ lift.{w, w'} #κ
state_after: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
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✝⁴ : Nontrivial R
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
ι : Type w
b : Basis ι R M
inst✝ : Infinite ι
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
Φ : κ → Finset ι := fun k => (b.repr (v k)).support
w₁ : #ι ≤ #↑(range Φ)
⊢ lift.{w', w} #ι ≤ lift.{w, w'} #κ

tactic: have w₂ : Cardinal.lift.{w'} #(Set.range Φ) ≤ Cardinal.lift.{w} #κ := Cardinal.mk_range_le_lift
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
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✝⁴ : Nontrivial R
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
ι : Type w
b : Basis ι R M
inst✝ : Infinite ι
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
Φ : κ → Finset ι := fun k => (b.repr (v k)).support
w₁ : #ι ≤ #↑(range Φ)
⊢ lift.{w', w} #ι ≤ lift.{w, w'} #κ
state_after: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
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✝⁴ : Nontrivial R
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
ι : Type w
b : Basis ι R M
inst✝ : Infinite ι
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
Φ : κ → Finset ι := fun k => (b.repr (v k)).support
w₁ : #ι ≤ #↑(range Φ)
w₂ : lift.{w', w} #↑(range Φ) ≤ lift.{w, w'} #κ
⊢ lift.{w', w} #ι ≤ lift.{w, w'} #κ

tactic: exact (Cardinal.lift_le.mpr w₁).trans w₂
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
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✝⁴ : Nontrivial R
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
ι : Type w
b : Basis ι R M
inst✝ : Infinite ι
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
Φ : κ → Finset ι := fun k => (b.repr (v k)).support
w₁ : #ι ≤ #↑(range Φ)
w₂ : lift.{w', w} #↑(range Φ) ≤ lift.{w, w'} #κ
⊢ lift.{w', w} #ι ≤ lift.{w, w'} #κ
state_after: no goals

tactic: apply Cardinal.le_range_of_union_finset_eq_top
state_before: ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
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✝⁴ : Nontrivial R
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
ι : Type w
b : Basis ι R M
inst✝ : Infinite ι
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
Φ : κ → Finset ι := fun k => (b.repr (v k)).support
⊢ #ι ≤ #↑(range Φ)
state_after: case w
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
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✝⁴ : Nontrivial R
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
ι : Type w
b : Basis ι R M
inst✝ : Infinite ι
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
Φ : κ → Finset ι := fun k => (b.repr (v k)).support
⊢ ⋃ a, ↑(Φ a) = ⊤

tactic: exact union_support_maximal_linearIndependent_eq_range_basis b v i m
state_before: case w
ι✝¹ : Type u_1
ι' : Type u_2
R✝ : Type u_3
R₂ : Type u_4
K : Type u_5
M✝ : Type u_6
M'✝ : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
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✝⁴ : Nontrivial R
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
ι : Type w
b : Basis ι R M
inst✝ : Infinite ι
κ : Type w'
v : κ → M
i : LinearIndependent R v
m : i.Maximal
Φ : κ → Finset ι := fun k => (b.repr (v k)).support
⊢ ⋃ a, ↑(Φ a) = ⊤
state_after: no goals