Theorem: AffineSubspace.direction_mk'
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: ext v
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
p : P
direction : Submodule k V
⊢ (mk' p direction).direction = direction
state_after: case h
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
p : P
direction : Submodule k V
v : V
⊢ v ∈ (mk' p direction).direction ↔ v ∈ direction

tactic: rw [mem_direction_iff_eq_vsub (mk'_nonempty _ _)]
state_before: case h
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
p : P
direction : Submodule k V
v : V
⊢ v ∈ (mk' p direction).direction ↔ v ∈ direction
state_after: case h
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
p : P
direction : Submodule k V
v : V
⊢ (∃ p1 ∈ mk' p direction, ∃ p2 ∈ mk' p direction, v = p1 -ᵥ p2) ↔ v ∈ direction

tactic: constructor
state_before: case h
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
p : P
direction : Submodule k V
v : V
⊢ (∃ p1 ∈ mk' p direction, ∃ p2 ∈ mk' p direction, v = p1 -ᵥ p2) ↔ v ∈ direction
state_after: case h.mp
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
p : P
direction : Submodule k V
v : V
⊢ (∃ p1 ∈ mk' p direction, ∃ p2 ∈ mk' p direction, v = p1 -ᵥ p2) → v ∈ direction

case h.mpr
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
p : P
direction : Submodule k V
v : V
⊢ v ∈ direction → ∃ p1 ∈ mk' p direction, ∃ p2 ∈ mk' p direction, v = p1 -ᵥ p2

tactic: rintro ⟨p1, ⟨v1, hv1, hp1⟩, p2, ⟨v2, hv2, hp2⟩, hv⟩
state_before: case h.mp
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
p : P
direction : Submodule k V
v : V
⊢ (∃ p1 ∈ mk' p direction, ∃ p2 ∈ mk' p direction, v = p1 -ᵥ p2) → v ∈ direction
state_after: case h.mp.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
p : P
direction : Submodule k V
v : V
p1 : P
v1 : V
hv1 : v1 ∈ direction
hp1 : p1 = v1 +ᵥ p
p2 : P
hv : v = p1 -ᵥ p2
v2 : V
hv2 : v2 ∈ direction
hp2 : p2 = v2 +ᵥ p
⊢ v ∈ direction

tactic: rw [hv, hp1, hp2, vadd_vsub_vadd_cancel_right]
state_before: case h.mp.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
p : P
direction : Submodule k V
v : V
p1 : P
v1 : V
hv1 : v1 ∈ direction
hp1 : p1 = v1 +ᵥ p
p2 : P
hv : v = p1 -ᵥ p2
v2 : V
hv2 : v2 ∈ direction
hp2 : p2 = v2 +ᵥ p
⊢ v ∈ direction
state_after: case h.mp.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
p : P
direction : Submodule k V
v : V
p1 : P
v1 : V
hv1 : v1 ∈ direction
hp1 : p1 = v1 +ᵥ p
p2 : P
hv : v = p1 -ᵥ p2
v2 : V
hv2 : v2 ∈ direction
hp2 : p2 = v2 +ᵥ p
⊢ v1 - v2 ∈ direction

tactic: exact direction.sub_mem hv1 hv2
state_before: case h.mp.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
p : P
direction : Submodule k V
v : V
p1 : P
v1 : V
hv1 : v1 ∈ direction
hp1 : p1 = v1 +ᵥ p
p2 : P
hv : v = p1 -ᵥ p2
v2 : V
hv2 : v2 ∈ direction
hp2 : p2 = v2 +ᵥ p
⊢ v1 - v2 ∈ direction
state_after: no goals

tactic: exact fun hv => ⟨v +ᵥ p, vadd_mem_mk' _ hv, p, self_mem_mk' _ _, (vadd_vsub _ _).symm⟩
state_before: case h.mpr
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
p : P
direction : Submodule k V
v : V
⊢ v ∈ direction → ∃ p1 ∈ mk' p direction, ∃ p2 ∈ mk' p direction, v = p1 -ᵥ p2
state_after: no goals