Definition cut' A B X Y := X <> Y /\ forall l, IncidL X l -> IncidL Y l -> cut l A B.Global Instance cut_morphism : Proper(EqL ==> eq ==> eq ==> iff) cut.Global Instance same_side_morphism : Proper(eq ==> eq ==> EqL ==> iff) same_side.

(* Specifications: *)
Lemma plane_separation : forall A B X Y p, ~ ColH A X Y -> ~ ColH B X Y -> IncidP A p -> IncidP B p -> IncidP X p -> IncidP Y p -> cut' A B X Y \/ same_side' A B X Y.
Lemma same_side_comm : forall A B l, same_side A B l -> same_side B A l.
Lemma same_side_not_incid : forall A B l, same_side A B l -> ~ IncidL A l /\ ~ IncidL B l.
Lemma out_same_side' : forall X Y A B C l , X <> Y -> IncidL X l -> IncidL Y l -> IncidL A l -> ~ IncidL B l-> outH A B C -> same_side' B C X Y.
Lemma same_side_trans : forall A B C l, same_side A B l -> same_side B C l -> same_side A C l.
Lemma colH_IncidL__IncidL : forall A B C l, A<>B -> IncidL A l -> IncidL B l -> ColH A B C -> IncidL C l.
Lemma IncidL_not_IncidL__not_colH :forall A B C l, A<>B -> IncidL A l -> IncidL B l -> ~ IncidL C l -> ~ ColH A B C.
Lemma same_side_prime_not_colH : forall A B C D, same_side' A B C D -> ~ ColH A C D /\ ~ ColH B C D.
Lemma OS2__TS : forall O X Y Z, same_side' Y Z O X -> same_side' X Y O Z -> cut' X Z O Y.
Lemma th15: forall H K O L H' K' O' L', ~ ColH H O L -> ~ ColH H' O' L' -> ~ ColH K O L -> ~ ColH K' O' L' -> ~ ColH H O K -> ~ ColH H' O' K' -> (cut' H K O L /\ cut' H' K' O' L') \/ (same_side' H K O L /\ same_side' H' K' O' L') -> CongaH H O L H' O' L' -> CongaH K O L K' O' L' -> CongaH H O K H' O' K'.
Lemma th17: forall X Y Z1 Z2 I, ~ ColH X Y Z1 -> ~ ColH X Y Z2 -> ColH X I Y -> BetH Z1 I Z2 -> CongH X Z1 X Z2 -> CongH Y Z1 Y Z2 -> CongaH X Y Z1 X Y Z2.
Lemma congaH_existence_congH : forall A B C O X P U V : Point, U<>V -> ~ ColH P O X -> ~ ColH A B C -> exists Y : Point, CongaH A B C X O Y /\ same_side' P Y O X /\ CongH O Y U V.
Lemma th18_aux: forall A B C A' B' C', ~ ColH A B C -> ~ ColH A' B' C' -> CongH A B A' B' -> CongH A C A' C' -> CongH B C B' C' -> CongaH B A C B' A' C'.
Lemma th19: forall O A B O1 A1 B1 O2 A2 B2, ~ ColH O A B -> ~ ColH O1 A1 B1 -> ~ ColH O2 A2 B2 -> CongaH A O B A1 O1 B1 -> CongaH A O B A2 O2 B2 -> CongaH A1 O1 B1 A2 O2 B2.
Lemma congaH_sym : forall A B C D E F, ~ColH A B C -> ~ColH D E F -> CongaH A B C D E F -> CongaH D E F A B C.
Lemma congaH_commr : forall A B C D E F, ~ColH A B C -> ~ColH D E F -> CongaH A B C D E F -> CongaH A B C F E D.
Lemma cong_preserves_col : forall A B C A' B' C', BetH A B C -> CongH A B A' B' -> CongH B C B' C' -> CongH A C A' C' -> ColH A' B' C'.
Lemma cong_preserves_col_stronger : forall A B C A' B' C', A <> B -> A <> C -> B <> C -> ColH A B C -> CongH A B A' B' -> CongH B C B' C' -> CongH A C A' C' -> ColH A' B' C'.
Lemma betH_congH2__False : forall A B C A' B' C', BetH A B C -> BetH A' C' B' -> CongH A B A' B' -> CongH A C A' C' -> False.
Lemma cong_preserves_bet : forall A B C A' B' C', A'<>B' -> B'<>C' -> A'<>C' -> BetH A B C -> CongH A B A' B' -> CongH B C B' C' -> CongH A C A' C' -> BetH A' B' C'.
Lemma axiom_five_segmentsH: forall A A' B B' C C' D D', A<>D -> A'<>D' -> B<>D -> B'<>D' -> C<>D -> C'<>D' -> CongH A B A' B' -> CongH B C B' C' -> CongH A D A' D' -> CongH B D B' D' -> BetH A B C -> BetH A' B' C' -> A' <> D' -> CongH C D C' D'.
Lemma five_segment : forall A A' B B' C C' D D' : Point, Cong A B A' B' -> Cong B C B' C' -> Cong A D A' D' -> Cong B D B' D' -> Bet A B C -> Bet A' B' C' -> A <> B -> Cong C D C' D'.
Lemma bet_comm: forall (A B C : Point), Bet A B C -> Bet C B A.
Lemma bet_trans: forall A B C D : Point, Bet A B D -> Bet B C D -> Bet A B C.
Lemma cong_transitivity : forall A B C D E F : Point, Cong A B E F -> Cong C D E F -> Cong A B C D.
Lemma cong_permT : forall A B : Point, Cong A B B A.
Lemma pasch_general_case: forall A B C P Q : Point, Bet A P C -> Bet B Q C -> A <> P -> P <> C -> B <> Q -> Q <> C -> ~ (Bet A B C \/ Bet B C A \/ Bet C A B) -> exists x : Point, Bet P x B /\ Bet Q x A.
Lemma lower_dim_l : ~ (Bet PP PQ PR \/ Bet PQ PR PP \/ Bet PR PP PQ).
Lemma ColH_bets : forall A B C, ColH A B C -> Bet A B C \/ Bet B C A \/ Bet C A B.