Theorem: InnerProductGeometry.angle_add_angle_sub_add_angle_sub_eq_pi
File: Mathlib/Geometry/Euclidean/Triangle.lean

tactic: have hcos := cos_angle_add_angle_sub_add_angle_sub_eq_neg_one hx hy
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
⊢ angle x y + angle x (x - y) + angle y (y - x) = π
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
⊢ angle x y + angle x (x - y) + angle y (y - x) = π

tactic: have hsin := sin_angle_add_angle_sub_add_angle_sub_eq_zero hx hy
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
⊢ angle x y + angle x (x - y) + angle y (y - x) = π
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
hsin : Real.sin (angle x y + angle x (x - y) + angle y (y - x)) = 0
⊢ angle x y + angle x (x - y) + angle y (y - x) = π

tactic: rw [Real.sin_eq_zero_iff] at hsin
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
hsin : Real.sin (angle x y + angle x (x - y) + angle y (y - x)) = 0
⊢ angle x y + angle x (x - y) + angle y (y - x) = π
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
hsin : ∃ n, ↑n * π = angle x y + angle x (x - y) + angle y (y - x)
⊢ angle x y + angle x (x - y) + angle y (y - x) = π

tactic: cases' hsin with n hn
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
hsin : ∃ n, ↑n * π = angle x y + angle x (x - y) + angle y (y - x)
⊢ angle x y + angle x (x - y) + angle y (y - x) = π
state_after: case intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : ↑n * π = angle x y + angle x (x - y) + angle y (y - x)
⊢ angle x y + angle x (x - y) + angle y (y - x) = π

tactic: symm at hn
state_before: case intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : ↑n * π = angle x y + angle x (x - y) + angle y (y - x)
⊢ angle x y + angle x (x - y) + angle y (y - x) = π
state_after: case intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
⊢ angle x y + angle x (x - y) + angle y (y - x) = π

tactic: have h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x) :=
  add_nonneg (add_nonneg (angle_nonneg _ _) (angle_nonneg _ _)) (angle_nonneg _ _)
state_before: case intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
⊢ angle x y + angle x (x - y) + angle y (y - x) = π
state_after: case intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
⊢ angle x y + angle x (x - y) + angle y (y - x) = π

tactic: have h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π := by
  by_contra hnlt
  have hxy : angle x y = π := by
    by_contra hxy
    exact hnlt (add_lt_add_of_lt_of_le (add_lt_add_of_lt_of_le (lt_of_le_of_ne
      (angle_le_pi _ _) hxy) (angle_le_pi _ _)) (angle_le_pi _ _))
  rw [hxy] at hnlt
  rw [angle_eq_pi_iff] at hxy
  rcases hxy with ⟨hx, ⟨r, ⟨hr, hxr⟩⟩⟩
  rw [hxr, ← one_smul ℝ x, ← mul_smul, mul_one, ← sub_smul, one_smul, sub_eq_add_neg,
    angle_smul_right_of_pos _ _ (add_pos zero_lt_one (neg_pos_of_neg hr)), angle_self hx,
    add_zero] at hnlt
  apply hnlt
  rw [add_assoc]
  exact add_lt_add_left (lt_of_le_of_lt (angle_le_pi _ _) (lt_add_of_pos_right π Real.pi_pos)) _
state_before: case intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
⊢ angle x y + angle x (x - y) + angle y (y - x) = π
state_after: case intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
⊢ angle x y + angle x (x - y) + angle y (y - x) = π

tactic: have hn0 : 0 ≤ n := by
  rw [hn, mul_nonneg_iff_left_nonneg_of_pos Real.pi_pos] at h0
  norm_cast at h0
state_before: case intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
⊢ angle x y + angle x (x - y) + angle y (y - x) = π
state_after: case intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
hn0 : 0 ≤ n
⊢ angle x y + angle x (x - y) + angle y (y - x) = π

tactic: have hn3 : n < 3 := by
  rw [hn, show π + π + π = 3 * π by ring] at h3lt
  replace h3lt := lt_of_mul_lt_mul_right h3lt (le_of_lt Real.pi_pos)
  norm_cast at h3lt
