Collinearity

This is part of a series of modules which prove a variety of geometrical theorems starting with Tarski's axioms for geometry. We follow the formalization of Julien Narboux which itself closely follows a treatise by Schwabhäuser, Szmielew, and Tarski.

We import the theorems of propositional logic and predicate logic, and the geometry results so far and define some variables:  import (CLASSICAL Interface:Classical_propositional_calculus ) import (FIRSTORDER Interface:First-order_logic_with_quantifiability (CLASSICAL) ) import (START Interface:Triangle_congruence (CLASSICAL FIRSTORDER) )

var (formula φ) var (point x y z w u v A B C D E P Q A′ B′ C′ D′ B″ C″) var (point x′ y′ z′ w′ u′) var (point x0 x1 x2 x3 y0 y1 y2 y3) var (variable a b b′ c c′ d′ b″ c″) 

Collinearity
To say that three points are collinear is just to say that one of them is between the other two (in any order).  def ((collinear x y z) (((between x y z) ∨ (between y z x)) ∨ (between z x y)))

thm (BetweennessCollinearity  ((between x y z) → (collinear x y z)) ( (between x y z) (between y z x) DisjunctionRightIntroduction ((between x y z) ∨ (between y z x)) (between z x y)         DisjunctionRightIntroduction applySyllogism )) 

Permutations
One way to express the "in any order" concept is to provide permutation theorems. The first is rotation:.  thm (CollinearityRotation  ((collinear x y z) ↔ (collinear y z x)) ( (between x y z) (between y z x) (between z x y) DisjunctionAssociativity

(between x y z) ((between y z x) ∨ (between z x y)) DisjunctionCommutativity

applyBiconditionalTransitivity )) 

The next permutation swaps the second and third points.  thm (Collinearity23  ((collinear x y z) ↔ (collinear x z y)) (  The proof starts with  and.  x y z BetweennessSymmetry y z x BetweennessSymmetry  We combine those and switch the order to get.  buildDisjunction

(between z y x) (between x z y) DisjunctionCommutativity applyBiconditionalTransitivity  Combining that with  finishes the task.  z x y BetweennessSymmetry buildDisjunction )) 

To swap the first and second points, we rotate and then swap the second and third points.  thm (Collinearity12  ((collinear x y z) ↔ (collinear y x z)) ( x y z CollinearityRotation y z x Collinearity23 applyBiconditionalTransitivity )) 

To swap the first and third points, we rotate and then swap the first and second points.  thm (Collinearity13  ((collinear x y z) ↔ (collinear z y x)) ( x y z CollinearityRotation y z x Collinearity12 applyBiconditionalTransitivity )) </jh>

Collinearity of a point, itself, and another point
A point is collinear with itself and any second point. That is,, and likewise for any other order of the three points.  thm (CollinearityAAB  (collinear A A B) ( B A BetweenABB ((between A A B) ∨ (between A B A)) introduceLeftDisjunction ))

thm (CollinearityABB  (collinear A B B) ( B A CollinearityAAB

B B A Collinearity13 eliminateBiconditionalReverse applyModusPonens ))

thm (CollinearityABA  (collinear A B A) ( A B CollinearityAAB

A A B Collinearity23 eliminateBiconditionalReverse applyModusPonens )) </jh>

