Theorem: EuclideanGeometry.dist_eq_of_angle_eq_angle_of_angle_ne_pi
File: Mathlib/Geometry/Euclidean/Triangle.lean

tactic: unfold angle at h hpi
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : ∠ p1 p2 p3 = ∠ p1 p3 p2
hpi : ∠ p2 p1 p3 ≠ π
⊢ dist p1 p2 = dist p1 p3
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : InnerProductGeometry.angle (p1 -ᵥ p2) (p3 -ᵥ p2) = InnerProductGeometry.angle (p1 -ᵥ p3) (p2 -ᵥ p3)
hpi : InnerProductGeometry.angle (p2 -ᵥ p1) (p3 -ᵥ p1) ≠ π
⊢ dist p1 p2 = dist p1 p3

tactic: rw [dist_eq_norm_vsub V p1 p2, dist_eq_norm_vsub V p1 p3]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : InnerProductGeometry.angle (p1 -ᵥ p2) (p3 -ᵥ p2) = InnerProductGeometry.angle (p1 -ᵥ p3) (p2 -ᵥ p3)
hpi : InnerProductGeometry.angle (p2 -ᵥ p1) (p3 -ᵥ p1) ≠ π
⊢ dist p1 p2 = dist p1 p3
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : InnerProductGeometry.angle (p1 -ᵥ p2) (p3 -ᵥ p2) = InnerProductGeometry.angle (p1 -ᵥ p3) (p2 -ᵥ p3)
hpi : InnerProductGeometry.angle (p2 -ᵥ p1) (p3 -ᵥ p1) ≠ π
⊢ ‖p1 -ᵥ p2‖ = ‖p1 -ᵥ p3‖

tactic: rw [← angle_neg_neg, neg_vsub_eq_vsub_rev, neg_vsub_eq_vsub_rev] at hpi
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : InnerProductGeometry.angle (p1 -ᵥ p2) (p3 -ᵥ p2) = InnerProductGeometry.angle (p1 -ᵥ p3) (p2 -ᵥ p3)
hpi : InnerProductGeometry.angle (p2 -ᵥ p1) (p3 -ᵥ p1) ≠ π
⊢ ‖p1 -ᵥ p2‖ = ‖p1 -ᵥ p3‖
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : InnerProductGeometry.angle (p1 -ᵥ p2) (p3 -ᵥ p2) = InnerProductGeometry.angle (p1 -ᵥ p3) (p2 -ᵥ p3)
hpi : InnerProductGeometry.angle (p1 -ᵥ p2) (p1 -ᵥ p3) ≠ π
⊢ ‖p1 -ᵥ p2‖ = ‖p1 -ᵥ p3‖

tactic: rw [← vsub_sub_vsub_cancel_left p3 p2 p1, ← vsub_sub_vsub_cancel_left p2 p3 p1] at h
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : InnerProductGeometry.angle (p1 -ᵥ p2) (p3 -ᵥ p2) = InnerProductGeometry.angle (p1 -ᵥ p3) (p2 -ᵥ p3)
hpi : InnerProductGeometry.angle (p1 -ᵥ p2) (p1 -ᵥ p3) ≠ π
⊢ ‖p1 -ᵥ p2‖ = ‖p1 -ᵥ p3‖
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h :
  InnerProductGeometry.angle (p1 -ᵥ p2) (p1 -ᵥ p2 - (p1 -ᵥ p3)) =
    InnerProductGeometry.angle (p1 -ᵥ p3) (p1 -ᵥ p3 - (p1 -ᵥ p2))
hpi : InnerProductGeometry.angle (p1 -ᵥ p2) (p1 -ᵥ p3) ≠ π
⊢ ‖p1 -ᵥ p2‖ = ‖p1 -ᵥ p3‖

tactic: exact norm_eq_of_angle_sub_eq_angle_sub_rev_of_angle_ne_pi h hpi
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h :
  InnerProductGeometry.angle (p1 -ᵥ p2) (p1 -ᵥ p2 - (p1 -ᵥ p3)) =
    InnerProductGeometry.angle (p1 -ᵥ p3) (p1 -ᵥ p3 - (p1 -ᵥ p2))
hpi : InnerProductGeometry.angle (p1 -ᵥ p2) (p1 -ᵥ p3) ≠ π
⊢ ‖p1 -ᵥ p2‖ = ‖p1 -ᵥ p3‖
state_after: no goals