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 th15: forall H K O L H' K' O' L',
~ ColH H O L -> ~ ColH H' O' L' -> ~ ColH K O L -> ~ ColH K' O' L' ->
~ ColH H O K -> ~ ColH H' O' K' ->
(cut' H K O L /\ cut' H' K' O' L') \/ (same_side' H K O L /\ same_side' H' K' O' L') ->
CongaH H O L H' O' L' -> CongaH K O L K' O' L' ->
CongaH H O K H' O' K'.