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

tactic: constructor
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.316087
P : Type u_3
P' : Type ?u.316093
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
⊢ WSameSide s x y ∧ WOppSide s x y ↔ x ∈ s ∨ y ∈ s

tactic: rintro ⟨hs, ho⟩
state_before: case mp
R : Type u_1
V : Type u_2
V' : Type ?u.316087
P : Type u_3
P' : Type ?u.316093
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
⊢ WSameSide s x y ∧ WOppSide s x y → x ∈ s ∨ y ∈ s

tactic: rw [wOppSide_comm] at ho
state_before: case mp.intro
R : Type u_1
V : Type u_2
V' : Type ?u.316087
P : Type u_3
P' : Type ?u.316093
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
hs : WSameSide s x y
ho : WOppSide s x y
⊢ x ∈ s ∨ y ∈ s

tactic: by_contra h
state_before: case mp.intro
R : Type u_1
V : Type u_2
V' : Type ?u.316087
P : Type u_3
P' : Type ?u.316093
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
hs : WSameSide s x y
ho : WOppSide s y x
⊢ x ∈ s ∨ y ∈ s

tactic: rw [not_or] at h
state_before: case mp.intro
R : Type u_1
V : Type u_2
V' : Type ?u.316087
P : Type u_3
P' : Type ?u.316093
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
hs : WSameSide s x y
ho : WOppSide s y x
h : ¬(x ∈ s ∨ y ∈ s)
⊢ False

tactic: exact h.1 (wOppSide_self_iff.1 (hs.trans_wOppSide ho h.2))
state_before: case mp.intro
R : Type u_1
V : Type u_2
V' : Type ?u.316087
P : Type u_3
P' : Type ?u.316093
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
hs : WSameSide s x y
ho : WOppSide s y x
h : ¬x ∈ s ∧ ¬y ∈ s
⊢ False

tactic: rintro (h | h)
state_before: case mpr
R : Type u_1
V : Type u_2
V' : Type ?u.316087
P : Type u_3
P' : Type ?u.316093
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
⊢ x ∈ s ∨ y ∈ s → WSameSide s x y ∧ WOppSide s x y

tactic: exact ⟨wSameSide_of_left_mem y h, wOppSide_of_left_mem y h⟩
state_before: case mpr.inl
R : Type u_1
V : Type u_2
V' : Type ?u.316087
P : Type u_3
P' : Type ?u.316093
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
h : x ∈ s
⊢ WSameSide s x y ∧ WOppSide s x y

tactic: exact ⟨wSameSide_of_right_mem x h, wOppSide_of_right_mem x h⟩
state_before: case mpr.inr
R : Type u_1
V : Type u_2
V' : Type ?u.316087
P : Type u_3
P' : Type ?u.316093
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
h : y ∈ s
⊢ WSameSide s x y ∧ WOppSide s x y