(** Predicates to compare segment lengths. *)
  
Definition le := fun A B C D =>
   exists y, Bet C y D /\ Cong A B C y.Definition ge := fun A B C D => le C D A B.

(* Specifications: *)
Lemma l5_5_1 : forall A B C D, le A B C D -> exists x, Bet A B x /\ Cong A x C D.
Lemma l5_5_2 : forall A B C D, (exists x, Bet A B x /\ Cong A x C D) -> le A B C D.
Lemma l5_6 : forall A B C D A' B' C' D', le A B C D /\ Cong A B A' B' /\ Cong C D C' D' -> le A' B' C' D'.
Lemma le_reflexivity : forall A B, le A B A B.
Lemma le_transitivity : forall A B C D E F, le A B C D -> le C D E F -> le A B E F .
Lemma between_cong : forall A B C, Bet A C B -> Cong A C A B -> C=B.
Lemma between_cong_2 : forall A B D E, Bet A D B -> Bet A E B -> Cong A D A E -> D = E.
Lemma le_anti_symmetry : forall A B C D, le A B C D -> le C D A B -> Cong A B C D.
Lemma segment_construction_2 : forall A Q B C, A<>Q -> exists X, (Bet Q A X \/ Bet Q X A) /\ Cong Q X B C.
Lemma le_trivial : forall A C D, le A A C D .
Lemma le_cases : forall A B C D, le A B C D \/ le C D A B.
Lemma le_zero : forall A B C, le A B C C -> A=B.