Ltac show_distinct X Y := assert (X<>Y);[unfold not;intro;treat_equalities|idtac].

(* Specifications: *)
Lemma l8_18_existence : forall A B C, ~ Col A B C -> exists X, Col A B X /\ Perp A B C X.
Lemma l8_20_1 : forall A B C C' D P, Per A B C -> is_midpoint P C' D -> is_midpoint A C' C -> is_midpoint B D C -> Per B A P.
Lemma l8_20_2 : forall A B C C' D P, Per A B C -> is_midpoint P C' D -> is_midpoint A C' C -> is_midpoint B D C -> B<>C -> A<>P.
Lemma l8_21_aux : forall A B C, A<> B -> ~ Col A B C -> exists P, exists T, Perp A B P A /\ Col A B T /\ Bet C T P.
Lemma l8_21 : forall A B C, A<> B -> exists P, exists T, Perp A B P A /\ Col A B T /\ Bet C T P.
Lemma perp_symmetry : forall A B C D, Perp A B C D -> Perp C D A B.
Lemma perp_commutativity : forall A B C D, Perp A B C D -> Perp B A D C.
Lemma perp_left_commutativity : forall A B C D, Perp A B C D -> Perp B A C D.
Lemma perp_right_commutativity : forall A B C D, Perp A B C D -> Perp A B D C.
Lemma perp_in_left_commutativity : forall A B C D X, Perp_in X A B C D -> Perp_in X B A C D.
Lemma perp_in_right_commutativity : forall A B C D X, Perp_in X A B C D -> Perp_in X A B D C.
Lemma perp_in_commutativity : forall A B C D X, Perp_in X A B C D -> Perp_in X B A D C.
Lemma perp_in_symmetry : forall A B C D X, Perp_in X A B C D -> Perp_in X C D A B.