Section Hilbert_2D_to_Tarski_2D.
Context `{Hi:Hilbert_neutral_dimensionless}.
(** Tarski's betweenness is not strict: *)
Definition Bet A B C := BetH A B C \/ A = B \/ B = C.
(** Hilbert's congruence is 'defined' only for non degenerated segments, while Tarski's segment congruence allows the null segment. *)
Global Instance IncidL_morphism' : Proper(eq ==> EqL ==> iff) IncidL.
Hint Resolve colH_trivial121 colH_trivial122 colH_trivial112 colH_trivial111 colH_permut_231 colH_permut_312 colH_permut_321
colH_permut_213 colH_permut_132 colH_permut_231 : colH.
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.

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.