[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y : V
⊢ affineSegment R x y = segment R x y
[PROOFSTEP]
rw [segment_eq_image_lineMap, affineSegment]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y : P
⊢ affineSegment R x y = affineSegment R y x
[PROOFSTEP]
refine' Set.ext fun z => _
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
⊢ z ∈ affineSegment R x y ↔ z ∈ affineSegment R y x
[PROOFSTEP]
constructor
[GOAL]
case mp
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
⊢ z ∈ affineSegment R x y → z ∈ affineSegment R y x
[PROOFSTEP]
rintro ⟨t, ht, hxy⟩
[GOAL]
case mp.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
t : R
ht : t ∈ Set.Icc 0 1
hxy : ↑(lineMap x y) t = z
⊢ z ∈ affineSegment R y x
[PROOFSTEP]
refine' ⟨1 - t, _, _⟩
[GOAL]
case mp.intro.intro.refine'_1
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
t : R
ht : t ∈ Set.Icc 0 1
hxy : ↑(lineMap x y) t = z
⊢ 1 - t ∈ Set.Icc 0 1
[PROOFSTEP]
rwa [Set.sub_mem_Icc_iff_right, sub_self, sub_zero]
[GOAL]
case mp.intro.intro.refine'_2
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
t : R
ht : t ∈ Set.Icc 0 1
hxy : ↑(lineMap x y) t = z
⊢ ↑(lineMap y x) (1 - t) = z
[PROOFSTEP]
rwa [lineMap_apply_one_sub]
[GOAL]
case mpr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
⊢ z ∈ affineSegment R y x → z ∈ affineSegment R x y
[PROOFSTEP]
rintro ⟨t, ht, hxy⟩
[GOAL]
case mpr.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
t : R
ht : t ∈ Set.Icc 0 1
hxy : ↑(lineMap y x) t = z
⊢ z ∈ affineSegment R x y
[PROOFSTEP]
refine' ⟨1 - t, _, _⟩
[GOAL]
case mpr.intro.intro.refine'_1
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
t : R
ht : t ∈ Set.Icc 0 1
hxy : ↑(lineMap y x) t = z
⊢ 1 - t ∈ Set.Icc 0 1
[PROOFSTEP]
rwa [Set.sub_mem_Icc_iff_right, sub_self, sub_zero]
[GOAL]
case mpr.intro.intro.refine'_2
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
t : R
ht : t ∈ Set.Icc 0 1
hxy : ↑(lineMap y x) t = z
⊢ ↑(lineMap x y) (1 - t) = z
[PROOFSTEP]
rwa [lineMap_apply_one_sub]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x : P
⊢ affineSegment R x x = {x}
[PROOFSTEP]
rw [affineSegment]
  -- Note: when adding "simp made no progress" in lean4#2336,
    -- had to change `lineMap_same` to `lineMap_same _`. Not sure why?
    -- porting note: added `_ _` and `Function.const`
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x : P
⊢ ↑(lineMap x x) '' Set.Icc 0 1 = {x}
[PROOFSTEP]
simp_rw [lineMap_same _, AffineMap.coe_const _ _, Function.const, (Set.nonempty_Icc.mpr zero_le_one).image_const]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
f : P →ᵃ[R] P'
x y : P
⊢ ↑f '' affineSegment R x y = affineSegment R (↑f x) (↑f y)
[PROOFSTEP]
rw [affineSegment, affineSegment, Set.image_image, ← comp_lineMap]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
f : P →ᵃ[R] P'
x y : P
⊢ (fun x_1 => ↑f (↑(lineMap x y) x_1)) '' Set.Icc 0 1 = ↑(comp f (lineMap x y)) '' Set.Icc 0 1
[PROOFSTEP]
rfl
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
v : V
⊢ v +ᵥ z ∈ affineSegment R (v +ᵥ x) (v +ᵥ y) ↔ z ∈ affineSegment R x y
[PROOFSTEP]
rw [← affineSegment_const_vadd_image, (AddAction.injective v).mem_set_image]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : V
p : P
⊢ z +ᵥ p ∈ affineSegment R (x +ᵥ p) (y +ᵥ p) ↔ z ∈ affineSegment R x y
[PROOFSTEP]
rw [← affineSegment_vadd_const_image, (vadd_right_injective p).mem_set_image]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z p : P
⊢ p -ᵥ z ∈ affineSegment R (p -ᵥ x) (p -ᵥ y) ↔ z ∈ affineSegment R x y
[PROOFSTEP]
rw [← affineSegment_const_vsub_image, (vsub_right_injective p).mem_set_image]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z p : P
⊢ z -ᵥ p ∈ affineSegment R (x -ᵥ p) (y -ᵥ p) ↔ z ∈ affineSegment R x y
[PROOFSTEP]
rw [← affineSegment_vsub_const_image, (vsub_left_injective p).mem_set_image]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
h : Wbtw R x y z
f : P →ᵃ[R] P'
⊢ Wbtw R (↑f x) (↑f y) (↑f z)
[PROOFSTEP]
rw [Wbtw, ← affineSegment_image]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
h : Wbtw R x y z
f : P →ᵃ[R] P'
⊢ ↑f y ∈ ↑f '' affineSegment R x z
[PROOFSTEP]
exact Set.mem_image_of_mem _ h
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
f : P →ᵃ[R] P'
hf : Injective ↑f
⊢ Wbtw R (↑f x) (↑f y) (↑f z) ↔ Wbtw R x y z
[PROOFSTEP]
refine' ⟨fun h => _, fun h => h.map _⟩
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
f : P →ᵃ[R] P'
hf : Injective ↑f
h : Wbtw R (↑f x) (↑f y) (↑f z)
⊢ Wbtw R x y z
[PROOFSTEP]
rwa [Wbtw, ← affineSegment_image, hf.mem_set_image] at h
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
f : P →ᵃ[R] P'
hf : Injective ↑f
⊢ Sbtw R (↑f x) (↑f y) (↑f z) ↔ Sbtw R x y z
[PROOFSTEP]
simp_rw [Sbtw, hf.wbtw_map_iff, hf.ne_iff]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
f : P ≃ᵃ[R] P'
⊢ Wbtw R (↑f x) (↑f y) (↑f z) ↔ Wbtw R x y z
[PROOFSTEP]
refine' Function.Injective.wbtw_map_iff (_ : Function.Injective f.toAffineMap)
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
f : P ≃ᵃ[R] P'
⊢ Function.Injective ↑↑f
[PROOFSTEP]
exact f.injective
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
f : P ≃ᵃ[R] P'
⊢ Sbtw R (↑f x) (↑f y) (↑f z) ↔ Sbtw R x y z
[PROOFSTEP]
refine' Function.Injective.sbtw_map_iff (_ : Function.Injective f.toAffineMap)
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
f : P ≃ᵃ[R] P'
⊢ Function.Injective ↑↑f
[PROOFSTEP]
exact f.injective
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
v : V
⊢ Sbtw R (v +ᵥ x) (v +ᵥ y) (v +ᵥ z) ↔ Sbtw R x y z
[PROOFSTEP]
rw [Sbtw, Sbtw, wbtw_const_vadd_iff, (AddAction.injective v).ne_iff, (AddAction.injective v).ne_iff]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : V
p : P
⊢ Sbtw R (x +ᵥ p) (y +ᵥ p) (z +ᵥ p) ↔ Sbtw R x y z
[PROOFSTEP]
rw [Sbtw, Sbtw, wbtw_vadd_const_iff, (vadd_right_injective p).ne_iff, (vadd_right_injective p).ne_iff]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z p : P
⊢ Sbtw R (p -ᵥ x) (p -ᵥ y) (p -ᵥ z) ↔ Sbtw R x y z
[PROOFSTEP]
rw [Sbtw, Sbtw, wbtw_const_vsub_iff, (vsub_right_injective p).ne_iff, (vsub_right_injective p).ne_iff]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z p : P
⊢ Sbtw R (x -ᵥ p) (y -ᵥ p) (z -ᵥ p) ↔ Sbtw R x y z
[PROOFSTEP]
rw [Sbtw, Sbtw, wbtw_vsub_const_iff, (vsub_left_injective p).ne_iff, (vsub_left_injective p).ne_iff]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
h : Sbtw R x y z
⊢ y ∈ ↑(lineMap x z) '' Set.Ioo 0 1
[PROOFSTEP]
rcases h with ⟨⟨t, ht, rfl⟩, hyx, hyz⟩
[GOAL]
case intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x z : P
t : R
ht : t ∈ Set.Icc 0 1
hyx : ↑(lineMap x z) t ≠ x
hyz : ↑(lineMap x z) t ≠ z
⊢ ↑(lineMap x z) t ∈ ↑(lineMap x z) '' Set.Ioo 0 1
[PROOFSTEP]
rcases Set.eq_endpoints_or_mem_Ioo_of_mem_Icc ht with (rfl | rfl | ho)
[GOAL]
case intro.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x z : P
ht : 0 ∈ Set.Icc 0 1
hyx : ↑(lineMap x z) 0 ≠ x
hyz : ↑(lineMap x z) 0 ≠ z
⊢ ↑(lineMap x z) 0 ∈ ↑(lineMap x z) '' Set.Ioo 0 1
[PROOFSTEP]
exfalso
[GOAL]
case intro.intro.intro.intro.inl.h
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x z : P
ht : 0 ∈ Set.Icc 0 1
hyx : ↑(lineMap x z) 0 ≠ x
hyz : ↑(lineMap x z) 0 ≠ z
⊢ False
[PROOFSTEP]
exact hyx (lineMap_apply_zero _ _)
[GOAL]
case intro.intro.intro.intro.inr.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x z : P
ht : 1 ∈ Set.Icc 0 1
hyx : ↑(lineMap x z) 1 ≠ x
hyz : ↑(lineMap x z) 1 ≠ z
⊢ ↑(lineMap x z) 1 ∈ ↑(lineMap x z) '' Set.Ioo 0 1
[PROOFSTEP]
exfalso
[GOAL]
case intro.intro.intro.intro.inr.inl.h
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x z : P
ht : 1 ∈ Set.Icc 0 1
hyx : ↑(lineMap x z) 1 ≠ x
hyz : ↑(lineMap x z) 1 ≠ z
⊢ False
[PROOFSTEP]
exact hyz (lineMap_apply_one _ _)
[GOAL]
case intro.intro.intro.intro.inr.inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x z : P
t : R
ht : t ∈ Set.Icc 0 1
hyx : ↑(lineMap x z) t ≠ x
hyz : ↑(lineMap x z) t ≠ z
ho : t ∈ Set.Ioo 0 1
⊢ ↑(lineMap x z) t ∈ ↑(lineMap x z) '' Set.Ioo 0 1
[PROOFSTEP]
exact ⟨t, ho, rfl⟩
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
h : Wbtw R x y z
⊢ y ∈ affineSpan R {x, z}
[PROOFSTEP]
rcases h with ⟨r, ⟨-, rfl⟩⟩
[GOAL]
case intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x z : P
r : R
⊢ ↑(lineMap x z) r ∈ affineSpan R {x, z}
[PROOFSTEP]
exact lineMap_mem_affineSpan_pair _ _ _
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
⊢ Wbtw R x y z ↔ Wbtw R z y x
[PROOFSTEP]
rw [Wbtw, Wbtw, affineSegment_comm]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
⊢ Sbtw R x y z ↔ Sbtw R z y x
[PROOFSTEP]
rw [Sbtw, Sbtw, wbtw_comm, ← and_assoc, ← and_assoc, and_right_comm]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y : P
⊢ Wbtw R x y x ↔ y = x
[PROOFSTEP]
refine' ⟨fun h => _, fun h => _⟩
[GOAL]
case refine'_1
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y : P
h : Wbtw R x y x
⊢ y = x
[PROOFSTEP]
have ⟨_, _, h₂⟩ := h
[GOAL]
case refine'_1
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y : P
h : Wbtw R x y x
w✝ : R
left✝ : w✝ ∈ Set.Icc 0 1
h₂ : ↑(lineMap x x) w✝ = y
⊢ y = x
[PROOFSTEP]
rw [h₂.symm, lineMap_same_apply]
[GOAL]
case refine'_2
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y : P
h : y = x
⊢ Wbtw R x y x
[PROOFSTEP]
rw [h]
[GOAL]
case refine'_2
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y : P
h : y = x
⊢ Wbtw R x x x
[PROOFSTEP]
exact wbtw_self_left R x x
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
h : Wbtw R x y z
hne : y ≠ x
⊢ x ≠ z
[PROOFSTEP]
rintro rfl
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y : P
hne : y ≠ x
h : Wbtw R x y x
⊢ False
[PROOFSTEP]
rw [wbtw_self_iff] at h
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y : P
hne : y ≠ x
h : y = x
⊢ False
[PROOFSTEP]
exact hne h
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
h : Wbtw R x y z
hne : y ≠ z
⊢ x ≠ z
[PROOFSTEP]
rintro rfl
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y : P
h : Wbtw R x y x
hne : y ≠ x
⊢ False
[PROOFSTEP]
rw [wbtw_self_iff] at h
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y : P
h : y = x
hne : y ≠ x
⊢ False
[PROOFSTEP]
exact hne h
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y z : P
⊢ Sbtw R x y z ↔ y ∈ ↑(lineMap x z) '' Set.Ioo 0 1 ∧ x ≠ z
[PROOFSTEP]
refine' ⟨fun h => ⟨h.mem_image_Ioo, h.left_ne_right⟩, fun h => _⟩
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y z : P
h : y ∈ ↑(lineMap x z) '' Set.Ioo 0 1 ∧ x ≠ z
⊢ Sbtw R x y z
[PROOFSTEP]
rcases h with ⟨⟨t, ht, rfl⟩, hxz⟩
[GOAL]
case intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
hxz : x ≠ z
t : R
ht : t ∈ Set.Ioo 0 1
⊢ Sbtw R x (↑(lineMap x z) t) z
[PROOFSTEP]
refine' ⟨⟨t, Set.mem_Icc_of_Ioo ht, rfl⟩, _⟩
[GOAL]
case intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
hxz : x ≠ z
t : R
ht : t ∈ Set.Ioo 0 1
⊢ ↑(lineMap x z) t ≠ x ∧ ↑(lineMap x z) t ≠ z
[PROOFSTEP]
rw [lineMap_apply, ← @vsub_ne_zero V, ← @vsub_ne_zero V _ _ _ _ z, vadd_vsub_assoc, vsub_self, vadd_vsub_assoc, ←
  neg_vsub_eq_vsub_rev z x, ← @neg_one_smul R, ← add_smul, ← sub_eq_add_neg]
[GOAL]
case intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
hxz : x ≠ z
t : R
ht : t ∈ Set.Ioo 0 1
⊢ t • (z -ᵥ x) + 0 ≠ 0 ∧ (t - 1) • (z -ᵥ x) ≠ 0
[PROOFSTEP]
simp [smul_ne_zero, sub_eq_zero, ht.1.ne.symm, ht.2.ne, hxz.symm]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y z : P
⊢ Wbtw R x y z ∧ Wbtw R y x z ↔ x = y
[PROOFSTEP]
constructor
[GOAL]
case mp
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y z : P
⊢ Wbtw R x y z ∧ Wbtw R y x z → x = y
[PROOFSTEP]
rintro ⟨hxyz, hyxz⟩
[GOAL]
case mp.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y z : P
hxyz : Wbtw R x y z
hyxz : Wbtw R y x z
⊢ x = y
[PROOFSTEP]
rcases hxyz with ⟨ty, hty, rfl⟩
[GOAL]
case mp.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
ty : R
hty : ty ∈ Set.Icc 0 1
hyxz : Wbtw R (↑(lineMap x z) ty) x z
⊢ x = ↑(lineMap x z) ty
[PROOFSTEP]
rcases hyxz with ⟨tx, htx, hx⟩
[GOAL]
case mp.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
ty : R
hty : ty ∈ Set.Icc 0 1
tx : R
htx : tx ∈ Set.Icc 0 1
hx : ↑(lineMap (↑(lineMap x z) ty) z) tx = x
⊢ x = ↑(lineMap x z) ty
[PROOFSTEP]
rw [lineMap_apply, lineMap_apply, ← add_vadd] at hx
[GOAL]
case mp.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
ty : R
hty : ty ∈ Set.Icc 0 1
tx : R
htx : tx ∈ Set.Icc 0 1
hx : tx • (z -ᵥ (ty • (z -ᵥ x) +ᵥ x)) + ty • (z -ᵥ x) +ᵥ x = x
⊢ x = ↑(lineMap x z) ty
[PROOFSTEP]
rw [← @vsub_eq_zero_iff_eq V, vadd_vsub, vsub_vadd_eq_vsub_sub, smul_sub, smul_smul, ← sub_smul, ← add_smul,
  smul_eq_zero] at hx
[GOAL]
case mp.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
ty : R
hty : ty ∈ Set.Icc 0 1
tx : R
htx : tx ∈ Set.Icc 0 1
hx : tx - tx * ty + ty = 0 ∨ z -ᵥ x = 0
⊢ x = ↑(lineMap x z) ty
[PROOFSTEP]
rcases hx with (h | h)
[GOAL]
case mp.intro.intro.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
ty : R
hty : ty ∈ Set.Icc 0 1
tx : R
htx : tx ∈ Set.Icc 0 1
h : tx - tx * ty + ty = 0
⊢ x = ↑(lineMap x z) ty
[PROOFSTEP]
nth_rw 1 [← mul_one tx] at h
[GOAL]
case mp.intro.intro.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
ty : R
hty : ty ∈ Set.Icc 0 1
tx : R
htx : tx ∈ Set.Icc 0 1
h : tx * 1 - tx * ty + ty = 0
⊢ x = ↑(lineMap x z) ty
[PROOFSTEP]
rw [← mul_sub, add_eq_zero_iff_neg_eq] at h
[GOAL]
case mp.intro.intro.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
ty : R
hty : ty ∈ Set.Icc 0 1
tx : R
htx : tx ∈ Set.Icc 0 1
h : -(tx * (1 - ty)) = ty
⊢ x = ↑(lineMap x z) ty
[PROOFSTEP]
have h' : ty = 0 := by
  refine' le_antisymm _ hty.1
  rw [← h, Left.neg_nonpos_iff]
  exact mul_nonneg htx.1 (sub_nonneg.2 hty.2)
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
ty : R
hty : ty ∈ Set.Icc 0 1
tx : R
htx : tx ∈ Set.Icc 0 1
h : -(tx * (1 - ty)) = ty
⊢ ty = 0
[PROOFSTEP]
refine' le_antisymm _ hty.1
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
ty : R
hty : ty ∈ Set.Icc 0 1
tx : R
htx : tx ∈ Set.Icc 0 1
h : -(tx * (1 - ty)) = ty
⊢ ty ≤ 0
[PROOFSTEP]
rw [← h, Left.neg_nonpos_iff]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
ty : R
hty : ty ∈ Set.Icc 0 1
tx : R
htx : tx ∈ Set.Icc 0 1
h : -(tx * (1 - ty)) = ty
⊢ 0 ≤ tx * (1 - ty)
[PROOFSTEP]
exact mul_nonneg htx.1 (sub_nonneg.2 hty.2)
[GOAL]
case mp.intro.intro.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
ty : R
hty : ty ∈ Set.Icc 0 1
tx : R
htx : tx ∈ Set.Icc 0 1
h : -(tx * (1 - ty)) = ty
h' : ty = 0
⊢ x = ↑(lineMap x z) ty
[PROOFSTEP]
simp [h']
[GOAL]
case mp.intro.intro.intro.intro.intro.inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
ty : R
hty : ty ∈ Set.Icc 0 1
tx : R
htx : tx ∈ Set.Icc 0 1
h : z -ᵥ x = 0
⊢ x = ↑(lineMap x z) ty
[PROOFSTEP]
rw [vsub_eq_zero_iff_eq] at h
[GOAL]
case mp.intro.intro.intro.intro.intro.inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
ty : R
hty : ty ∈ Set.Icc 0 1
tx : R
htx : tx ∈ Set.Icc 0 1
h : z = x
⊢ x = ↑(lineMap x z) ty
[PROOFSTEP]
rw [h, lineMap_same_apply]
[GOAL]
case mpr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y z : P
⊢ x = y → Wbtw R x y z ∧ Wbtw R y x z
[PROOFSTEP]
rintro rfl
[GOAL]
case mpr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x z : P
⊢ Wbtw R x x z ∧ Wbtw R x x z
[PROOFSTEP]
exact ⟨wbtw_self_left _ _ _, wbtw_self_left _ _ _⟩
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y z : P
⊢ Wbtw R x y z ∧ Wbtw R x z y ↔ y = z
[PROOFSTEP]
rw [wbtw_comm, wbtw_comm (z := y), eq_comm]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y z : P
⊢ Wbtw R z y x ∧ Wbtw R y z x ↔ z = y
[PROOFSTEP]
exact wbtw_swap_left_iff R x
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y z : P
⊢ Wbtw R x y z ∧ Wbtw R z x y ↔ x = y
[PROOFSTEP]
rw [wbtw_comm, wbtw_swap_right_iff, eq_comm]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y z : P
h : Wbtw R x y z
⊢ Wbtw R y x z ↔ x = y
[PROOFSTEP]
rw [← wbtw_swap_left_iff R z, and_iff_right h]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y z : P
h : Wbtw R x y z
⊢ Wbtw R x z y ↔ y = z
[PROOFSTEP]
rw [← wbtw_swap_right_iff R x, and_iff_right h]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y z : P
h : Wbtw R x y z
⊢ Wbtw R z x y ↔ x = y
[PROOFSTEP]
rw [← wbtw_rotate_iff R x, and_iff_right h]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y : P
r : R
⊢ Wbtw R x (↑(lineMap x y) r) y ↔ x = y ∨ r ∈ Set.Icc 0 1
[PROOFSTEP]
by_cases hxy : x = y
[GOAL]
case pos
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y : P
r : R
hxy : x = y
⊢ Wbtw R x (↑(lineMap x y) r) y ↔ x = y ∨ r ∈ Set.Icc 0 1
[PROOFSTEP]
rw [hxy, lineMap_same_apply]
[GOAL]
case pos
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y : P
r : R
hxy : x = y
⊢ Wbtw R y y y ↔ y = y ∨ r ∈ Set.Icc 0 1
[PROOFSTEP]
simp
[GOAL]
case neg
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y : P
r : R
hxy : ¬x = y
⊢ Wbtw R x (↑(lineMap x y) r) y ↔ x = y ∨ r ∈ Set.Icc 0 1
[PROOFSTEP]
rw [or_iff_right hxy, Wbtw, affineSegment, (lineMap_injective R hxy).mem_set_image]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y : P
r : R
⊢ Sbtw R x (↑(lineMap x y) r) y ↔ x ≠ y ∧ r ∈ Set.Ioo 0 1
[PROOFSTEP]
rw [sbtw_iff_mem_image_Ioo_and_ne, and_comm, and_congr_right]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y : P
r : R
⊢ x ≠ y → (↑(lineMap x y) r ∈ ↑(lineMap x y) '' Set.Ioo 0 1 ↔ r ∈ Set.Ioo 0 1)
[PROOFSTEP]
intro hxy
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y : P
r : R
hxy : x ≠ y
⊢ ↑(lineMap x y) r ∈ ↑(lineMap x y) '' Set.Ioo 0 1 ↔ r ∈ Set.Ioo 0 1
[PROOFSTEP]
rw [(lineMap_injective R hxy).mem_set_image]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x : R
⊢ Wbtw R 0 x 1 ↔ x ∈ Set.Icc 0 1
[PROOFSTEP]
rw [Wbtw, affineSegment, Set.mem_image]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x : R
⊢ (∃ x_1, x_1 ∈ Set.Icc 0 1 ∧ ↑(lineMap 0 1) x_1 = x) ↔ x ∈ Set.Icc 0 1
[PROOFSTEP]
simp_rw [lineMap_apply_ring]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x : R
⊢ (∃ x_1, x_1 ∈ Set.Icc 0 1 ∧ (1 - x_1) * 0 + x_1 * 1 = x) ↔ x ∈ Set.Icc 0 1
[PROOFSTEP]
simp
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x : R
⊢ Wbtw R 1 x 0 ↔ x ∈ Set.Icc 0 1
[PROOFSTEP]
rw [wbtw_comm, wbtw_zero_one_iff]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x : R
⊢ Sbtw R 0 x 1 ↔ x ∈ Set.Ioo 0 1
[PROOFSTEP]
rw [Sbtw, wbtw_zero_one_iff, Set.mem_Icc, Set.mem_Ioo]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x : R
⊢ (0 ≤ x ∧ x ≤ 1) ∧ x ≠ 0 ∧ x ≠ 1 ↔ 0 < x ∧ x < 1
[PROOFSTEP]
exact ⟨fun h => ⟨h.1.1.lt_of_ne (Ne.symm h.2.1), h.1.2.lt_of_ne h.2.2⟩, fun h => ⟨⟨h.1.le, h.2.le⟩, h.1.ne', h.2.ne⟩⟩
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x : R
⊢ Sbtw R 1 x 0 ↔ x ∈ Set.Ioo 0 1
[PROOFSTEP]
rw [sbtw_comm, sbtw_zero_one_iff]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w x y z : P
h₁ : Wbtw R w y z
h₂ : Wbtw R w x y
⊢ Wbtw R w x z
[PROOFSTEP]
rcases h₁ with ⟨t₁, ht₁, rfl⟩
[GOAL]
case intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w x z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
h₂ : Wbtw R w x (↑(lineMap w z) t₁)
⊢ Wbtw R w x z
[PROOFSTEP]
rcases h₂ with ⟨t₂, ht₂, rfl⟩
[GOAL]
case intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
⊢ Wbtw R w (↑(lineMap w (↑(lineMap w z) t₁)) t₂) z
[PROOFSTEP]
refine' ⟨t₂ * t₁, ⟨mul_nonneg ht₂.1 ht₁.1, mul_le_one ht₂.2 ht₁.1 ht₁.2⟩, _⟩
[GOAL]
case intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
⊢ ↑(lineMap w z) (t₂ * t₁) = ↑(lineMap w (↑(lineMap w z) t₁)) t₂
[PROOFSTEP]
rw [lineMap_apply, lineMap_apply, lineMap_vsub_left, smul_smul]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w x y z : P
h₁ : Wbtw R w x z
h₂ : Wbtw R x y z
⊢ Wbtw R w y z
[PROOFSTEP]
rw [wbtw_comm] at *
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w x y z : P
h₁ : Wbtw R z x w
h₂ : Wbtw R z y x
⊢ Wbtw R z y w
[PROOFSTEP]
exact h₁.trans_left h₂
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x y z : P
h₁ : Wbtw R w y z
h₂ : Sbtw R w x y
⊢ Sbtw R w x z
[PROOFSTEP]
refine' ⟨h₁.trans_left h₂.wbtw, h₂.ne_left, _⟩
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x y z : P
h₁ : Wbtw R w y z
h₂ : Sbtw R w x y
⊢ x ≠ z
[PROOFSTEP]
rintro rfl
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x y : P
h₂ : Sbtw R w x y
h₁ : Wbtw R w y x
⊢ False
[PROOFSTEP]
exact h₂.right_ne ((wbtw_swap_right_iff R w).1 ⟨h₁, h₂.wbtw⟩)
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x y z : P
h₁ : Wbtw R w x z
h₂ : Sbtw R x y z
⊢ Sbtw R w y z
[PROOFSTEP]
rw [wbtw_comm] at *
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x y z : P
h₁ : Wbtw R z x w
h₂ : Sbtw R x y z
⊢ Sbtw R w y z
[PROOFSTEP]
rw [sbtw_comm] at *
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x y z : P
h₁ : Wbtw R z x w
h₂ : Sbtw R z y x
⊢ Sbtw R z y w
[PROOFSTEP]
exact h₁.trans_sbtw_left h₂
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x y z : P
h₁ : Wbtw R w y z
h₂ : Wbtw R w x y
h : y ≠ z
⊢ x ≠ z
[PROOFSTEP]
rintro rfl
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x y : P
h₂ : Wbtw R w x y
h₁ : Wbtw R w y x
h : y ≠ x
⊢ False
[PROOFSTEP]
exact h (h₁.swap_right_iff.1 h₂)
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x y z : P
h₁ : Wbtw R w x z
h₂ : Wbtw R x y z
h : w ≠ x
⊢ w ≠ y
[PROOFSTEP]
rintro rfl
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x z : P
h₁ : Wbtw R w x z
h : w ≠ x
h₂ : Wbtw R x w z
⊢ False
[PROOFSTEP]
exact h (h₁.swap_left_iff.1 h₂)
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁸ : OrderedRing R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : AddTorsor V P
inst✝⁴ : AddCommGroup V'
inst✝³ : Module R V'
inst✝² : AddTorsor V' P'
inst✝¹ : NoZeroDivisors R
inst✝ : NoZeroSMulDivisors R V
ι : Type u_6
p : ι → P
ha : AffineIndependent R p
w w₁ w₂ : ι → R
s : Finset ι
hw : ∑ i in s, w i = 1
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
h :
  ↑(Finset.affineCombination R s p) w ∈
    affineSpan R {↑(Finset.affineCombination R s p) w₁, ↑(Finset.affineCombination R s p) w₂}
i : ι
his : i ∈ s
hs : Sbtw R (w₁ i) (w i) (w₂ i)
⊢ Sbtw R (↑(Finset.affineCombination R s p) w₁) (↑(Finset.affineCombination R s p) w)
    (↑(Finset.affineCombination R s p) w₂)
[PROOFSTEP]
rw [affineCombination_mem_affineSpan_pair ha hw hw₁ hw₂] at h
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁸ : OrderedRing R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : AddTorsor V P
inst✝⁴ : AddCommGroup V'
inst✝³ : Module R V'
inst✝² : AddTorsor V' P'
inst✝¹ : NoZeroDivisors R
inst✝ : NoZeroSMulDivisors R V
ι : Type u_6
p : ι → P
ha : AffineIndependent R p
w w₁ w₂ : ι → R
s : Finset ι
hw : ∑ i in s, w i = 1
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
h : ∃ r, ∀ (i : ι), i ∈ s → w i = r * (w₂ i - w₁ i) + w₁ i
i : ι
his : i ∈ s
hs : Sbtw R (w₁ i) (w i) (w₂ i)
⊢ Sbtw R (↑(Finset.affineCombination R s p) w₁) (↑(Finset.affineCombination R s p) w)
    (↑(Finset.affineCombination R s p) w₂)
[PROOFSTEP]
rcases h with ⟨r, hr⟩
[GOAL]
case intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁸ : OrderedRing R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : AddTorsor V P
inst✝⁴ : AddCommGroup V'
inst✝³ : Module R V'
inst✝² : AddTorsor V' P'
inst✝¹ : NoZeroDivisors R
inst✝ : NoZeroSMulDivisors R V
ι : Type u_6
p : ι → P
ha : AffineIndependent R p
w w₁ w₂ : ι → R
s : Finset ι
hw : ∑ i in s, w i = 1
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
i : ι
his : i ∈ s
hs : Sbtw R (w₁ i) (w i) (w₂ i)
r : R
hr : ∀ (i : ι), i ∈ s → w i = r * (w₂ i - w₁ i) + w₁ i
⊢ Sbtw R (↑(Finset.affineCombination R s p) w₁) (↑(Finset.affineCombination R s p) w)
    (↑(Finset.affineCombination R s p) w₂)
[PROOFSTEP]
rw [hr i his, sbtw_mul_sub_add_iff] at hs
[GOAL]
case intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁸ : OrderedRing R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : AddTorsor V P
inst✝⁴ : AddCommGroup V'
inst✝³ : Module R V'
inst✝² : AddTorsor V' P'
inst✝¹ : NoZeroDivisors R
inst✝ : NoZeroSMulDivisors R V
ι : Type u_6
p : ι → P
ha : AffineIndependent R p
w w₁ w₂ : ι → R
s : Finset ι
hw : ∑ i in s, w i = 1
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
i : ι
his : i ∈ s
r : R
hs : w₁ i ≠ w₂ i ∧ r ∈ Set.Ioo 0 1
hr : ∀ (i : ι), i ∈ s → w i = r * (w₂ i - w₁ i) + w₁ i
⊢ Sbtw R (↑(Finset.affineCombination R s p) w₁) (↑(Finset.affineCombination R s p) w)
    (↑(Finset.affineCombination R s p) w₂)
[PROOFSTEP]
change ∀ i ∈ s, w i = (r • (w₂ - w₁) + w₁) i at hr
[GOAL]
case intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁸ : OrderedRing R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : AddTorsor V P
inst✝⁴ : AddCommGroup V'
inst✝³ : Module R V'
inst✝² : AddTorsor V' P'
inst✝¹ : NoZeroDivisors R
inst✝ : NoZeroSMulDivisors R V
ι : Type u_6
p : ι → P
ha : AffineIndependent R p
w w₁ w₂ : ι → R
s : Finset ι
hw : ∑ i in s, w i = 1
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
i : ι
his : i ∈ s
r : R
hs : w₁ i ≠ w₂ i ∧ r ∈ Set.Ioo 0 1
hr : ∀ (i : ι), i ∈ s → w i = (r • (w₂ - w₁) + w₁) i
⊢ Sbtw R (↑(Finset.affineCombination R s p) w₁) (↑(Finset.affineCombination R s p) w)
    (↑(Finset.affineCombination R s p) w₂)
[PROOFSTEP]
rw [s.affineCombination_congr hr fun _ _ => rfl]
[GOAL]
case intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁸ : OrderedRing R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : AddTorsor V P
inst✝⁴ : AddCommGroup V'
inst✝³ : Module R V'
inst✝² : AddTorsor V' P'
inst✝¹ : NoZeroDivisors R
inst✝ : NoZeroSMulDivisors R V
ι : Type u_6
p : ι → P
ha : AffineIndependent R p
w w₁ w₂ : ι → R
s : Finset ι
hw : ∑ i in s, w i = 1
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
i : ι
his : i ∈ s
r : R
hs : w₁ i ≠ w₂ i ∧ r ∈ Set.Ioo 0 1
hr : ∀ (i : ι), i ∈ s → w i = (r • (w₂ - w₁) + w₁) i
⊢ Sbtw R (↑(Finset.affineCombination R s p) w₁)
    (↑(Finset.affineCombination R s fun x => p x) fun i => (r • (w₂ - w₁) + w₁) i)
    (↑(Finset.affineCombination R s p) w₂)
[PROOFSTEP]
dsimp only
[GOAL]
case intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁸ : OrderedRing R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : AddTorsor V P
inst✝⁴ : AddCommGroup V'
inst✝³ : Module R V'
inst✝² : AddTorsor V' P'
inst✝¹ : NoZeroDivisors R
inst✝ : NoZeroSMulDivisors R V
ι : Type u_6
p : ι → P
ha : AffineIndependent R p
w w₁ w₂ : ι → R
s : Finset ι
hw : ∑ i in s, w i = 1
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
i : ι
his : i ∈ s
r : R
hs : w₁ i ≠ w₂ i ∧ r ∈ Set.Ioo 0 1
hr : ∀ (i : ι), i ∈ s → w i = (r • (w₂ - w₁) + w₁) i
⊢ Sbtw R (↑(Finset.affineCombination R s p) w₁)
    (↑(Finset.affineCombination R s fun x => p x) fun i => (r • (w₂ - w₁) + w₁) i)
    (↑(Finset.affineCombination R s p) w₂)
[PROOFSTEP]
rw [← s.weightedVSub_vadd_affineCombination, s.weightedVSub_const_smul, ← s.affineCombination_vsub, ← lineMap_apply,
  sbtw_lineMap_iff, and_iff_left hs.2, ← @vsub_ne_zero V, s.affineCombination_vsub]
[GOAL]
case intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁸ : OrderedRing R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : AddTorsor V P
inst✝⁴ : AddCommGroup V'
inst✝³ : Module R V'
inst✝² : AddTorsor V' P'
inst✝¹ : NoZeroDivisors R
inst✝ : NoZeroSMulDivisors R V
ι : Type u_6
p : ι → P
ha : AffineIndependent R p
w w₁ w₂ : ι → R
s : Finset ι
hw : ∑ i in s, w i = 1
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
i : ι
his : i ∈ s
r : R
hs : w₁ i ≠ w₂ i ∧ r ∈ Set.Ioo 0 1
hr : ∀ (i : ι), i ∈ s → w i = (r • (w₂ - w₁) + w₁) i
⊢ ↑(Finset.weightedVSub s p) (w₁ - w₂) ≠ 0
[PROOFSTEP]
intro hz
[GOAL]
case intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁸ : OrderedRing R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : AddTorsor V P
inst✝⁴ : AddCommGroup V'
inst✝³ : Module R V'
inst✝² : AddTorsor V' P'
inst✝¹ : NoZeroDivisors R
inst✝ : NoZeroSMulDivisors R V
ι : Type u_6
p : ι → P
ha : AffineIndependent R p
w w₁ w₂ : ι → R
s : Finset ι
hw : ∑ i in s, w i = 1
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
i : ι
his : i ∈ s
r : R
hs : w₁ i ≠ w₂ i ∧ r ∈ Set.Ioo 0 1
hr : ∀ (i : ι), i ∈ s → w i = (r • (w₂ - w₁) + w₁) i
hz : ↑(Finset.weightedVSub s p) (w₁ - w₂) = 0
⊢ False
[PROOFSTEP]
have hw₁w₂ : (∑ i in s, (w₁ - w₂) i) = 0 := by simp_rw [Pi.sub_apply, Finset.sum_sub_distrib, hw₁, hw₂, sub_self]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁸ : OrderedRing R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : AddTorsor V P
inst✝⁴ : AddCommGroup V'
inst✝³ : Module R V'
inst✝² : AddTorsor V' P'
inst✝¹ : NoZeroDivisors R
inst✝ : NoZeroSMulDivisors R V
ι : Type u_6
p : ι → P
ha : AffineIndependent R p
w w₁ w₂ : ι → R
s : Finset ι
hw : ∑ i in s, w i = 1
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
i : ι
his : i ∈ s
r : R
hs : w₁ i ≠ w₂ i ∧ r ∈ Set.Ioo 0 1
hr : ∀ (i : ι), i ∈ s → w i = (r • (w₂ - w₁) + w₁) i
hz : ↑(Finset.weightedVSub s p) (w₁ - w₂) = 0
⊢ ∑ i in s, (w₁ - w₂) i = 0
[PROOFSTEP]
simp_rw [Pi.sub_apply, Finset.sum_sub_distrib, hw₁, hw₂, sub_self]
[GOAL]
case intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁸ : OrderedRing R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : AddTorsor V P
inst✝⁴ : AddCommGroup V'
inst✝³ : Module R V'
inst✝² : AddTorsor V' P'
inst✝¹ : NoZeroDivisors R
inst✝ : NoZeroSMulDivisors R V
ι : Type u_6
p : ι → P
ha : AffineIndependent R p
w w₁ w₂ : ι → R
s : Finset ι
hw : ∑ i in s, w i = 1
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
i : ι
his : i ∈ s
r : R
hs : w₁ i ≠ w₂ i ∧ r ∈ Set.Ioo 0 1
hr : ∀ (i : ι), i ∈ s → w i = (r • (w₂ - w₁) + w₁) i
hz : ↑(Finset.weightedVSub s p) (w₁ - w₂) = 0
hw₁w₂ : ∑ i in s, (w₁ - w₂) i = 0
⊢ False
[PROOFSTEP]
refine' hs.1 _
[GOAL]
case intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁸ : OrderedRing R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : AddTorsor V P
inst✝⁴ : AddCommGroup V'
inst✝³ : Module R V'
inst✝² : AddTorsor V' P'
inst✝¹ : NoZeroDivisors R
inst✝ : NoZeroSMulDivisors R V
ι : Type u_6
p : ι → P
ha : AffineIndependent R p
w w₁ w₂ : ι → R
s : Finset ι
hw : ∑ i in s, w i = 1
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
i : ι
his : i ∈ s
r : R
hs : w₁ i ≠ w₂ i ∧ r ∈ Set.Ioo 0 1
hr : ∀ (i : ι), i ∈ s → w i = (r • (w₂ - w₁) + w₁) i
hz : ↑(Finset.weightedVSub s p) (w₁ - w₂) = 0
hw₁w₂ : ∑ i in s, (w₁ - w₂) i = 0
⊢ w₁ i = w₂ i
[PROOFSTEP]
have ha' := ha s (w₁ - w₂) hw₁w₂ hz i his
[GOAL]
case intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁸ : OrderedRing R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : AddTorsor V P
inst✝⁴ : AddCommGroup V'
inst✝³ : Module R V'
inst✝² : AddTorsor V' P'
inst✝¹ : NoZeroDivisors R
inst✝ : NoZeroSMulDivisors R V
ι : Type u_6
p : ι → P
ha : AffineIndependent R p
w w₁ w₂ : ι → R
s : Finset ι
hw : ∑ i in s, w i = 1
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
i : ι
his : i ∈ s
r : R
hs : w₁ i ≠ w₂ i ∧ r ∈ Set.Ioo 0 1
hr : ∀ (i : ι), i ∈ s → w i = (r • (w₂ - w₁) + w₁) i
hz : ↑(Finset.weightedVSub s p) (w₁ - w₂) = 0
hw₁w₂ : ∑ i in s, (w₁ - w₂) i = 0
ha' : (w₁ - w₂) i = 0
⊢ w₁ i = w₂ i
[PROOFSTEP]
rwa [Pi.sub_apply, sub_eq_zero] at ha'
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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)
[PROOFSTEP]
rcases h with ⟨t, ⟨ht0, ht1⟩, rfl⟩
[GOAL]
case intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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)
[PROOFSTEP]
simp_rw [lineMap_apply]
[GOAL]
case intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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))
[PROOFSTEP]
rcases ht0.lt_or_eq with (ht0' | rfl)
[GOAL]
case intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
V' : Type u_3
P : Type u_4
P' : Type u_5
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))
[PROOFSTEP]
swap
[GOAL]
case intro.intro.intro.inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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))
[PROOFSTEP]
simp
[GOAL]
case intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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))
[PROOFSTEP]
rcases ht1.lt_or_eq with (ht1' | rfl)
[GOAL]
case intro.intro.intro.inl.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
V' : Type u_3
P : Type u_4
P' : Type u_5
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))
[PROOFSTEP]
swap
[GOAL]
case intro.intro.intro.inl.inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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))
[PROOFSTEP]
simp
[GOAL]
case intro.intro.intro.inl.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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))
[PROOFSTEP]
refine' Or.inr (Or.inr ⟨1 - t, t, sub_pos.2 ht1', ht0', _⟩)
[GOAL]
case intro.intro.intro.inl.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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))
[PROOFSTEP]
simp [vsub_vadd_eq_vsub_sub, smul_sub, smul_smul, ← sub_smul]
[GOAL]
case intro.intro.intro.inl.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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)
[PROOFSTEP]
ring_nf
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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 -ᵥ x)
[PROOFSTEP]
rcases h with ⟨t, ⟨ht0, _⟩, rfl⟩
[GOAL]
case intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
ht0 : 0 ≤ t
right✝ : t ≤ 1
⊢ SameRay R (↑(lineMap x z) t -ᵥ x) (z -ᵥ x)
[PROOFSTEP]
simpa [lineMap_apply] using SameRay.sameRay_nonneg_smul_left (z -ᵥ x) ht0
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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 (z -ᵥ x) (z -ᵥ y)
[PROOFSTEP]
rcases h with ⟨t, ⟨_, ht1⟩, rfl⟩
[GOAL]
case intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : StrictOrderedCommRing R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
left✝ : 0 ≤ t
ht1 : t ≤ 1
⊢ SameRay R (z -ᵥ x) (z -ᵥ ↑(lineMap x z) t)
[PROOFSTEP]
simpa [lineMap_apply, vsub_vadd_eq_vsub_sub, sub_smul] using
  SameRay.sameRay_nonneg_smul_right (z -ᵥ x) (sub_nonneg.2 ht1)
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
⊢ Sbtw R (Affine.Simplex.points t i₁) p p₁
[PROOFSTEP]
letI : DecidableRel ((· < ·) : R → R → Prop) := LinearOrderedRing.decidableLT
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
⊢ Sbtw R (Affine.Simplex.points t i₁) p p₁
[PROOFSTEP]
have h₁₃ : i₁ ≠ i₃ := by
  rintro rfl
  simp at h₂
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
⊢ i₁ ≠ i₃
[PROOFSTEP]
rintro rfl
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₁)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₁)
⊢ False
[PROOFSTEP]
simp at h₂
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
⊢ Sbtw R (Affine.Simplex.points t i₁) p p₁
[PROOFSTEP]
have h₂₃ : i₂ ≠ i₃ := by
  rintro rfl
  simp at h₁
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
⊢ i₂ ≠ i₃
[PROOFSTEP]
rintro rfl
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₂)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₂)
h₁₃ : i₁ ≠ i₂
⊢ False
[PROOFSTEP]
simp at h₁
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
⊢ Sbtw R (Affine.Simplex.points t i₁) p p₁
[PROOFSTEP]
have h3 : ∀ i : Fin 3, i = i₁ ∨ i = i₂ ∨ i = i₃ :=
  by
  clear h₁ h₂ h₁' h₂'
  intro i
  fin_cases i <;> fin_cases i₁ <;> fin_cases i₂ <;> fin_cases i₃ <;> simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
