Midpoint

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.

This page proves various results involving the midpoint of a line segment. We don't yet prove the existence of a midpoint (that's in the next chapter).

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:Symmetric_point (CLASSICAL FIRSTORDER) )

var (point A B C D E F M P Q R S X Y Z) var (point A′ B′ C′ D′ E′ M′ P′ Q′ R′ S′ X′ Y′) var (variable a a′ b b′ c c′ d d′ e e′ f p p′ q r r′ x x′ y y′ z) 

Midpoint builder
This is the proposition that equals can be substituted for equals, in the context of. It follows directly from the builders for betweenness and line segment congruence.  thm (MidpointBuilder  ((((M = M′) ∧ (A = A′)) ∧ (B = B′)) → ((M is-midpoint-of A B) ↔ (M′ is-midpoint-of A′ B′))) ( ((M = M′) ∧ (A = A′)) (B = B′) ConjunctionRightElimination eliminateLeftConjunctInConsequent

((M = M′) ∧ (A = A′)) (B = B′) ConjunctionRightElimination eliminateRightConjunctInConsequent composeConjunction

((M = M′) ∧ (A = A′)) (B = B′) ConjunctionLeftElimination composeConjunction

A A′ M M′ B B′ BetweennessBuilder applySyllogism

((M = M′) ∧ (A = A′)) (B = B′) ConjunctionRightElimination eliminateLeftConjunctInConsequent

((M = M′) ∧ (A = A′)) (B = B′) ConjunctionRightElimination eliminateRightConjunctInConsequent composeConjunction

((M = M′) ∧ (A = A′)) (B = B′) ConjunctionRightElimination eliminateRightConjunctInConsequent composeConjunction

((M = M′) ∧ (A = A′)) (B = B′) ConjunctionLeftElimination composeConjunction

A A′ M M′ M M′ B B′ CongruenceBuilder applySyllogism

buildConjunctionInConsequent )) 

Midpoint is unique
The midpoint of a line segment is unique.

To prove it, start with a line segment  which has two midpoints   and. Our aim is to show that. First construct, the symmetric point of   through the point. Because reflecting through a symmetric point preserves distances, the line segments  and   are congruent to   and.

Applying  gives us. And since  is an empty line segment and   is one of its midpoints, then.