state_before: case intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
hn0 : 0 ≤ n
⊢ angle x y + angle x (x - y) + angle y (y - x) = π
state_after: case intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
hn0 : 0 ≤ n
hn3 : n < 3
⊢ angle x y + angle x (x - y) + angle y (y - x) = π

tactic: interval_cases n
state_before: case intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
hn0 : 0 ≤ n
hn3 : n < 3
⊢ angle x y + angle x (x - y) + angle y (y - x) = π
state_after: case intro.«0»
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑0 * π
hn0 : 0 ≤ 0
hn3 : 0 < 3
⊢ angle x y + angle x (x - y) + angle y (y - x) = π

case intro.«1»
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑1 * π
hn0 : 0 ≤ 1
hn3 : 1 < 3
⊢ angle x y + angle x (x - y) + angle y (y - x) = π

case intro.«2»
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑2 * π
hn0 : 0 ≤ 2
hn3 : 2 < 3
⊢ angle x y + angle x (x - y) + angle y (y - x) = π

tactic: by_contra hnlt
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
⊢ angle x y + angle x (x - y) + angle y (y - x) < π + π + π
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hnlt : ¬angle x y + angle x (x - y) + angle y (y - x) < π + π + π
⊢ False

tactic: have hxy : angle x y = π := by
  by_contra hxy
  exact hnlt (add_lt_add_of_lt_of_le (add_lt_add_of_lt_of_le (lt_of_le_of_ne
    (angle_le_pi _ _) hxy) (angle_le_pi _ _)) (angle_le_pi _ _))
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hnlt : ¬angle x y + angle x (x - y) + angle y (y - x) < π + π + π
⊢ False
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hnlt : ¬angle x y + angle x (x - y) + angle y (y - x) < π + π + π
hxy : angle x y = π
⊢ False

tactic: rw [hxy] at hnlt
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hnlt : ¬angle x y + angle x (x - y) + angle y (y - x) < π + π + π
hxy : angle x y = π
⊢ False
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hnlt : ¬π + angle x (x - y) + angle y (y - x) < π + π + π
hxy : angle x y = π
⊢ False

tactic: rw [angle_eq_pi_iff] at hxy
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hnlt : ¬π + angle x (x - y) + angle y (y - x) < π + π + π
hxy : angle x y = π
⊢ False
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hnlt : ¬π + angle x (x - y) + angle y (y - x) < π + π + π
hxy : x ≠ 0 ∧ ∃ r < 0, y = r • x
⊢ False

tactic: rcases hxy with ⟨hx, ⟨r, ⟨hr, hxr⟩⟩⟩
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hnlt : ¬π + angle x (x - y) + angle y (y - x) < π + π + π
hxy : x ≠ 0 ∧ ∃ r < 0, y = r • x
⊢ False
state_after: case intro.intro.intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx✝ : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hnlt : ¬π + angle x (x - y) + angle y (y - x) < π + π + π
hx : x ≠ 0
r : ℝ
hr : r < 0
hxr : y = r • x
⊢ False

tactic: rw [hxr, ← one_smul ℝ x, ← mul_smul, mul_one, ← sub_smul, one_smul, sub_eq_add_neg,
  angle_smul_right_of_pos _ _ (add_pos zero_lt_one (neg_pos_of_neg hr)), angle_self hx,
  add_zero] at hnlt
state_before: case intro.intro.intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx✝ : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hnlt : ¬π + angle x (x - y) + angle y (y - x) < π + π + π
hx : x ≠ 0
r : ℝ
hr : r < 0
hxr : y = r • x
⊢ False
state_after: case intro.intro.intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx✝ : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hx : x ≠ 0
r : ℝ
hnlt : ¬π + angle (r • x) (r • x - x) < π + π + π
hr : r < 0
hxr : y = r • x
⊢ False

tactic: apply hnlt
state_before: case intro.intro.intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx✝ : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hx : x ≠ 0
r : ℝ
hnlt : ¬π + angle (r • x) (r • x - x) < π + π + π
hr : r < 0
hxr : y = r • x
⊢ False
state_after: case intro.intro.intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx✝ : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hx : x ≠ 0
r : ℝ
hnlt : ¬π + angle (r • x) (r • x - x) < π + π + π
hr : r < 0
hxr : y = r • x
⊢ π + angle (r • x) (r • x - x) < π + π + π

