Require Export A2_Orientation.
Section LENGTH_SET.
Parameter LS : Set.
Parameter LSplus : LS -> LS -> LS.
Parameter LSlt : LS -> LS -> Prop.
Definition TriangleSpec := fun x y z : LS =>
(LSlt x (LSplus y z)) /\ (LSlt y (LSplus z x)) /\ (LSlt z (LSplus x y)).
End LENGTH_SET.
Section METRIC.
Parameter  Distance : Point -> Point -> LS.
Definition Equidistant := fun A B C D =>
Distance A B = Distance C D.
Fixpoint DistTimesn (n : nat) (A B : Point) {struct n}: LS :=
match n with
| O => Distance A A
| S p => LSplus (Distance A B) (DistTimesn p A B)
end.

Axiom ChaslesRec : forall A B C,
LSplus (Distance A B) (Distance B C) = Distance A C ->
(HalfLine A B C) /\ (HalfLine C B A).