Library GeoCoq.Elements.OriginalProofs.lemma_collinearright
Require Export GeoCoq.Elements.OriginalProofs.lemma_8_2.
Require Export GeoCoq.Elements.OriginalProofs.lemma_8_3.
Section Euclid.
Context `{Ax1:euclidean_neutral}.
Lemma lemma_collinearright :
∀ A B C D,
Per A B D → Col A B C → neq C B →
Per C B D.
Proof.
intros.
assert ((eq A B ∨ eq A C ∨ eq B C ∨ BetS B A C ∨ BetS A B C ∨ BetS A C B)) by (conclude_def Col ).
assert (nCol A B D) by (conclude lemma_rightangleNC).
assert (¬ eq A B).
{
intro.
assert (nCol A A D) by (conclude cn_equalitysub).
assert (eq A A) by (conclude cn_equalityreflexive).
assert (Col D A A) by (conclude_def Col ).
assert (Col A A D) by (forward_using lemma_collinearorder).
contradict.
}
assert (neq B C) by (conclude lemma_inequalitysymmetric).
assert ((eq A B ∨ eq A C ∨ eq B C ∨ BetS B A C ∨ BetS A B C ∨ BetS A C B)) by (conclude_def Col ).
assert (Per D B A) by (conclude lemma_8_2).
assert (Per D B C).
by cases on (eq A B ∨ eq A C ∨ eq B C ∨ BetS B A C ∨ BetS A B C ∨ BetS A C B).
{
assert (¬ ¬ Per D B C).
{
intro.
assert (nCol A B D) by (conclude lemma_rightangleNC).
assert (Col A B D) by (conclude_def Col ).
contradict.
}
close.
}
{
assert (Per D B C) by (conclude cn_equalitysub).
close.
}
{
assert (¬ ¬ Per D B C).
{
intro.
assert (eq C B) by (conclude lemma_equalitysymmetric).
contradict.
}
close.
}
{
assert (neq B A) by (conclude lemma_inequalitysymmetric).
assert (Out B A C) by (conclude lemma_ray4).
assert (Per D B C) by (conclude lemma_8_3).
close.
}
{
let Tf:=fresh in
assert (Tf:∃ E, (BetS A B E ∧ Cong A B E B ∧ Cong A D E D ∧ neq B D)) by (conclude_def Per );destruct Tf as [E];spliter.
assert (BetS E B A) by (conclude axiom_betweennesssymmetry).
assert (Cong E B A B) by (conclude lemma_congruencesymmetric).
assert (Cong E D A D) by (conclude lemma_congruencesymmetric).
assert (Per E B D) by (conclude_def Per ).
assert (Per D B E) by (conclude lemma_8_2).
assert (BetS A B E) by (conclude axiom_betweennesssymmetry).
assert (Out B E C) by (conclude_def Out ).
assert (Per D B C) by (conclude lemma_8_3).
close.
}
{
assert (BetS B C A) by (conclude axiom_betweennesssymmetry).
assert (neq C B) by (forward_using lemma_betweennotequal).
assert (neq B C) by (conclude lemma_inequalitysymmetric).
assert (Out B C A) by (conclude lemma_ray4).
assert (Per D B A) by (conclude lemma_8_2).
assert (Out B A C) by (conclude lemma_ray5).
assert (Per D B C) by (conclude lemma_8_3).
close.
}
assert (Per C B D) by (conclude lemma_8_2).
close.
Qed.
End Euclid.
Require Export GeoCoq.Elements.OriginalProofs.lemma_8_3.
Section Euclid.
Context `{Ax1:euclidean_neutral}.
Lemma lemma_collinearright :
∀ A B C D,
Per A B D → Col A B C → neq C B →
Per C B D.
Proof.
intros.
assert ((eq A B ∨ eq A C ∨ eq B C ∨ BetS B A C ∨ BetS A B C ∨ BetS A C B)) by (conclude_def Col ).
assert (nCol A B D) by (conclude lemma_rightangleNC).
assert (¬ eq A B).
{
intro.
assert (nCol A A D) by (conclude cn_equalitysub).
assert (eq A A) by (conclude cn_equalityreflexive).
assert (Col D A A) by (conclude_def Col ).
assert (Col A A D) by (forward_using lemma_collinearorder).
contradict.
}
assert (neq B C) by (conclude lemma_inequalitysymmetric).
assert ((eq A B ∨ eq A C ∨ eq B C ∨ BetS B A C ∨ BetS A B C ∨ BetS A C B)) by (conclude_def Col ).
assert (Per D B A) by (conclude lemma_8_2).
assert (Per D B C).
by cases on (eq A B ∨ eq A C ∨ eq B C ∨ BetS B A C ∨ BetS A B C ∨ BetS A C B).
{
assert (¬ ¬ Per D B C).
{
intro.
assert (nCol A B D) by (conclude lemma_rightangleNC).
assert (Col A B D) by (conclude_def Col ).
contradict.
}
close.
}
{
assert (Per D B C) by (conclude cn_equalitysub).
close.
}
{
assert (¬ ¬ Per D B C).
{
intro.
assert (eq C B) by (conclude lemma_equalitysymmetric).
contradict.
}
close.
}
{
assert (neq B A) by (conclude lemma_inequalitysymmetric).
assert (Out B A C) by (conclude lemma_ray4).
assert (Per D B C) by (conclude lemma_8_3).
close.
}
{
let Tf:=fresh in
assert (Tf:∃ E, (BetS A B E ∧ Cong A B E B ∧ Cong A D E D ∧ neq B D)) by (conclude_def Per );destruct Tf as [E];spliter.
assert (BetS E B A) by (conclude axiom_betweennesssymmetry).
assert (Cong E B A B) by (conclude lemma_congruencesymmetric).
assert (Cong E D A D) by (conclude lemma_congruencesymmetric).
assert (Per E B D) by (conclude_def Per ).
assert (Per D B E) by (conclude lemma_8_2).
assert (BetS A B E) by (conclude axiom_betweennesssymmetry).
assert (Out B E C) by (conclude_def Out ).
assert (Per D B C) by (conclude lemma_8_3).
close.
}
{
assert (BetS B C A) by (conclude axiom_betweennesssymmetry).
assert (neq C B) by (forward_using lemma_betweennotequal).
assert (neq B C) by (conclude lemma_inequalitysymmetric).
assert (Out B C A) by (conclude lemma_ray4).
assert (Per D B A) by (conclude lemma_8_2).
assert (Out B A C) by (conclude lemma_ray5).
assert (Per D B C) by (conclude lemma_8_3).
close.
}
assert (Per C B D) by (conclude lemma_8_2).
close.
Qed.
End Euclid.