Collinearity and degenerate congruent triangles
The analogue to  also holds for collinearity.  thm (CollinearityDegenerateTriangle   (((collinear A B C) ∧ (A B C ≅ A′ B′ C′)) → (collinear A′ B′ C′)) ( </jh> The proof just consists of expanding  into a disjunction of three betweenness formulas, and applying   three times.

We start with  and   cases.  composeDisjunction </jh> The proof of the  case,. This is an analogue to  but for collinearity rather than betweenness.

There are three cases, corresponding to the three betweenness predicates which make up the definition of.

The first lemma is basically predicate logic. It enables us to move the two antecedents inside the quantifier.  thm (CollinearityConstructDegenerateTriangle-1 ((c′ x) (c′ y) (c′ z) (c′ A) (c′ B) (c′ A′) (c′ B′))  ((H (∃ c′ φ)))  (((between x y z) ∧ (A B ≡ A′ B′)) → (∃ c′ ((between x y z) ∧ ((A B ≡ A′ B′) ∧ φ)))) ( (A B ≡ A′ B′) ImplicationReflexivity H       (A B ≡ A′ B′) introduceAntecedent composeConjunction

c′ (A B ≡ A′ B′) φ ThereExistsConjunctionMovement eliminateBiconditionalForward applySyllogism </jh> That gives us. We now need to apply a similar process to  (between x y z) conjoinLL

c′ (between x y z) ((A B ≡ A′ B′) ∧ φ)ThereExistsConjunctionMovement eliminateBiconditionalForward applySyllogism )) </jh> The next few lemmas form the bulk of the  case. Extend  to a point   such that. Between that congruence and, we can conclude. Those three congruences are what we need for.  thm (CollinearityConstructDegenerateTriangle-abc-bc   (((between A B C) ∧ ((A B ≡ A′ B′) ∧ ((between A′ B′ C′) ∧ (B′ C′ ≡ B C)))) → (B C ≡ B′ C′)) ( (between A B C) ((A B ≡ A′ B′) ∧ ((between A′ B′ C′) ∧ (B′ C′ ≡ B C))) ConjunctionLeftElimination eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent

swapCongruenceInConsequent ))

thm (CollinearityConstructDegenerateTriangle-abc-ac   (((between A B C) ∧ ((A B ≡ A′ B′) ∧ ((between A′ B′ C′) ∧ (B′ C′ ≡ B C)))) → (A C ≡ A′ C′)) ( </jh> The proof is an application of. First we need.  (between A B C) ((A B ≡ A′ B′) ∧ ((between A′ B′ C′) ∧ (B′ C′ ≡ B C))) ConjunctionRightElimination </jh> Next,.  (between A B C) ((A B ≡ A′ B′) ∧ ((between A′ B′ C′) ∧ (B′ C′ ≡ B C))) ConjunctionLeftElimination eliminateLeftConjunctInConsequent eliminateRightConjunctInConsequent

composeConjunction </jh> We need two congruences. The first is.  (between A B C) ((A B ≡ A′ B′) ∧ ((between A′ B′ C′) ∧ (B′ C′ ≡ B C))) ConjunctionLeftElimination eliminateRightConjunctInConsequent

composeConjunction </jh> The other is.  A B C A′ B′ C′ CollinearityConstructDegenerateTriangle-abc-bc

composeConjunction </jh> We can now apply outer three segment.  A B C A′ B′ C′ OuterThreeSegment applySyllogism ))

thm (CollinearityConstructDegenerateTriangle-abc-core   (((between A B C) ∧ ((A B ≡ A′ B′) ∧ ((between A′ B′ C′) ∧ (B′ C′ ≡ B C)))) → (A B C ≅ A′ B′ C′)) ( (between A B C) ((A B ≡ A′ B′) ∧ ((between A′ B′ C′) ∧ (B′ C′ ≡ B C))) ConjunctionLeftElimination eliminateRightConjunctInConsequent

A B C A′ B′ C′ CollinearityConstructDegenerateTriangle-abc-ac composeConjunction

A B C A′ B′ C′ CollinearityConstructDegenerateTriangle-abc-bc composeConjunction ))

thm (CollinearityConstructDegenerateTriangle-abc ((c′ A) (c′ B) (c′ C) (c′ A′) (c′ B′))   ((between A B C) → ((A B ≡ A′ B′) → (∃ c′ (A B C ≅ A′ B′ (value c′))))) ( c′ A′ B′ B C SegmentConstruction A B C A B A′ B′ CollinearityConstructDegenerateTriangle-1

A B C A′ B′ (value c′) CollinearityConstructDegenerateTriangle-abc-core c′ addThereExists applySyllogism

export ))

</jh> The second case,, is similar. Extend  to a point   such that. Between that congruence and, we can conclude. Those three congruences are what we need for.  thm (CollinearityConstructDegenerateTriangle-cab-ac   (((between C A B) ∧ ((A B ≡ A′ B′) ∧ ((between B′ A′ C′) ∧ (A′ C′ ≡ A C)))) → (A C ≡ A′ C′)) ( (between C A B) ((A B ≡ A′ B′) ∧ ((between B′ A′ C′) ∧ (A′ C′ ≡ A C))) ConjunctionLeftElimination eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent

swapCongruenceInConsequent ))

thm (CollinearityConstructDegenerateTriangle-cab-bc   (((between C A B) ∧ ((A B ≡ A′ B′) ∧ ((between B′ A′ C′) ∧ (A′ C′ ≡ A C)))) → (B C ≡ B′ C′)) ( </jh> The proof is an application of. First we need.  (between C A B) ((A B ≡ A′ B′) ∧ ((between B′ A′ C′) ∧ (A′ C′ ≡ A C))) ConjunctionRightElimination </jh> Next,.  (between C A B) ((A B ≡ A′ B′) ∧ ((between B′ A′ C′) ∧ (A′ C′ ≡ A C))) ConjunctionLeftElimination eliminateLeftConjunctInConsequent eliminateRightConjunctInConsequent

swapBetweennessInConsequent

composeConjunction </jh> We need two congruences. The first is.  C A B A′ B′ C′ CollinearityConstructDegenerateTriangle-cab-ac

commuteCongruenceInConsequent

composeConjunction </jh> The other is. <jh> (between C A B) ((A B ≡ A′ B′) ∧ ((between B′ A′ C′) ∧ (A′ C′ ≡ A C))) ConjunctionLeftElimination eliminateRightConjunctInConsequent

composeConjunction </jh> We can now apply outer three segment. <jh> C A B C′ A′ B′ OuterThreeSegment applySyllogism

commuteCongruenceInConsequent ))

thm (CollinearityConstructDegenerateTriangle-cab-core   (((between C A B) ∧ ((A B ≡ A′ B′) ∧ ((between B′ A′ C′) ∧ (A′ C′ ≡ A C)))) → (A B C ≅ A′ B′ C′)) ( (between C A B) ((A B ≡ A′ B′) ∧ ((between B′ A′ C′) ∧ (A′ C′ ≡ A C))) ConjunctionLeftElimination eliminateRightConjunctInConsequent

C A B A′ B′ C′ CollinearityConstructDegenerateTriangle-cab-ac composeConjunction

C A B A′ B′ C′ CollinearityConstructDegenerateTriangle-cab-bc composeConjunction ))

thm (CollinearityConstructDegenerateTriangle-cab ((c′ A) (c′ B) (c′ C) (c′ A′) (c′ B′))   ((between C A B) → ((A B ≡ A′ B′) → (∃ c′ (A B C ≅ A′ B′ (value c′))))) ( c′ B′ A′ A C SegmentConstruction C A B A B A′ B′ CollinearityConstructDegenerateTriangle-1

C A B A′ B′ (value c′) CollinearityConstructDegenerateTriangle-cab-core c′ addThereExists applySyllogism

export )) </jh> The  case is a consequence of. <jh> thm (CollinearityConstructDegenerateTriangle-bca ((c′ A) (c′ B) (c′ C) (c′ A′) (c′ B′))   ((between B C A) → ((A B ≡ A′ B′) → (∃ c′ (A B C ≅ A′ B′ (value c′))))) ( A B A′ B′ CongruenceCommutativity eliminateBiconditionalReverse (between B C A) conjoinLL

B C A B′ A′ c′ InnerDegenerateTriangle applySyllogism

(between B′ (value c′) A′) (B C A ≅ B′ (value c′) A′) ConjunctionLeftElimination c′ addThereExists applySyllogism

A B C A′ B′ (value c′) CongruenceRotation eliminateBiconditionalForward c′ addThereExists applySyllogism

export ))

thm (CollinearityConstructDegenerateTriangle ((c′ A) (c′ B) (c′ C) (c′ A′) (c′ B′)) (((collinear A B C) ∧ (A B ≡ A′ B′)) → (∃ c′ (A B C ≅ A′ B′ (value c′)))) ( A B C A′ B′ c′ CollinearityConstructDegenerateTriangle-abc B C A A′ B′ c′ CollinearityConstructDegenerateTriangle-bca composeDisjunction

C A B A′ B′ c′ CollinearityConstructDegenerateTriangle-cab composeDisjunction

import )) </jh>

Five segment
This five segment theorem combines inner and outer five segment. It is. The illustrations show the inner and outer cases. ,, and   correspond to  ,  , and   but can be in any order (as long as   and   are the ones with known congruences). corresponds to.

We prove the result separately for each of the three betweenness relationships which make up the definition of. Each of those proofs is just a matter of applying either inner or outer five segment, so it is just a matter of rearranging the many conjuncts which make up the antecedent of each theorem. The first bunch of lemmas are for those rearrangements. <jh> var (formula p q r s t) thm (FiveSegment-anotb  ((p ∧ ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′))) → (A ≠ B)) ( p ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) ConjunctionLeftElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent ))

