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

tactic: by_cases hη : Nonempty η
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
η : Type u_8
s : η → Set M
hs : Directed (fun x x_1 => x ⊆ x_1) s
h : ∀ (i : η), LinearIndependent R fun (x : ↑(s i)) => ↑x
⊢ LinearIndependent R fun (x : ↑(⋃ i, s i)) => ↑x
state_after: case pos
ι : 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
η : Type u_8
s : η → Set M
hs : Directed (fun x x_1 => x ⊆ x_1) s
h : ∀ (i : η), LinearIndependent R fun (x : ↑(s i)) => ↑x
hη : Nonempty η
⊢ LinearIndependent R fun (x : ↑(⋃ i, s i)) => ↑x

case neg
ι : 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
η : Type u_8
s : η → Set M
hs : Directed (fun x x_1 => x ⊆ x_1) s
h : ∀ (i : η), LinearIndependent R fun (x : ↑(s i)) => ↑x
hη : ¬Nonempty η
⊢ LinearIndependent R fun (x : ↑(⋃ i, s i)) => ↑x

tactic: refine linearIndependent_of_finite (⋃ i, s i) fun t ht ft => ?_
state_before: case pos
ι : 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
η : Type u_8
s : η → Set M
hs : Directed (fun x x_1 => x ⊆ x_1) s
h : ∀ (i : η), LinearIndependent R fun (x : ↑(s i)) => ↑x
hη : Nonempty η
⊢ LinearIndependent R fun (x : ↑(⋃ i, s i)) => ↑x
state_after: case pos
ι : 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
η : Type u_8
s : η → Set M
hs : Directed (fun x x_1 => x ⊆ x_1) s
h : ∀ (i : η), LinearIndependent R fun (x : ↑(s i)) => ↑x
hη : Nonempty η
t : Set M
ht : t ⊆ ⋃ i, s i
ft : t.Finite
⊢ LinearIndependent R fun (x : ↑t) => ↑x

tactic: rcases finite_subset_iUnion ft ht with ⟨I, fi, hI⟩
state_before: case pos
ι : 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
η : Type u_8
s : η → Set M
hs : Directed (fun x x_1 => x ⊆ x_1) s
h : ∀ (i : η), LinearIndependent R fun (x : ↑(s i)) => ↑x
hη : Nonempty η
t : Set M
ht : t ⊆ ⋃ i, s i
ft : t.Finite
⊢ LinearIndependent R fun (x : ↑t) => ↑x
state_after: case pos.intro.intro
ι : 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
η : Type u_8
s : η → Set M
hs : Directed (fun x x_1 => x ⊆ x_1) s
h : ∀ (i : η), LinearIndependent R fun (x : ↑(s i)) => ↑x
hη : Nonempty η
t : Set M
ht : t ⊆ ⋃ i, s i
ft : t.Finite
I : Set η
fi : I.Finite
hI : t ⊆ ⋃ i ∈ I, s i
⊢ LinearIndependent R fun (x : ↑t) => ↑x

tactic: rcases hs.finset_le fi.toFinset with ⟨i, hi⟩
state_before: case pos.intro.intro
ι : 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
η : Type u_8
s : η → Set M
hs : Directed (fun x x_1 => x ⊆ x_1) s
h : ∀ (i : η), LinearIndependent R fun (x : ↑(s i)) => ↑x
hη : Nonempty η
t : Set M
ht : t ⊆ ⋃ i, s i
ft : t.Finite
I : Set η
fi : I.Finite
hI : t ⊆ ⋃ i ∈ I, s i
⊢ LinearIndependent R fun (x : ↑t) => ↑x
state_after: case pos.intro.intro.intro
ι : 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
η : Type u_8
s : η → Set M
hs : Directed (fun x x_1 => x ⊆ x_1) s
h : ∀ (i : η), LinearIndependent R fun (x : ↑(s i)) => ↑x
hη : Nonempty η
t : Set M
ht : t ⊆ ⋃ i, s i
ft : t.Finite
I : Set η
fi : I.Finite
hI : t ⊆ ⋃ i ∈ I, s i
i : η
hi : ∀ i_1 ∈ fi.toFinset, s i_1 ⊆ s i
⊢ LinearIndependent R fun (x : ↑t) => ↑x

tactic: exact (h i).mono (Subset.trans hI <| iUnion₂_subset fun j hj => hi j (fi.mem_toFinset.2 hj))
state_before: case pos.intro.intro.intro
ι : 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
η : Type u_8
s : η → Set M
hs : Directed (fun x x_1 => x ⊆ x_1) s
h : ∀ (i : η), LinearIndependent R fun (x : ↑(s i)) => ↑x
hη : Nonempty η
t : Set M
ht : t ⊆ ⋃ i, s i
ft : t.Finite
I : Set η
fi : I.Finite
hI : t ⊆ ⋃ i ∈ I, s i
i : η
hi : ∀ i_1 ∈ fi.toFinset, s i_1 ⊆ s i
⊢ LinearIndependent R fun (x : ↑t) => ↑x
state_after: no goals

tactic: rintro _ ⟨_, ⟨i, _⟩, _⟩
state_before: case neg
ι : 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
η : Type u_8
s : η → Set M
hs : Directed (fun x x_1 => x ⊆ x_1) s
h : ∀ (i : η), LinearIndependent R fun (x : ↑(s i)) => ↑x
hη : ¬Nonempty η
⊢ ⋃ x, s x ⊆ ∅
state_after: case neg.intro.intro.intro
ι : 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
η : Type u_8
s : η → Set M
hs : Directed (fun x x_1 => x ⊆ x_1) s
h : ∀ (i : η), LinearIndependent R fun (x : ↑(s i)) => ↑x
hη : ¬Nonempty η
a✝ : M
w✝ : Set M
right✝ : a✝ ∈ w✝
i : η
h✝ : (fun x => s x) i = w✝
⊢ a✝ ∈ ∅

tactic: exact hη ⟨i⟩
state_before: case neg.intro.intro.intro
ι : 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
η : Type u_8
s : η → Set M
hs : Directed (fun x x_1 => x ⊆ x_1) s
h : ∀ (i : η), LinearIndependent R fun (x : ↑(s i)) => ↑x
hη : ¬Nonempty η
a✝ : M
w✝ : Set M
right✝ : a✝ ∈ w✝
i : η
h✝ : (fun x => s x) i = w✝
⊢ a✝ ∈ ∅
state_after: no goals