-- Mathlib/Geometry/Euclidean/Triangle.lean
theorem sin_angle_sub_add_angle_sub_rev_eq_sin_angle {x y : V} (hx : x ≠ 0) (hy : y ≠ 0) :
    Real.sin (angle x (x - y) + angle y (y - x)) = Real.sin (angle x y)

Proof state:
case neg
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hxy : ¬x = y
hxn : ‖x‖ ≠ 0
hyn : ‖y‖ ≠ 0
hxyn : ‖x - y‖ ≠ 0
H1 :
  Real.sin (angle x (x - y)) * (inner y (y - x) / (‖y‖ * ‖y - x‖)) * ‖x‖ * ‖y‖ * ‖x - y‖ =
    Real.sin (angle x (x - y)) * (‖x‖ * ‖x - y‖) * (inner y (y - x) / (‖y‖ * ‖y - x‖)) * ‖y‖
H2 :
  inner x (x - y) / (‖x‖ * ‖y - x‖) * Real.sin (angle y (y - x)) * ‖x‖ * ‖y‖ * ‖y - x‖ =
    inner x (x - y) / (‖x‖ * ‖y - x‖) * (Real.sin (angle y (y - x)) * (‖y‖ * ‖y - x‖)) * ‖x‖
H3 :
  inner x x * (inner x x - inner x y - (inner x y - inner y y)) - (inner x x - inner x y) * (inner x x - inner x y) =
    inner x x * inner y y - inner x y * inner x y
H4 :
  inner y y * (inner y y - inner x y - (inner x y - inner x x)) - (inner y y - inner x y) * (inner y y - inner x y) =
    inner x x * inner y y - inner x y * inner x y
⊢ √(‖x‖ * ‖x‖ * (‖y‖ * ‖y‖) -
                (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖) / 2 * ((‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖) / 2)) *
            ((‖y‖ * ‖y‖ - (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖) / 2) / (‖y‖ * ‖x - y‖)) *
          ‖y‖ *
        ‖x - y‖ +
      (‖x‖ * ‖x‖ - (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖) / 2) / (‖x‖ * ‖x - y‖) *
            √(‖x‖ * ‖x‖ * (‖y‖ * ‖y‖) -
                (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖) / 2 * ((‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖) / 2)) *
          ‖x‖ *
        ‖x - y‖ =
    √(‖x‖ * ‖x‖ * (‖y‖ * ‖y‖) -
            (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖) / 2 * ((‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖) / 2)) *
        ‖x - y‖ *
      ‖x - y‖

Tactic:
simp (disch := field_simp_discharge) only [mul_div_assoc', div_mul_eq_mul_div, div_div,
  sub_div', Real.sqrt_div', Real.sqrt_mul_self, add_div', div_add', eq_div_iff, div_eq_iff]

Result:
case neg
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hxy : ¬x = y
hxn : ‖x‖ ≠ 0
hyn : ‖y‖ ≠ 0
hxyn : ‖x - y‖ ≠ 0
H1 :
  Real.sin (angle x (x - y)) * (inner y (y - x) / (‖y‖ * ‖y - x‖)) * ‖x‖ * ‖y‖ * ‖x - y‖ =
    Real.sin (angle x (x - y)) * (‖x‖ * ‖x - y‖) * (inner y (y - x) / (‖y‖ * ‖y - x‖)) * ‖y‖
H2 :
  inner x (x - y) / (‖x‖ * ‖y - x‖) * Real.sin (angle y (y - x)) * ‖x‖ * ‖y‖ * ‖y - x‖ =
    inner x (x - y) / (‖x‖ * ‖y - x‖) * (Real.sin (angle y (y - x)) * (‖y‖ * ‖y - x‖)) * ‖x‖
H3 :
  inner x x * (inner x x - inner x y - (inner x y - inner y y)) - (inner x x - inner x y) * (inner x x - inner x y) =
    inner x x * inner y y - inner x y * inner x y
H4 :
  inner y y * (inner y y - inner x y - (inner x y - inner x x)) - (inner y y - inner x y) * (inner y y - inner x y) =
    inner x x * inner y y - inner x y * inner x y
⊢ (√(‖x‖ * ‖x‖ * (‖y‖ * ‖y‖) * (2 * 2) -
                    (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖) * (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖)) *
                (‖y‖ * ‖y‖ * 2 - (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖)) *
              ‖y‖ *
            ‖x - y‖ *
          (2 * (‖x‖ * ‖x - y‖) * 2) +
        (‖x‖ * ‖x‖ * 2 - (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖)) *
                √(‖x‖ * ‖x‖ * (‖y‖ * ‖y‖) * (2 * 2) -
                    (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖) * (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖)) *
              ‖x‖ *
            ‖x - y‖ *
          (2 * (2 * (‖y‖ * ‖x - y‖)))) *
      2 =
    √(‖x‖ * ‖x‖ * (‖y‖ * ‖y‖) * (2 * 2) -
              (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖) * (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖)) *
          ‖x - y‖ *
        ‖x - y‖ *
      (2 * (2 * (‖y‖ * ‖x - y‖)) * (2 * (‖x‖ * ‖x - y‖) * 2))

