-- Mathlib/Analysis/Convex/Between.lean
theorem Wbtw.sameRay_vsub {x y z : P} (h : Wbtw R x y z) : SameRay R (y -ᵥ x) (z -ᵥ y)

Proof state:
case intro.intro.intro.inr
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
ht0 : 0 ≤ 0
ht1 : 0 ≤ 1
⊢ SameRay R ((0 • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (0 • (z -ᵥ x) +ᵥ x))

Tactic:
simp

Result:
no goals

Proof state:
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : Wbtw R x y z
⊢ SameRay R (y -ᵥ x) (z -ᵥ y)

Tactic:
rcases h with ⟨t, ⟨ht0, ht1⟩, rfl⟩

Result:
case intro.intro.intro
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
⊢ SameRay R ((lineMap x z) t -ᵥ x) (z -ᵥ (lineMap x z) t)

Proof state:
case intro.intro.intro
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
⊢ SameRay R ((lineMap x z) t -ᵥ x) (z -ᵥ (lineMap x z) t)

Tactic:
simp_rw [lineMap_apply]

Result:
case intro.intro.intro
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
⊢ SameRay R ((t • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (t • (z -ᵥ x) +ᵥ x))

Proof state:
case intro.intro.intro.inl.inl
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
ht0' : 0 < t
ht1' : t < 1
⊢ SameRay R ((t • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (t • (z -ᵥ x) +ᵥ x))

Tactic:
refine Or.inr (Or.inr ⟨1 - t, t, sub_pos.2 ht1', ht0', ?_⟩)

Result:
case intro.intro.intro.inl.inl
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
ht0' : 0 < t
ht1' : t < 1
⊢ (1 - t) • ((t • (z -ᵥ x) +ᵥ x) -ᵥ x) = t • (z -ᵥ (t • (z -ᵥ x) +ᵥ x))

Proof state:
case intro.intro.intro.inl.inl
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
ht0' : 0 < t
ht1' : t < 1
⊢ (1 - t) • ((t • (z -ᵥ x) +ᵥ x) -ᵥ x) = t • (z -ᵥ (t • (z -ᵥ x) +ᵥ x))

Tactic:
simp only [vadd_vsub, smul_smul, vsub_vadd_eq_vsub_sub, smul_sub, ← sub_smul]

Result:
case intro.intro.intro.inl.inl
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
ht0' : 0 < t
ht1' : t < 1
⊢ ((1 - t) * t) • (z -ᵥ x) = (t - t * t) • (z -ᵥ x)

Proof state:
case intro.intro.intro.inl.inl
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
ht0' : 0 < t
ht1' : t < 1
⊢ ((1 - t) * t) • (z -ᵥ x) = (t - t * t) • (z -ᵥ x)

Tactic:
ring_nf

Result:
no goals

Proof state:
case intro.intro.intro.inl.inr
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
ht0 : 0 ≤ 1
ht1 : 1 ≤ 1
ht0' : 0 < 1
⊢ SameRay R ((1 • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (1 • (z -ᵥ x) +ᵥ x))

Tactic:
simp

Result:
no goals

Proof state:
case intro.intro.intro.inl.inl
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
ht0' : 0 < t
ht1' : t < 1
⊢ SameRay R ((t • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (t • (z -ᵥ x) +ᵥ x))

case intro.intro.intro.inl.inr
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
ht0 : 0 ≤ 1
ht1 : 1 ≤ 1
ht0' : 0 < 1
⊢ SameRay R ((1 • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (1 • (z -ᵥ x) +ᵥ x))

Tactic:
swap

Result:
case intro.intro.intro.inl.inr
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
ht0 : 0 ≤ 1
ht1 : 1 ≤ 1
ht0' : 0 < 1
⊢ SameRay R ((1 • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (1 • (z -ᵥ x) +ᵥ x))

case intro.intro.intro.inl.inl
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
ht0' : 0 < t
ht1' : t < 1
⊢ SameRay R ((t • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (t • (z -ᵥ x) +ᵥ x))

Proof state:
case intro.intro.intro
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
⊢ SameRay R ((t • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (t • (z -ᵥ x) +ᵥ x))

Tactic:
rcases ht0.lt_or_eq with (ht0' | rfl)

Result:
case intro.intro.intro.inl
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
ht0' : 0 < t
⊢ SameRay R ((t • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (t • (z -ᵥ x) +ᵥ x))

case intro.intro.intro.inr
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
ht0 : 0 ≤ 0
ht1 : 0 ≤ 1
⊢ SameRay R ((0 • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (0 • (z -ᵥ x) +ᵥ x))

Proof state:
case intro.intro.intro.inl
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
ht0' : 0 < t
⊢ SameRay R ((t • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (t • (z -ᵥ x) +ᵥ x))

Tactic:
rcases ht1.lt_or_eq with (ht1' | rfl)

Result:
case intro.intro.intro.inl.inl
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
ht0' : 0 < t
ht1' : t < 1
⊢ SameRay R ((t • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (t • (z -ᵥ x) +ᵥ x))

case intro.intro.intro.inl.inr
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
ht0 : 0 ≤ 1
ht1 : 1 ≤ 1
ht0' : 0 < 1
⊢ SameRay R ((1 • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (1 • (z -ᵥ x) +ᵥ x))

Proof state:
case intro.intro.intro.inl
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
ht0' : 0 < t
⊢ SameRay R ((t • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (t • (z -ᵥ x) +ᵥ x))

case intro.intro.intro.inr
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
ht0 : 0 ≤ 0
ht1 : 0 ≤ 1
⊢ SameRay R ((0 • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (0 • (z -ᵥ x) +ᵥ x))

Tactic:
swap

Result:
case intro.intro.intro.inr
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
ht0 : 0 ≤ 0
ht1 : 0 ≤ 1
⊢ SameRay R ((0 • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (0 • (z -ᵥ x) +ᵥ x))

case intro.intro.intro.inl
R : Type u_1
V : Type u_2
P : Type u_4
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
ht1 : t ≤ 1
ht0' : 0 < t
⊢ SameRay R ((t • (z -ᵥ x) +ᵥ x) -ᵥ x) (z -ᵥ (t • (z -ᵥ x) +ᵥ x))