thm (FiveSegment-ab  ((p ∧ ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′))) → (A B ≡ A′ B′)) ( p ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) ConjunctionLeftElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

A B C A′ B′ C′       Congruence12 applySyllogism ))

thm (FiveSegment-bc  ((p ∧ ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′))) → (B C ≡ B′ C′)) ( p ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) ConjunctionLeftElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

A B C A′ B′ C′       Congruence23 applySyllogism ))

thm (FiveSegment-ad  ((p ∧ ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′))) → (A D ≡ A′ D′)) ( p ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) ConjunctionLeftElimination eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent ))

thm (FiveSegment-bd  ((p ∧ ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′))) → (B D ≡ B′ D′)) ( p ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) ConjunctionLeftElimination eliminateLeftConjunctInConsequent ))

thm (FiveSegment-abcabc  (((between A B C) ∧ ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′))) → (between A′ B′ C′)) ( (between A B C) ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) ConjunctionRightElimination

(between A B C) ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) ConjunctionLeftElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent composeConjunction

A B C A′ B′ C′ BetweennessDegenerateTriangle applySyllogism ))

thm (FiveSegment-abc  ((between A B C) → (((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) → (C D ≡ C′ D′))) ( (between A B C) A B C A′ B′ C′ D D′ FiveSegment-anotb

(between A B C) ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) ConjunctionRightElimination composeConjunction

A B C A′ B′ C′ D D′ FiveSegment-abcabc composeConjunction

(between A B C) A B C A′ B′ C′ D D′ FiveSegment-ab composeConjunction

(between A B C) A B C A′ B′ C′ D D′ FiveSegment-bc composeConjunction

(between A B C) A B C A′ B′ C′ D D′ FiveSegment-ad composeConjunction

(between A B C) A B C A′ B′ C′ D D′ FiveSegment-bd composeConjunction

A B C A′ B′ C′ D D′ OuterFiveSegment applySyllogism

export ))

