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

tactic: refine ⟨le_sup_right, fun q hpq hqp ↦ hqp.not_le ?_⟩
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p : Submodule K V
⊢ p ⩿ span K {x} ⊔ p
state_after: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
⊢ span K {x} ⊔ p ≤ q

tactic: rcases SetLike.exists_of_lt hpq with ⟨y, hyq, hyp⟩
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
⊢ span K {x} ⊔ p ≤ q
state_after: case intro.intro
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
y : V
hyq : y ∈ q
hyp : y ∉ p
⊢ span K {x} ⊔ p ≤ q

tactic: obtain ⟨c, z, hz, rfl⟩ : ∃ c : K, ∃ z ∈ p, c • x + z = y := by
  simpa [mem_sup, mem_span_singleton] using hqp.le hyq
state_before: case intro.intro
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
y : V
hyq : y ∈ q
hyp : y ∉ p
⊢ span K {x} ⊔ p ≤ q
state_after: case intro.intro.intro.intro.intro
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
c : K
z : V
hz : z ∈ p
hyq : c • x + z ∈ q
hyp : c • x + z ∉ p
⊢ span K {x} ⊔ p ≤ q

tactic: rcases eq_or_ne c 0 with rfl | hc
state_before: case intro.intro.intro.intro.intro
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
c : K
z : V
hz : z ∈ p
hyq : c • x + z ∈ q
hyp : c • x + z ∉ p
⊢ span K {x} ⊔ p ≤ q
state_after: case intro.intro.intro.intro.intro.inl
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
z : V
hz : z ∈ p
hyq : 0 • x + z ∈ q
hyp : 0 • x + z ∉ p
⊢ span K {x} ⊔ p ≤ q

case intro.intro.intro.intro.intro.inr
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
c : K
z : V
hz : z ∈ p
hyq : c • x + z ∈ q
hyp : c • x + z ∉ p
hc : c ≠ 0
⊢ span K {x} ⊔ p ≤ q

tactic: simpa [mem_sup, mem_span_singleton] using hqp.le hyq
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
y : V
hyq : y ∈ q
hyp : y ∉ p
⊢ ∃ c, ∃ z ∈ p, c • x + z = y
state_after: no goals

tactic: simp [hz] at hyp
state_before: case intro.intro.intro.intro.intro.inl
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
z : V
hz : z ∈ p
hyq : 0 • x + z ∈ q
hyp : 0 • x + z ∉ p
⊢ span K {x} ⊔ p ≤ q
state_after: no goals

tactic: have : x ∈ q := by
  rwa [q.add_mem_iff_left (hpq.le hz), q.smul_mem_iff hc] at hyq
state_before: case intro.intro.intro.intro.intro.inr
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
c : K
z : V
hz : z ∈ p
hyq : c • x + z ∈ q
hyp : c • x + z ∉ p
hc : c ≠ 0
⊢ span K {x} ⊔ p ≤ q
state_after: case intro.intro.intro.intro.intro.inr
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
c : K
z : V
hz : z ∈ p
hyq : c • x + z ∈ q
hyp : c • x + z ∉ p
hc : c ≠ 0
this : x ∈ q
⊢ span K {x} ⊔ p ≤ q

tactic: simp [hpq.le, this]
state_before: case intro.intro.intro.intro.intro.inr
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
c : K
z : V
hz : z ∈ p
hyq : c • x + z ∈ q
hyp : c • x + z ∉ p
hc : c ≠ 0
this : x ∈ q
⊢ span K {x} ⊔ p ≤ q
state_after: no goals

tactic: rwa [q.add_mem_iff_left (hpq.le hz), q.smul_mem_iff hc] at hyq
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p q : Submodule K V
hpq : p < q
hqp : q < span K {x} ⊔ p
c : K
z : V
hz : z ∈ p
hyq : c • x + z ∈ q
hyp : c • x + z ∉ p
hc : c ≠ 0
⊢ x ∈ q
state_after: no goals