Library GeoCoq.Elements.OriginalProofs.lemma_angletrichotomy
Require Export GeoCoq.Elements.OriginalProofs.lemma_angleordertransitive.
Require Export GeoCoq.Elements.OriginalProofs.lemma_sameside2.
Require Export GeoCoq.Elements.OriginalProofs.proposition_07.
Section Euclid.
Context `{Ax:euclidean_neutral_ruler_compass}.
Lemma lemma_angletrichotomy :
∀ A B C D E F,
LtA A B C D E F →
¬ LtA D E F A B C.
Proof.
intros.
assert (¬ LtA D E F A B C).
{
intro.
assert (LtA A B C A B C) by (conclude lemma_angleordertransitive).
rename_H H;let Tf:=fresh in
assert (Tf:∃ G H J, (BetS G H J ∧ Out B A G ∧ Out B C J ∧ CongA A B C A B H)) by (conclude_def LtA );destruct Tf as [G[H[J]]];spliter.
let Tf:=fresh in
assert (Tf:∃ U V u v, (Out B A U ∧ Out B C V ∧ Out B A u ∧ Out B H v ∧ Cong B U B u ∧ Cong B V B v ∧ Cong U V u v ∧ nCol A B C)) by (conclude_def CongA );destruct Tf as [U[V[u[v]]]];spliter.
assert (¬ eq A B).
{
intro.
assert (Col A B C) by (conclude_def Col ).
contradict.
}
assert (neq B A) by (conclude lemma_inequalitysymmetric).
assert (eq U u) by (conclude lemma_layoffunique).
assert (Cong U V U v) by (conclude cn_equalitysub).
assert (Col B A U) by (conclude lemma_rayimpliescollinear).
assert (Col B A G) by (conclude lemma_rayimpliescollinear).
assert (neq G H) by (forward_using lemma_betweennotequal).
assert (neq H G) by (conclude lemma_inequalitysymmetric).
let Tf:=fresh in
assert (Tf:∃ P, (BetS H G P ∧ Cong G P H G)) by (conclude postulate_extension);destruct Tf as [P];spliter.
assert (BetS J H G) by (conclude axiom_betweennesssymmetry).
assert (BetS J G P) by (conclude lemma_3_7a).
assert (¬ Col B A J).
{
intro.
assert (Col B C J) by (conclude lemma_rayimpliescollinear).
assert (Col J B A) by (forward_using lemma_collinearorder).
assert (Col J B C) by (forward_using lemma_collinearorder).
assert (neq B J) by (conclude lemma_raystrict).
assert (neq J B) by (conclude lemma_inequalitysymmetric).
assert (Col B A C) by (conclude lemma_collinear4).
assert (Col A B C) by (forward_using lemma_collinearorder).
contradict.
}
assert (TS J B A P) by (conclude_def TS ).
assert (¬ Col B U H).
{
intro.
assert (Col B A U) by (conclude lemma_rayimpliescollinear).
assert (Col U B A) by (forward_using lemma_collinearorder).
assert (Col U B H) by (forward_using lemma_collinearorder).
assert (neq B U) by (conclude lemma_raystrict).
assert (neq U B) by (conclude lemma_inequalitysymmetric).
assert (Col B A H) by (conclude lemma_collinear4).
assert (Col G H J) by (conclude_def Col ).
assert (Col A B G) by (forward_using lemma_collinearorder).
assert (Col A B H) by (forward_using lemma_collinearorder).
assert (Col B G H) by (conclude lemma_collinear4).
assert (Col G H B) by (forward_using lemma_collinearorder).
assert (Col G H J) by (conclude_def Col ).
assert (neq G H) by (forward_using lemma_betweennotequal).
assert (Col H B J) by (conclude lemma_collinear4).
assert (Col H B A) by (forward_using lemma_collinearorder).
assert (¬ neq H B).
{
intro.
assert (Col B J A) by (conclude lemma_collinear4).
assert (Col B A J) by (forward_using lemma_collinearorder).
contradict.
}
assert (BetS G B J) by (conclude cn_equalitysub).
assert (Col G B J) by (conclude_def Col ).
assert (Col B G J) by (forward_using lemma_collinearorder).
assert (Col B G A) by (forward_using lemma_collinearorder).
assert (neq B G) by (conclude lemma_raystrict).
assert (Col G J A) by (conclude lemma_collinear4).
assert (Col G J B) by (forward_using lemma_collinearorder).
assert (neq G J) by (forward_using lemma_betweennotequal).
assert (Col J A B) by (conclude lemma_collinear4).
assert (Col B A J) by (forward_using lemma_collinearorder).
contradict.
}
assert (Out B G U) by (conclude lemma_ray3).
assert (Col B G U) by (conclude lemma_rayimpliescollinear).
assert (Col B U G) by (forward_using lemma_collinearorder).
assert (TS H B U P) by (conclude_def TS ).
assert (BetS J H G) by (conclude axiom_betweennesssymmetry).
assert (BetS J G P) by (conclude lemma_3_7a).
assert (¬ Col B U J).
{
intro.
assert (Col B C J) by (conclude lemma_rayimpliescollinear).
assert (Col B J C) by (forward_using lemma_collinearorder).
assert (Col B A U) by (conclude lemma_rayimpliescollinear).
assert (Col U B A) by (forward_using lemma_collinearorder).
assert (Col U B J) by (forward_using lemma_collinearorder).
assert (neq B U) by (conclude lemma_raystrict).
assert (neq U B) by (conclude lemma_inequalitysymmetric).
assert (Col B A J) by (conclude lemma_collinear4).
assert (Col B C J) by (conclude lemma_rayimpliescollinear).
assert (Col J B C) by (forward_using lemma_collinearorder).
assert (Col J B A) by (forward_using lemma_collinearorder).
assert (neq B J) by (conclude lemma_raystrict).
assert (neq J B) by (conclude lemma_inequalitysymmetric).
assert (Col B C A) by (conclude lemma_collinear4).
assert (Col A B C) by (forward_using lemma_collinearorder).
contradict.
}
assert (OS J H B U) by (conclude_def OS ).
assert (OS H J B U) by (forward_using lemma_samesidesymmetric).
assert (Out B J V) by (conclude lemma_ray3).
assert (eq B B) by (conclude cn_equalityreflexive).
assert (Col B B U) by (conclude_def Col ).
assert (OS H V B U) by (conclude lemma_sameside2).
assert (OS V H B U) by (forward_using lemma_samesidesymmetric).
assert (OS V v B U) by (conclude lemma_sameside2).
assert (neq B U) by (conclude lemma_raystrict).
assert (Cong V B v B) by (forward_using lemma_congruenceflip).
assert (Cong V U v U) by (forward_using lemma_congruenceflip).
assert (eq V v) by (conclude proposition_07).
assert (Out B H V) by (conclude cn_equalitysub).
assert (Col B H V) by (conclude lemma_rayimpliescollinear).
assert (Col B J V) by (conclude lemma_rayimpliescollinear).
assert (Col V B J) by (forward_using lemma_collinearorder).
assert (Col V B H) by (forward_using lemma_collinearorder).
assert (neq B V) by (conclude lemma_raystrict).
assert (neq V B) by (conclude lemma_inequalitysymmetric).
assert (Col B J H) by (conclude lemma_collinear4).
assert (Col G H J) by (conclude_def Col ).
assert (Col H J B) by (forward_using lemma_collinearorder).
assert (Col H J G) by (forward_using lemma_collinearorder).
assert (neq J H) by (forward_using lemma_betweennotequal).
assert (neq H J) by (conclude lemma_inequalitysymmetric).
assert (Col J B G) by (conclude lemma_collinear4).
assert (Col B C J) by (conclude lemma_rayimpliescollinear).
assert (Col J B C) by (forward_using lemma_collinearorder).
assert (neq B J) by (conclude lemma_raystrict).
assert (neq J B) by (conclude lemma_inequalitysymmetric).
assert (Col B G C) by (conclude lemma_collinear4).
assert (Col G B C) by (forward_using lemma_collinearorder).
assert (Col B A G) by (conclude lemma_rayimpliescollinear).
assert (Col G B A) by (forward_using lemma_collinearorder).
assert (neq B G) by (conclude lemma_raystrict).
assert (neq G B) by (conclude lemma_inequalitysymmetric).
assert (Col B C A) by (conclude lemma_collinear4).
assert (Col A B C) by (forward_using lemma_collinearorder).
contradict.
}
close.
Qed.
End Euclid.
Require Export GeoCoq.Elements.OriginalProofs.lemma_sameside2.
Require Export GeoCoq.Elements.OriginalProofs.proposition_07.
Section Euclid.
Context `{Ax:euclidean_neutral_ruler_compass}.
Lemma lemma_angletrichotomy :
∀ A B C D E F,
LtA A B C D E F →
¬ LtA D E F A B C.
Proof.
intros.
assert (¬ LtA D E F A B C).
{
intro.
assert (LtA A B C A B C) by (conclude lemma_angleordertransitive).
rename_H H;let Tf:=fresh in
assert (Tf:∃ G H J, (BetS G H J ∧ Out B A G ∧ Out B C J ∧ CongA A B C A B H)) by (conclude_def LtA );destruct Tf as [G[H[J]]];spliter.
let Tf:=fresh in
assert (Tf:∃ U V u v, (Out B A U ∧ Out B C V ∧ Out B A u ∧ Out B H v ∧ Cong B U B u ∧ Cong B V B v ∧ Cong U V u v ∧ nCol A B C)) by (conclude_def CongA );destruct Tf as [U[V[u[v]]]];spliter.
assert (¬ eq A B).
{
intro.
assert (Col A B C) by (conclude_def Col ).
contradict.
}
assert (neq B A) by (conclude lemma_inequalitysymmetric).
assert (eq U u) by (conclude lemma_layoffunique).
assert (Cong U V U v) by (conclude cn_equalitysub).
assert (Col B A U) by (conclude lemma_rayimpliescollinear).
assert (Col B A G) by (conclude lemma_rayimpliescollinear).
assert (neq G H) by (forward_using lemma_betweennotequal).
assert (neq H G) by (conclude lemma_inequalitysymmetric).
let Tf:=fresh in
assert (Tf:∃ P, (BetS H G P ∧ Cong G P H G)) by (conclude postulate_extension);destruct Tf as [P];spliter.
assert (BetS J H G) by (conclude axiom_betweennesssymmetry).
assert (BetS J G P) by (conclude lemma_3_7a).
assert (¬ Col B A J).
{
intro.
assert (Col B C J) by (conclude lemma_rayimpliescollinear).
assert (Col J B A) by (forward_using lemma_collinearorder).
assert (Col J B C) by (forward_using lemma_collinearorder).
assert (neq B J) by (conclude lemma_raystrict).
assert (neq J B) by (conclude lemma_inequalitysymmetric).
assert (Col B A C) by (conclude lemma_collinear4).
assert (Col A B C) by (forward_using lemma_collinearorder).
contradict.
}
assert (TS J B A P) by (conclude_def TS ).
assert (¬ Col B U H).
{
intro.
assert (Col B A U) by (conclude lemma_rayimpliescollinear).
assert (Col U B A) by (forward_using lemma_collinearorder).
assert (Col U B H) by (forward_using lemma_collinearorder).
assert (neq B U) by (conclude lemma_raystrict).
assert (neq U B) by (conclude lemma_inequalitysymmetric).
assert (Col B A H) by (conclude lemma_collinear4).
assert (Col G H J) by (conclude_def Col ).
assert (Col A B G) by (forward_using lemma_collinearorder).
assert (Col A B H) by (forward_using lemma_collinearorder).
assert (Col B G H) by (conclude lemma_collinear4).
assert (Col G H B) by (forward_using lemma_collinearorder).
assert (Col G H J) by (conclude_def Col ).
assert (neq G H) by (forward_using lemma_betweennotequal).
assert (Col H B J) by (conclude lemma_collinear4).
assert (Col H B A) by (forward_using lemma_collinearorder).
assert (¬ neq H B).
{
intro.
assert (Col B J A) by (conclude lemma_collinear4).
assert (Col B A J) by (forward_using lemma_collinearorder).
contradict.
}
assert (BetS G B J) by (conclude cn_equalitysub).
assert (Col G B J) by (conclude_def Col ).
assert (Col B G J) by (forward_using lemma_collinearorder).
assert (Col B G A) by (forward_using lemma_collinearorder).
assert (neq B G) by (conclude lemma_raystrict).
assert (Col G J A) by (conclude lemma_collinear4).
assert (Col G J B) by (forward_using lemma_collinearorder).
assert (neq G J) by (forward_using lemma_betweennotequal).
assert (Col J A B) by (conclude lemma_collinear4).
assert (Col B A J) by (forward_using lemma_collinearorder).
contradict.
}
assert (Out B G U) by (conclude lemma_ray3).
assert (Col B G U) by (conclude lemma_rayimpliescollinear).
assert (Col B U G) by (forward_using lemma_collinearorder).
assert (TS H B U P) by (conclude_def TS ).
assert (BetS J H G) by (conclude axiom_betweennesssymmetry).
assert (BetS J G P) by (conclude lemma_3_7a).
assert (¬ Col B U J).
{
intro.
assert (Col B C J) by (conclude lemma_rayimpliescollinear).
assert (Col B J C) by (forward_using lemma_collinearorder).
assert (Col B A U) by (conclude lemma_rayimpliescollinear).
assert (Col U B A) by (forward_using lemma_collinearorder).
assert (Col U B J) by (forward_using lemma_collinearorder).
assert (neq B U) by (conclude lemma_raystrict).
assert (neq U B) by (conclude lemma_inequalitysymmetric).
assert (Col B A J) by (conclude lemma_collinear4).
assert (Col B C J) by (conclude lemma_rayimpliescollinear).
assert (Col J B C) by (forward_using lemma_collinearorder).
assert (Col J B A) by (forward_using lemma_collinearorder).
assert (neq B J) by (conclude lemma_raystrict).
assert (neq J B) by (conclude lemma_inequalitysymmetric).
assert (Col B C A) by (conclude lemma_collinear4).
assert (Col A B C) by (forward_using lemma_collinearorder).
contradict.
}
assert (OS J H B U) by (conclude_def OS ).
assert (OS H J B U) by (forward_using lemma_samesidesymmetric).
assert (Out B J V) by (conclude lemma_ray3).
assert (eq B B) by (conclude cn_equalityreflexive).
assert (Col B B U) by (conclude_def Col ).
assert (OS H V B U) by (conclude lemma_sameside2).
assert (OS V H B U) by (forward_using lemma_samesidesymmetric).
assert (OS V v B U) by (conclude lemma_sameside2).
assert (neq B U) by (conclude lemma_raystrict).
assert (Cong V B v B) by (forward_using lemma_congruenceflip).
assert (Cong V U v U) by (forward_using lemma_congruenceflip).
assert (eq V v) by (conclude proposition_07).
assert (Out B H V) by (conclude cn_equalitysub).
assert (Col B H V) by (conclude lemma_rayimpliescollinear).
assert (Col B J V) by (conclude lemma_rayimpliescollinear).
assert (Col V B J) by (forward_using lemma_collinearorder).
assert (Col V B H) by (forward_using lemma_collinearorder).
assert (neq B V) by (conclude lemma_raystrict).
assert (neq V B) by (conclude lemma_inequalitysymmetric).
assert (Col B J H) by (conclude lemma_collinear4).
assert (Col G H J) by (conclude_def Col ).
assert (Col H J B) by (forward_using lemma_collinearorder).
assert (Col H J G) by (forward_using lemma_collinearorder).
assert (neq J H) by (forward_using lemma_betweennotequal).
assert (neq H J) by (conclude lemma_inequalitysymmetric).
assert (Col J B G) by (conclude lemma_collinear4).
assert (Col B C J) by (conclude lemma_rayimpliescollinear).
assert (Col J B C) by (forward_using lemma_collinearorder).
assert (neq B J) by (conclude lemma_raystrict).
assert (neq J B) by (conclude lemma_inequalitysymmetric).
assert (Col B G C) by (conclude lemma_collinear4).
assert (Col G B C) by (forward_using lemma_collinearorder).
assert (Col B A G) by (conclude lemma_rayimpliescollinear).
assert (Col G B A) by (forward_using lemma_collinearorder).
assert (neq B G) by (conclude lemma_raystrict).
assert (neq G B) by (conclude lemma_inequalitysymmetric).
assert (Col B C A) by (conclude lemma_collinear4).
assert (Col A B C) by (forward_using lemma_collinearorder).
contradict.
}
close.
Qed.
End Euclid.