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

tactic: ext p
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
s1 s2 : AffineSubspace k P
hd : direction s1 = direction s2
hn : Set.Nonempty (↑s1 ∩ ↑s2)
⊢ s1 = s2

tactic: have hq1 := Set.mem_of_mem_inter_left hn.some_mem
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
s1 s2 : AffineSubspace k P
hd : direction s1 = direction s2
hn : Set.Nonempty (↑s1 ∩ ↑s2)
p : P
⊢ p ∈ s1 ↔ p ∈ s2

tactic: have hq2 := Set.mem_of_mem_inter_right hn.some_mem
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
s1 s2 : AffineSubspace k P
hd : direction s1 = direction s2
hn : Set.Nonempty (↑s1 ∩ ↑s2)
p : P
hq1 : Set.Nonempty.some hn ∈ ↑s1
⊢ p ∈ s1 ↔ p ∈ s2

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
s1 s2 : AffineSubspace k P
hd : direction s1 = direction s2
hn : Set.Nonempty (↑s1 ∩ ↑s2)
p : P
hq1 : Set.Nonempty.some hn ∈ ↑s1
hq2 : Set.Nonempty.some hn ∈ ↑s2
⊢ p ∈ s1 ↔ p ∈ s2

tactic: intro hp
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
s1 s2 : AffineSubspace k P
hd : direction s1 = direction s2
hn : Set.Nonempty (↑s1 ∩ ↑s2)
p : P
hq1 : Set.Nonempty.some hn ∈ ↑s1
hq2 : Set.Nonempty.some hn ∈ ↑s2
⊢ p ∈ s1 → p ∈ s2

tactic: rw [← vsub_vadd p hn.some]
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
s1 s2 : AffineSubspace k P
hd : direction s1 = direction s2
hn : Set.Nonempty (↑s1 ∩ ↑s2)
p : P
hq1 : Set.Nonempty.some hn ∈ ↑s1
hq2 : Set.Nonempty.some hn ∈ ↑s2
hp : p ∈ s1
⊢ p ∈ s2

tactic: refine' vadd_mem_of_mem_direction _ hq2
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
s1 s2 : AffineSubspace k P
hd : direction s1 = direction s2
hn : Set.Nonempty (↑s1 ∩ ↑s2)
p : P
hq1 : Set.Nonempty.some hn ∈ ↑s1
hq2 : Set.Nonempty.some hn ∈ ↑s2
hp : p ∈ s1
⊢ p -ᵥ Set.Nonempty.some hn +ᵥ Set.Nonempty.some hn ∈ s2

tactic: rw [← hd]
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
s1 s2 : AffineSubspace k P
hd : direction s1 = direction s2
hn : Set.Nonempty (↑s1 ∩ ↑s2)
p : P
hq1 : Set.Nonempty.some hn ∈ ↑s1
hq2 : Set.Nonempty.some hn ∈ ↑s2
hp : p ∈ s1
⊢ p -ᵥ Set.Nonempty.some hn ∈ direction s2

tactic: exact vsub_mem_direction hp hq1
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
s1 s2 : AffineSubspace k P
hd : direction s1 = direction s2
hn : Set.Nonempty (↑s1 ∩ ↑s2)
p : P
hq1 : Set.Nonempty.some hn ∈ ↑s1
hq2 : Set.Nonempty.some hn ∈ ↑s2
hp : p ∈ s1
⊢ p -ᵥ Set.Nonempty.some hn ∈ direction s1

tactic: intro hp
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
s1 s2 : AffineSubspace k P
hd : direction s1 = direction s2
hn : Set.Nonempty (↑s1 ∩ ↑s2)
p : P
hq1 : Set.Nonempty.some hn ∈ ↑s1
hq2 : Set.Nonempty.some hn ∈ ↑s2
⊢ p ∈ s2 → p ∈ s1

tactic: rw [← vsub_vadd p hn.some]
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
s1 s2 : AffineSubspace k P
hd : direction s1 = direction s2
hn : Set.Nonempty (↑s1 ∩ ↑s2)
p : P
hq1 : Set.Nonempty.some hn ∈ ↑s1
hq2 : Set.Nonempty.some hn ∈ ↑s2
hp : p ∈ s2
⊢ p ∈ s1

tactic: refine' vadd_mem_of_mem_direction _ hq1
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
s1 s2 : AffineSubspace k P
hd : direction s1 = direction s2
hn : Set.Nonempty (↑s1 ∩ ↑s2)
p : P
hq1 : Set.Nonempty.some hn ∈ ↑s1
hq2 : Set.Nonempty.some hn ∈ ↑s2
hp : p ∈ s2
⊢ p -ᵥ Set.Nonempty.some hn +ᵥ Set.Nonempty.some hn ∈ s1

tactic: rw [hd]
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
s1 s2 : AffineSubspace k P
hd : direction s1 = direction s2
hn : Set.Nonempty (↑s1 ∩ ↑s2)
p : P
hq1 : Set.Nonempty.some hn ∈ ↑s1
hq2 : Set.Nonempty.some hn ∈ ↑s2
hp : p ∈ s2
⊢ p -ᵥ Set.Nonempty.some hn ∈ direction s1

tactic: exact vsub_mem_direction hp hq2
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
s1 s2 : AffineSubspace k P
hd : direction s1 = direction s2
hn : Set.Nonempty (↑s1 ∩ ↑s2)
p : P
hq1 : Set.Nonempty.some hn ∈ ↑s1
hq2 : Set.Nonempty.some hn ∈ ↑s2
hp : p ∈ s2
⊢ p -ᵥ Set.Nonempty.some hn ∈ direction s2