Proof state:
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hxy : ¬x = y
hxn : ‖x‖ ≠ 0
hyn : ‖y‖ ≠ 0
hxyn : ‖x - y‖ ≠ 0
H1 :
  Real.sin (angle x (x - y)) * (inner y (y - x) / (‖y‖ * ‖y - x‖)) * ‖x‖ * ‖y‖ * ‖x - y‖ =
    Real.sin (angle x (x - y)) * (‖x‖ * ‖x - y‖) * (inner y (y - x) / (‖y‖ * ‖y - x‖)) * ‖y‖
H2 :
  inner x (x - y) / (‖x‖ * ‖y - x‖) * Real.sin (angle y (y - x)) * ‖x‖ * ‖y‖ * ‖y - x‖ =
    inner x (x - y) / (‖x‖ * ‖y - x‖) * (Real.sin (angle y (y - x)) * (‖y‖ * ‖y - x‖)) * ‖x‖
⊢ inner x x * (inner x x - inner x y - (inner x y - inner y y)) - (inner x x - inner x y) * (inner x x - inner x y) =
    inner x x * inner y y - inner x y * inner x y

Tactic:
ring

Result:
no goals

Proof state:
case pos
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hxy : x = y
⊢ Real.sin (angle x (x - y) + angle y (y - x)) = Real.sin (angle x y)

Tactic:
rw [hxy, angle_self hy]

Result:
case pos
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hxy : x = y
⊢ Real.sin (angle y (y - y) + angle y (y - y)) = Real.sin 0

Proof state:
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
⊢ Real.sin (angle x (x - y) + angle y (y - x)) = Real.sin (angle x y)

Tactic:
by_cases hxy : x = y

Result:
case pos
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hxy : x = y
⊢ Real.sin (angle x (x - y) + angle y (y - x)) = Real.sin (angle x y)

case neg
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hxy : ¬x = y
⊢ Real.sin (angle x (x - y) + angle y (y - x)) = Real.sin (angle x y)

Proof state:
case neg
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
hx : x ≠ 0
hy : y ≠ 0
hxy : ¬x = y
hxn : ‖x‖ ≠ 0
hyn : ‖y‖ ≠ 0
hxyn : ‖x - y‖ ≠ 0
H1 :
  Real.sin (angle x (x - y)) * (inner y (y - x) / (‖y‖ * ‖y - x‖)) * ‖x‖ * ‖y‖ * ‖x - y‖ =
    Real.sin (angle x (x - y)) * (‖x‖ * ‖x - y‖) * (inner y (y - x) / (‖y‖ * ‖y - x‖)) * ‖y‖
H2 :
  inner x (x - y) / (‖x‖ * ‖y - x‖) * Real.sin (angle y (y - x)) * ‖x‖ * ‖y‖ * ‖y - x‖ =
    inner x (x - y) / (‖x‖ * ‖y - x‖) * (Real.sin (angle y (y - x)) * (‖y‖ * ‖y - x‖)) * ‖x‖
H3 :
  inner x x * (inner x x - inner x y - (inner x y - inner y y)) - (inner x x - inner x y) * (inner x x - inner x y) =
    inner x x * inner y y - inner x y * inner x y
H4 :
  inner y y * (inner y y - inner x y - (inner x y - inner x x)) - (inner y y - inner x y) * (inner y y - inner x y) =
    inner x x * inner y y - inner x y * inner x y
⊢ (√(‖x‖ * ‖x‖ * (‖y‖ * ‖y‖) * (2 * 2) -
                    (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖) * (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖)) *
                (‖y‖ * ‖y‖ * 2 - (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖)) *
              ‖y‖ *
            ‖x - y‖ *
          (2 * (‖x‖ * ‖x - y‖) * 2) +
        (‖x‖ * ‖x‖ * 2 - (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖)) *
                √(‖x‖ * ‖x‖ * (‖y‖ * ‖y‖) * (2 * 2) -
                    (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖) * (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖)) *
              ‖x‖ *
            ‖x - y‖ *
          (2 * (2 * (‖y‖ * ‖x - y‖)))) *
      2 =
    √(‖x‖ * ‖x‖ * (‖y‖ * ‖y‖) * (2 * 2) -
              (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖) * (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖)) *
          ‖x - y‖ *
        ‖x - y‖ *
      (2 * (2 * (‖y‖ * ‖x - y‖)) * (2 * (‖x‖ * ‖x - y‖) * 2))

Tactic:
ring

Result:
no goals