R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
⊢ ∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = x
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ p ⊔ p'
⊢ ∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = x
rw [← span_eq p, ← span_eq p', ← span_union] at h
case refine_1
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
⊢ ∀ (x : M), x ∈ ↑p ∪ ↑p' → ∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = x

case refine_2
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
⊢ ∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = 0

case refine_3
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
⊢ ∀ (x y : M),
    (∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = x) →
      (∃ y_1, y_1 ∈ p ∧ ∃ z, z ∈ p' ∧ y_1 + z = y) → ∃ y_1, y_1 ∈ p ∧ ∃ z, z ∈ p' ∧ y_1 + z = x + y

case refine_4
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
⊢ ∀ (a : R) (x : M), (∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = x) → ∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = a • x
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
⊢ ∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = x
refine span_induction h ?_ ?_ ?_ ?_
case refine_1.inl
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h✝ : x ∈ span R (↑p ∪ ↑p')
y : M
h : y ∈ ↑p
⊢ ∃ y_1, y_1 ∈ p ∧ ∃ z, z ∈ p' ∧ y_1 + z = y

case refine_1.inr
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h✝ : x ∈ span R (↑p ∪ ↑p')
y : M
h : y ∈ ↑p'
⊢ ∃ y_1, y_1 ∈ p ∧ ∃ z, z ∈ p' ∧ y_1 + z = y
case refine_1
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
⊢ ∀ (x : M), x ∈ ↑p ∪ ↑p' → ∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = x
rintro y (h | h)
no goals
case refine_1.inl
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h✝ : x ∈ span R (↑p ∪ ↑p')
y : M
h : y ∈ ↑p
⊢ ∃ y_1, y_1 ∈ p ∧ ∃ z, z ∈ p' ∧ y_1 + z = y
exact ⟨y, h, 0, by simp, by simp⟩
no goals
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h✝ : x ∈ span R (↑p ∪ ↑p')
y : M
h : y ∈ ↑p
⊢ 0 ∈ p'
simp
no goals
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h✝ : x ∈ span R (↑p ∪ ↑p')
y : M
h : y ∈ ↑p
⊢ y + 0 = y
simp
no goals
case refine_1.inr
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h✝ : x ∈ span R (↑p ∪ ↑p')
y : M
h : y ∈ ↑p'
⊢ ∃ y_1, y_1 ∈ p ∧ ∃ z, z ∈ p' ∧ y_1 + z = y
exact ⟨0, by simp, y, h, by simp⟩
no goals
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h✝ : x ∈ span R (↑p ∪ ↑p')
y : M
h : y ∈ ↑p'
⊢ 0 ∈ p
simp
no goals
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h✝ : x ∈ span R (↑p ∪ ↑p')
y : M
h : y ∈ ↑p'
⊢ 0 + y = y
simp
no goals
case refine_2
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
⊢ ∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = 0
exact ⟨0, by simp, 0, by simp⟩
no goals
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
⊢ 0 ∈ p
simp
no goals
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
⊢ 0 ∈ p' ∧ 0 + 0 = 0
simp
case refine_3.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
y₁ : M
hy₁ : y₁ ∈ p
z₁ : M
hz₁ : z₁ ∈ p'
y₂ : M
hy₂ : y₂ ∈ p
z₂ : M
hz₂ : z₂ ∈ p'
⊢ ∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = y₁ + z₁ + (y₂ + z₂)
case refine_3
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
⊢ ∀ (x y : M),
    (∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = x) →
      (∃ y_1, y_1 ∈ p ∧ ∃ z, z ∈ p' ∧ y_1 + z = y) → ∃ y_1, y_1 ∈ p ∧ ∃ z, z ∈ p' ∧ y_1 + z = x + y
rintro _ _ ⟨y₁, hy₁, z₁, hz₁, rfl⟩ ⟨y₂, hy₂, z₂, hz₂, rfl⟩
no goals
case refine_3.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
y₁ : M
hy₁ : y₁ ∈ p
z₁ : M
hz₁ : z₁ ∈ p'
y₂ : M
hy₂ : y₂ ∈ p
z₂ : M
hz₂ : z₂ ∈ p'
⊢ ∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = y₁ + z₁ + (y₂ + z₂)
exact ⟨_, add_mem hy₁ hy₂, _, add_mem hz₁ hz₂, by
  rw [add_assoc, add_assoc, ← add_assoc y₂,  ← add_assoc z₁, add_comm y₂]⟩
no goals
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
y₁ : M
hy₁ : y₁ ∈ p
z₁ : M
hz₁ : z₁ ∈ p'
y₂ : M
hy₂ : y₂ ∈ p
z₂ : M
hz₂ : z₂ ∈ p'
⊢ y₁ + y₂ + (z₁ + z₂) = y₁ + z₁ + (y₂ + z₂)
rw [add_assoc, add_assoc, ← add_assoc y₂,  ← add_assoc z₁, add_comm y₂]
case refine_4.intro.intro.intro.intro
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
a : R
y : M
hy : y ∈ p
z : M
hz : z ∈ p'
⊢ ∃ y_1, y_1 ∈ p ∧ ∃ z_1, z_1 ∈ p' ∧ y_1 + z_1 = a • (y + z)
case refine_4
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
⊢ ∀ (a : R) (x : M), (∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = x) → ∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = a • x
rintro a _ ⟨y, hy, z, hz, rfl⟩
no goals
case refine_4.intro.intro.intro.intro
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
a : R
y : M
hy : y ∈ p
z : M
hz : z ∈ p'
⊢ ∃ y_1, y_1 ∈ p ∧ ∃ z_1, z_1 ∈ p' ∧ y_1 + z_1 = a • (y + z)
exact ⟨_, smul_mem _ a hy, _, smul_mem _ a hz, by simp [smul_add]⟩
no goals
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
h : x ∈ span R (↑p ∪ ↑p')
a : R
y : M
hy : y ∈ p
z : M
hz : z ∈ p'
⊢ a • y + a • z = a • (y + z)
simp [smul_add]
case intro.intro.intro.intro
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t : Set M
y : M
hy : y ∈ p
z : M
hz : z ∈ p'
⊢ y + z ∈ p ⊔ p'
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
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 : Set M
⊢ (∃ y, y ∈ p ∧ ∃ z, z ∈ p' ∧ y + z = x) → x ∈ p ⊔ p'
rintro ⟨y, hy, z, hz, rfl⟩
no goals
case intro.intro.intro.intro
R : Type u_2
R₂ : Type ?u.95383
K : Type ?u.95386
M : Type u_1
M₂ : Type ?u.95392
V : Type ?u.95395
S : Type ?u.95398
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t : Set M
y : M
hy : y ∈ p
z : M
hz : z ∈ p'
⊢ y + z ∈ p ⊔ p'
exact add_mem ((le_sup_left : p ≤ p ⊔ p') hy) ((le_sup_right : p' ≤ p ⊔ p') hz)