To formalize this proof, first we construct the point.  thm (MidpointUniqueness-bprime ((b′ A) (b′ B) (b′ P) (b′ P′))  (((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) → (∃ b′ (((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) ∧ (A is-midpoint-of B (value b′))))) ( ((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) ImplicationReflexivity b′ A B SymmetricPoint introduceRightConjunctToConsequent

moveLeftConjunctIntoThereExistsInConsequent )) 

Because reflecting about the point  preserves distances,.  thm (MidpointUniqueness-p-b-pprime-bprime ((b′ A) (b′ B))  ((((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) ∧ (A is-midpoint-of B B′)) → (P B ≡ P′ B′)) ( ((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) (A is-midpoint-of B B′) ConjunctionRightElimination eliminateRightConjunctInConsequent

((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) (A is-midpoint-of B B′) ConjunctionLeftElimination

composeConjunction

A P P′ B B′ SymmetricPointDistance applySyllogism

swapCongruenceInConsequent )) 

Similarly,.  thm (MidpointUniqueness-pprime-b-p-bprime ((b′ A) (b′ B))  ((((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) ∧ (A is-midpoint-of B B′)) → (P′ B ≡ P B′)) ( ((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) (A is-midpoint-of B B′) ConjunctionRightElimination eliminateRightConjunctInConsequent

((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) (A is-midpoint-of B B′) ConjunctionLeftElimination

A B B′ MidpointSymmetry eliminateBiconditionalReverse applySyllogism

composeConjunction

A P P′ B′ B SymmetricPointDistance applySyllogism ))

thm (MidpointUniqueness-b-bprime ((b′ A) (b′ B))  ((((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) ∧ (A is-midpoint-of B B′)) → (B = B′)) (  In this case  expands to. First is.  ((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) (A is-midpoint-of B B′) ConjunctionRightElimination eliminateLeftConjunctInConsequent eliminateRightConjunctInConsequent  Next is, which we prove via   and.  ((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) (A is-midpoint-of B B′) ConjunctionRightElimination eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent commuteCongruenceRightInConsequent

A P P′ B B′ MidpointUniqueness-pprime-b-p-bprime

composeConjunction P B P′ B P B′ CongruenceTransitivity applySyllogism

composeConjunction  Last is, which we prove via   and.  ((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) (A is-midpoint-of B B′) ConjunctionRightElimination eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent commuteCongruenceRightInConsequent swapCongruenceInConsequent

A P P′ B B′ MidpointUniqueness-p-b-pprime-bprime

composeConjunction P′ B P B P′ B′ CongruenceTransitivity applySyllogism

composeConjunction

P B P′ B′ BetweennessTwoDistanceUniqueness applySyllogism )) 

Because  is between two points which end up being equal (  and  ), we can conclude that.  thm (MidpointUniqueness-a-b-b ((b′ A) (b′ B))  ((((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) ∧ (A is-midpoint-of B B′)) → (A is-midpoint-of B B)) ( A P P′ B B′ MidpointUniqueness-b-bprime

((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) (A is-midpoint-of B B′) ConjunctionLeftElimination composeConjunction

A EqualityReflexivity B EqualityReflexivity A A B B B B′ MidpointBuilder detach2of3 detach1of2 eliminateBiconditionalForwardInConsequent import

applySyllogism ))

thm (MidpointUniqueness-a-b ((b′ A) (b′ B))  ((((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) ∧ (A is-midpoint-of B B′)) → (A = B)) ( A P P′ B B′ MidpointUniqueness-a-b-b A B MidpointIndivisibility applySyllogism ))

thm (MidpointUniqueness ( (b′ A) (b′ B) (b′ P) (b′ P′))  (((A is-midpoint-of P P′) ∧ (B is-midpoint-of P P′)) → (A = B)) ( A P P′ B b′ MidpointUniqueness-bprime

A P P′ B (value b′) MidpointUniqueness-a-b b′ addThereExists applySyllogism

removeThereExistsInConsequent )) </jh>

The equidistant point is the midpoint
A point which is equidistant to the two distinct endpoints of a line segment, and on the same line as them, is the midpoint of that line segment. In symbols,.

There are three cases based on. The first is  which trivially satisfies the definition of midpoint.  thm (EquidistantMidpoint-a-m-b   ((between A M B) → ((M A ≡ M B) →    ((A = B) ∨ (M is-midpoint-of A B)))) ( M A M B CongruenceLeftCommutativity eliminateBiconditionalReverse (between A M B) conjoinLL

(M is-midpoint-of A B) (A = B) DisjunctionLeftIntroduction applySyllogism

export )) </jh>

The second case is. Because  and   are the same distance from , they must be the same point. To formalize this, apply inner three segment to  and , which produces.  thm (EquidistantMidpoint-m-b-a   ((between M B A) → ((M A ≡ M B) →    ((A = B) ∨ (M is-midpoint-of A B)))) ( </jh> Inner three segment needs two betweenness relationships,  (between M B A) (M A ≡ M B) ConjunctionRightElimination swapBetweennessInConsequent </jh> and ,  B M BetweenAAB introduceRightConjunctToConsequent </jh> and two congruences,  (between M B A) (M A ≡ M B) ConjunctionLeftElimination commuteCongruenceInConsequent composeConjunction </jh> and.  B M CongruenceReflexivity introduceRightConjunctToConsequent </jh> The conclusion is ,  A B M B B M InnerThreeSegment applySyllogism </jh> which in turn implies our result.  A B B CongruenceIdentity applySyllogism

(A = B) (M is-midpoint-of A B) DisjunctionRightIntroduction applySyllogism

export )) </jh>

The third case is. Because  and   can be interchanged, it can be proven from the   case.  thm (EquidistantMidpoint-b-a-m   ((between B A M) → ((M A ≡ M B) →    ((A = B) ∨ (M is-midpoint-of A B)))) ( </jh> When invoked with  and   switched,   is. Rearranging we are done.  M A B EquidistantMidpoint-m-b-a

M A B BetweennessSymmetry

M B M A CongruenceSymmetry

B A EqualitySymmetry M B A MidpointSymmetry buildDisjunction

buildImplication

buildImplication

eliminateBiconditionalReverse applyModusPonens )) </jh>

Combining the cases finishes the proof.  thm (EquidistantMidpoint   (((collinear A M B) ∧ (M A ≡ M B)) → ((A = B) ∨ (M is-midpoint-of A B))) ( A M B EquidistantMidpoint-a-m-b M B A EquidistantMidpoint-m-b-a composeDisjunction

B A M EquidistantMidpoint-b-a-m composeDisjunction

import )) </jh>

Diagonals bisect each other
Given a "parallelogram" (that is, a quadrilateral with opposite sides congruent; we haven't yet developed any theory of parallel lines), the diagonals bisect each other.

First we construct a point  which is like   but as far from   as   is from. That is,  thm (ParallelogramDiagonals-pprime ((p′ A) (p′ B) (p′ C) (p′ D) (p′ P))   (((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) → (∃ p′ (((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) ∧ (B D P ≅ D B (value p′))))) ( </jh> Next, we construct, starting with.  (((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧           (A B ≡ C D)) ∧ (B C ≡ D A)) ∧            (collinear A P C)) (collinear B P D)         ConjunctionLeftElimination

B P D Collinearity23 eliminateBiconditionalReverse applySyllogism </jh> The other thing for the construction is.  B D CongruenceABBA introduceRightConjunctToConsequent </jh> This lets us conclude.  B D P D B p′ CollinearityConstructDegenerateTriangle applySyllogism </jh> Now we just need to repeat the formulas from the antecedent and move them inside the quantifier. <jh> repeatAntecedentThereExists )) </jh>

The point  is on the line. The proof is by, which in this case is. <jh> thm (ParallelogramDiagonals-d-b-pprime   ((((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧      (A B ≡ C D)) ∧ (B C ≡ D A)) ∧      (collinear A P C)) ∧ (collinear B P D)) ∧      (B D P ≅ D B P′)) → (collinear D B P′) ) ( </jh> : <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateLeftConjunctInConsequent

B P D Collinearity23 eliminateBiconditionalReverse applySyllogism </jh> : <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionLeftElimination composeConjunction

B D P D B P′ CollinearityDegenerateTriangle applySyllogism ))

</jh> Next is, which we prove by five segment on baselines   and   and points   and. <jh> thm (ParallelogramDiagonals-p-a-pprime-c   ((((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧      (A B ≡ C D)) ∧ (B C ≡ D A)) ∧      (collinear A P C)) ∧ (collinear B P D)) ∧      (B D P ≅ D B P′)) → (P A ≡ P′ C) ) ( </jh> For five segment, we first need. <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent </jh> Next is. <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateLeftConjunctInConsequent

B P D Collinearity23 eliminateBiconditionalReverse applySyllogism

composeConjunction </jh> Next is. <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionLeftElimination composeConjunction </jh> Now we just need two congruences, the first of which is , <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

commuteCongruenceInConsequent composeConjunction </jh> and the second of which is. <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

swapCongruenceInConsequent composeConjunction </jh> Applying five segment we are done. <jh> B D P D B P′ A C FiveSegment applySyllogism ))

</jh> In a very similar manner we prove, with baselines  and   and points   and. <jh> thm (ParallelogramDiagonals-p-c-pprime-a   ((((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧      (A B ≡ C D)) ∧ (B C ≡ D A)) ∧      (collinear A P C)) ∧ (collinear B P D)) ∧      (B D P ≅ D B P′)) → (P C ≡ P′ A) ) ( </jh> : <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent </jh> : <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateLeftConjunctInConsequent

B P D Collinearity23 eliminateBiconditionalReverse applySyllogism

composeConjunction </jh> : <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionLeftElimination composeConjunction </jh> : <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

composeConjunction </jh> : <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

swapCongruenceInConsequent commuteCongruenceInConsequent composeConjunction </jh> Applying five segment we are done. <jh> B D P D B P′ C A FiveSegment applySyllogism ))

</jh> Those two congruences suffice to provide. <jh> thm (ParallelogramDiagonals-a-p-c-c-pprime-a   ((((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧      (A B ≡ C D)) ∧ (B C ≡ D A)) ∧      (collinear A P C)) ∧ (collinear B P D)) ∧      (B D P ≅ D B P′)) → (A P C ≅ C P′ A) ) ( </jh> : <jh> A B C D P P′ ParallelogramDiagonals-p-a-pprime-c commuteCongruenceInConsequent </jh> : <jh> A C CongruenceABBA introduceRightConjunctToConsequent </jh> : <jh> A B C D P P′ ParallelogramDiagonals-p-c-pprime-a composeConjunction )) </jh>

We're ready for. The proof is by, which in this case expands to. <jh> thm (ParallelogramDiagonals-p-pprime   ((((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧      (A B ≡ C D)) ∧ (B C ≡ D A)) ∧      (collinear A P C)) ∧ (collinear B P D)) ∧      (B D P ≅ D B P′)) → (P = P′) ) ( </jh> : <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent

A B C Collinearity23 addNegation eliminateBiconditionalReverse applySyllogism </jh> : <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

composeConjunction </jh> : <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

A P C Collinearity23 eliminateBiconditionalReverse applySyllogism

composeConjunction </jh> Next is. Because,  , and   are collinear and   we can conclude   is also collinear with them. <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

A B C D P P′ ParallelogramDiagonals-a-p-c-c-pprime-a

composeConjunction

A P C C P′ A CollinearityDegenerateTriangle applySyllogism

A C P′ CollinearityRotation eliminateBiconditionalForward applySyllogism

composeConjunction </jh> : <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateLeftConjunctInConsequent

B P D Collinearity23 eliminateBiconditionalReverse applySyllogism

composeConjunction </jh> : <jh> A B C D P P′ ParallelogramDiagonals-d-b-pprime

D B P′ Collinearity12 eliminateBiconditionalReverse applySyllogism

composeConjunction </jh> We are ready to apply. <jh> A C B D P P′ LineIntersection applySyllogism )) </jh>

Now that we have  we are mostly there. The next step is showing

<jh> thm (ParallelogramDiagonals-p-a-c   ((((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧      (A B ≡ C D)) ∧ (B C ≡ D A)) ∧      (collinear A P C)) ∧ (collinear B P D)) ∧      (B D P ≅ D B P′)) → (P is-midpoint-of A C) ) ( </jh> We'll be applying, and first will need. We derive it from <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent

A B CollinearityABA

A EqualityReflexivity B EqualityReflexivity A A B B A C CollinearityBuilder detach2of3 detach1of2

detachImplicationBiconditional

(A = C) (collinear A B C) Transposition eliminateBiconditionalReverse applyModusPonens

applySyllogism </jh> Next we need. <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent </jh> Next is, which follows from   and a substitution. <jh> A B C D P P′ ParallelogramDiagonals-p-a-pprime-c

A B C D P P′ ParallelogramDiagonals-p-pprime

P EqualityReflexivity A EqualityReflexivity C EqualityReflexivity P P A A P P′ C C CongruenceBuilder detach2of2 detach2of3 detach1of2

applySyllogism

eliminateBiconditionalForwardInConsequent applyModusPonensInConsequent

composeConjunction </jh> Now we apply, which first gives us  , <jh> A P C EquidistantMidpoint applySyllogism </jh> and then. <jh> (A = C) (P is-midpoint-of A C) DisjunctionImplication eliminateBiconditionalReverse applySyllogism

applyModusPonensInConsequent )) </jh>

The proof of  is similar. <jh> thm (ParallelogramDiagonals-p-b-d   ((((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧      (A B ≡ C D)) ∧ (B C ≡ D A)) ∧      (collinear A P C)) ∧ (collinear B P D)) ∧      (B D P ≅ D B P′)) → (P is-midpoint-of B D) ) ( </jh> We'll be applying, and first will need. <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent </jh> Next is. We start with , <jh> A B C D P P′ ParallelogramDiagonals-d-b-pprime </jh> substitute  for  , <jh> A B C D P P′ ParallelogramDiagonals-p-pprime

D EqualityReflexivity B EqualityReflexivity D D B B P P′ CollinearityBuilder detach2of3 detach1of2

applySyllogism

eliminateBiconditionalForwardInConsequent applyModusPonensInConsequent </jh> and rotate. <jh> D B P CollinearityRotation eliminateBiconditionalReverse applySyllogism </jh> Next is. We start with , <jh> ((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) (B D P ≅ D B P′) ConjunctionLeftElimination B D P D B P′ Congruence13 applySyllogism </jh> substitute , <jh> A B C D P P′ ParallelogramDiagonals-p-pprime

P EqualityReflexivity D EqualityReflexivity B EqualityReflexivity B B P P D D P P′ CongruenceBuilder detach1of4 detach2of3 detach1of2

applySyllogism

eliminateBiconditionalForwardInConsequent applyModusPonensInConsequent </jh> and commute the points on each side of the congruence. <jh> commuteCongruenceInConsequent

composeConjunction </jh> Now we apply, which first gives us  , <jh> B P D EquidistantMidpoint applySyllogism </jh> and then. <jh> (B = D) (P is-midpoint-of B D) DisjunctionImplication eliminateBiconditionalReverse applySyllogism

applyModusPonensInConsequent )) </jh>

Now we are ready to combine this with the construction of  to produce our result. <jh> thm (ParallelogramDiagonals ((p′ A) (p′ B) (p′ C) (p′ D) (p′ P))   (((((((¬ (collinear A B C)) ∧ (B ≠ D)) ∧ (A B ≡ C D)) ∧ (B C ≡ D A)) ∧ (collinear A P C)) ∧ (collinear B P D)) → ((P is-midpoint-of A C) ∧ (P is-midpoint-of B D))) ( A B C D P p′ ParallelogramDiagonals-pprime

A B C D P (value p′) ParallelogramDiagonals-p-a-c A B C D P (value p′) ParallelogramDiagonals-p-b-d composeConjunction p′ addThereExists

applySyllogism

removeThereExistsInConsequent )) </jh>

Joining the midpoints
This one may be hard to describe in a single sentence. The theorem is that given the configuration shown in the diagram, the point  is on the line segment connecting the midpoints   and. In symbols,.

For now, we omit the (lengthy) proof here, as we don't yet need it.

Existence of the midpoint (given a point equidistant)
If there is a point equidistant from the endpoints of a line segment, there exists a midpoint of the line segment. In symbols,,  , and   are collinear. This case has two cases, the first of which is. <jh> thm (MidpointExistsGivenEquidistant-a-b ((x A) (x B))  ((((collinear A B C) ∧ (C A ≡ C B)) ∧ (A = B)) → (∃ x ((value x) is-midpoint-of A B))) ( </jh> We start with. <jh> A MidpointReflexivity </jh> This in turn implies. <jh> A EqualityReflexivity A EqualityReflexivity (value x) A A A A A MidpointBuilder detach2of2 detach2of2

makeSubstExplicit eliminateBiconditionalForward applyModusPonens

introduceThereExistsFromObject </jh> We apply the substitution. <jh> (value x) EqualityReflexivity A EqualityReflexivity (value x) (value x) A A A B MidpointBuilder detach2of3 detach1of2 x buildThereExistsInConsequent

detachImplicationBiconditional </jh> That gives us  so we just need to introduce an antecedent to be done. <jh> ((collinear A B C) ∧ (C A ≡ C B)) introduceAntecedent import )) </jh>

The other collinear case is, which is even simpler (  is the desired midpoint). <jh> thm (MidpointExistsGivenEquidistant-c-a-b ((x A) (x B) (x C))  ((((collinear A B C) ∧ (C A ≡ C B)) ∧ (C is-midpoint-of A B)) → (∃ x ((value x) is-midpoint-of A B))) ( A EqualityReflexivity B EqualityReflexivity (value x) C A A B B MidpointBuilder detach2of2 detach2of2

makeSubstExplicit eliminateBiconditionalForward

C x ((value x) is-midpoint-of A B) ThereExistsIntroductionFromObject applySyllogism

((collinear A B C) ∧ (C A ≡ C B)) introduceAntecedent import )) </jh>

Now we are ready for the collinear case itself. <jh> thm (MidpointExistsGivenEquidistant-collinear ((x A) (x B) (x C))  (((collinear A B C) ∧ (C A ≡ C B)) → (∃ x ((value x) is-midpoint-of A B))) ( </jh> The first step is  case is. <jh> A B C x MidpointExistsGivenEquidistant-a-b export </jh> The. <jh> A B C x MidpointExistsGivenEquidistant-c-a-b export

composeConjunction </jh> We combine the cases, to get  we are done. <jh> applyModusPonensInConsequent )) </jh>

We have already handled the case in which,  , and   are collinear, so assume they are non-collinear for the rest of the proof. Next extend line segment  to a distinct point   and extend line segment. Let  be the intersection of   and. Then let  be the intersection of   and.

Our plan is to show that  is the midpoint of. To do so, we'll prove, so   will give us.

We first construct  and. <jh> thm (MidpointExistsGivenEquidistant-p ((p A) (p B) (p C))  (((¬ (collinear A B C)) ∧ (C A ≡ C B)) → (∃ p (((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ ((between C A (value p)) ∧ (A ≠ (value p))))) ) (       p C A PointConstructionDifferent ((¬ (collinear A B C)) ∧ (C A ≡ C B)) introduceAntecedent repeatAntecedentThereExists ))

thm (MidpointExistsGivenEquidistant-q ((q C) (q B) (q A) (q P))  ((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ ((between C A P) ∧ (A ≠ P))) → (∃ q   (((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧     ((between C B (value q)) ∧ (B (value q) ≡ A P))))      )) ( q C B A P SegmentConstruction (((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧         ((between C A P) ∧ (A ≠ P))) introduceAntecedent repeatAntecedentThereExists </jh> For no especially good reason, for the rest of the proof we parenthesize the formula differently. We could rewrite the rest of the proof, but at least for now it will be less work to just regroup here. <jh> ((¬ (collinear A B C)) ∧ (C A ≡ C B)) ((between C A P) ∧ (A ≠ P)) ((between C B (value q)) ∧ (B (value q) ≡ A P)) ConjunctionAssociativity eliminateBiconditionalReverse q addThereExists applySyllogism ))

thm (MidpointExistsGivenEquidistant-r ((r A) (r B) (r C) (r P) (r Q))  ((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧    (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))   ) → (∃ r     ((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧        (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A (value r) Q) ∧ (between B (value r) P)))   )) ( (((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧         (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ImplicationReflexivity </jh> To construct, we first need  , <jh> ((¬ (collinear A B C)) ∧ (C A ≡ C B)) (((between C A P) ∧ (A ≠ P)) ∧           ((between C B Q) ∧ (B Q ≡ A P))) ConjunctionLeftElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent swapBetweennessInConsequent </jh> and then. Applying. <jh> ((¬ (collinear A B C)) ∧ (C A ≡ C B)) (((between C A P) ∧ (A ≠ P)) ∧           ((between C B Q) ∧ (B Q ≡ A P))) ConjunctionLeftElimination eliminateLeftConjunctInConsequent eliminateRightConjunctInConsequent swapBetweennessInConsequent

composeConjunction

P A C Q B r Pasch applySyllogism </jh> Moving the quantifier to the start of the consequent we are done. <jh> composeConjunction

r         (((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧            (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ((between A (value r) Q) ∧ (between B (value r) P)) ThereExistsConjunctionMovement eliminateBiconditionalForward applySyllogism ))

thm (MidpointExistsGivenEquidistant-x ((x A) (x B) (x C) (x P) (x Q) (x R))  (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧     ((between C B Q) ∧ (B Q ≡ A P)))) ∧    ((between A R Q) ∧ (between B R P))) → (∃ x     (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧         ((between C B Q) ∧ (B Q ≡ A P)))) ∧        ((between A R Q) ∧ (between B R P))) ∧ ((between A (value x) B) ∧ (between R (value x) C)))   )) ( ((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧           ((between C B Q) ∧ (B Q ≡ A P)))) ∧          ((between A R Q) ∧ (between B R P))) ImplicationReflexivity </jh> To construct  we need <jh> (((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧         (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ((between A R Q) ∧ (between B R P)) ConjunctionRightElimination eliminateLeftConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent </jh> and. Now we apply  to get. <jh> (((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧         (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ((between A R Q) ∧ (between B R P)) ConjunctionLeftElimination eliminateLeftConjunctInConsequent

composeConjunction

C A P B R x Pasch applySyllogism </jh> Moving  to the start of the consequent we are done. <jh> composeConjunction

x         ((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧             ((between C B Q) ∧ (B Q ≡ A P)))) ∧            ((between A R Q) ∧ (between B R P))) ((between A (value x) B) ∧ (between R (value x) C)) ThereExistsConjunctionMovement eliminateBiconditionalForward applySyllogism )) </jh>

The next step is showing that. This by outer five segment on baselines  and   and points   and. <jh> thm (MidpointExistsGivenEquidistant-p-b-q-a  ( (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧   (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧   ((between A X B) ∧ (between R X C))) → (P B ≡ Q A) ) ( </jh> The first thing we need for outer five segment is <jh> ((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧           ((between C B Q) ∧ (B Q ≡ A P)))) ∧          ((between A R Q) ∧ (between B R P))) ((between A X B) ∧ (between R X C)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent

A B CollinearityABA

A EqualityReflexivity B EqualityReflexivity A A B B C A CollinearityBuilder detach2of3 detach1of2

detachImplicationBiconditionalRight introduceTransposition

applySyllogism </jh> The first baseline is. <jh> ((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧           ((between C B Q) ∧ (B Q ≡ A P)))) ∧          ((between A R Q) ∧ (between B R P))) ((between A X B) ∧ (between R X C)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent

composeConjunction </jh> The second baseline is. <jh> ((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧           ((between C B Q) ∧ (B Q ≡ A P)))) ∧          ((between A R Q) ∧ (between B R P))) ((between A X B) ∧ (between R X C)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent eliminateRightConjunctInConsequent

composeConjunction </jh> The first baseline congruence is. <jh> ((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧           ((between C B Q) ∧ (B Q ≡ A P)))) ∧          ((between A R Q) ∧ (between B R P))) ((between A X B) ∧ (between R X C)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

composeConjunction </jh> The other baseline congruence is <jh> ((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧           ((between C B Q) ∧ (B Q ≡ A P)))) ∧          ((between A R Q) ∧ (between B R P))) ((between A X B) ∧ (between R X C)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent

swapCongruenceInConsequent

composeConjunction </jh> The first congruence for the points is. <jh> ((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧           ((between C B Q) ∧ (B Q ≡ A P)))) ∧          ((between A R Q) ∧ (between B R P))) ((between A X B) ∧ (between R X C)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

swapCongruenceInConsequent

composeConjunction </jh> The other congruence for the points is. <jh> A B CongruenceABBA introduceRightConjunctToConsequent

C A P C B Q B A OuterFiveSegment applySyllogism )) </jh>

Now we construct a point  which is at a point along the line segment   corresponding to where   is along. We'll be trying to show that, but first we need to construct it. <jh> thm (MidpointExistsGivenEquidistant-rprime ((A r′) (B r′) (C r′) (P r′) (Q r′) (R r′) (X r′))  ( (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧   (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧   ((between A X B) ∧ (between R X C))) → (∃ r′ ((((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧     (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧     ((between A X B) ∧ (between R X C))) ∧ ((between A (value r′) Q) ∧ (B R P ≅ A (value r′) Q))) )) ( </jh> We construct  using. To do so, first we need , <jh> ((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧           ((between C B Q) ∧ (B Q ≡ A P)))) ∧          ((between A R Q) ∧ (between B R P))) ((between A X B) ∧ (between R X C)) ConjunctionRightElimination eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent </jh> and then. <jh> A B C P Q R X MidpointExistsGivenEquidistant-p-b-q-a commuteCongruenceInConsequent composeConjunction

B R P A Q r′ InnerDegenerateTriangle applySyllogism

repeatAntecedentThereExists )) </jh>

We next prove  via inner five segment with baselines   and   and points   and.

Because we will re-use the same baselines a little later, it is convenient to move the portion of the proof regarding the baselines into a lemma. <jh> thm (MidpointExistsGivenEquidistant-b-r-p-a-rprime-q   ( ((((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧     ((between C B Q) ∧ (B Q ≡ A P)))) ∧    ((between A R Q) ∧ (between B R P))) ∧ ((between A X B) ∧ (between R X C))) ∧   ((between A R′ Q) ∧ (B R P ≅ A R′ Q))) → ((((between B R P) ∧ (between A R′ Q)) ∧ (B P ≡ A Q)) ∧ (R P ≡ R′ Q)) ) ( </jh> : <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent </jh> : <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionLeftElimination eliminateRightConjunctInConsequent composeConjunction </jh> The first baseline congruence is. <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination

A B C P Q R X MidpointExistsGivenEquidistant-p-b-q-a applySyllogism

commuteCongruenceInConsequent composeConjunction </jh> The second baseline congruence is, which follows from. <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionLeftElimination eliminateLeftConjunctInConsequent

B R P A R′ Q Congruence23 applySyllogism composeConjunction ))

thm (MidpointExistsGivenEquidistant-r-a-rprime-b   ( ((((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧     ((between C B Q) ∧ (B Q ≡ A P)))) ∧    ((between A R Q) ∧ (between B R P))) ∧ ((between A X B) ∧ (between R X C))) ∧   ((between A R′ Q) ∧ (B R P ≅ A R′ Q))) → (R A ≡ R′ B) ) ( </jh> We've already proved what we need for the baselines: <jh> A B C P Q R X R′ MidpointExistsGivenEquidistant-b-r-p-a-rprime-q </jh> The first point congruence is. <jh> B A CongruenceABBA introduceRightConjunctToConsequent </jh> The second point congruence is. <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent swapCongruenceInConsequent commuteCongruenceInConsequent composeConjunction

B R P A R′ Q A B InnerFiveSegment applySyllogism )) </jh>

Next we apply inner five segment with baselines  and   and points   and   to give. <jh> thm (MidpointExistsGivenEquidistant-q-r-p-rprime   ( ((((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧     ((between C B Q) ∧ (B Q ≡ A P)))) ∧    ((between A R Q) ∧ (between B R P))) ∧ ((between A X B) ∧ (between R X C))) ∧   ((between A R′ Q) ∧ (B R P ≅ A R′ Q))) → (Q R ≡ P R′) ) ( </jh> We've already proved what we need for the baselines: <jh> A B C P Q R X R′ MidpointExistsGivenEquidistant-b-r-p-a-rprime-q </jh> The first congruence for the non-baseline points is. <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent composeConjunction </jh> The other congruence for the non-baseline points is. <jh> P Q CongruenceABBA introduceRightConjunctToConsequent </jh> Inner five segment then gives us, which only needs to be commuted. <jh> B R P A R′ Q Q P InnerFiveSegment applySyllogism commuteCongruenceInConsequent )) </jh>

The last two congruences gives us what we need for, which in turn implies   has little hope of remaining different from  , although we are still a few steps from proving that.

<jh> thm (MidpointExistsGivenEquidistant-a-r-q-b-rprime-p   ( ((((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧     ((between C B Q) ∧ (B Q ≡ A P)))) ∧    ((between A R Q) ∧ (between B R P))) ∧ ((between A X B) ∧ (between R X C))) ∧   ((between A R′ Q) ∧ (B R P ≅ A R′ Q))) → (A R Q ≅ B R′ P) ) ( </jh> : <jh> A B C P Q R X R′ MidpointExistsGivenEquidistant-r-a-rprime-b commuteCongruenceInConsequent

</jh> : <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination

A B C P Q R X MidpointExistsGivenEquidistant-p-b-q-a swapCongruenceInConsequent commuteCongruenceInConsequent applySyllogism composeConjunction

</jh> : <jh> A B C P Q R X R′ MidpointExistsGivenEquidistant-q-r-p-rprime commuteCongruenceInConsequent composeConjunction ))

thm (MidpointExistsGivenEquidistant-b-rprime-p   ( ((((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧     ((between C B Q) ∧ (B Q ≡ A P)))) ∧    ((between A R Q) ∧ (between B R P))) ∧ ((between A X B) ∧ (between R X C))) ∧   ((between A R′ Q) ∧ (B R P ≅ A R′ Q))) → (collinear B R′ P) ) ( (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent eliminateRightConjunctInConsequent

A R Q BetweennessCollinearity applySyllogism

A B C P Q R X R′ MidpointExistsGivenEquidistant-a-r-q-b-rprime-p composeConjunction

A R Q B R′ P CollinearityDegenerateTriangle applySyllogism )) </jh>

We're getting closer to proving  via   (which says that the intersection of two lines is unique, if we rule out some degenerate cases). Next we need. <jh> thm (MidpointExistsGivenEquidistant-b-p   ( ((((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧     ((between C B Q) ∧ (B Q ≡ A P)))) ∧    ((between A R Q) ∧ (between B R P))) ∧ ((between A X B) ∧ (between R X C))) ∧   ((between A R′ Q) ∧ (B R P ≅ A R′ Q))) → (B ≠ P) ) ( </jh> At the end of the proof we'll need. <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent

C A P BetweennessCollinearity applySyllogism

C A P CollinearityRotation eliminateBiconditionalReverse applySyllogism </jh> We take the substitution , <jh> A EqualityReflexivity C EqualityReflexivity A A B P C C CollinearityBuilder detach2of2 detach1of2 </jh> detach the , <jh> eliminateBiconditionalForwardInConsequent applyComm applySyllogism </jh> transpose to , <jh> (B = P) (collinear A B C) Transposition eliminateBiconditionalReverse applySyllogism </jh> and detach. <jh> applyModusPonensInConsequent )) </jh>

The last thing we need to be ready to apply  is. We will show  by   on   and. Here our proof seems to be streamlined from Narboux's, which applies  four times, not just one (TODO: re-check this statement when we're done with MidpointExistsGivenEquidistant).

The first part is.

<jh> thm (MidpointExistsGivenEquidistant-b-q   ( ((((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧     ((between C B Q) ∧ (B Q ≡ A P)))) ∧    ((between A R Q) ∧ (between B R P))) ∧ ((between A X B) ∧ (between R X C))) ∧   ((between A R′ Q) ∧ (B R P ≅ A R′ Q))) → (B ≠ Q) ) ( </jh> We pick out  for later use, <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent </jh> and do the same for <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent </jh> Then we take  and detach the. <jh> B Q A P CongruenceIdentityFromEquality export applyComm applySyllogism </jh> Transposing and detaching  gives us. <jh> (B = Q) (A = P) Transposition eliminateBiconditionalReverse applySyllogism applyModusPonensInConsequent ))

thm (MidpointExistsGivenEquidistant-a-q-b   ( ((((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧     ((between C B Q) ∧ (B Q ≡ A P)))) ∧    ((between A R Q) ∧ (between B R P))) ∧ ((between A X B) ∧ (between R X C))) ∧   ((between A R′ Q) ∧ (B R P ≅ A R′ Q))) → (¬ (collinear A Q B)) ) ( </jh> We'll start with putting several things on the proof stack which we'll use later in the proof. The first one is <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent

A B C CollinearityRotation addNegation eliminateBiconditionalReverse applySyllogism </jh> Next is. <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent eliminateRightConjunctInConsequent

C B Q BetweennessCollinearity applySyllogism

C B Q CollinearityRotation eliminateBiconditionalReverse applySyllogism </jh> Next is. <jh> A B C P Q R X R′ MidpointExistsGivenEquidistant-b-q </jh> Now we take  and detach the first two conjuncts. <jh> B Q C A CollinearityOuterTransitivity export export applySyllogism applyModusPonensInConsequent </jh> Transposing and detaching gives us. <jh> (collinear B Q A) (collinear B C A) Transposition eliminateBiconditionalReverse applySyllogism

applyModusPonensInConsequent </jh> We just need to rearrange that into <jh> B Q A Collinearity13 addNegation eliminateBiconditionalReverse applySyllogism )) </jh>

It is now time for. <jh> thm (MidpointExistsGivenEquidistant-r-rprime   ( ((((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧     ((between C B Q) ∧ (B Q ≡ A P)))) ∧    ((between A R Q) ∧ (between B R P))) ∧ ((between A X B) ∧ (between R X C))) ∧   ((between A R′ Q) ∧ (B R P ≅ A R′ Q))) → (R = R′) ) ( </jh> The proof is via  on the lines   and. First we need. <jh> A B C P Q R X R′ MidpointExistsGivenEquidistant-a-q-b </jh> : <jh> A B C P Q R X R′ MidpointExistsGivenEquidistant-b-p composeConjunction </jh> : <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent eliminateRightConjunctInConsequent

A R Q BetweennessCollinearity applySyllogism

A R Q Collinearity23 eliminateBiconditionalReverse applySyllogism

composeConjunction </jh> : <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionLeftElimination eliminateRightConjunctInConsequent

A R′ Q BetweennessCollinearity applySyllogism

A R′ Q Collinearity23 eliminateBiconditionalReverse applySyllogism

composeConjunction </jh> : <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent

B R P BetweennessCollinearity applySyllogism

B R P Collinearity23 eliminateBiconditionalReverse applySyllogism

composeConjunction </jh> : <jh> A B C P Q R X R′ MidpointExistsGivenEquidistant-b-rprime-p

B R′ P Collinearity23 eliminateBiconditionalReverse applySyllogism

composeConjunction </jh> Applying  we are done. <jh> A Q B P R R′ LineIntersection applySyllogism )) </jh>

Now that we have  we are in the home stretch. is next. <jh> thm (MidpointExistsGivenEquidistant-a-r-r-b   ( ((((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧     ((between C B Q) ∧ (B Q ≡ A P)))) ∧    ((between A R Q) ∧ (between B R P))) ∧ ((between A X B) ∧ (between R X C))) ∧   ((between A R′ Q) ∧ (B R P ≅ A R′ Q))) → (A R ≡ R B) ) ( </jh> First we put  on the stack for use a bit later. <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionLeftElimination eliminateLeftConjunctInConsequent

B R P A R′ Q Congruence12 applySyllogism </jh> Next is. <jh> A B C P Q R X R′ MidpointExistsGivenEquidistant-r-rprime </jh> : <jh> R EqualityReflexivity A EqualityReflexivity B EqualityReflexivity B B R R A A R R′ CongruenceBuilder detach1of4 detach2of3 detach1of2 </jh> Combining those pieces we get , <jh> applySyllogism eliminateBiconditionalForwardInConsequent applyModusPonensInConsequent </jh> which we rearrange to. <jh> swapCongruenceInConsequent commuteCongruenceRightInConsequent )) </jh>

We're almost ready to apply. We still need, though. If  were equal to , then   would imply that  , and   would imply  , which is a contradiction. <jh> thm (MidpointExistsGivenEquidistant-c-r   ( ((((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧     ((between C B Q) ∧ (B Q ≡ A P)))) ∧    ((between A R Q) ∧ (between B R P))) ∧ ((between A X B) ∧ (between R X C))) ∧   ((between A R′ Q) ∧ (B R P ≅ A R′ Q))) → (C ≠ R) ) ( </jh> At the end of the proof we'll need. <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent </jh> We start with. <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent swapBetweennessInConsequent </jh> Next is, which follows from   and some rearrangement. <jh> C R X IndivisibilityFromEquality export applyComm </jh> Combining those we get. <jh> applySyllogism </jh> Leaving that on the stack for a while, we go to. <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateLeftConjunctInConsequent eliminateRightConjunctInConsequent </jh> : <jh> A EqualityReflexivity B EqualityReflexivity A A C X B B BetweennessBuilder detach2of2 detach1of2 </jh> Now we detach the. <jh> eliminateBiconditionalForwardInConsequent applyComm applySyllogism </jh> We have  implies , which in implies. <jh> import

A C B BetweennessCollinearity

A C B Collinearity23 eliminateBiconditionalReverse applySyllogism

applySyllogism export </jh> Combining this with  gives us. <jh> applySyllogismInConsequent </jh> Now we pick up  from the proof stack and conclude. <jh> introduceTranspositionInConsequent applyModusPonensInConsequent )) </jh>

We're now ready to conclude. <jh> thm (MidpointExistsGivenEquidistant-x-midpoint   ( ((((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧ (((between C A P) ∧ (A ≠ P)) ∧     ((between C B Q) ∧ (B Q ≡ A P)))) ∧    ((between A R Q) ∧ (between B R P))) ∧ ((between A X B) ∧ (between R X C))) ∧   ((between A R′ Q) ∧ (B R P ≅ A R′ Q))) → (X is-midpoint-of A B) ) ( </jh> The first half of  is , which is true by construction. <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateLeftConjunctInConsequent eliminateRightConjunctInConsequent </jh> The other half is. We will conclude  by   (noting that each of   and   are equidistant from   and , and   is on the same line). First we need. <jh> A B C P Q R X R′ MidpointExistsGivenEquidistant-c-r </jh> Next is <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateLeftConjunctInConsequent eliminateLeftConjunctInConsequent

R X C BetweennessCollinearity applySyllogism

C R X CollinearityRotation eliminateBiconditionalForward applySyllogism

composeConjunction </jh> Now we just need equidistance to the two known points, first , <jh> (((((¬ (collinear A B C)) ∧ (C A ≡ C B)) ∧           (((between C A P) ∧ (A ≠ P)) ∧ ((between C B Q) ∧ (B Q ≡ A P)))) ∧ ((between A R Q) ∧ (between B R P))) ∧           ((between A X B) ∧ (between R X C))) ((between A R′ Q) ∧ (B R P ≅ A R′ Q)) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

composeConjunction </jh> and then. <jh> A B C P Q R X R′ MidpointExistsGivenEquidistant-a-r-r-b commuteCongruenceLeftInConsequent

composeConjunction </jh> Applying  gives us   which we commute to , and that's all we need for. <jh> C R X A B EquidistantLine applySyllogism commuteCongruenceLeftInConsequent

composeConjunction )) </jh>

A bit of logic finishes the proof. <jh> thm (MidpointExistsGivenEquidistant-noncollinear ((x A) (x B) (x C)

(p A) (p B) (p C) (q A) (q B) (q C) (p q)  (r A) (r B) (r C) (r p) (r q)   (x p) (x q) (x r)   (r′ A) (r′ B) (r′ C) (r′ p) (r′ q) (r′ r) (r′ x)   )   (((¬ (collinear A B C)) ∧ (C A ≡ C B)) → (∃ x ((value x) is-midpoint-of A B))) ( A B C p MidpointExistsGivenEquidistant-p

A B C (value p) q MidpointExistsGivenEquidistant-q p addThereExists applySyllogism

A B C (value p) (value q) r MidpointExistsGivenEquidistant-r q addThereExists p addThereExists applySyllogism

A B C (value p) (value q) (value r) x MidpointExistsGivenEquidistant-x r addThereExists q addThereExists p addThereExists applySyllogism

A B C (value p) (value q) (value r) (value x) r′ MidpointExistsGivenEquidistant-rprime x addThereExists r addThereExists q addThereExists p addThereExists applySyllogism

A B C (value p) (value q) (value r) (value x) (value r′) MidpointExistsGivenEquidistant-x-midpoint r′ addThereExists removeThereExistsInConsequent x addThereExists r addThereExists q addThereExists p addThereExists applySyllogism

removeThereExistsInConsequent removeThereExistsInConsequent removeThereExistsInConsequent ))

thm (MidpointExistsGivenEquidistant ((x A) (x B) (x C))  ((C A ≡ C B) → (∃ x ((value x) is-midpoint-of A B))) ( A B C x MidpointExistsGivenEquidistant-collinear export

A B C x MidpointExistsGivenEquidistant-noncollinear export

eliminateCases )) </jh>

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

Also, we export to Interface:Basic geometry since it hasn't yet been updated for anything after this point. <jh> export (GEOMETRY Interface:Basic_geometry (CLASSICAL FIRSTORDER) ) </jh>