Theorem: AffineSubspace.wOppSide_iff_exists_left
File: Mathlib/Analysis/Convex/Side.lean

tactic: constructor
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.254312
P : Type u_3
P' : Type ?u.254318
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
⊢ WOppSide s x y ↔ x ∈ s ∨ ∃ p₂, p₂ ∈ s ∧ SameRay R (x -ᵥ p₁) (p₂ -ᵥ y)

tactic: rintro ⟨p₁', hp₁', p₂', hp₂', h0 | h0 | ⟨r₁, r₂, hr₁, hr₂, hr⟩⟩
state_before: case mp
R : Type u_1
V : Type u_2
V' : Type ?u.254312
P : Type u_3
P' : Type ?u.254318
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
⊢ WOppSide s x y → x ∈ s ∨ ∃ p₂, p₂ ∈ s ∧ SameRay R (x -ᵥ p₁) (p₂ -ᵥ y)

tactic: rw [vsub_eq_zero_iff_eq] at h0
state_before: case mp.intro.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type ?u.254312
P : Type u_3
P' : Type ?u.254318
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
p₁' : P
hp₁' : p₁' ∈ s
p₂' : P
hp₂' : p₂' ∈ s
h0 : x -ᵥ p₁' = 0
⊢ x ∈ s ∨ ∃ p₂, p₂ ∈ s ∧ SameRay R (x -ᵥ p₁) (p₂ -ᵥ y)

tactic: rw [h0]
state_before: case mp.intro.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type ?u.254312
P : Type u_3
P' : Type ?u.254318
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
p₁' : P
hp₁' : p₁' ∈ s
p₂' : P
hp₂' : p₂' ∈ s
h0 : x = p₁'
⊢ x ∈ s ∨ ∃ p₂, p₂ ∈ s ∧ SameRay R (x -ᵥ p₁) (p₂ -ᵥ y)

tactic: exact Or.inl hp₁'
state_before: case mp.intro.intro.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type ?u.254312
P : Type u_3
P' : Type ?u.254318
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
p₁' : P
hp₁' : p₁' ∈ s
p₂' : P
hp₂' : p₂' ∈ s
h0 : x = p₁'
⊢ p₁' ∈ s ∨ ∃ p₂, p₂ ∈ s ∧ SameRay R (p₁' -ᵥ p₁) (p₂ -ᵥ y)

tactic: refine' Or.inr ⟨p₂', hp₂', _⟩
state_before: case mp.intro.intro.intro.intro.inr.inl
R : Type u_1
V : Type u_2
V' : Type ?u.254312
P : Type u_3
P' : Type ?u.254318
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
p₁' : P
hp₁' : p₁' ∈ s
p₂' : P
hp₂' : p₂' ∈ s
h0 : p₂' -ᵥ y = 0
⊢ x ∈ s ∨ ∃ p₂, p₂ ∈ s ∧ SameRay R (x -ᵥ p₁) (p₂ -ᵥ y)

tactic: rw [h0]
state_before: case mp.intro.intro.intro.intro.inr.inl
R : Type u_1
V : Type u_2
V' : Type ?u.254312
P : Type u_3
P' : Type ?u.254318
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
p₁' : P
hp₁' : p₁' ∈ s
p₂' : P
hp₂' : p₂' ∈ s
h0 : p₂' -ᵥ y = 0
⊢ SameRay R (x -ᵥ p₁) (p₂' -ᵥ y)

tactic: exact SameRay.zero_right _
state_before: case mp.intro.intro.intro.intro.inr.inl
R : Type u_1
V : Type u_2
V' : Type ?u.254312
P : Type u_3
P' : Type ?u.254318
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
p₁' : P
hp₁' : p₁' ∈ s
p₂' : P
hp₂' : p₂' ∈ s
h0 : p₂' -ᵥ y = 0
⊢ SameRay R (x -ᵥ p₁) 0

tactic: refine' Or.inr ⟨(-r₁ / r₂) • (p₁ -ᵥ p₁') +ᵥ p₂', s.smul_vsub_vadd_mem _ h hp₁' hp₂',
  Or.inr (Or.inr ⟨r₁, r₂, hr₁, hr₂, _⟩)⟩
state_before: case mp.intro.intro.intro.intro.inr.inr.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.254312
P : Type u_3
P' : Type ?u.254318
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
p₁' : P
hp₁' : p₁' ∈ s
p₂' : P
hp₂' : p₂' ∈ s
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
hr : r₁ • (x -ᵥ p₁') = r₂ • (p₂' -ᵥ y)
⊢ x ∈ s ∨ ∃ p₂, p₂ ∈ s ∧ SameRay R (x -ᵥ p₁) (p₂ -ᵥ y)

tactic: rw [vadd_vsub_assoc, smul_add, ← hr, smul_smul, neg_div, mul_neg,
  mul_div_cancel' _ hr₂.ne.symm, neg_smul, neg_add_eq_sub, ← smul_sub,
  vsub_sub_vsub_cancel_right]
state_before: case mp.intro.intro.intro.intro.inr.inr.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.254312
P : Type u_3
P' : Type ?u.254318
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
p₁' : P
hp₁' : p₁' ∈ s
p₂' : P
hp₂' : p₂' ∈ s
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
hr : r₁ • (x -ᵥ p₁') = r₂ • (p₂' -ᵥ y)
⊢ r₁ • (x -ᵥ p₁) = r₂ • ((-r₁ / r₂) • (p₁ -ᵥ p₁') +ᵥ p₂' -ᵥ y)

tactic: rintro (h' | ⟨h₁, h₂, h₃⟩)
state_before: case mpr
R : Type u_1
V : Type u_2
V' : Type ?u.254312
P : Type u_3
P' : Type ?u.254318
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
⊢ (x ∈ s ∨ ∃ p₂, p₂ ∈ s ∧ SameRay R (x -ᵥ p₁) (p₂ -ᵥ y)) → WOppSide s x y

tactic: exact wOppSide_of_left_mem y h'
state_before: case mpr.inl
R : Type u_1
V : Type u_2
V' : Type ?u.254312
P : Type u_3
P' : Type ?u.254318
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
h' : x ∈ s
⊢ WOppSide s x y

tactic: exact ⟨p₁, h, h₁, h₂, h₃⟩
state_before: case mpr.inr.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.254312
P : Type u_3
P' : Type ?u.254318
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
h₁ : P
h₂ : h₁ ∈ s
h₃ : SameRay R (x -ᵥ p₁) (h₁ -ᵥ y)
⊢ WOppSide s x y