Theorem: Submodule.mem_span_finite_of_mem_span
File: Mathlib/LinearAlgebra/Span.lean

tactic: refine' span_induction hx (fun x hx => _) _ _ _
state_before: R : Type u_2
R₂ : Type ?u.238888
K : Type ?u.238891
M : Type u_1
M₂ : Type ?u.238897
V : Type ?u.238900
S✝ : Type ?u.238903
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t S : Set M
x : M
hx : x ∈ span R S
⊢ ∃ T, ↑T ⊆ S ∧ x ∈ span R ↑T

tactic: refine' ⟨{x}, _, _⟩
state_before: case refine'_1
R : Type u_2
R₂ : Type ?u.238888
K : Type ?u.238891
M : Type u_1
M₂ : Type ?u.238897
V : Type ?u.238900
S✝ : Type ?u.238903
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝¹ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t S : Set M
x✝ : M
hx✝ : x✝ ∈ span R S
x : M
hx : x ∈ S
⊢ ∃ T, ↑T ⊆ S ∧ x ∈ span R ↑T

tactic: rwa [Finset.coe_singleton, Set.singleton_subset_iff]
state_before: case refine'_1.refine'_1
R : Type u_2
R₂ : Type ?u.238888
K : Type ?u.238891
M : Type u_1
M₂ : Type ?u.238897
V : Type ?u.238900
S✝ : Type ?u.238903
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝¹ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t S : Set M
x✝ : M
hx✝ : x✝ ∈ span R S
x : M
hx : x ∈ S
⊢ ↑{x} ⊆ S

tactic: rw [Finset.coe_singleton]
state_before: case refine'_1.refine'_2
R : Type u_2
R₂ : Type ?u.238888
K : Type ?u.238891
M : Type u_1
M₂ : Type ?u.238897
V : Type ?u.238900
S✝ : Type ?u.238903
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝¹ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t S : Set M
x✝ : M
hx✝ : x✝ ∈ span R S
x : M
hx : x ∈ S
⊢ x ∈ span R ↑{x}

tactic: exact Submodule.mem_span_singleton_self x
state_before: case refine'_1.refine'_2
R : Type u_2
R₂ : Type ?u.238888
K : Type ?u.238891
M : Type u_1
M₂ : Type ?u.238897
V : Type ?u.238900
S✝ : Type ?u.238903
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝¹ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t S : Set M
x✝ : M
hx✝ : x✝ ∈ span R S
x : M
hx : x ∈ S
⊢ x ∈ span R {x}

tactic: use ∅
state_before: case refine'_2
R : Type u_2
R₂ : Type ?u.238888
K : Type ?u.238891
M : Type u_1
M₂ : Type ?u.238897
V : Type ?u.238900
S✝ : Type ?u.238903
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t S : Set M
x : M
hx : x ∈ span R S
⊢ ∃ T, ↑T ⊆ S ∧ 0 ∈ span R ↑T

tactic: simp
state_before: case refine'_2
R : Type u_2
R₂ : Type ?u.238888
K : Type ?u.238891
M : Type u_1
M₂ : Type ?u.238897
V : Type ?u.238900
S✝ : Type ?u.238903
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t S : Set M
x : M
hx : x ∈ span R S
⊢ ↑∅ ⊆ S ∧ 0 ∈ span R ↑∅

tactic: rintro x y ⟨X, hX, hxX⟩ ⟨Y, hY, hyY⟩
state_before: case refine'_3
R : Type u_2
R₂ : Type ?u.238888
K : Type ?u.238891
M : Type u_1
M₂ : Type ?u.238897
V : Type ?u.238900
S✝ : Type ?u.238903
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t S : Set M
x : M
hx : x ∈ span R S
⊢ ∀ (x y : M), (∃ T, ↑T ⊆ S ∧ x ∈ span R ↑T) → (∃ T, ↑T ⊆ S ∧ y ∈ span R ↑T) → ∃ T, ↑T ⊆ S ∧ x + y ∈ span R ↑T

tactic: refine' ⟨X ∪ Y, _, _⟩
state_before: case refine'_3.intro.intro.intro.intro
R : Type u_2
R₂ : Type ?u.238888
K : Type ?u.238891
M : Type u_1
M₂ : Type ?u.238897
V : Type ?u.238900
S✝ : Type ?u.238903
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝¹ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t S : Set M
x✝ : M
hx : x✝ ∈ span R S
x y : M
X : Finset M
hX : ↑X ⊆ S
hxX : x ∈ span R ↑X
Y : Finset M
hY : ↑Y ⊆ S
hyY : y ∈ span R ↑Y
⊢ ∃ T, ↑T ⊆ S ∧ x + y ∈ span R ↑T

