Theorem: direction_affineSpan
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: apply le_antisymm
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
⊢ (affineSpan k s).direction = vectorSpan k s
state_after: case a
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
⊢ (affineSpan k s).direction ≤ vectorSpan k s

case a
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
⊢ vectorSpan k s ≤ (affineSpan k s).direction

tactic: refine Submodule.span_le.2 ?_
state_before: case a
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
⊢ (affineSpan k s).direction ≤ vectorSpan k s
state_after: case a
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
⊢ ↑(affineSpan k s) -ᵥ ↑(affineSpan k s) ⊆ ↑(vectorSpan k s)

tactic: rintro v ⟨p1, ⟨p2, hp2, v1, hv1, hp1⟩, p3, ⟨p4, hp4, v2, hv2, hp3⟩, rfl⟩
state_before: case a
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
⊢ ↑(affineSpan k s) -ᵥ ↑(affineSpan k s) ⊆ ↑(vectorSpan k s)
state_after: case a.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
p1 p2 : P
hp2 : p2 ∈ s
v1 : V
hv1 : v1 ∈ vectorSpan k s
hp1 : p1 = v1 +ᵥ p2
p3 p4 : P
hp4 : p4 ∈ s
v2 : V
hv2 : v2 ∈ vectorSpan k s
hp3 : p3 = v2 +ᵥ p4
⊢ (fun x x_1 => x -ᵥ x_1) p1 p3 ∈ ↑(vectorSpan k s)

tactic: simp only [SetLike.mem_coe]
state_before: case a.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
p1 p2 : P
hp2 : p2 ∈ s
v1 : V
hv1 : v1 ∈ vectorSpan k s
hp1 : p1 = v1 +ᵥ p2
p3 p4 : P
hp4 : p4 ∈ s
v2 : V
hv2 : v2 ∈ vectorSpan k s
hp3 : p3 = v2 +ᵥ p4
⊢ (fun x x_1 => x -ᵥ x_1) p1 p3 ∈ ↑(vectorSpan k s)
state_after: case a.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
p1 p2 : P
hp2 : p2 ∈ s
v1 : V
hv1 : v1 ∈ vectorSpan k s
hp1 : p1 = v1 +ᵥ p2
p3 p4 : P
hp4 : p4 ∈ s
v2 : V
hv2 : v2 ∈ vectorSpan k s
hp3 : p3 = v2 +ᵥ p4
⊢ p1 -ᵥ p3 ∈ vectorSpan k s

tactic: rw [hp1, hp3, vsub_vadd_eq_vsub_sub, vadd_vsub_assoc]
state_before: case a.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
p1 p2 : P
hp2 : p2 ∈ s
v1 : V
hv1 : v1 ∈ vectorSpan k s
hp1 : p1 = v1 +ᵥ p2
p3 p4 : P
hp4 : p4 ∈ s
v2 : V
hv2 : v2 ∈ vectorSpan k s
hp3 : p3 = v2 +ᵥ p4
⊢ p1 -ᵥ p3 ∈ vectorSpan k s
state_after: case a.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
p1 p2 : P
hp2 : p2 ∈ s
v1 : V
hv1 : v1 ∈ vectorSpan k s
hp1 : p1 = v1 +ᵥ p2
p3 p4 : P
hp4 : p4 ∈ s
v2 : V
hv2 : v2 ∈ vectorSpan k s
hp3 : p3 = v2 +ᵥ p4
⊢ v1 + (p2 -ᵥ p4) - v2 ∈ vectorSpan k s

tactic: exact
  (vectorSpan k s).sub_mem ((vectorSpan k s).add_mem hv1 (vsub_mem_vectorSpan k hp2 hp4)) hv2
state_before: case a.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
p1 p2 : P
hp2 : p2 ∈ s
v1 : V
hv1 : v1 ∈ vectorSpan k s
hp1 : p1 = v1 +ᵥ p2
p3 p4 : P
hp4 : p4 ∈ s
v2 : V
hv2 : v2 ∈ vectorSpan k s
hp3 : p3 = v2 +ᵥ p4
⊢ v1 + (p2 -ᵥ p4) - v2 ∈ vectorSpan k s
state_after: no goals

tactic: exact vectorSpan_mono k (subset_spanPoints k s)
state_before: case a
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
⊢ vectorSpan k s ≤ (affineSpan k s).direction
state_after: no goals