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].
∃ A; ∃ B; ∃ C; ∃ M.
repeat (split; Col).
apply (thales _ B); Col.
Qed.
End thales_converse_postulate_thales_existence.
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].
∃ A; ∃ B; ∃ C; ∃ M.
repeat (split; Col).
apply (thales _ B); Col.
Qed.
End thales_converse_postulate_thales_existence.