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

tactic: refine' ⟨fun h => _, fun h => _⟩
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.468028
P : Type u_3
P' : Type ?u.468034
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
⊢ Wbtw R x y z ↔ x = y ∨ z ∈ ↑(lineMap x y) '' Set.Ici 1

tactic: rcases h with ⟨r, ⟨hr0, hr1⟩, rfl⟩
state_before: case refine'_1
R : Type u_1
V : Type u_2
V' : Type ?u.468028
P : Type u_3
P' : Type ?u.468034
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : Wbtw R x y z
⊢ x = y ∨ z ∈ ↑(lineMap x y) '' Set.Ici 1

tactic: rcases hr0.lt_or_eq with (hr0' | rfl)
state_before: case refine'_1.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.468028
P : Type u_3
P' : Type ?u.468034
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
r : R
hr0 : 0 ≤ r
hr1 : r ≤ 1
⊢ x = ↑(lineMap x z) r ∨ z ∈ ↑(lineMap x (↑(lineMap x z) r)) '' Set.Ici 1

tactic: rw [Set.mem_image]
state_before: case refine'_1.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type ?u.468028
P : Type u_3
P' : Type ?u.468034
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
r : R
hr0 : 0 ≤ r
hr1 : r ≤ 1
hr0' : 0 < r
⊢ x = ↑(lineMap x z) r ∨ z ∈ ↑(lineMap x (↑(lineMap x z) r)) '' Set.Ici 1

tactic: refine' Or.inr ⟨r⁻¹, one_le_inv hr0' hr1, _⟩
state_before: case refine'_1.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type ?u.468028
P : Type u_3
P' : Type ?u.468034
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
r : R
hr0 : 0 ≤ r
hr1 : r ≤ 1
hr0' : 0 < r
⊢ x = ↑(lineMap x z) r ∨ ∃ x_1, x_1 ∈ Set.Ici 1 ∧ ↑(lineMap x (↑(lineMap x z) r)) x_1 = z

tactic: simp only [lineMap_apply, smul_smul, vadd_vsub]
state_before: case refine'_1.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type ?u.468028
P : Type u_3
P' : Type ?u.468034
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
r : R
hr0 : 0 ≤ r
hr1 : r ≤ 1
hr0' : 0 < r
⊢ ↑(lineMap x (↑(lineMap x z) r)) r⁻¹ = z

tactic: rw [inv_mul_cancel hr0'.ne', one_smul, vsub_vadd]
state_before: case refine'_1.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type ?u.468028
P : Type u_3
P' : Type ?u.468034
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
r : R
hr0 : 0 ≤ r
hr1 : r ≤ 1
hr0' : 0 < r
⊢ (r⁻¹ * r) • (z -ᵥ x) +ᵥ x = z

tactic: simp
state_before: case refine'_1.intro.intro.intro.inr
R : Type u_1
V : Type u_2
V' : Type ?u.468028
P : Type u_3
P' : Type ?u.468034
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
hr0 : 0 ≤ 0
hr1 : 0 ≤ 1
⊢ x = ↑(lineMap x z) 0 ∨ z ∈ ↑(lineMap x (↑(lineMap x z) 0)) '' Set.Ici 1

tactic: rcases h with (rfl | ⟨r, ⟨hr, rfl⟩⟩)
state_before: case refine'_2
R : Type u_1
V : Type u_2
V' : Type ?u.468028
P : Type u_3
P' : Type ?u.468034
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.Ici 1
⊢ Wbtw R x y z

tactic: exact wbtw_self_left _ _ _
state_before: case refine'_2.inl
R : Type u_1
V : Type u_2
V' : Type ?u.468028
P : Type u_3
P' : Type ?u.468034
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
⊢ Wbtw R x x z

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

tactic: refine' ⟨r⁻¹, ⟨inv_nonneg.2 (zero_le_one.trans hr), inv_le_one hr⟩, _⟩
state_before: case refine'_2.inr.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.468028
P : Type u_3
P' : Type ?u.468034
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
r : R
hr : 1 ≤ r
⊢ Wbtw R x y (↑(lineMap x y) r)

tactic: simp only [lineMap_apply, smul_smul, vadd_vsub]
state_before: case refine'_2.inr.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.468028
P : Type u_3
P' : Type ?u.468034
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
r : R
hr : 1 ≤ r
⊢ ↑(lineMap x (↑(lineMap x y) r)) r⁻¹ = y

tactic: rw [inv_mul_cancel (one_pos.trans_le hr).ne', one_smul, vsub_vadd]
state_before: case refine'_2.inr.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.468028
P : Type u_3
P' : Type ?u.468034
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
r : R
hr : 1 ≤ r
⊢ (r⁻¹ * r) • (y -ᵥ x) +ᵥ x = y