Library GeoCoq.Meta_theory.Parallel_postulates.par_perp_2_par_par_perp_perp
Require Import GeoCoq.Axioms.parallel_postulates.
Require Import GeoCoq.Tarski_dev.Ch08_orthogonality.
Section par_perp_2_par_par_perp_perp.
Context `{T2D:Tarski_2D}.
Lemma par_perp_2_par_implies_par_perp_perp :
postulate_of_parallelism_of_perpendicular_transversals →
perpendicular_transversal_postulate.
Proof.
intros HPPP A B C D P Q HPar HPerp.
assert (HX := HPerp); destruct HX as [X HX].
elim (Col_dec C D X); intro HCDX.
elim HPar; clear HPar; intro HPar.
exfalso; apply HPar; ∃ X; unfold Perp_at in HX; spliter; Col.
apply perp_sym; apply perp_col2_bis with A B; spliter; Col; Perp.
assert (HY := l8_18_existence C D X HCDX); destruct HY as [Y [HCDY HPerp']].
assert (HPar' : Par P Q X Y) by (apply HPPP with A B C D; assumption).
elim HPar'; clear HPar'; intro HPar'.
exfalso; apply HPar'; ∃ X; unfold Perp_at in HX; spliter; Col.
destruct HPar' as [HPQ [HXY [HCol1 HCol2]]].
apply perp_sym; apply perp_col2 with X Y; Col; Perp.
Qed.
End par_perp_2_par_par_perp_perp.
Require Import GeoCoq.Tarski_dev.Ch08_orthogonality.
Section par_perp_2_par_par_perp_perp.
Context `{T2D:Tarski_2D}.
Lemma par_perp_2_par_implies_par_perp_perp :
postulate_of_parallelism_of_perpendicular_transversals →
perpendicular_transversal_postulate.
Proof.
intros HPPP A B C D P Q HPar HPerp.
assert (HX := HPerp); destruct HX as [X HX].
elim (Col_dec C D X); intro HCDX.
elim HPar; clear HPar; intro HPar.
exfalso; apply HPar; ∃ X; unfold Perp_at in HX; spliter; Col.
apply perp_sym; apply perp_col2_bis with A B; spliter; Col; Perp.
assert (HY := l8_18_existence C D X HCDX); destruct HY as [Y [HCDY HPerp']].
assert (HPar' : Par P Q X Y) by (apply HPPP with A B C D; assumption).
elim HPar'; clear HPar'; intro HPar'.
exfalso; apply HPar'; ∃ X; unfold Perp_at in HX; spliter; Col.
destruct HPar' as [HPQ [HXY [HCol1 HCol2]]].
apply perp_sym; apply perp_col2 with X Y; Col; Perp.
Qed.
End par_perp_2_par_par_perp_perp.