⊢ ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
[PROOFSTEP]
clear h₁ h₂ h₁' h₂'
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
⊢ ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
[PROOFSTEP]
intro i
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
i : Fin 3
⊢ i = i₁ ∨ i = i₂ ∨ i = i₃
[PROOFSTEP]
fin_cases i
[GOAL]
case head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
⊢ { val := 0, isLt := (_ : 0 < 3) } = i₁ ∨
    { val := 0, isLt := (_ : 0 < 3) } = i₂ ∨ { val := 0, isLt := (_ : 0 < 3) } = i₃
[PROOFSTEP]
fin_cases i₁
[GOAL]
case tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₁ ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₂ ∨ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₃
[PROOFSTEP]
fin_cases i₁
[GOAL]
case tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₁ ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₂ ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₃
[PROOFSTEP]
fin_cases i₁
[GOAL]
case head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₂ i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₂₃ : i₂ ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₂
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = i₂ ∨ { val := 0, isLt := (_ : 0 < 3) } = i₃
[PROOFSTEP]
fin_cases i₂
[GOAL]
case head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₂ i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₂₃ : i₂ ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₂
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = i₂ ∨ { val := 0, isLt := (_ : 0 < 3) } = i₃
[PROOFSTEP]
fin_cases i₂
[GOAL]
case head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₂ i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₂₃ : i₂ ≠ i₃
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₂
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = i₂ ∨ { val := 0, isLt := (_ : 0 < 3) } = i₃
[PROOFSTEP]
fin_cases i₂
[GOAL]
case tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₂ i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₂₃ : i₂ ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₂
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₂ ∨ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₃
[PROOFSTEP]
fin_cases i₂
[GOAL]
case tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₂ i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₂₃ : i₂ ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₂
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₂ ∨ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₃
[PROOFSTEP]
fin_cases i₂
[GOAL]
case tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₂ i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₂₃ : i₂ ≠ i₃
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₂
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₂ ∨ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₃
[PROOFSTEP]
fin_cases i₂
[GOAL]
case tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₂ i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₂₃ : i₂ ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₂
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₂ ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₃
[PROOFSTEP]
fin_cases i₂
[GOAL]
case tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₂ i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₂₃ : i₂ ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₂
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₂ ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₃
[PROOFSTEP]
fin_cases i₂
[GOAL]
case tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₂ i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₂₃ : i₂ ≠ i₃
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₂
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₂ ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₃
[PROOFSTEP]
fin_cases i₂
[GOAL]
case head.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨ { val := 0, isLt := (_ : 0 < 3) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case head.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case head.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case head.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨ { val := 0, isLt := (_ : 0 < 3) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case head.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case head.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case head.tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨ { val := 0, isLt := (_ : 0 < 3) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case head.tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case head.tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₁₂ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.head.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.head.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.head.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.head.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.head.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.head.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.head.tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.head.tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.head.tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₁₂ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.tail.head.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.tail.head.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.tail.head.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.tail.head.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.tail.head.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.tail.head.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.tail.head.tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.tail.head.tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.tail.head.tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₁₂ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = i₃
[PROOFSTEP]
fin_cases i₃
[GOAL]
case head.head.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.head.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.head.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.head.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.head.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.head.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.head.tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.head.tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.head.tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.head.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.head.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.head.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.head.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.head.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.head.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.head.tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.head.tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.head.tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.tail.head.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.tail.head.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.tail.head.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.tail.head.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.tail.head.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.tail.head.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.tail.head.tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.tail.head.tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.tail.head.tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ h₂₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 0, isLt := (_ : 0 < 3) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.head.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.head.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.head.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.head.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.head.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.head.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.head.tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.head.tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.head.tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.head.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.head.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.head.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.head.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.head.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.head.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.head.tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.head.tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.head.tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.tail.head.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.tail.head.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.tail.head.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.tail.head.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.tail.head.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.tail.head.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.tail.head.tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.tail.head.tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.tail.head.tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ h₂₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 1, isLt := (_ : (fun a => a < 3) 1) } = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.head.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.head.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.head.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.head.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.head.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.head.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.head.tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.head.tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.head.tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.head.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.head.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.head.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.head.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.head.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.head.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.head.tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.head.tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.head.tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.tail.head.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.tail.head.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.tail.head.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.tail.head.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.tail.head.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.tail.head.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.tail.head.tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 0, isLt := (_ : 0 < 3) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.tail.head.tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.tail.head.tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ h₂₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } =
        { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
⊢ Sbtw R (Affine.Simplex.points t i₁) p p₁
[PROOFSTEP]
have hu : (Finset.univ : Finset (Fin 3)) = { i₁, i₂, i₃ } :=
  by
  clear h₁ h₂ h₁' h₂'
  fin_cases i₁ <;> fin_cases i₂ <;> fin_cases i₃ <;> simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
⊢ Finset.univ = {i₁, i₂, i₃}
[PROOFSTEP]
clear h₁ h₂ h₁' h₂'
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
⊢ Finset.univ = {i₁, i₂, i₃}
[PROOFSTEP]
fin_cases i₁
[GOAL]
case head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₂ i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₂₃ : i₂ ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₂
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h3 : ∀ (i : Fin 3), i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = i₂ ∨ i = i₃
⊢ Finset.univ = {{ val := 0, isLt := (_ : 0 < 3) }, i₂, i₃}
[PROOFSTEP]
fin_cases i₂
[GOAL]
case tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₂ i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₂₃ : i₂ ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₂
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h3 : ∀ (i : Fin 3), i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨ i = i₂ ∨ i = i₃
⊢ Finset.univ = {{ val := 1, isLt := (_ : (fun a => a < 3) 1) }, i₂, i₃}
[PROOFSTEP]
fin_cases i₂
[GOAL]
case tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₂ i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₂₃ : i₂ ≠ i₃
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₂
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h3 : ∀ (i : Fin 3), i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨ i = i₂ ∨ i = i₃
⊢ Finset.univ = {{ val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }, i₂, i₃}
[PROOFSTEP]
fin_cases i₂
[GOAL]
case head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h3 : ∀ (i : Fin 3), i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = i₃
⊢ Finset.univ = {{ val := 0, isLt := (_ : 0 < 3) }, { val := 0, isLt := (_ : 0 < 3) }, i₃}
[PROOFSTEP]
fin_cases i₃
[GOAL]
case head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h3 : ∀ (i : Fin 3), i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨ i = i₃
⊢ Finset.univ = {{ val := 0, isLt := (_ : 0 < 3) }, { val := 1, isLt := (_ : (fun a => a < 3) 1) }, i₃}
[PROOFSTEP]
fin_cases i₃
[GOAL]
case head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨ i = i₃
⊢ Finset.univ = {{ val := 0, isLt := (_ : 0 < 3) }, { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }, i₃}
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h3 : ∀ (i : Fin 3), i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨ i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = i₃
⊢ Finset.univ = {{ val := 1, isLt := (_ : (fun a => a < 3) 1) }, { val := 0, isLt := (_ : 0 < 3) }, i₃}
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨ i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨ i = i₃
⊢ Finset.univ = {{ val := 1, isLt := (_ : (fun a => a < 3) 1) }, { val := 1, isLt := (_ : (fun a => a < 3) 1) }, i₃}
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨ i = i₃
⊢ Finset.univ =
    {{ val := 1, isLt := (_ : (fun a => a < 3) 1) }, { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }, i₃}
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ i₃
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨ i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = i₃
⊢ Finset.univ = {{ val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }, { val := 0, isLt := (_ : 0 < 3) }, i₃}
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ i₃
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨ i = i₃
⊢ Finset.univ =
    {{ val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }, { val := 1, isLt := (_ : (fun a => a < 3) 1) }, i₃}
[PROOFSTEP]
fin_cases i₃
[GOAL]
case tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₃ : Fin 3
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ i₃
h₁₂ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨ i = i₃
⊢ Finset.univ =
    {{ val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) },
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }, i₃}
[PROOFSTEP]
fin_cases i₃
[GOAL]
case head.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 0, isLt := (_ : 0 < 3) } ∨
      i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = { val := 0, isLt := (_ : 0 < 3) }
