Theorem: sbtw_iff_left_ne_and_right_mem_image_Ioi
File: Mathlib/Analysis/Convex/Between.lean

tactic: refine' ⟨fun h => ⟨h.left_ne, _⟩, fun h => _⟩
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.490916
P : Type u_3
P' : Type ?u.490922
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
⊢ Sbtw R x y z ↔ x ≠ y ∧ z ∈ ↑(lineMap x y) '' Set.Ioi 1

tactic: obtain ⟨r, ⟨hr, rfl⟩⟩ := h.wbtw.right_mem_image_Ici_of_left_ne h.left_ne
state_before: case refine'_1
R : Type u_1
V : Type u_2
V' : Type ?u.490916
P : Type u_3
P' : Type ?u.490922
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : Sbtw R x y z
⊢ z ∈ ↑(lineMap x y) '' Set.Ioi 1

tactic: rw [Set.mem_Ici] at hr
state_before: case refine'_1.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.490916
P : Type u_3
P' : Type ?u.490922
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
r : R
hr : r ∈ Set.Ici 1
h : Sbtw R x y (↑(lineMap x y) r)
⊢ ↑(lineMap x y) r ∈ ↑(lineMap x y) '' Set.Ioi 1

tactic: rcases hr.lt_or_eq with (hrlt | rfl)
state_before: case refine'_1.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.490916
P : Type u_3
P' : Type ?u.490922
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
r : R
hr : 1 ≤ r
h : Sbtw R x y (↑(lineMap x y) r)
⊢ ↑(lineMap x y) r ∈ ↑(lineMap x y) '' Set.Ioi 1

tactic: exact Set.mem_image_of_mem _ hrlt
state_before: case refine'_1.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type ?u.490916
P : Type u_3
P' : Type ?u.490922
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
r : R
hr : 1 ≤ r
h : Sbtw R x y (↑(lineMap x y) r)
hrlt : 1 < r
⊢ ↑(lineMap x y) r ∈ ↑(lineMap x y) '' Set.Ioi 1

tactic: exfalso
state_before: case refine'_1.intro.intro.inr
R : Type u_1
V : Type u_2
V' : Type ?u.490916
P : Type u_3
P' : Type ?u.490922
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
hr : 1 ≤ 1
h : Sbtw R x y (↑(lineMap x y) 1)
⊢ ↑(lineMap x y) 1 ∈ ↑(lineMap x y) '' Set.Ioi 1

tactic: simp at h
state_before: case refine'_1.intro.intro.inr.h
R : Type u_1
V : Type u_2
V' : Type ?u.490916
P : Type u_3
P' : Type ?u.490922
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
hr : 1 ≤ 1
h : Sbtw R x y (↑(lineMap x y) 1)
⊢ False

tactic: rcases h with ⟨hne, r, hr, rfl⟩
state_before: case refine'_2
R : Type u_1
V : Type u_2
V' : Type ?u.490916
P : Type u_3
P' : Type ?u.490922
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : x ≠ y ∧ z ∈ ↑(lineMap x y) '' Set.Ioi 1
⊢ Sbtw R x y z

tactic: rw [Set.mem_Ioi] at hr
state_before: case refine'_2.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.490916
P : Type u_3
P' : Type ?u.490922
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
hne : x ≠ y
r : R
hr : r ∈ Set.Ioi 1
⊢ Sbtw R x y (↑(lineMap x y) r)

tactic: refine'
  ⟨wbtw_iff_left_eq_or_right_mem_image_Ici.2
      (Or.inr (Set.mem_image_of_mem _ (Set.mem_of_mem_of_subset hr Set.Ioi_subset_Ici_self))),
    hne.symm, _⟩
state_before: case refine'_2.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.490916
P : Type u_3
P' : Type ?u.490922
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
hne : x ≠ y
r : R
hr : 1 < r
⊢ Sbtw R x y (↑(lineMap x y) r)

tactic: rw [lineMap_apply, ← @vsub_ne_zero V, vsub_vadd_eq_vsub_sub]
state_before: case refine'_2.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.490916
P : Type u_3
P' : Type ?u.490922
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
hne : x ≠ y
r : R
hr : 1 < r
⊢ y ≠ ↑(lineMap x y) r

tactic: nth_rw 1 [← one_smul R (y -ᵥ x)]
state_before: case refine'_2.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.490916
P : Type u_3
P' : Type ?u.490922
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
hne : x ≠ y
r : R
hr : 1 < r
⊢ y -ᵥ x - r • (y -ᵥ x) ≠ 0

tactic: rw [← sub_smul, smul_ne_zero_iff, vsub_ne_zero, sub_ne_zero]
state_before: case refine'_2.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.490916
P : Type u_3
P' : Type ?u.490922
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
hne : x ≠ y
r : R
hr : 1 < r
⊢ 1 • (y -ᵥ x) - r • (y -ᵥ x) ≠ 0

tactic: exact ⟨hr.ne, hne.symm⟩
state_before: case refine'_2.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.490916
P : Type u_3
P' : Type ?u.490922
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
hne : x ≠ y
r : R
hr : 1 < r
⊢ 1 ≠ r ∧ y ≠ x