tactic: rw [add_assoc]
state_before: case intro.intro.intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx✝ : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hx : x ≠ 0
r : ℝ
hnlt : ¬π + angle (r • x) (r • x - x) < π + π + π
hr : r < 0
hxr : y = r • x
⊢ π + angle (r • x) (r • x - x) < π + π + π
state_after: case intro.intro.intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx✝ : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hx : x ≠ 0
r : ℝ
hnlt : ¬π + angle (r • x) (r • x - x) < π + π + π
hr : r < 0
hxr : y = r • x
⊢ π + angle (r • x) (r • x - x) < π + (π + π)

tactic: exact add_lt_add_left (lt_of_le_of_lt (angle_le_pi _ _) (lt_add_of_pos_right π Real.pi_pos)) _
state_before: case intro.intro.intro
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx✝ : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hx : x ≠ 0
r : ℝ
hnlt : ¬π + angle (r • x) (r • x - x) < π + π + π
hr : r < 0
hxr : y = r • x
⊢ π + angle (r • x) (r • x - x) < π + (π + π)
state_after: no goals

tactic: by_contra hxy
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hnlt : ¬angle x y + angle x (x - y) + angle y (y - x) < π + π + π
⊢ angle x y = π
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hnlt : ¬angle x y + angle x (x - y) + angle y (y - x) < π + π + π
hxy : ¬angle x y = π
⊢ False

tactic: exact hnlt (add_lt_add_of_lt_of_le (add_lt_add_of_lt_of_le (lt_of_le_of_ne
  (angle_le_pi _ _) hxy) (angle_le_pi _ _)) (angle_le_pi _ _))
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hnlt : ¬angle x y + angle x (x - y) + angle y (y - x) < π + π + π
hxy : ¬angle x y = π
⊢ False
state_after: no goals

tactic: rw [hn, mul_nonneg_iff_left_nonneg_of_pos Real.pi_pos] at h0
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
⊢ 0 ≤ n
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ ↑n
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
⊢ 0 ≤ n

tactic: norm_cast at h0
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ ↑n
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
⊢ 0 ≤ n
state_after: no goals

tactic: rw [hn, show π + π + π = 3 * π by ring] at h3lt
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
hn0 : 0 ≤ n
⊢ n < 3
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : ↑n * π < 3 * π
hn0 : 0 ≤ n
⊢ n < 3

tactic: replace h3lt := lt_of_mul_lt_mul_right h3lt (le_of_lt Real.pi_pos)
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : ↑n * π < 3 * π
hn0 : 0 ≤ n
⊢ n < 3
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hn0 : 0 ≤ n
h3lt : ↑n < 3
⊢ n < 3

tactic: norm_cast at h3lt
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
hn0 : 0 ≤ n
h3lt : ↑n < 3
⊢ n < 3
state_after: no goals

tactic: ring
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑n * π
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : ↑n * π < π + π + π
hn0 : 0 ≤ n
⊢ π + π + π = 3 * π
state_after: no goals

tactic: simp [hn] at hcos
state_before: case intro.«0»
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑0 * π
hn0 : 0 ≤ 0
hn3 : 0 < 3
⊢ angle x y + angle x (x - y) + angle y (y - x) = π
state_after: no goals

tactic: norm_num [hn]
state_before: case intro.«1»
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑1 * π
hn0 : 0 ≤ 1
hn3 : 1 < 3
⊢ angle x y + angle x (x - y) + angle y (y - x) = π
state_after: no goals

tactic: simp [hn] at hcos
state_before: case intro.«2»
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hcos : Real.cos (angle x y + angle x (x - y) + angle y (y - x)) = -1
n : ℤ
h0 : 0 ≤ angle x y + angle x (x - y) + angle y (y - x)
h3lt : angle x y + angle x (x - y) + angle y (y - x) < π + π + π
hn : angle x y + angle x (x - y) + angle y (y - x) = ↑2 * π
hn0 : 0 ≤ 2
hn3 : 2 < 3
⊢ angle x y + angle x (x - y) + angle y (y - x) = π
state_after: no goals