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

tactic: ext y
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.400251
P : Type u_3
P' : Type ?u.400257
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 p : P
hx : ¬x ∈ s
hp : p ∈ s
⊢ {y | WSameSide s x y} = Set.image2 (fun t q => t • (x -ᵥ p) +ᵥ q) (Set.Ici 0) ↑s

tactic: simp_rw [Set.mem_setOf, Set.mem_image2, Set.mem_Ici, mem_coe]
state_before: case h
R : Type u_1
V : Type u_2
V' : Type ?u.400251
P : Type u_3
P' : Type ?u.400257
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 p : P
hx : ¬x ∈ s
hp : p ∈ s
y : P
⊢ y ∈ {y | WSameSide s x y} ↔ y ∈ Set.image2 (fun t q => t • (x -ᵥ p) +ᵥ q) (Set.Ici 0) ↑s

tactic: constructor
state_before: case h
R : Type u_1
V : Type u_2
V' : Type ?u.400251
P : Type u_3
P' : Type ?u.400257
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 p : P
hx : ¬x ∈ s
hp : p ∈ s
y : P
⊢ WSameSide s x y ↔ ∃ a b, 0 ≤ a ∧ b ∈ ↑s ∧ a • (x -ᵥ p) +ᵥ b = y

tactic: rw [wSameSide_iff_exists_left hp, or_iff_right hx]
state_before: case h.mp
R : Type u_1
V : Type u_2
V' : Type ?u.400251
P : Type u_3
P' : Type ?u.400257
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 p : P
hx : ¬x ∈ s
hp : p ∈ s
y : P
⊢ WSameSide s x y → ∃ a b, 0 ≤ a ∧ b ∈ ↑s ∧ a • (x -ᵥ p) +ᵥ b = y

tactic: rintro ⟨p₂, hp₂, h | h | ⟨r₁, r₂, hr₁, hr₂, h⟩⟩
state_before: case h.mp
R : Type u_1
V : Type u_2
V' : Type ?u.400251
P : Type u_3
P' : Type ?u.400257
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 p : P
hx : ¬x ∈ s
hp : p ∈ s
y : P
⊢ (∃ p₂, p₂ ∈ s ∧ SameRay R (x -ᵥ p) (y -ᵥ p₂)) → ∃ a b, 0 ≤ a ∧ b ∈ ↑s ∧ a • (x -ᵥ p) +ᵥ b = y

tactic: rw [vsub_eq_zero_iff_eq] at h
state_before: case h.mp.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type ?u.400251
P : Type u_3
P' : Type ?u.400257
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 p : P
hx : ¬x ∈ s
hp : p ∈ s
y p₂ : P
hp₂ : p₂ ∈ s
h : x -ᵥ p = 0
⊢ ∃ a b, 0 ≤ a ∧ b ∈ ↑s ∧ a • (x -ᵥ p) +ᵥ b = y

tactic: exact False.elim (hx (h.symm ▸ hp))
state_before: case h.mp.intro.intro.inl
R : Type u_1
V : Type u_2
V' : Type ?u.400251
P : Type u_3
P' : Type ?u.400257
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 p : P
hx : ¬x ∈ s
hp : p ∈ s
y p₂ : P
hp₂ : p₂ ∈ s
h : x = p
⊢ ∃ a b, 0 ≤ a ∧ b ∈ ↑s ∧ a • (x -ᵥ p) +ᵥ b = y

tactic: rw [vsub_eq_zero_iff_eq] at h
state_before: case h.mp.intro.intro.inr.inl
R : Type u_1
V : Type u_2
V' : Type ?u.400251
P : Type u_3
P' : Type ?u.400257
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 p : P
hx : ¬x ∈ s
hp : p ∈ s
y p₂ : P
hp₂ : p₂ ∈ s
h : y -ᵥ p₂ = 0
⊢ ∃ a b, 0 ≤ a ∧ b ∈ ↑s ∧ a • (x -ᵥ p) +ᵥ b = y

tactic: refine' ⟨0, p₂, le_refl _, hp₂, _⟩
state_before: case h.mp.intro.intro.inr.inl
R : Type u_1
V : Type u_2
V' : Type ?u.400251
P : Type u_3
P' : Type ?u.400257
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 p : P
hx : ¬x ∈ s
hp : p ∈ s
y p₂ : P
hp₂ : p₂ ∈ s
h : y = p₂
⊢ ∃ a b, 0 ≤ a ∧ b ∈ ↑s ∧ a • (x -ᵥ p) +ᵥ b = y

tactic: simp [h]
state_before: case h.mp.intro.intro.inr.inl
R : Type u_1
V : Type u_2
V' : Type ?u.400251
P : Type u_3
P' : Type ?u.400257
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 p : P
hx : ¬x ∈ s
hp : p ∈ s
y p₂ : P
hp₂ : p₂ ∈ s
h : y = p₂
⊢ 0 • (x -ᵥ p) +ᵥ p₂ = y

tactic: refine' ⟨r₁ / r₂, p₂, (div_pos hr₁ hr₂).le, hp₂, _⟩
state_before: case h.mp.intro.intro.inr.inr.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.400251
P : Type u_3
P' : Type ?u.400257
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 p : P
hx : ¬x ∈ s
hp : p ∈ s
y p₂ : P
hp₂ : p₂ ∈ s
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
h : r₁ • (x -ᵥ p) = r₂ • (y -ᵥ p₂)
⊢ ∃ a b, 0 ≤ a ∧ b ∈ ↑s ∧ a • (x -ᵥ p) +ᵥ b = y

tactic: rw [div_eq_inv_mul, ← smul_smul, h, smul_smul, inv_mul_cancel hr₂.ne.symm, one_smul,
  vsub_vadd]
state_before: case h.mp.intro.intro.inr.inr.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.400251
P : Type u_3
P' : Type ?u.400257
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 p : P
hx : ¬x ∈ s
hp : p ∈ s
y p₂ : P
hp₂ : p₂ ∈ s
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
h : r₁ • (x -ᵥ p) = r₂ • (y -ᵥ p₂)
⊢ (r₁ / r₂) • (x -ᵥ p) +ᵥ p₂ = y

tactic: rintro ⟨t, p', ht, hp', rfl⟩
state_before: case h.mpr
R : Type u_1
V : Type u_2
V' : Type ?u.400251
P : Type u_3
P' : Type ?u.400257
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 p : P
hx : ¬x ∈ s
hp : p ∈ s
y : P
⊢ (∃ a b, 0 ≤ a ∧ b ∈ ↑s ∧ a • (x -ᵥ p) +ᵥ b = y) → WSameSide s x y

tactic: exact wSameSide_smul_vsub_vadd_right x hp hp' ht
state_before: case h.mpr.intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type ?u.400251
P : Type u_3
P' : Type ?u.400257
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 p : P
hx : ¬x ∈ s
hp : p ∈ s
t : R
p' : P
ht : 0 ≤ t
hp' : p' ∈ ↑s
⊢ WSameSide s x (t • (x -ᵥ p) +ᵥ p')