⊢ Finset.univ =
    {{ val := 0, isLt := (_ : 0 < 3) }, { val := 0, isLt := (_ : 0 < 3) }, { val := 0, isLt := (_ : 0 < 3) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 0, isLt := (_ : 0 < 3) } ∨
      i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ Finset.univ =
    {{ val := 0, isLt := (_ : 0 < 3) }, { val := 0, isLt := (_ : 0 < 3) },
      { val := 1, isLt := (_ : (fun a => a < 3) 1) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 0, isLt := (_ : 0 < 3) } ∨
      i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ Finset.univ =
    {{ val := 0, isLt := (_ : 0 < 3) }, { val := 0, isLt := (_ : 0 < 3) },
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 0, isLt := (_ : 0 < 3) } ∨
      i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨ i = { val := 0, isLt := (_ : 0 < 3) }
⊢ Finset.univ =
    {{ val := 0, isLt := (_ : 0 < 3) }, { val := 1, isLt := (_ : (fun a => a < 3) 1) },
      { val := 0, isLt := (_ : 0 < 3) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 0, isLt := (_ : 0 < 3) } ∨
      i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨ i = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ Finset.univ =
    {{ val := 0, isLt := (_ : 0 < 3) }, { val := 1, isLt := (_ : (fun a => a < 3) 1) },
      { val := 1, isLt := (_ : (fun a => a < 3) 1) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 0, isLt := (_ : 0 < 3) } ∨
      i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
        i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ Finset.univ =
    {{ val := 0, isLt := (_ : 0 < 3) }, { val := 1, isLt := (_ : (fun a => a < 3) 1) },
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 0, isLt := (_ : 0 < 3) } ∨
      i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨ i = { val := 0, isLt := (_ : 0 < 3) }
⊢ Finset.univ =
    {{ val := 0, isLt := (_ : 0 < 3) }, { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) },
      { val := 0, isLt := (_ : 0 < 3) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 0, isLt := (_ : 0 < 3) } ∨
      i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
        i = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ Finset.univ =
    {{ val := 0, isLt := (_ : 0 < 3) }, { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) },
      { val := 1, isLt := (_ : (fun a => a < 3) 1) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case head.tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 0, isLt := (_ : 0 < 3) } ∨
      i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
        i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ Finset.univ =
    {{ val := 0, isLt := (_ : 0 < 3) }, { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) },
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = { val := 0, isLt := (_ : 0 < 3) }
⊢ Finset.univ =
    {{ val := 1, isLt := (_ : (fun a => a < 3) 1) }, { val := 0, isLt := (_ : 0 < 3) },
      { val := 0, isLt := (_ : 0 < 3) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ Finset.univ =
    {{ val := 1, isLt := (_ : (fun a => a < 3) 1) }, { val := 0, isLt := (_ : 0 < 3) },
      { val := 1, isLt := (_ : (fun a => a < 3) 1) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ Finset.univ =
    {{ val := 1, isLt := (_ : (fun a => a < 3) 1) }, { val := 0, isLt := (_ : 0 < 3) },
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨ i = { val := 0, isLt := (_ : 0 < 3) }
⊢ Finset.univ =
    {{ val := 1, isLt := (_ : (fun a => a < 3) 1) }, { val := 1, isLt := (_ : (fun a => a < 3) 1) },
      { val := 0, isLt := (_ : 0 < 3) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨ i = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ Finset.univ =
    {{ val := 1, isLt := (_ : (fun a => a < 3) 1) }, { val := 1, isLt := (_ : (fun a => a < 3) 1) },
      { val := 1, isLt := (_ : (fun a => a < 3) 1) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
        i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ Finset.univ =
    {{ val := 1, isLt := (_ : (fun a => a < 3) 1) }, { val := 1, isLt := (_ : (fun a => a < 3) 1) },
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨ i = { val := 0, isLt := (_ : 0 < 3) }
⊢ Finset.univ =
    {{ val := 1, isLt := (_ : (fun a => a < 3) 1) }, { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) },
      { val := 0, isLt := (_ : 0 < 3) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
        i = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ Finset.univ =
    {{ val := 1, isLt := (_ : (fun a => a < 3) 1) }, { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) },
      { val := 1, isLt := (_ : (fun a => a < 3) 1) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.head.tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
      i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
        i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ Finset.univ =
    {{ val := 1, isLt := (_ : (fun a => a < 3) 1) }, { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) },
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = { val := 0, isLt := (_ : 0 < 3) }
⊢ Finset.univ =
    {{ val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }, { val := 0, isLt := (_ : 0 < 3) },
      { val := 0, isLt := (_ : 0 < 3) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ Finset.univ =
    {{ val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }, { val := 0, isLt := (_ : 0 < 3) },
      { val := 1, isLt := (_ : (fun a => a < 3) 1) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₁₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 0, isLt := (_ : 0 < 3) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      i = { val := 0, isLt := (_ : 0 < 3) } ∨ i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ Finset.univ =
    {{ val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }, { val := 0, isLt := (_ : 0 < 3) },
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨ i = { val := 0, isLt := (_ : 0 < 3) }
⊢ Finset.univ =
    {{ val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }, { val := 1, isLt := (_ : (fun a => a < 3) 1) },
      { val := 0, isLt := (_ : 0 < 3) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨ i = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ Finset.univ =
    {{ val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }, { val := 1, isLt := (_ : (fun a => a < 3) 1) },
      { val := 1, isLt := (_ : (fun a => a < 3) 1) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h₁₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₂₃ : { val := 1, isLt := (_ : (fun a => a < 3) 1) } ≠ { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      i = { val := 1, isLt := (_ : (fun a => a < 3) 1) } ∨
        i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ Finset.univ =
    {{ val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }, { val := 1, isLt := (_ : (fun a => a < 3) 1) },
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.tail.head.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 0, isLt := (_ : 0 < 3) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨ i = { val := 0, isLt := (_ : 0 < 3) }
⊢ Finset.univ =
    {{ val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) },
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }, { val := 0, isLt := (_ : 0 < 3) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.tail.head.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h₁₃ h₂₃ : { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠ { val := 1, isLt := (_ : (fun a => a < 3) 1) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
        i = { val := 1, isLt := (_ : (fun a => a < 3) 1) }
⊢ Finset.univ =
    {{ val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) },
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }, { val := 1, isLt := (_ : (fun a => a < 3) 1) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
case tail.tail.head.tail.tail.head.tail.tail.head
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
p₁ p₂ p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₂ h₁₃ h₂₃ :
  { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ≠
    { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
h3 :
  ∀ (i : Fin 3),
    i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
      i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) } ∨
        i = { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }
⊢ Finset.univ =
    {{ val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) },
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) },
      { val := 2, isLt := (_ : (fun a => (fun a => a < 3) a) 2) }}
[PROOFSTEP]
simp at h₁₂ h₁₃ h₂₃ ⊢
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
⊢ Sbtw R (Affine.Simplex.points t i₁) p p₁
[PROOFSTEP]
have hp : p ∈ affineSpan R (Set.range t.points) :=
  by
  have hle : line[R, t.points i₁, p₁] ≤ affineSpan R (Set.range t.points) :=
    by
    refine' affineSpan_pair_le_of_mem_of_mem (mem_affineSpan R (Set.mem_range_self _)) _
    have hle : line[R, t.points i₂, t.points i₃] ≤ affineSpan R (Set.range t.points) :=
      by
      refine' affineSpan_mono R _
      simp [Set.insert_subset_iff]
    rw [AffineSubspace.le_def'] at hle
    exact hle _ h₁.wbtw.mem_affineSpan
  rw [AffineSubspace.le_def'] at hle
  exact hle _ h₁'
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
⊢ p ∈ affineSpan R (Set.range t.points)
[PROOFSTEP]
have hle : line[R, t.points i₁, p₁] ≤ affineSpan R (Set.range t.points) :=
  by
  refine' affineSpan_pair_le_of_mem_of_mem (mem_affineSpan R (Set.mem_range_self _)) _
  have hle : line[R, t.points i₂, t.points i₃] ≤ affineSpan R (Set.range t.points) :=
    by
    refine' affineSpan_mono R _
    simp [Set.insert_subset_iff]
  rw [AffineSubspace.le_def'] at hle
  exact hle _ h₁.wbtw.mem_affineSpan
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
⊢ affineSpan R {Affine.Simplex.points t i₁, p₁} ≤ affineSpan R (Set.range t.points)
[PROOFSTEP]
refine' affineSpan_pair_le_of_mem_of_mem (mem_affineSpan R (Set.mem_range_self _)) _
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
⊢ p₁ ∈ affineSpan R (Set.range t.points)
[PROOFSTEP]
have hle : line[R, t.points i₂, t.points i₃] ≤ affineSpan R (Set.range t.points) :=
  by
  refine' affineSpan_mono R _
  simp [Set.insert_subset_iff]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
⊢ affineSpan R {Affine.Simplex.points t i₂, Affine.Simplex.points t i₃} ≤ affineSpan R (Set.range t.points)
[PROOFSTEP]
refine' affineSpan_mono R _
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
⊢ {Affine.Simplex.points t i₂, Affine.Simplex.points t i₃} ⊆ Set.range t.points
[PROOFSTEP]
simp [Set.insert_subset_iff]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
hle : affineSpan R {Affine.Simplex.points t i₂, Affine.Simplex.points t i₃} ≤ affineSpan R (Set.range t.points)
⊢ p₁ ∈ affineSpan R (Set.range t.points)
[PROOFSTEP]
rw [AffineSubspace.le_def'] at hle
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
hle :
  ∀ (p : P),
    p ∈ affineSpan R {Affine.Simplex.points t i₂, Affine.Simplex.points t i₃} → p ∈ affineSpan R (Set.range t.points)
⊢ p₁ ∈ affineSpan R (Set.range t.points)
[PROOFSTEP]
exact hle _ h₁.wbtw.mem_affineSpan
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
hle : affineSpan R {Affine.Simplex.points t i₁, p₁} ≤ affineSpan R (Set.range t.points)
⊢ p ∈ affineSpan R (Set.range t.points)
[PROOFSTEP]
rw [AffineSubspace.le_def'] at hle
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
hle : ∀ (p : P), p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁} → p ∈ affineSpan R (Set.range t.points)
⊢ p ∈ affineSpan R (Set.range t.points)
[PROOFSTEP]
exact hle _ h₁'
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
hp : p ∈ affineSpan R (Set.range t.points)
⊢ Sbtw R (Affine.Simplex.points t i₁) p p₁
[PROOFSTEP]
have h₁i := h₁.mem_image_Ioo
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
hp : p ∈ affineSpan R (Set.range t.points)
h₁i : p₁ ∈ ↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) '' Set.Ioo 0 1
⊢ Sbtw R (Affine.Simplex.points t i₁) p p₁
[PROOFSTEP]
have h₂i := h₂.mem_image_Ioo
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
hp : p ∈ affineSpan R (Set.range t.points)
h₁i : p₁ ∈ ↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) '' Set.Ioo 0 1
h₂i : p₂ ∈ ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) '' Set.Ioo 0 1
⊢ Sbtw R (Affine.Simplex.points t i₁) p p₁
[PROOFSTEP]
rw [Set.mem_image] at h₁i h₂i
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₁ p₂ p : P
h₁ : Sbtw R (Affine.Simplex.points t i₂) p₁ (Affine.Simplex.points t i₃)
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₁' : p ∈ affineSpan R {Affine.Simplex.points t i₁, p₁}
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
hp : p ∈ affineSpan R (Set.range t.points)
h₁i : ∃ x, x ∈ Set.Ioo 0 1 ∧ ↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) x = p₁
h₂i : ∃ x, x ∈ Set.Ioo 0 1 ∧ ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) x = p₂
⊢ Sbtw R (Affine.Simplex.points t i₁) p p₁
[PROOFSTEP]
rcases h₁i with ⟨r₁, ⟨hr₁0, hr₁1⟩, rfl⟩
[GOAL]
case intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p₂ p : P
h₂ : Sbtw R (Affine.Simplex.points t i₁) p₂ (Affine.Simplex.points t i₃)
h₂' : p ∈ affineSpan R {Affine.Simplex.points t i₂, p₂}
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
hp : p ∈ affineSpan R (Set.range t.points)
h₂i : ∃ x, x ∈ Set.Ioo 0 1 ∧ ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) x = p₂
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
h₁' :
  p ∈ affineSpan R {Affine.Simplex.points t i₁, ↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁}
⊢ Sbtw R (Affine.Simplex.points t i₁) p (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
[PROOFSTEP]
rcases h₂i with ⟨r₂, ⟨hr₂0, hr₂1⟩, rfl⟩
[GOAL]
case intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
p : P
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
hp : p ∈ affineSpan R (Set.range t.points)
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
h₁' :
  p ∈ affineSpan R {Affine.Simplex.points t i₁, ↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁}
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
h₂' :
  p ∈ affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
⊢ Sbtw R (Affine.Simplex.points t i₁) p (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
[PROOFSTEP]
rcases eq_affineCombination_of_mem_affineSpan_of_fintype hp with ⟨w, hw, rfl⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₁, ↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
⊢ Sbtw R (Affine.Simplex.points t i₁) (↑(Finset.affineCombination R Finset.univ t.points) w)
    (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
[PROOFSTEP]
have h₁s :=
  sign_eq_of_affineCombination_mem_affineSpan_single_lineMap t.Independent hw (Finset.mem_univ _) (Finset.mem_univ _)
    (Finset.mem_univ _) h₁₂ h₁₃ h₂₃ hr₁0 hr₁1 h₁'
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₁, ↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
⊢ Sbtw R (Affine.Simplex.points t i₁) (↑(Finset.affineCombination R Finset.univ t.points) w)
    (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
[PROOFSTEP]
have h₂s :=
  sign_eq_of_affineCombination_mem_affineSpan_single_lineMap t.Independent hw (Finset.mem_univ _) (Finset.mem_univ _)
    (Finset.mem_univ _) h₁₂.symm h₂₃ h₁₃ hr₂0 hr₂1 h₂'
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₁, ↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
⊢ Sbtw R (Affine.Simplex.points t i₁) (↑(Finset.affineCombination R Finset.univ t.points) w)
    (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
[PROOFSTEP]
rw [← Finset.univ.affineCombination_affineCombinationSingleWeights R t.points (Finset.mem_univ i₁), ←
  Finset.univ.affineCombination_affineCombinationLineMapWeights t.points (Finset.mem_univ _) (Finset.mem_univ _)] at h₁'
  ⊢
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
⊢ Sbtw R (↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁))
    (↑(Finset.affineCombination R Finset.univ t.points) w)
    (↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁))
[PROOFSTEP]
refine'
  Sbtw.affineCombination_of_mem_affineSpan_pair t.Independent hw
    (Finset.univ.sum_affineCombinationSingleWeights R (Finset.mem_univ _))
    (Finset.univ.sum_affineCombinationLineMapWeights (Finset.mem_univ _) (Finset.mem_univ _) _) h₁' (Finset.mem_univ i₁)
    _
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
⊢ Sbtw R (Finset.affineCombinationSingleWeights R i₁ i₁) (w i₁) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁ i₁)
[PROOFSTEP]
rw [Finset.affineCombinationSingleWeights_apply_self, Finset.affineCombinationLineMapWeights_apply_of_ne h₁₂ h₁₃,
  sbtw_one_zero_iff]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
⊢ w i₁ ∈ Set.Ioo 0 1
[PROOFSTEP]
have hs : ∀ i : Fin 3, SignType.sign (w i) = SignType.sign (w i₃) :=
  by
  intro i
  rcases h3 i with (rfl | rfl | rfl)
  · exact h₂s
  · exact h₁s
  · rfl
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
⊢ ∀ (i : Fin 3), ↑SignType.sign (w i) = ↑SignType.sign (w i₃)
[PROOFSTEP]
intro i
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
i : Fin 3
⊢ ↑SignType.sign (w i) = ↑SignType.sign (w i₃)
[PROOFSTEP]
rcases h3 i with (rfl | rfl | rfl)
[GOAL]
case inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₂ i₃ : Fin 3
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₂₃ : i₂ ≠ i₃
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
i : Fin 3
h₁₂ : i ≠ i₂
h₁₃ : i ≠ i₃
h3 : ∀ (i_1 : Fin 3), i_1 = i ∨ i_1 = i₂ ∨ i_1 = i₃
hu : Finset.univ = {i, i₂, i₃}
h₂ :
  Sbtw R (Affine.Simplex.points t i) (↑(lineMap (Affine.Simplex.points t i) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i) (Affine.Simplex.points t i₃)) r₂}
h₂s : ↑SignType.sign (w i) = ↑SignType.sign (w i₃)
⊢ ↑SignType.sign (w i) = ↑SignType.sign (w i₃)
[PROOFSTEP]
exact h₂s
[GOAL]
case inr.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₃ : Fin 3
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
i : Fin 3
h₁₂ : i₁ ≠ i
h₂₃ : i ≠ i₃
h3 : ∀ (i_1 : Fin 3), i_1 = i₁ ∨ i_1 = i ∨ i_1 = i₃
hu : Finset.univ = {i₁, i, i₃}
h₁ :
  Sbtw R (Affine.Simplex.points t i) (↑(lineMap (Affine.Simplex.points t i) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i) = ↑SignType.sign (w i₃)
⊢ ↑SignType.sign (w i) = ↑SignType.sign (w i₃)
[PROOFSTEP]
exact h₁s
[GOAL]
case inr.inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
i : Fin 3
h₁₃ : i₁ ≠ i
h₂₃ : i₂ ≠ i
h3 : ∀ (i_1 : Fin 3), i_1 = i₁ ∨ i_1 = i₂ ∨ i_1 = i
hu : Finset.univ = {i₁, i₂, i}
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i)) r₁)
    (Affine.Simplex.points t i)
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i)) r₂)
    (Affine.Simplex.points t i)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i)
⊢ ↑SignType.sign (w i) = ↑SignType.sign (w i)
[PROOFSTEP]
rfl
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
hs : ∀ (i : Fin 3), ↑SignType.sign (w i) = ↑SignType.sign (w i₃)
⊢ w i₁ ∈ Set.Ioo 0 1
[PROOFSTEP]
have hss : SignType.sign (∑ i, w i) = 1 := by simp [hw]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
hs : ∀ (i : Fin 3), ↑SignType.sign (w i) = ↑SignType.sign (w i₃)
⊢ ↑SignType.sign (∑ i : Fin (2 + 1), w i) = 1
[PROOFSTEP]
simp [hw]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
hs : ∀ (i : Fin 3), ↑SignType.sign (w i) = ↑SignType.sign (w i₃)
hss : ↑SignType.sign (∑ i : Fin (2 + 1), w i) = 1
⊢ w i₁ ∈ Set.Ioo 0 1
[PROOFSTEP]
have hs' := sign_sum Finset.univ_nonempty (SignType.sign (w i₃)) fun i _ => hs i
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
hs : ∀ (i : Fin 3), ↑SignType.sign (w i) = ↑SignType.sign (w i₃)
hss : ↑SignType.sign (∑ i : Fin (2 + 1), w i) = 1
hs' : ↑SignType.sign (∑ i : Fin 3, w i) = ↑SignType.sign (w i₃)
⊢ w i₁ ∈ Set.Ioo 0 1
[PROOFSTEP]
rw [hs'] at hss
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
hs : ∀ (i : Fin 3), ↑SignType.sign (w i) = ↑SignType.sign (w i₃)
hss : ↑SignType.sign (w i₃) = 1
hs' : ↑SignType.sign (∑ i : Fin 3, w i) = ↑SignType.sign (w i₃)
⊢ w i₁ ∈ Set.Ioo 0 1
[PROOFSTEP]
simp_rw [hss, sign_eq_one_iff] at hs
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
hss : ↑SignType.sign (w i₃) = 1
hs' : ↑SignType.sign (∑ i : Fin 3, w i) = ↑SignType.sign (w i₃)
hs : ∀ (i : Fin 3), 0 < w i
⊢ w i₁ ∈ Set.Ioo 0 1
[PROOFSTEP]
refine' ⟨hs i₁, _⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i : Fin (2 + 1), w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
hss : ↑SignType.sign (w i₃) = 1
hs' : ↑SignType.sign (∑ i : Fin 3, w i) = ↑SignType.sign (w i₃)
hs : ∀ (i : Fin 3), 0 < w i
⊢ w i₁ < 1
[PROOFSTEP]
rw [hu] at hw
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i in {i₁, i₂, i₃}, w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
hss : ↑SignType.sign (w i₃) = 1
hs' : ↑SignType.sign (∑ i : Fin 3, w i) = ↑SignType.sign (w i₃)
hs : ∀ (i : Fin 3), 0 < w i
⊢ w i₁ < 1
[PROOFSTEP]
rw [Finset.sum_insert, Finset.sum_insert, Finset.sum_singleton] at hw
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : w i₁ + (w i₂ + w i₃) = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
hss : ↑SignType.sign (w i₃) = 1
hs' : ↑SignType.sign (∑ i : Fin 3, w i) = ↑SignType.sign (w i₃)
hs : ∀ (i : Fin 3), 0 < w i
⊢ w i₁ < 1
[PROOFSTEP]
by_contra hle
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : w i₁ + (w i₂ + w i₃) = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
hss : ↑SignType.sign (w i₃) = 1
hs' : ↑SignType.sign (∑ i : Fin 3, w i) = ↑SignType.sign (w i₃)
hs : ∀ (i : Fin 3), 0 < w i
hle : ¬w i₁ < 1
⊢ False
[PROOFSTEP]
rw [not_lt] at hle
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : w i₁ + (w i₂ + w i₃) = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
hss : ↑SignType.sign (w i₃) = 1
hs' : ↑SignType.sign (∑ i : Fin 3, w i) = ↑SignType.sign (w i₃)
hs : ∀ (i : Fin 3), 0 < w i
hle : 1 ≤ w i₁
⊢ False
[PROOFSTEP]
exact (hle.trans_lt (lt_add_of_pos_right _ (Left.add_pos (hs i₂) (hs i₃)))).ne' hw
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : w i₁ + ∑ x in {i₂, i₃}, w x = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
hss : ↑SignType.sign (w i₃) = 1
hs' : ↑SignType.sign (∑ i : Fin 3, w i) = ↑SignType.sign (w i₃)
hs : ∀ (i : Fin 3), 0 < w i
⊢ ¬i₂ ∈ {i₃}
[PROOFSTEP]
simpa using h₂₃
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁴ : LinearOrderedRing R
inst✝³ : AddCommGroup V
inst✝² : Module R V
inst✝¹ : AddTorsor V P
inst✝ : NoZeroSMulDivisors R V
t : Affine.Triangle R P
i₁ i₂ i₃ : Fin 3
h₁₂ : i₁ ≠ i₂
this : DecidableRel fun x x_1 => x < x_1 := LinearOrderedRing.decidableLT
h₁₃ : i₁ ≠ i₃
h₂₃ : i₂ ≠ i₃
h3 : ∀ (i : Fin 3), i = i₁ ∨ i = i₂ ∨ i = i₃
hu : Finset.univ = {i₁, i₂, i₃}
r₁ : R
hr₁0 : 0 < r₁
hr₁1 : r₁ < 1
h₁ :
  Sbtw R (Affine.Simplex.points t i₂) (↑(lineMap (Affine.Simplex.points t i₂) (Affine.Simplex.points t i₃)) r₁)
    (Affine.Simplex.points t i₃)
r₂ : R
hr₂0 : 0 < r₂
hr₂1 : r₂ < 1
h₂ :
  Sbtw R (Affine.Simplex.points t i₁) (↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂)
    (Affine.Simplex.points t i₃)
w : Fin (2 + 1) → R
hw : ∑ i in {i₁, i₂, i₃}, w i = 1
hp : ↑(Finset.affineCombination R Finset.univ t.points) w ∈ affineSpan R (Set.range t.points)
h₁' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R
      {↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationSingleWeights R i₁),
        ↑(Finset.affineCombination R Finset.univ t.points) (Finset.affineCombinationLineMapWeights i₂ i₃ r₁)}
h₂' :
  ↑(Finset.affineCombination R Finset.univ t.points) w ∈
    affineSpan R {Affine.Simplex.points t i₂, ↑(lineMap (Affine.Simplex.points t i₁) (Affine.Simplex.points t i₃)) r₂}
h₁s : ↑SignType.sign (w i₂) = ↑SignType.sign (w i₃)
h₂s : ↑SignType.sign (w i₁) = ↑SignType.sign (w i₃)
hss : ↑SignType.sign (w i₃) = 1
hs' : ↑SignType.sign (∑ i : Fin 3, w i) = ↑SignType.sign (w i₃)
hs : ∀ (i : Fin 3), 0 < w i
⊢ ¬i₁ ∈ {i₂, i₃}
[PROOFSTEP]
simpa [not_or] using ⟨h₁₂, h₁₃⟩
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
refine' ⟨fun h => _, fun h => _⟩
[GOAL]
case refine'_1
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
rcases h with ⟨r, ⟨hr0, hr1⟩, rfl⟩
[GOAL]
case refine'_1.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
rcases hr0.lt_or_eq with (hr0' | rfl)
[GOAL]
case refine'_1.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
rw [Set.mem_image]
[GOAL]
case refine'_1.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
refine' Or.inr ⟨r⁻¹, one_le_inv hr0' hr1, _⟩
[GOAL]
case refine'_1.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
simp only [lineMap_apply, smul_smul, vadd_vsub]
[GOAL]
case refine'_1.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
rw [inv_mul_cancel hr0'.ne', one_smul, vsub_vadd]
[GOAL]
case refine'_1.intro.intro.intro.inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
simp
[GOAL]
case refine'_2
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
rcases h with (rfl | ⟨r, ⟨hr, rfl⟩⟩)
[GOAL]
case refine'_2.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
⊢ Wbtw R x x z
[PROOFSTEP]
exact wbtw_self_left _ _ _
[GOAL]
case refine'_2.inr.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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)
[PROOFSTEP]
rw [Set.mem_Ici] at hr
[GOAL]
case refine'_2.inr.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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)
[PROOFSTEP]
refine' ⟨r⁻¹, ⟨inv_nonneg.2 (zero_le_one.trans hr), inv_le_one hr⟩, _⟩
[GOAL]
case refine'_2.inr.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
simp only [lineMap_apply, smul_smul, vadd_vsub]
[GOAL]
case refine'_2.inr.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
rw [inv_mul_cancel (one_pos.trans_le hr).ne', one_smul, vsub_vadd]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : Wbtw R x y z
hne : x ≠ y
⊢ z ∈ affineSpan R {x, y}
[PROOFSTEP]
rcases h.right_mem_image_Ici_of_left_ne hne with ⟨r, ⟨-, rfl⟩⟩
[GOAL]
case intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
hne : x ≠ y
r : R
h : Wbtw R x y (↑(lineMap x y) r)
⊢ ↑(lineMap x y) r ∈ affineSpan R {x, y}
[PROOFSTEP]
exact lineMap_mem_affineSpan_pair _ _ _
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
refine' ⟨fun h => ⟨h.left_ne, _⟩, fun h => _⟩
[GOAL]
case refine'_1
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
obtain ⟨r, ⟨hr, rfl⟩⟩ := h.wbtw.right_mem_image_Ici_of_left_ne h.left_ne
[GOAL]
case refine'_1.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
rw [Set.mem_Ici] at hr
[GOAL]
case refine'_1.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
rcases hr.lt_or_eq with (hrlt | rfl)
[GOAL]
case refine'_1.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
exact Set.mem_image_of_mem _ hrlt
[GOAL]
case refine'_1.intro.intro.inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
exfalso
[GOAL]
case refine'_1.intro.intro.inr.h
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
simp at h
[GOAL]
case refine'_2
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
rcases h with ⟨hne, r, hr, rfl⟩
[GOAL]
case refine'_2.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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)
[PROOFSTEP]
rw [Set.mem_Ioi] at hr
[GOAL]
case refine'_2.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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)
[PROOFSTEP]
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, _⟩
[GOAL]
case refine'_2.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
rw [lineMap_apply, ← @vsub_ne_zero V, vsub_vadd_eq_vsub_sub]
[GOAL]
case refine'_2.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
nth_rw 1 [← one_smul R (y -ᵥ x)]
[GOAL]
case refine'_2.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
rw [← sub_smul, smul_ne_zero_iff, vsub_ne_zero, sub_ne_zero]
[GOAL]
case refine'_2.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
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
[PROOFSTEP]
exact ⟨hr.ne, hne.symm⟩
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
⊢ Wbtw R x y z ↔ z = y ∨ x ∈ ↑(lineMap z y) '' Set.Ici 1
[PROOFSTEP]
rw [wbtw_comm, wbtw_iff_left_eq_or_right_mem_image_Ici]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
⊢ Sbtw R x y z ↔ z ≠ y ∧ x ∈ ↑(lineMap z y) '' Set.Ioi 1
[PROOFSTEP]
rw [sbtw_comm, sbtw_iff_left_ne_and_right_mem_image_Ioi]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : 0 ≤ r₁
hr₂ : r₁ ≤ r₂
⊢ Wbtw R x (r₁ • v +ᵥ x) (r₂ • v +ᵥ x)
[PROOFSTEP]
refine' ⟨r₁ / r₂, ⟨div_nonneg hr₁ (hr₁.trans hr₂), div_le_one_of_le hr₂ (hr₁.trans hr₂)⟩, _⟩
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : 0 ≤ r₁
hr₂ : r₁ ≤ r₂
⊢ ↑(lineMap x (r₂ • v +ᵥ x)) (r₁ / r₂) = r₁ • v +ᵥ x
[PROOFSTEP]
by_cases h : r₁ = 0
[GOAL]
case pos
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : 0 ≤ r₁
hr₂ : r₁ ≤ r₂
h : r₁ = 0
⊢ ↑(lineMap x (r₂ • v +ᵥ x)) (r₁ / r₂) = r₁ • v +ᵥ x
[PROOFSTEP]
simp [h]
[GOAL]
case neg
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : 0 ≤ r₁
hr₂ : r₁ ≤ r₂
h : ¬r₁ = 0
⊢ ↑(lineMap x (r₂ • v +ᵥ x)) (r₁ / r₂) = r₁ • v +ᵥ x
[PROOFSTEP]
simp [lineMap_apply, smul_smul, ((hr₁.lt_of_ne' h).trans_le hr₂).ne.symm]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : 0 ≤ r₁
hr₂ : 0 ≤ r₂
⊢ Wbtw R x (r₁ • v +ᵥ x) (r₂ • v +ᵥ x) ∨ Wbtw R x (r₂ • v +ᵥ x) (r₁ • v +ᵥ x)
[PROOFSTEP]
rcases le_total r₁ r₂ with (h | h)
[GOAL]
case inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : 0 ≤ r₁
hr₂ : 0 ≤ r₂
h : r₁ ≤ r₂
⊢ Wbtw R x (r₁ • v +ᵥ x) (r₂ • v +ᵥ x) ∨ Wbtw R x (r₂ • v +ᵥ x) (r₁ • v +ᵥ x)
[PROOFSTEP]
exact Or.inl (wbtw_smul_vadd_smul_vadd_of_nonneg_of_le x v hr₁ h)
[GOAL]
case inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : 0 ≤ r₁
hr₂ : 0 ≤ r₂
h : r₂ ≤ r₁
⊢ Wbtw R x (r₁ • v +ᵥ x) (r₂ • v +ᵥ x) ∨ Wbtw R x (r₂ • v +ᵥ x) (r₁ • v +ᵥ x)
[PROOFSTEP]
exact Or.inr (wbtw_smul_vadd_smul_vadd_of_nonneg_of_le x v hr₂ h)
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : r₁ ≤ 0
hr₂ : r₂ ≤ r₁
⊢ Wbtw R x (r₁ • v +ᵥ x) (r₂ • v +ᵥ x)
[PROOFSTEP]
convert wbtw_smul_vadd_smul_vadd_of_nonneg_of_le x (-v) (Left.nonneg_neg_iff.2 hr₁) (neg_le_neg_iff.2 hr₂) using 1
[GOAL]
case h.e'_9
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : r₁ ≤ 0
hr₂ : r₂ ≤ r₁
⊢ r₁ • v +ᵥ x = -r₁ • -v +ᵥ x
[PROOFSTEP]
rw [neg_smul_neg]
[GOAL]
case h.e'_10
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : r₁ ≤ 0
hr₂ : r₂ ≤ r₁
⊢ r₂ • v +ᵥ x = -r₂ • -v +ᵥ x
[PROOFSTEP]
rw [neg_smul_neg]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : r₁ ≤ 0
hr₂ : r₂ ≤ 0
⊢ Wbtw R x (r₁ • v +ᵥ x) (r₂ • v +ᵥ x) ∨ Wbtw R x (r₂ • v +ᵥ x) (r₁ • v +ᵥ x)
[PROOFSTEP]
rcases le_total r₁ r₂ with (h | h)
[GOAL]
case inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : r₁ ≤ 0
hr₂ : r₂ ≤ 0
h : r₁ ≤ r₂
⊢ Wbtw R x (r₁ • v +ᵥ x) (r₂ • v +ᵥ x) ∨ Wbtw R x (r₂ • v +ᵥ x) (r₁ • v +ᵥ x)
[PROOFSTEP]
exact Or.inr (wbtw_smul_vadd_smul_vadd_of_nonpos_of_le x v hr₂ h)
[GOAL]
case inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : r₁ ≤ 0
hr₂ : r₂ ≤ 0
h : r₂ ≤ r₁
⊢ Wbtw R x (r₁ • v +ᵥ x) (r₂ • v +ᵥ x) ∨ Wbtw R x (r₂ • v +ᵥ x) (r₁ • v +ᵥ x)
[PROOFSTEP]
exact Or.inl (wbtw_smul_vadd_smul_vadd_of_nonpos_of_le x v hr₁ h)
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : r₁ ≤ 0
hr₂ : 0 ≤ r₂
⊢ Wbtw R (r₁ • v +ᵥ x) x (r₂ • v +ᵥ x)
[PROOFSTEP]
convert
  wbtw_smul_vadd_smul_vadd_of_nonneg_of_le (r₁ • v +ᵥ x) v (Left.nonneg_neg_iff.2 hr₁)
    (neg_le_sub_iff_le_add.2 ((le_add_iff_nonneg_left r₁).2 hr₂)) using
  1
[GOAL]
case h.e'_9
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : r₁ ≤ 0
hr₂ : 0 ≤ r₂
⊢ x = -r₁ • v +ᵥ (r₁ • v +ᵥ x)
[PROOFSTEP]
simp [sub_smul, ← add_vadd]
[GOAL]
case h.e'_10
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : r₁ ≤ 0
hr₂ : 0 ≤ r₂
⊢ r₂ • v +ᵥ x = (r₂ - r₁) • v +ᵥ (r₁ • v +ᵥ x)
[PROOFSTEP]
simp [sub_smul, ← add_vadd]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : 0 ≤ r₁
hr₂ : r₂ ≤ 0
⊢ Wbtw R (r₁ • v +ᵥ x) x (r₂ • v +ᵥ x)
[PROOFSTEP]
rw [wbtw_comm]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
r₁ r₂ : R
hr₁ : 0 ≤ r₁
hr₂ : r₂ ≤ 0
⊢ Wbtw R (r₂ • v +ᵥ x) x (r₁ • v +ᵥ x)
[PROOFSTEP]
exact wbtw_smul_vadd_smul_vadd_of_nonpos_of_nonneg x v hr₂ hr₁
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w x y z : P
h₁ : Wbtw R w y z
h₂ : Wbtw R w x y
⊢ Wbtw R x y z
[PROOFSTEP]
rcases h₁ with ⟨t₁, ht₁, rfl⟩
[GOAL]
case intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w x z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
h₂ : Wbtw R w x (↑(lineMap w z) t₁)
⊢ Wbtw R x (↑(lineMap w z) t₁) z
[PROOFSTEP]
rcases h₂ with ⟨t₂, ht₂, rfl⟩
[GOAL]
case intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
⊢ Wbtw R (↑(lineMap w (↑(lineMap w z) t₁)) t₂) (↑(lineMap w z) t₁) z
[PROOFSTEP]
refine'
  ⟨(t₁ - t₂ * t₁) / (1 - t₂ * t₁),
    ⟨div_nonneg (sub_nonneg.2 (mul_le_of_le_one_left ht₁.1 ht₂.2)) (sub_nonneg.2 (mul_le_one ht₂.2 ht₁.1 ht₁.2)),
      div_le_one_of_le (sub_le_sub_right ht₁.2 _) (sub_nonneg.2 (mul_le_one ht₂.2 ht₁.1 ht₁.2))⟩,
    _⟩
[GOAL]
case intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
⊢ ↑(lineMap (↑(lineMap w (↑(lineMap w z) t₁)) t₂) z) ((t₁ - t₂ * t₁) / (1 - t₂ * t₁)) = ↑(lineMap w z) t₁
[PROOFSTEP]
simp only [lineMap_apply, smul_smul, ← add_vadd, vsub_vadd_eq_vsub_sub, smul_sub, ← sub_smul, ← add_smul, vadd_vsub,
  vadd_right_cancel_iff, div_mul_eq_mul_div, div_sub_div_same]
[GOAL]
case intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
⊢ ((t₁ - t₂ * t₁ - (t₁ - t₂ * t₁) * (t₂ * t₁)) / (1 - t₂ * t₁) + t₂ * t₁) • (z -ᵥ w) = t₁ • (z -ᵥ w)
[PROOFSTEP]
nth_rw 1 [← mul_one (t₁ - t₂ * t₁)]
[GOAL]
case intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
⊢ (((t₁ - t₂ * t₁) * 1 - (t₁ - t₂ * t₁) * (t₂ * t₁)) / (1 - t₂ * t₁) + t₂ * t₁) • (z -ᵥ w) = t₁ • (z -ᵥ w)
[PROOFSTEP]
rw [← mul_sub, mul_div_assoc]
[GOAL]
case intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
⊢ ((t₁ - t₂ * t₁) * ((1 - t₂ * t₁) / (1 - t₂ * t₁)) + t₂ * t₁) • (z -ᵥ w) = t₁ • (z -ᵥ w)
[PROOFSTEP]
by_cases h : 1 - t₂ * t₁ = 0
[GOAL]
case pos
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
h : 1 - t₂ * t₁ = 0
⊢ ((t₁ - t₂ * t₁) * ((1 - t₂ * t₁) / (1 - t₂ * t₁)) + t₂ * t₁) • (z -ᵥ w) = t₁ • (z -ᵥ w)
[PROOFSTEP]
rw [sub_eq_zero, eq_comm] at h
[GOAL]
case pos
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
h : t₂ * t₁ = 1
⊢ ((t₁ - t₂ * t₁) * ((1 - t₂ * t₁) / (1 - t₂ * t₁)) + t₂ * t₁) • (z -ᵥ w) = t₁ • (z -ᵥ w)
[PROOFSTEP]
rw [h]
[GOAL]
case pos
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
h : t₂ * t₁ = 1
⊢ ((t₁ - 1) * ((1 - 1) / (1 - 1)) + 1) • (z -ᵥ w) = t₁ • (z -ᵥ w)
[PROOFSTEP]
suffices t₁ = 1 by simp [this]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
h : t₂ * t₁ = 1
this : t₁ = 1
⊢ ((t₁ - 1) * ((1 - 1) / (1 - 1)) + 1) • (z -ᵥ w) = t₁ • (z -ᵥ w)
[PROOFSTEP]
simp [this]
[GOAL]
case pos
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
h : t₂ * t₁ = 1
⊢ t₁ = 1
[PROOFSTEP]
exact eq_of_le_of_not_lt ht₁.2 fun ht₁lt => (mul_lt_one_of_nonneg_of_lt_one_right ht₂.2 ht₁.1 ht₁lt).ne h
[GOAL]
case neg
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
h : ¬1 - t₂ * t₁ = 0
⊢ ((t₁ - t₂ * t₁) * ((1 - t₂ * t₁) / (1 - t₂ * t₁)) + t₂ * t₁) • (z -ᵥ w) = t₁ • (z -ᵥ w)
[PROOFSTEP]
rw [div_self h]
[GOAL]
case neg
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
h : ¬1 - t₂ * t₁ = 0
⊢ ((t₁ - t₂ * t₁) * 1 + t₂ * t₁) • (z -ᵥ w) = t₁ • (z -ᵥ w)
[PROOFSTEP]
ring_nf
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w x y z : P
h₁ : Wbtw R w x z
h₂ : Wbtw R x y z
⊢ Wbtw R w x y
[PROOFSTEP]
rw [wbtw_comm] at *
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
w x y z : P
h₁ : Wbtw R z x w
h₂ : Wbtw R z y x
⊢ Wbtw R y x w
[PROOFSTEP]
exact h₁.trans_left_right h₂
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : Wbtw R x y z
⊢ Collinear R {x, y, z}
[PROOFSTEP]
rw [collinear_iff_exists_forall_eq_smul_vadd]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : Wbtw R x y z
⊢ ∃ p₀ v, ∀ (p : P), p ∈ {x, y, z} → ∃ r, p = r • v +ᵥ p₀
[PROOFSTEP]
refine' ⟨x, z -ᵥ x, _⟩
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : Wbtw R x y z
⊢ ∀ (p : P), p ∈ {x, y, z} → ∃ r, p = r • (z -ᵥ x) +ᵥ x
[PROOFSTEP]
intro p hp
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : Wbtw R x y z
p : P
hp : p ∈ {x, y, z}
⊢ ∃ r, p = r • (z -ᵥ x) +ᵥ x
[PROOFSTEP]
simp_rw [Set.mem_insert_iff, Set.mem_singleton_iff] at hp
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : Wbtw R x y z
p : P
hp : p = x ∨ p = y ∨ p = z
⊢ ∃ r, p = r • (z -ᵥ x) +ᵥ x
[PROOFSTEP]
rcases hp with (rfl | rfl | rfl)
[GOAL]
case inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
y z p : P
h : Wbtw R p y z
⊢ ∃ r, p = r • (z -ᵥ p) +ᵥ p
[PROOFSTEP]
refine' ⟨0, _⟩
[GOAL]
case inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
y z p : P
h : Wbtw R p y z
⊢ p = 0 • (z -ᵥ p) +ᵥ p
[PROOFSTEP]
simp
[GOAL]
case inr.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z p : P
h : Wbtw R x p z
⊢ ∃ r, p = r • (z -ᵥ x) +ᵥ x
[PROOFSTEP]
rcases h with ⟨t, -, rfl⟩
[GOAL]
case inr.inl.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
t : R
⊢ ∃ r, ↑(lineMap x z) t = r • (z -ᵥ x) +ᵥ x
[PROOFSTEP]
exact ⟨t, rfl⟩
[GOAL]
case inr.inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y p : P
h : Wbtw R x y p
⊢ ∃ r, p = r • (p -ᵥ x) +ᵥ x
[PROOFSTEP]
refine' ⟨1, _⟩
[GOAL]
case inr.inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y p : P
h : Wbtw R x y p
⊢ p = 1 • (p -ᵥ x) +ᵥ x
[PROOFSTEP]
simp
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : Collinear R {x, y, z}
⊢ Wbtw R x y z ∨ Wbtw R y z x ∨ Wbtw R z x y
[PROOFSTEP]
rw [collinear_iff_of_mem (Set.mem_insert _ _)] at h
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : ∃ v, ∀ (p : P), p ∈ {x, y, z} → ∃ r, p = r • v +ᵥ x
⊢ Wbtw R x y z ∨ Wbtw R y z x ∨ Wbtw R z x y
[PROOFSTEP]
rcases h with ⟨v, h⟩
[GOAL]
case intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
v : V
h : ∀ (p : P), p ∈ {x, y, z} → ∃ r, p = r • v +ᵥ x
⊢ Wbtw R x y z ∨ Wbtw R y z x ∨ Wbtw R z x y
[PROOFSTEP]
simp_rw [Set.mem_insert_iff, Set.mem_singleton_iff] at h
[GOAL]
case intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
v : V
h : ∀ (p : P), p = x ∨ p = y ∨ p = z → ∃ r, p = r • v +ᵥ x
⊢ Wbtw R x y z ∨ Wbtw R y z x ∨ Wbtw R z x y
[PROOFSTEP]
have hy := h y (Or.inr (Or.inl rfl))
[GOAL]
case intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
v : V
h : ∀ (p : P), p = x ∨ p = y ∨ p = z → ∃ r, p = r • v +ᵥ x
hy : ∃ r, y = r • v +ᵥ x
⊢ Wbtw R x y z ∨ Wbtw R y z x ∨ Wbtw R z x y
[PROOFSTEP]
have hz := h z (Or.inr (Or.inr rfl))
[GOAL]
case intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
v : V
h : ∀ (p : P), p = x ∨ p = y ∨ p = z → ∃ r, p = r • v +ᵥ x
hy : ∃ r, y = r • v +ᵥ x
hz : ∃ r, z = r • v +ᵥ x
⊢ Wbtw R x y z ∨ Wbtw R y z x ∨ Wbtw R z x y
[PROOFSTEP]
rcases hy with ⟨ty, rfl⟩
[GOAL]
case intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x z : P
v : V
hz : ∃ r, z = r • v +ᵥ x
ty : R
h : ∀ (p : P), p = x ∨ p = ty • v +ᵥ x ∨ p = z → ∃ r, p = r • v +ᵥ x
⊢ Wbtw R x (ty • v +ᵥ x) z ∨ Wbtw R (ty • v +ᵥ x) z x ∨ Wbtw R z x (ty • v +ᵥ x)
[PROOFSTEP]
rcases hz with ⟨tz, rfl⟩
[GOAL]
case intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
ty tz : R
h : ∀ (p : P), p = x ∨ p = ty • v +ᵥ x ∨ p = tz • v +ᵥ x → ∃ r, p = r • v +ᵥ x
⊢ Wbtw R x (ty • v +ᵥ x) (tz • v +ᵥ x) ∨ Wbtw R (ty • v +ᵥ x) (tz • v +ᵥ x) x ∨ Wbtw R (tz • v +ᵥ x) x (ty • v +ᵥ x)
[PROOFSTEP]
rcases lt_trichotomy ty 0 with (hy0 | rfl | hy0)
[GOAL]
case intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
ty tz : R
h : ∀ (p : P), p = x ∨ p = ty • v +ᵥ x ∨ p = tz • v +ᵥ x → ∃ r, p = r • v +ᵥ x
hy0 : ty < 0
⊢ Wbtw R x (ty • v +ᵥ x) (tz • v +ᵥ x) ∨ Wbtw R (ty • v +ᵥ x) (tz • v +ᵥ x) x ∨ Wbtw R (tz • v +ᵥ x) x (ty • v +ᵥ x)
[PROOFSTEP]
rcases lt_trichotomy tz 0 with (hz0 | rfl | hz0)
[GOAL]
case intro.intro.intro.inl.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
ty tz : R
h : ∀ (p : P), p = x ∨ p = ty • v +ᵥ x ∨ p = tz • v +ᵥ x → ∃ r, p = r • v +ᵥ x
hy0 : ty < 0
hz0 : tz < 0
⊢ Wbtw R x (ty • v +ᵥ x) (tz • v +ᵥ x) ∨ Wbtw R (ty • v +ᵥ x) (tz • v +ᵥ x) x ∨ Wbtw R (tz • v +ᵥ x) x (ty • v +ᵥ x)
[PROOFSTEP]
rw [wbtw_comm (z := x)]
[GOAL]
case intro.intro.intro.inl.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
ty tz : R
h : ∀ (p : P), p = x ∨ p = ty • v +ᵥ x ∨ p = tz • v +ᵥ x → ∃ r, p = r • v +ᵥ x
hy0 : ty < 0
hz0 : tz < 0
⊢ Wbtw R x (ty • v +ᵥ x) (tz • v +ᵥ x) ∨ Wbtw R x (tz • v +ᵥ x) (ty • v +ᵥ x) ∨ Wbtw R (tz • v +ᵥ x) x (ty • v +ᵥ x)
[PROOFSTEP]
rw [← or_assoc]
[GOAL]
case intro.intro.intro.inl.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
ty tz : R
h : ∀ (p : P), p = x ∨ p = ty • v +ᵥ x ∨ p = tz • v +ᵥ x → ∃ r, p = r • v +ᵥ x
hy0 : ty < 0
hz0 : tz < 0
⊢ (Wbtw R x (ty • v +ᵥ x) (tz • v +ᵥ x) ∨ Wbtw R x (tz • v +ᵥ x) (ty • v +ᵥ x)) ∨ Wbtw R (tz • v +ᵥ x) x (ty • v +ᵥ x)
[PROOFSTEP]
exact Or.inl (wbtw_or_wbtw_smul_vadd_of_nonpos _ _ hy0.le hz0.le)
[GOAL]
case intro.intro.intro.inl.inr.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
ty : R
hy0 : ty < 0
h : ∀ (p : P), p = x ∨ p = ty • v +ᵥ x ∨ p = 0 • v +ᵥ x → ∃ r, p = r • v +ᵥ x
⊢ Wbtw R x (ty • v +ᵥ x) (0 • v +ᵥ x) ∨ Wbtw R (ty • v +ᵥ x) (0 • v +ᵥ x) x ∨ Wbtw R (0 • v +ᵥ x) x (ty • v +ᵥ x)
[PROOFSTEP]
simp
[GOAL]
case intro.intro.intro.inl.inr.inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
ty tz : R
h : ∀ (p : P), p = x ∨ p = ty • v +ᵥ x ∨ p = tz • v +ᵥ x → ∃ r, p = r • v +ᵥ x
hy0 : ty < 0
hz0 : 0 < tz
⊢ Wbtw R x (ty • v +ᵥ x) (tz • v +ᵥ x) ∨ Wbtw R (ty • v +ᵥ x) (tz • v +ᵥ x) x ∨ Wbtw R (tz • v +ᵥ x) x (ty • v +ᵥ x)
[PROOFSTEP]
exact Or.inr (Or.inr (wbtw_smul_vadd_smul_vadd_of_nonneg_of_nonpos _ _ hz0.le hy0.le))
[GOAL]
case intro.intro.intro.inr.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
tz : R
h : ∀ (p : P), p = x ∨ p = 0 • v +ᵥ x ∨ p = tz • v +ᵥ x → ∃ r, p = r • v +ᵥ x
⊢ Wbtw R x (0 • v +ᵥ x) (tz • v +ᵥ x) ∨ Wbtw R (0 • v +ᵥ x) (tz • v +ᵥ x) x ∨ Wbtw R (tz • v +ᵥ x) x (0 • v +ᵥ x)
[PROOFSTEP]
simp
[GOAL]
case intro.intro.intro.inr.inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
ty tz : R
h : ∀ (p : P), p = x ∨ p = ty • v +ᵥ x ∨ p = tz • v +ᵥ x → ∃ r, p = r • v +ᵥ x
hy0 : 0 < ty
⊢ Wbtw R x (ty • v +ᵥ x) (tz • v +ᵥ x) ∨ Wbtw R (ty • v +ᵥ x) (tz • v +ᵥ x) x ∨ Wbtw R (tz • v +ᵥ x) x (ty • v +ᵥ x)
[PROOFSTEP]
rcases lt_trichotomy tz 0 with (hz0 | rfl | hz0)
[GOAL]
case intro.intro.intro.inr.inr.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
ty tz : R
h : ∀ (p : P), p = x ∨ p = ty • v +ᵥ x ∨ p = tz • v +ᵥ x → ∃ r, p = r • v +ᵥ x
hy0 : 0 < ty
hz0 : tz < 0
⊢ Wbtw R x (ty • v +ᵥ x) (tz • v +ᵥ x) ∨ Wbtw R (ty • v +ᵥ x) (tz • v +ᵥ x) x ∨ Wbtw R (tz • v +ᵥ x) x (ty • v +ᵥ x)
[PROOFSTEP]
refine' Or.inr (Or.inr (wbtw_smul_vadd_smul_vadd_of_nonpos_of_nonneg _ _ hz0.le hy0.le))
[GOAL]
case intro.intro.intro.inr.inr.inr.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
ty : R
hy0 : 0 < ty
h : ∀ (p : P), p = x ∨ p = ty • v +ᵥ x ∨ p = 0 • v +ᵥ x → ∃ r, p = r • v +ᵥ x
⊢ Wbtw R x (ty • v +ᵥ x) (0 • v +ᵥ x) ∨ Wbtw R (ty • v +ᵥ x) (0 • v +ᵥ x) x ∨ Wbtw R (0 • v +ᵥ x) x (ty • v +ᵥ x)
[PROOFSTEP]
simp
[GOAL]
case intro.intro.intro.inr.inr.inr.inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
ty tz : R
h : ∀ (p : P), p = x ∨ p = ty • v +ᵥ x ∨ p = tz • v +ᵥ x → ∃ r, p = r • v +ᵥ x
hy0 : 0 < ty
hz0 : 0 < tz
⊢ Wbtw R x (ty • v +ᵥ x) (tz • v +ᵥ x) ∨ Wbtw R (ty • v +ᵥ x) (tz • v +ᵥ x) x ∨ Wbtw R (tz • v +ᵥ x) x (ty • v +ᵥ x)
[PROOFSTEP]
rw [wbtw_comm (z := x)]
[GOAL]
case intro.intro.intro.inr.inr.inr.inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
ty tz : R
h : ∀ (p : P), p = x ∨ p = ty • v +ᵥ x ∨ p = tz • v +ᵥ x → ∃ r, p = r • v +ᵥ x
hy0 : 0 < ty
hz0 : 0 < tz
⊢ Wbtw R x (ty • v +ᵥ x) (tz • v +ᵥ x) ∨ Wbtw R x (tz • v +ᵥ x) (ty • v +ᵥ x) ∨ Wbtw R (tz • v +ᵥ x) x (ty • v +ᵥ x)
[PROOFSTEP]
rw [← or_assoc]
[GOAL]
case intro.intro.intro.inr.inr.inr.inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x : P
v : V
ty tz : R
h : ∀ (p : P), p = x ∨ p = ty • v +ᵥ x ∨ p = tz • v +ᵥ x → ∃ r, p = r • v +ᵥ x
hy0 : 0 < ty
hz0 : 0 < tz
⊢ (Wbtw R x (ty • v +ᵥ x) (tz • v +ᵥ x) ∨ Wbtw R x (tz • v +ᵥ x) (ty • v +ᵥ x)) ∨ Wbtw R (tz • v +ᵥ x) x (ty • v +ᵥ x)
[PROOFSTEP]
exact Or.inl (wbtw_or_wbtw_smul_vadd_of_nonneg _ _ hy0.le hz0.le)
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
⊢ Wbtw R x y z ↔ SameRay R (y -ᵥ x) (z -ᵥ y)
[PROOFSTEP]
refine' ⟨Wbtw.sameRay_vsub, fun h => _⟩
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : SameRay R (y -ᵥ x) (z -ᵥ y)
⊢ Wbtw R x y z
[PROOFSTEP]
rcases h with (h | h | ⟨r₁, r₂, hr₁, hr₂, h⟩)
[GOAL]
case inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : y -ᵥ x = 0
⊢ Wbtw R x y z
[PROOFSTEP]
rw [vsub_eq_zero_iff_eq] at h
[GOAL]
case inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : y = x
⊢ Wbtw R x y z
[PROOFSTEP]
simp [h]
[GOAL]
case inr.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : z -ᵥ y = 0
⊢ Wbtw R x y z
[PROOFSTEP]
rw [vsub_eq_zero_iff_eq] at h
[GOAL]
case inr.inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
h : z = y
⊢ Wbtw R x y z
[PROOFSTEP]
simp [h]
[GOAL]
case inr.inr.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
h : r₁ • (y -ᵥ x) = r₂ • (z -ᵥ y)
⊢ Wbtw R x y z
[PROOFSTEP]
refine'
  ⟨r₂ / (r₁ + r₂),
    ⟨div_nonneg hr₂.le (add_nonneg hr₁.le hr₂.le),
      div_le_one_of_le (le_add_of_nonneg_left hr₁.le) (add_nonneg hr₁.le hr₂.le)⟩,
    _⟩
[GOAL]
case inr.inr.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
h : r₁ • (y -ᵥ x) = r₂ • (z -ᵥ y)
⊢ ↑(lineMap x z) (r₂ / (r₁ + r₂)) = y
[PROOFSTEP]
have h' : z = r₂⁻¹ • r₁ • (y -ᵥ x) +ᵥ y := by simp [h, hr₂.ne']
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
h : r₁ • (y -ᵥ x) = r₂ • (z -ᵥ y)
⊢ z = r₂⁻¹ • r₁ • (y -ᵥ x) +ᵥ y
[PROOFSTEP]
simp [h, hr₂.ne']
[GOAL]
case inr.inr.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
h : r₁ • (y -ᵥ x) = r₂ • (z -ᵥ y)
h' : z = r₂⁻¹ • r₁ • (y -ᵥ x) +ᵥ y
⊢ ↑(lineMap x z) (r₂ / (r₁ + r₂)) = y
[PROOFSTEP]
rw [eq_comm]
[GOAL]
case inr.inr.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
h : r₁ • (y -ᵥ x) = r₂ • (z -ᵥ y)
h' : z = r₂⁻¹ • r₁ • (y -ᵥ x) +ᵥ y
⊢ y = ↑(lineMap x z) (r₂ / (r₁ + r₂))
[PROOFSTEP]
simp only [lineMap_apply, h', vadd_vsub_assoc, smul_smul, ← add_smul, eq_vadd_iff_vsub_eq, smul_add]
[GOAL]
case inr.inr.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
h : r₁ • (y -ᵥ x) = r₂ • (z -ᵥ y)
h' : z = r₂⁻¹ • r₁ • (y -ᵥ x) +ᵥ y
⊢ y -ᵥ x = (r₂ / (r₁ + r₂) * (r₂⁻¹ * r₁) + r₂ / (r₁ + r₂)) • (y -ᵥ x)
[PROOFSTEP]
convert (one_smul R (y -ᵥ x)).symm
[GOAL]
case h.e'_3.h.e'_5
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
h : r₁ • (y -ᵥ x) = r₂ • (z -ᵥ y)
h' : z = r₂⁻¹ • r₁ • (y -ᵥ x) +ᵥ y
⊢ r₂ / (r₁ + r₂) * (r₂⁻¹ * r₁) + r₂ / (r₁ + r₂) = 1
[PROOFSTEP]
field_simp [(add_pos hr₁ hr₂).ne', hr₂.ne']
[GOAL]
case h.e'_3.h.e'_5
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y z : P
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
h : r₁ • (y -ᵥ x) = r₂ • (z -ᵥ y)
h' : z = r₂⁻¹ • r₁ • (y -ᵥ x) +ᵥ y
⊢ r₂ * r₁ * (r₁ + r₂) + r₂ * ((r₁ + r₂) * r₂) = (r₁ + r₂) * r₂ * (r₁ + r₂)
[PROOFSTEP]
ring
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
⊢ Wbtw R y x (↑(pointReflection R x) y)
[PROOFSTEP]
refine' ⟨2⁻¹, ⟨by norm_num, by norm_num⟩, _⟩
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
⊢ 0 ≤ 2⁻¹
[PROOFSTEP]
norm_num
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
⊢ 2⁻¹ ≤ 1
[PROOFSTEP]
norm_num
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
⊢ ↑(lineMap y (↑(pointReflection R x) y)) 2⁻¹ = x
[PROOFSTEP]
rw [lineMap_apply, pointReflection_apply, vadd_vsub_assoc, ← two_smul R (x -ᵥ y)]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
⊢ 2⁻¹ • 2 • (x -ᵥ y) +ᵥ y = x
[PROOFSTEP]
simp
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
h : x ≠ y
⊢ Sbtw R y x (↑(pointReflection R x) y)
[PROOFSTEP]
refine' ⟨wbtw_pointReflection _ _ _, h, _⟩
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
h : x ≠ y
⊢ x ≠ ↑(pointReflection R x) y
[PROOFSTEP]
nth_rw 1 [← pointReflection_self R x]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
h : x ≠ y
⊢ ↑(pointReflection R x) x ≠ ↑(pointReflection R x) y
[PROOFSTEP]
exact (pointReflection_involutive R x).injective.ne h
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
⊢ Wbtw R x (midpoint R x y) y
[PROOFSTEP]
convert wbtw_pointReflection R (midpoint R x y) x
[GOAL]
case h.e'_10
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
⊢ y = ↑(pointReflection R (midpoint R x y)) x
[PROOFSTEP]
rw [pointReflection_midpoint_left]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
h : x ≠ y
⊢ Sbtw R x (midpoint R x y) y
[PROOFSTEP]
have h : midpoint R x y ≠ x := by simp [h]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
h : x ≠ y
⊢ midpoint R x y ≠ x
[PROOFSTEP]
simp [h]
[GOAL]
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
h✝ : x ≠ y
h : midpoint R x y ≠ x
⊢ Sbtw R x (midpoint R x y) y
[PROOFSTEP]
convert sbtw_pointReflection_of_ne R h
[GOAL]
case h.e'_10
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : LinearOrderedField R
inst✝² : AddCommGroup V
inst✝¹ : Module R V
inst✝ : AddTorsor V P
x y : P
h✝ : x ≠ y
h : midpoint R x y ≠ x
⊢ y = ↑(pointReflection R (midpoint R x y)) x
[PROOFSTEP]
rw [pointReflection_midpoint_left]