Definition proj := fun  T A B P => A <> B /\ (~Col A B T /\ Perp A B T P /\ Col A B P \/ Col A B T /\ P = T).

(* Specifications: *)
Lemma proj_exists : forall A B T, A <> B -> exists P, proj T A B P.
Lemma proj_per : forall A B T P, A <> B -> proj T A B P -> Per T P A /\ Per T P B /\ Col A B P.
Lemma proj_uniqueness : forall A B T P P', proj T A B P -> proj T A B P' -> P = P'.
Lemma proj_col : forall T P A B, proj T A B P -> Col P A B.
Lemma proj_col_proj : forall A B C T P, proj T A B P -> A <> C -> Col A B C -> proj T A C P.
Lemma per_proj : forall A B T P, A <> B -> Per T P A -> Per T P B -> Col A B P -> proj T A B P.