thm (FiveSegment-bcabca  (((between B C A) ∧ ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′))) → (between B′ C′ A′)) ( (between B C A) ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) ConjunctionRightElimination

(between B C A) ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) ConjunctionLeftElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

A B C A′ B′ C′ CongruenceRotation eliminateBiconditionalReverse applySyllogism

composeConjunction

B C A B′ C′ A′ BetweennessDegenerateTriangle applySyllogism ))

thm (FiveSegment-ca  ((p ∧ ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′))) → (C A ≡ C′ A′)) ( p ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) ConjunctionLeftElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

A B C A′ B′ C′       Congruence13 applySyllogism

A C A′ C′ CongruenceCommutativity eliminateBiconditionalReverse applySyllogism ))

thm (FiveSegment-bca  ((between B C A) → (((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) → (C D ≡ C′ D′))) ( (between B C A) ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) ConjunctionRightElimination

B C A A′ B′ C′ D D′ FiveSegment-bcabca composeConjunction

(between B C A) A B C A′ B′ C′ D D′ FiveSegment-ab A B A′ B′ CongruenceCommutativity eliminateBiconditionalReverse applySyllogism composeConjunction

(between B C A) A B C A′ B′ C′ D D′ FiveSegment-ca composeConjunction

(between B C A) A B C A′ B′ C′ D D′ FiveSegment-bd composeConjunction

(between B C A) A B C A′ B′ C′ D D′ FiveSegment-ad composeConjunction

B C A B′ C′ A′ D D′ InnerFiveSegment applySyllogism

export )) </jh> The third case is  but due to the way that   is written, we need to write it as   instead. <jh> thm (FiveSegment-bacbac  (((between B A C) ∧ ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′))) → (between B′ A′ C′)) ( (between B A C) ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) ConjunctionRightElimination B A C BetweennessSymmetry eliminateBiconditionalReverse applySyllogism

(between B A C) ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) ConjunctionLeftElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

C A B C′ A′ B′ CongruenceRotation eliminateBiconditionalForward applySyllogism

composeConjunction

C A B C′ A′ B′ BetweennessDegenerateTriangle applySyllogism

C′ A′ B′ BetweennessSymmetry eliminateBiconditionalReverse applySyllogism ))

