Library GeoCoq.Elements.OriginalProofs.lemma_Playfair
Require Export GeoCoq.Elements.OriginalProofs.lemma_Playfairhelper2.
Section Euclid.
Context `{Ax:euclidean_euclidean}.
Lemma lemma_Playfair :
∀ A B C D E,
Par A B C D → Par A B C E →
Col C D E.
Proof.
intros.
assert (neq A B) by (conclude_def Par ).
assert (neq C D) by (conclude_def Par ).
assert (¬ ¬ (CR A D B C ∨ CR A C B D)).
{
intro.
assert (Par A B D C) by (forward_using lemma_parallelflip).
assert (CR A C D B) by (conclude lemma_crisscross).
let Tf:=fresh in
assert (Tf:∃ p, (BetS A p C ∧ BetS D p B)) by (conclude_def CR );destruct Tf as [p];spliter.
assert (neq D B) by (forward_using lemma_betweennotequal).
assert (neq B D) by (conclude lemma_inequalitysymmetric).
assert (BetS B p D) by (conclude axiom_betweennesssymmetry).
assert (CR A C B D) by (conclude_def CR ).
contradict.
}
assert (Col C D E).
by cases on (CR A D B C ∨ CR A C B D).
{
assert (Col C D E) by (conclude lemma_Playfairhelper2).
close.
}
{
let Tf:=fresh in
assert (Tf:∃ p, (BetS A p C ∧ BetS B p D)) by (conclude_def CR );destruct Tf as [p];spliter.
assert (CR B D A C) by (conclude_def CR ).
assert (Par B A C D) by (forward_using lemma_parallelflip).
assert (Par B A C E) by (forward_using lemma_parallelflip).
assert (Col C D E) by (conclude lemma_Playfairhelper2).
close.
}
close.
Qed.
End Euclid.
Section Euclid.
Context `{Ax:euclidean_euclidean}.
Lemma lemma_Playfair :
∀ A B C D E,
Par A B C D → Par A B C E →
Col C D E.
Proof.
intros.
assert (neq A B) by (conclude_def Par ).
assert (neq C D) by (conclude_def Par ).
assert (¬ ¬ (CR A D B C ∨ CR A C B D)).
{
intro.
assert (Par A B D C) by (forward_using lemma_parallelflip).
assert (CR A C D B) by (conclude lemma_crisscross).
let Tf:=fresh in
assert (Tf:∃ p, (BetS A p C ∧ BetS D p B)) by (conclude_def CR );destruct Tf as [p];spliter.
assert (neq D B) by (forward_using lemma_betweennotequal).
assert (neq B D) by (conclude lemma_inequalitysymmetric).
assert (BetS B p D) by (conclude axiom_betweennesssymmetry).
assert (CR A C B D) by (conclude_def CR ).
contradict.
}
assert (Col C D E).
by cases on (CR A D B C ∨ CR A C B D).
{
assert (Col C D E) by (conclude lemma_Playfairhelper2).
close.
}
{
let Tf:=fresh in
assert (Tf:∃ p, (BetS A p C ∧ BetS B p D)) by (conclude_def CR );destruct Tf as [p];spliter.
assert (CR B D A C) by (conclude_def CR ).
assert (Par B A C D) by (forward_using lemma_parallelflip).
assert (Par B A C E) by (forward_using lemma_parallelflip).
assert (Col C D E) by (conclude lemma_Playfairhelper2).
close.
}
close.
Qed.
End Euclid.