Library GeoCoq.Elements.OriginalProofs.lemma_layoffunique
Require Export GeoCoq.Elements.OriginalProofs.lemma_ray1.
Require Export GeoCoq.Elements.OriginalProofs.lemma_differenceofparts.
Require Export GeoCoq.Elements.OriginalProofs.lemma_interior5.
Require Export GeoCoq.Elements.OriginalProofs.lemma_partnotequalwhole.
Require Export GeoCoq.Elements.OriginalProofs.lemma_3_6b.
Section Euclid.
Context `{Ax1:euclidean_neutral}.
Lemma lemma_layoffunique :
∀ A B C D,
Out A B C → Out A B D → Cong A C A D →
eq C D.
Proof.
intros.
assert (Cong A D A C) by (conclude lemma_congruencesymmetric).
assert ((BetS A C B ∨ eq B C ∨ BetS A B C)) by (conclude lemma_ray1).
assert ((BetS A D B ∨ eq B D ∨ BetS A B D)) by (conclude lemma_ray1).
assert (Cong A B A B) by (conclude cn_congruencereflexive).
assert (Cong B C B C) by (conclude cn_congruencereflexive).
assert (Cong C B C B) by (conclude cn_congruencereflexive).
assert (Cong A C A C) by (conclude cn_congruencereflexive).
assert (eq C D).
by cases on (BetS A C B ∨ eq B C ∨ BetS A B C).
{
assert (eq C D).
by cases on (BetS A D B ∨ eq B D ∨ BetS A B D).
{
assert (Cong C B D B) by (conclude lemma_differenceofparts).
assert (Cong B C B D) by (forward_using lemma_congruenceflip).
assert (Cong C C C D) by (conclude lemma_interior5).
assert (Cong C D C C) by (conclude lemma_congruencesymmetric).
assert (¬ neq C D).
{
intro.
assert (neq C C) by (conclude lemma_nullsegment3).
assert (eq C C) by (conclude cn_equalityreflexive).
contradict.
}
close.
}
{
assert (BetS A C D) by (conclude cn_equalitysub).
assert (¬ neq C D).
{
intro.
assert (¬ Cong A C A D) by (conclude lemma_partnotequalwhole).
contradict.
}
close.
}
{
assert (BetS A C D) by (conclude lemma_3_6b).
assert (¬ neq C D).
{
intro.
assert (¬ Cong A C A D) by (conclude lemma_partnotequalwhole).
contradict.
}
close.
}
close.
}
{
assert (Cong A B A D) by (conclude cn_equalitysub).
assert (Cong A D A B) by (conclude lemma_congruencesymmetric).
assert (eq C D).
by cases on (BetS A D B ∨ eq B D ∨ BetS A B D).
{
assert (¬ neq C D).
{
intro.
assert (¬ Cong A D A B) by (conclude lemma_partnotequalwhole).
contradict.
}
close.
}
{
assert (eq C B) by (conclude lemma_equalitysymmetric).
assert (eq D B) by (conclude lemma_equalitysymmetric).
assert (eq C D) by (conclude cn_equalitytransitive).
close.
}
{
assert (BetS A C D) by (conclude cn_equalitysub).
assert (¬ neq C D).
{
intro.
assert (¬ Cong A C A D) by (conclude lemma_partnotequalwhole).
contradict.
}
close.
}
close.
}
{
assert (eq C D).
by cases on (BetS A D B ∨ eq B D ∨ BetS A B D).
{
assert (BetS A D C) by (conclude lemma_3_6b).
assert (Cong A D A C) by (conclude lemma_congruencesymmetric).
assert (¬ neq C D).
{
intro.
assert (¬ Cong A D A C) by (conclude lemma_partnotequalwhole).
contradict.
}
close.
}
{
assert (BetS A D C) by (conclude cn_equalitysub).
assert (¬ neq C D).
{
intro.
assert (¬ Cong A D A C) by (conclude lemma_partnotequalwhole).
contradict.
}
close.
}
{
assert (neq A B) by (forward_using lemma_betweennotequal).
assert (Cong B C B D) by (conclude lemma_differenceofparts).
assert (eq C D) by (conclude lemma_extensionunique).
close.
}
close.
}
close.
Qed.
End Euclid.
Require Export GeoCoq.Elements.OriginalProofs.lemma_differenceofparts.
Require Export GeoCoq.Elements.OriginalProofs.lemma_interior5.
Require Export GeoCoq.Elements.OriginalProofs.lemma_partnotequalwhole.
Require Export GeoCoq.Elements.OriginalProofs.lemma_3_6b.
Section Euclid.
Context `{Ax1:euclidean_neutral}.
Lemma lemma_layoffunique :
∀ A B C D,
Out A B C → Out A B D → Cong A C A D →
eq C D.
Proof.
intros.
assert (Cong A D A C) by (conclude lemma_congruencesymmetric).
assert ((BetS A C B ∨ eq B C ∨ BetS A B C)) by (conclude lemma_ray1).
assert ((BetS A D B ∨ eq B D ∨ BetS A B D)) by (conclude lemma_ray1).
assert (Cong A B A B) by (conclude cn_congruencereflexive).
assert (Cong B C B C) by (conclude cn_congruencereflexive).
assert (Cong C B C B) by (conclude cn_congruencereflexive).
assert (Cong A C A C) by (conclude cn_congruencereflexive).
assert (eq C D).
by cases on (BetS A C B ∨ eq B C ∨ BetS A B C).
{
assert (eq C D).
by cases on (BetS A D B ∨ eq B D ∨ BetS A B D).
{
assert (Cong C B D B) by (conclude lemma_differenceofparts).
assert (Cong B C B D) by (forward_using lemma_congruenceflip).
assert (Cong C C C D) by (conclude lemma_interior5).
assert (Cong C D C C) by (conclude lemma_congruencesymmetric).
assert (¬ neq C D).
{
intro.
assert (neq C C) by (conclude lemma_nullsegment3).
assert (eq C C) by (conclude cn_equalityreflexive).
contradict.
}
close.
}
{
assert (BetS A C D) by (conclude cn_equalitysub).
assert (¬ neq C D).
{
intro.
assert (¬ Cong A C A D) by (conclude lemma_partnotequalwhole).
contradict.
}
close.
}
{
assert (BetS A C D) by (conclude lemma_3_6b).
assert (¬ neq C D).
{
intro.
assert (¬ Cong A C A D) by (conclude lemma_partnotequalwhole).
contradict.
}
close.
}
close.
}
{
assert (Cong A B A D) by (conclude cn_equalitysub).
assert (Cong A D A B) by (conclude lemma_congruencesymmetric).
assert (eq C D).
by cases on (BetS A D B ∨ eq B D ∨ BetS A B D).
{
assert (¬ neq C D).
{
intro.
assert (¬ Cong A D A B) by (conclude lemma_partnotequalwhole).
contradict.
}
close.
}
{
assert (eq C B) by (conclude lemma_equalitysymmetric).
assert (eq D B) by (conclude lemma_equalitysymmetric).
assert (eq C D) by (conclude cn_equalitytransitive).
close.
}
{
assert (BetS A C D) by (conclude cn_equalitysub).
assert (¬ neq C D).
{
intro.
assert (¬ Cong A C A D) by (conclude lemma_partnotequalwhole).
contradict.
}
close.
}
close.
}
{
assert (eq C D).
by cases on (BetS A D B ∨ eq B D ∨ BetS A B D).
{
assert (BetS A D C) by (conclude lemma_3_6b).
assert (Cong A D A C) by (conclude lemma_congruencesymmetric).
assert (¬ neq C D).
{
intro.
assert (¬ Cong A D A C) by (conclude lemma_partnotequalwhole).
contradict.
}
close.
}
{
assert (BetS A D C) by (conclude cn_equalitysub).
assert (¬ neq C D).
{
intro.
assert (¬ Cong A D A C) by (conclude lemma_partnotequalwhole).
contradict.
}
close.
}
{
assert (neq A B) by (forward_using lemma_betweennotequal).
assert (Cong B C B D) by (conclude lemma_differenceofparts).
assert (eq C D) by (conclude lemma_extensionunique).
close.
}
close.
}
close.
Qed.
End Euclid.