Ltac ColH := auto 3 with colH.
Ltac line_col A B C := match goal with
|H1:(IncidL A ?l), H2:(IncidL B ?l), H3:(IncidL C ?l) |- _
=> let HH := fresh in assert(ColH A B C) by (unfold ColH; exists l; repeat split; auto); auto
end.
Ltac col_line H l := assert(HH:=H); unfold ColH in HH; destruct HH as [l HH]; spliter.
Ltac lines_eq l m :=
match goal with
| H0:(?X1 <> ?X2), H1:(IncidL ?X1 l), H2:(IncidL ?X1 m),
H3:(IncidL ?X2 l) , H4:(IncidL ?X2 m) |- _ => let HH := fresh in assert(HH : EqL l m) by (apply (line_uniqueness X1 X2 l m);auto);
rewrite <-HH in *;
clean_duplicated_hyps
end.

(* Specifications: *)
Lemma colH_dec : forall A B C, ColH A B C \/ ~ ColH A B C.
Lemma colH_trans : forall X Y A B C, X <> Y -> ColH X Y A -> ColH X Y B -> ColH X Y C -> ColH A B C.
Global Instance Hilbert_is_a_Col_theory : (Col_theory Point ColH).