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.

Lemma congH_perms : forall A B C D,
A<>B -> C<>D ->
CongH A B C D ->
(CongH B A C D /\ CongH A B D C /\ CongH C D A B /\
CongH D C A B /\ CongH C D B A /\ CongH D C B A /\ CongH B A D C).