thm (FiveSegment-bac  ((between B A C) → (((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) → (C D ≡ C′ D′))) ( (between B A C) A B C A′ B′ C′ D D′ FiveSegment-anotb A B EqualitySymmetry addNegation eliminateBiconditionalReverse applySyllogism

(between B A C) ((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) ConjunctionRightElimination composeConjunction

B A C A′ B′ C′ D D′ FiveSegment-bacbac composeConjunction

(between B A C) A B C A′ B′ C′ D D′ FiveSegment-ab commuteCongruenceInConsequent composeConjunction

(between B A C) A B C A′ B′ C′ D D′ FiveSegment-ca commuteCongruenceInConsequent composeConjunction

(between B A C) A B C A′ B′ C′ D D′ FiveSegment-bd composeConjunction

(between B A C) A B C A′ B′ C′ D D′ FiveSegment-ad composeConjunction

B A C B′ A′ C′ D D′ OuterFiveSegment applySyllogism

export ))

thm (FiveSegment-cab  ((between C A B) → (((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) → (C D ≡ C′ D′))) ( C A B BetweennessSymmetry eliminateBiconditionalReverse

B A C A′ B′ C′ D D′ FiveSegment-bac

applySyllogism ))

thm (FiveSegment-core  ((collinear A B C) → (((((A ≠ B) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) → (C D ≡ C′ D′))) ( A B C A′ B′ C′ D D′ FiveSegment-abc

B C A A′ B′ C′ D D′ FiveSegment-bca composeDisjunction

C A B A′ B′ C′ D D′ FiveSegment-cab composeDisjunction )) </jh> The only thing remaining is to rearrange the conjuncts in the antecedent. We write the rearrangement as a lemma. <jh> thm (FiveSegment-conjuncts    (((((p ∧ q) ∧ r) ∧ s) ∧ t) → (q ∧ (((p ∧ r) ∧ s) ∧ t))) ( p q ConjunctionCommutativity r buildConjunctionRR s buildConjunctionRR t buildConjunctionRR

q p r ConjunctionAssociativity s buildConjunctionRR t buildConjunctionRR applyBiconditionalTransitivity

q (p ∧ r) s ConjunctionAssociativity t buildConjunctionRR applyBiconditionalTransitivity

q ((p ∧ r) ∧ s) t ConjunctionAssociativity applyBiconditionalTransitivity

eliminateBiconditionalReverse ))

thm (FiveSegment  ((((((A ≠ B) ∧ (collinear A B C)) ∧ (A B C ≅ A′ B′ C′)) ∧ (A D ≡ A′ D′)) ∧ (B D ≡ B′ D′)) → (C D ≡ C′ D′)) ( (A ≠ B) (collinear A B C) (A B C ≅ A′ B′ C′) (A D ≡ A′ D′) (B D ≡ B′ D′) FiveSegment-conjuncts

A B C A′ B′ C′ D D′ FiveSegment-core import

applySyllogism )) </jh>

Points equidistant from two given points
If two given points are equidistant to each of two distinct points on a line, they are equidistant to every point on that line. That is,.

The proof applies  with   as the collinear points for both parts and   and   as the fourth points, respectively. <jh> thm (EquidistantLine   (((((A ≠ B) ∧ (collinear A B C)) ∧ (A P ≡ A Q)) ∧ (B P ≡ B Q)) → (C P ≡ C Q)) ( </jh> : <jh> (((A ≠ B) ∧ (collinear A B C)) ∧ (A P ≡ A Q)) (B P ≡ B Q) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent </jh> : <jh> (((A ≠ B) ∧ (collinear A B C)) ∧ (A P ≡ A Q)) (B P ≡ B Q) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

composeConjunction </jh> : <jh> A B C TriangleCongruenceReflexivity ((((A ≠ B) ∧ (collinear A B C)) ∧ (A P ≡ A Q)) ∧ (B P ≡ B Q)) introduceAntecedent composeConjunction </jh> : <jh> (((A ≠ B) ∧ (collinear A B C)) ∧ (A P ≡ A Q)) (B P ≡ B Q) ConjunctionRightElimination eliminateLeftConjunctInConsequent

composeConjunction </jh> : <jh> (((A ≠ B) ∧ (collinear A B C)) ∧ (A P ≡ A Q)) (B P ≡ B Q) ConjunctionLeftElimination

composeConjunction </jh> Applying five segment is all we need. <jh> A B C A B C P Q FiveSegment applySyllogism )) </jh>

Uniqueness of a point given distances to two collinear points
On a given line, the distance to two distinct points uniquely determines a point. That is,. We prove this by applying  to the line   and the points   and , which gives us. <jh> thm (CollinearTwoDistanceUniqueness   (((((A ≠ B) ∧ (collinear A B C)) ∧ (A C ≡ A C′)) ∧ (B C ≡ B C′)) → (C = C′)) ( A B C C C′ EquidistantLine

C C C′ CongruenceIdentityLeft applySyllogism )) </jh>

A point on a line segment
A point on a line segment is uniquely determined by its distance to the two endpoints. That is,.

We divide the proof into two cases,  and.

The  case is easy;   also equals   and so   implies. <jh> thm (BetweennessTwoDistanceUniqueness-ac  ((A = B) → ((((between A C B) ∧ (A C ≡ A C′)) ∧ (B C ≡ B C′)) → (A = C))) ( (A = B) (((between A C B) ∧ (A C ≡ A C′)) ∧ (B C ≡ B C′)) ConjunctionRightElimination

(A = B) (((between A C B) ∧ (A C ≡ A C′)) ∧ (B C ≡ B C′)) ConjunctionLeftElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent

composeConjunction

A B C IndivisibilityFromEquality applySyllogism

export ))

thm (BetweennessTwoDistanceUniqueness-acprime  ((A = B) → ((((between A C B) ∧ (A C ≡ A C′)) ∧ (B C ≡ B C′)) → (A = C′))) ( A B C C′ BetweennessTwoDistanceUniqueness-ac import (A = B) (((between A C B) ∧ (A C ≡ A C′)) ∧ (B C ≡ B C′)) ConjunctionLeftElimination eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent composeConjunction

A C A C′ CongruenceIdentityFromEquality import applySyllogism

export ))

thm (BetweennessTwoDistanceUniqueness-eq  ((A = B) → ((((between A C B) ∧ (A C ≡ A C′)) ∧ (B C ≡ B C′)) → (C = C′))) ( A B C C′ BetweennessTwoDistanceUniqueness-ac import

A C EqualitySymmetry eliminateBiconditionalReverse applySyllogism

A B C C′ BetweennessTwoDistanceUniqueness-acprime import

composeConjunction

C A C′ EqualityTransitivity applySyllogism export )) </jh>

The  case follows easily from.

<jh> thm (BetweennessTwoDistanceUniqueness-ne  ((A ≠ B) → ((((between A C B) ∧ (A C ≡ A C′)) ∧ (B C ≡ B C′)) → (C = C′))) ( </jh> First,. <jh> (A ≠ B) (((between A C B) ∧ (A C ≡ A C′)) ∧ (B C ≡ B C′)) ConjunctionRightElimination </jh> Next, <jh> (A ≠ B) (((between A C B) ∧ (A C ≡ A C′)) ∧ (B C ≡ B C′)) ConjunctionLeftElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent

A C B BetweennessCollinearity applySyllogism

A C B Collinearity23 eliminateBiconditionalReverse applySyllogism

composeConjunction </jh> Next, <jh> (A ≠ B) (((between A C B) ∧ (A C ≡ A C′)) ∧ (B C ≡ B C′)) ConjunctionLeftElimination eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

composeConjunction </jh> Lastly, <jh> (A ≠ B) (((between A C B) ∧ (A C ≡ A C′)) ∧ (B C ≡ B C′)) ConjunctionLeftElimination eliminateLeftConjunctInConsequent

composeConjunction

</jh> We apply the collinearity two distance uniqueness theorem and export. <jh> A B C C′ CollinearTwoDistanceUniqueness applySyllogism

export )) </jh>

We can now assemble the theorem. <jh> thm (BetweennessTwoDistanceUniqueness  ((((between A C B) ∧ (A C ≡ A C′)) ∧ (B C ≡ B C′)) → (C = C′)) ( A B C C′ BetweennessTwoDistanceUniqueness-eq A B C C′ BetweennessTwoDistanceUniqueness-ne eliminateCases )) </jh>

Export
We now export to Interface:Collinearity. <jh> export (RESULTS Interface:Collinearity (CLASSICAL FIRSTORDER) ) </jh>