tactic: rw [Finset.coe_union, span_union, mem_sup]
state_before: case refine'_3.intro.intro.intro.intro.refine'_2
R : Type u_2
R₂ : Type ?u.238888
K : Type ?u.238891
M : Type u_1
M₂ : Type ?u.238897
V : Type ?u.238900
S✝ : Type ?u.238903
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝¹ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t S : Set M
x✝ : M
hx : x✝ ∈ span R S
x y : M
X : Finset M
hX : ↑X ⊆ S
hxX : x ∈ span R ↑X
Y : Finset M
hY : ↑Y ⊆ S
hyY : y ∈ span R ↑Y
⊢ x + y ∈ span R ↑(X ∪ Y)

tactic: exact ⟨x, hxX, y, hyY, rfl⟩
state_before: case refine'_3.intro.intro.intro.intro.refine'_2
R : Type u_2
R₂ : Type ?u.238888
K : Type ?u.238891
M : Type u_1
M₂ : Type ?u.238897
V : Type ?u.238900
S✝ : Type ?u.238903
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝¹ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t S : Set M
x✝ : M
hx : x✝ ∈ span R S
x y : M
X : Finset M
hX : ↑X ⊆ S
hxX : x ∈ span R ↑X
Y : Finset M
hY : ↑Y ⊆ S
hyY : y ∈ span R ↑Y
⊢ ∃ y_1, y_1 ∈ span R ↑X ∧ ∃ z, z ∈ span R ↑Y ∧ y_1 + z = x + y

tactic: rw [Finset.coe_union]
state_before: case refine'_3.intro.intro.intro.intro.refine'_1
R : Type u_2
R₂ : Type ?u.238888
K : Type ?u.238891
M : Type u_1
M₂ : Type ?u.238897
V : Type ?u.238900
S✝ : Type ?u.238903
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝¹ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t S : Set M
x✝ : M
hx : x✝ ∈ span R S
x y : M
X : Finset M
hX : ↑X ⊆ S
hxX : x ∈ span R ↑X
Y : Finset M
hY : ↑Y ⊆ S
hyY : y ∈ span R ↑Y
⊢ ↑(X ∪ Y) ⊆ S

tactic: exact Set.union_subset hX hY
state_before: case refine'_3.intro.intro.intro.intro.refine'_1
R : Type u_2
R₂ : Type ?u.238888
K : Type ?u.238891
M : Type u_1
M₂ : Type ?u.238897
V : Type ?u.238900
S✝ : Type ?u.238903
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝¹ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t S : Set M
x✝ : M
hx : x✝ ∈ span R S
x y : M
X : Finset M
hX : ↑X ⊆ S
hxX : x ∈ span R ↑X
Y : Finset M
hY : ↑Y ⊆ S
hyY : y ∈ span R ↑Y
⊢ ↑X ∪ ↑Y ⊆ S

tactic: rintro a x ⟨T, hT, h2⟩
state_before: case refine'_4
R : Type u_2
R₂ : Type ?u.238888
K : Type ?u.238891
M : Type u_1
M₂ : Type ?u.238897
V : Type ?u.238900
S✝ : Type ?u.238903
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t S : Set M
x : M
hx : x ∈ span R S
⊢ ∀ (a : R) (x : M), (∃ T, ↑T ⊆ S ∧ x ∈ span R ↑T) → ∃ T, ↑T ⊆ S ∧ a • x ∈ span R ↑T

tactic: exact ⟨T, hT, smul_mem _ _ h2⟩
state_before: case refine'_4.intro.intro
R : Type u_2
R₂ : Type ?u.238888
K : Type ?u.238891
M : Type u_1
M₂ : Type ?u.238897
V : Type ?u.238900
S✝ : Type ?u.238903
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝¹ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t S : Set M
x✝ : M
hx : x✝ ∈ span R S
a : R
x : M
T : Finset M
hT : ↑T ⊆ S
h2 : x ∈ span R ↑T
⊢ ∃ T, ↑T ⊆ S ∧ a • x ∈ span R ↑T