Library GeoCoq.Meta_theory.Parallel_postulates.thales_converse_postulate_thales_existence

Require Import GeoCoq.Axioms.parallel_postulates.
Require Import GeoCoq.Tarski_dev.Annexes.saccheri.

Section thales_converse_postulate_thales_existence.

Context `{T2D:Tarski_2D}.

Lemma thales_converse_postulate__thales_existence : thales_converse_postulate -> existential_thales_postulate.
Proof.
  intro thales.
  destruct lower_dim_ex as [C [A [B0]]].
  assert(HNCol : ~ Col C A B0) by (unfold Col; assumption).
  destruct (l10_15 C A C B0) as [B []]; Col.
  assert(~ Col C A B) by (apply (one_side_not_col123 _ _ _ B0); Side).
  assert(Per A C B) by Perp.
  destruct (midpoint_existence A B) as [M].
  exists A; exists B; exists C; exists M.
  repeat (split; Col).
  apply (thales _ B); Col.
Qed.

End thales_converse_postulate_thales_existence.