Section HilbertContext_2.
Context `{Hi:Hilbert_neutral_dimensionless}.
Definition Cong A B C D := (CongH A B C D /\ A <> B /\ C <> D) \/ (A = B /\ C = D).
(****************** between_identity ************************)
(************************************************************)
(***************************** cong_identity ***********************)
(************************ cong_inner_transitivity ****************************)
intros.
unfold disjoint.
intro.
destruct H0 as [P []].
assert(HP:= betH_trans0 A P B C H0 H).
spliter.
apply between_only_one' in H1.
spliter.
contradiction.
Qed.
Definition Para := fun l m =>
(~ exists X, IncidL X l /\ IncidL X m) /\ exists p, IncidLP l p /\ IncidLP m p.
Definition ParaP := fun A B C D =>
forall l m, IncidL A l -> IncidL B l -> IncidL C m -> IncidL D m -> Para l m.
Definition is_line A B l := A <> B /\ IncidL A l /\ IncidL B l.
intros.
unfold outH in H.
induction H.
apply between_col in H.
auto.
induction H.
apply between_col in H.
Col.
spliter.
subst C.
Col.
Qed.
Global Instance IncidLP_morphisml : Proper(EqL ==> eq ==> iff) IncidLP.
(** Theorem 11 of Hilbert: the angles at the base of an isosceles triangle are congruent *)
intros.
unfold Cong in *.
induction H.
left; intuition.
apply congH_sym.
assumption.
assumption.
right.
tauto.
Qed.
(** First case of congruence of triangles *)
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.

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'.