Betweenness of points

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

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 (variable a b b′ c d′ q q′ ww ww′ b″ c″) var (formula antecedent) 

Betweenness
We start with a degenerate case of betweenness. It illustrates that we follow Tarski's definition of betweenness, in which the points need not be distinct, rather than Hilbert's, in which they do need to be.

The proof extends the line segment  beyond   to a point   such that. But  implies , so we have in fact shown.  thm (BetweenABB ((a A) (a B)) (between A B B) ( a A B B B SegmentConstruction  That gives us. We apply the theorem  to get.  B (value a) B CongruenceIdentity (between A B (value a)) conjoinLL a addThereExists

applyModusPonens  We now need to handle the substitution of  for. We start with.  A EqualityReflexivity B EqualityReflexivity A A B B B (value a) BetweennessBuilder detach2of3 detach1of2  Eliminating the forward direction of the biconditional and rearranging gets.  eliminateBiconditionalForwardInConsequent applyComm import  Combining with our previous result we have.  a addThereExists applyModusPonens  And now we just remove the quantifier, which is no longer needed.  removeThereExists )) 

Betweenness symmetry
Exchanging the endpoints of a betweenness formula has no effect. In other words, B is between A and C implies B is between C and A.

We move much of the proof into a lemma because it will be useful in other similar proofs.  thm (BetweenSubstitution ((a A) (a B) (a C)) ((∃ a ((between B (value a) B) ∧ (between C (value a) A))) → (between C B A)) (  We start by noting that  implies , which lets us derive.  B (value a) Indivisibility (between C (value a) A) conjoinRR a addThereExists </jh> Now we apply a substitution to reduce  to. We start with the substitution  C EqualityReflexivity A EqualityReflexivity C C B (value a) A A BetweennessBuilder detach2of2 detach1of2 </jh> We eliminating the forward implication, import, and combine with the previous result to get  eliminateBiconditionalForwardInConsequent import a addThereExists applySyllogism </jh> Removing the unnecessary quantifier is all that remains.  removeThereExistsInConsequent ))

thm (BetweennessSymmetryImplication ((a A) (a B) (a C)) ((between A B C) → (between C B A)) ( </jh> We'll be applying the  axiom with   and   as the antecedents. The second of those is a theorem.  B C BetweenABB A B C B C a Pasch detach2of2 </jh> That gives us. Applying our lemma is all we need.  a B C A BetweenSubstitution applySyllogism ))

thm (BetweennessSymmetry  ((between A B C) ↔ (between C B A)) ( A B C BetweennessSymmetryImplication C B A BetweennessSymmetryImplication introduceBiconditionalFromImplications ))

thm (swapBetweennessInConsequent ((H (antecedent → (between A B C))))  (antecedent → (between C B A)) ( H       A B C BetweennessSymmetryImplication applySyllogism )) </jh>

Symmetry lets us easily prove the other degenerate case.  thm (BetweenAAB  (between A A B) ( B A BetweenABB B A A BetweennessSymmetry eliminateBiconditionalReverse applyModusPonens )) </jh>

Equality
If  is between   and , and   is between   and  , then   and   must be equal.

This property is analogous to antisymmetry for an order relation.  thm (BetweennessEquality ( (a A) (a B) (a C)) (((between A B C) ∧ (between B A C)) → (A = B)) ( A B C B A a Pasch </jh> That gives us. We just need to apply the  lemma to get  ,  a B A A BetweenSubstitution applySyllogism </jh> which in turn implies  A B Indivisibility applySyllogism )) </jh>

Transitivity
In this section we prove six similar theorems which involve four points on a line. Given two betweenness relationships, we conclude a third. Three of the six are just versions of the other three which are flipped left-to-right.

Inner transitivity, regular and flipped
The first one is known as inner transitivity.  thm (BetweennessInnerTransitivity ( (a A) (a B) (a C) (a D))  (((between A B D) ∧ (between B C D)) → (between A B C)) ( A B D B C a Pasch </jh> That gives us. The  lemma turns this into , and we just need to switch the order of the endpoints to be done.  a B C A BetweenSubstitution applySyllogism

swapBetweennessInConsequent )) </jh>

Reflecting this left-to-right gives our next theorem.  thm (BetweennessInnerTransitivityFlipped  (((between A B C) ∧ (between A C D)) → (between B C D)) ( </jh> We first rewrite  into   and   into  A B C BetweennessSymmetry A C D BetweennessSymmetry buildConjunction eliminateBiconditionalReverse </jh> Now we switch the order of the conjuncts.  (between C B A) (between D C A) ConjunctionCommutativity eliminateBiconditionalReverse applySyllogism

</jh> Now we are ready to apply inner transitivity (which, when expanded with these variables, works out to )  D C A B BetweennessInnerTransitivity applySyllogism </jh> Turning  into   finishes the proof. <jh> swapBetweennessInConsequent )) </jh>

Outer transitivity, flipped
For outer transitivity, we prove the "flipped" version first (where we consider the "non-flipped" one to be the one in Givant and Tarski (1999)).

To be specific, the flipped outer transitivity is. First we extend  beyond   to a point   such that. Then  and   give us   by. That's part of what we need to apply uniqueness of segment construction, which gives us. Then we can substitute  to get , which is what we want.

The first two lemmas get as far as  in the proof sketch above. <jh> thm (BetweennessOuterTransitivityFlipped-1  ((((between A C x) ∧ (C x ≡ C D)) ∧ (between A B C)) → (((between A C x) ∧ (C x ≡ C D)) ∧ (between B C x))) ( ((between A C x) ∧ (C x ≡ C D)) (between A B C) ConjunctionRightElimination

((between A C x) ∧ (C x ≡ C D)) (between A B C) ConjunctionLeftElimination

((between A C x) ∧ (C x ≡ C D)) (between A B C) ConjunctionRightElimination (between A C x) (C x ≡ C D) ConjunctionRightElimination applySyllogism

composeConjunction

A B C x BetweennessInnerTransitivityFlipped applySyllogism

composeConjunction ))

thm (BetweennessOuterTransitivityFlipped-bca ( (A a) (B a) (C a) (D a))  ((((between A B C) ∧ (between B C D)) ∧ (B ≠ C)) → (∃ a (((between A C (value a)) ∧ (C (value a) ≡ C D)) ∧ (between B C (value a))))) ( a A C C D SegmentConstruction (((between A B C) ∧ (between B C D)) ∧ (B ≠ C)) introduceAntecedent

((between A B C) ∧ (between B C D)) (B ≠ C) ConjunctionRightElimination (between A B C) (between B C D) ConjunctionRightElimination applySyllogism

composeConjunction </jh> The consequent is now. We move  inside the quantifier. <jh> a ((between A C (value a)) ∧ (C (value a) ≡ C D)) (between A B C) ThereExistsConjunctionRightMovement eliminateBiconditionalForward applySyllogism </jh> Now we just replace  with. <jh> A C (value a) D B BetweennessOuterTransitivityFlipped-1 a addThereExists applySyllogism )) </jh> The next lemma is just a way of getting everything inside the quantifier. <jh> thm (BetweennessOuterTransitivityFlipped-2 ((A a) (B a) (C a) (D a))  ((((between A B C) ∧ (between B C D)) ∧ (B ≠ C)) → (∃ a (((((between A C (value a)) ∧ (C (value a) ≡ C D)) ∧ (between B C (value a))) ∧ (between B C D)) ∧ (B ≠ C)))) ( </jh> First,. <jh> A B C D a BetweennessOuterTransitivityFlipped-bca </jh> Next, <jh> ((between A B C) ∧ (between B C D)) (B ≠ C) ConjunctionRightElimination eliminateLeftConjunctInConsequent

composeConjunction

a (((between A C (value a)) ∧ (C (value a) ≡ C D)) ∧ (between B C (value a))) (between B C D) ThereExistsConjunctionRightMovement eliminateBiconditionalForward applySyllogism </jh> Finally, <jh> ((between A B C) ∧ (between B C D)) (B ≠ C) ConjunctionLeftElimination

composeConjunction

a ((((between A C (value a)) ∧ (C (value a) ≡ C D)) ∧ (between B C (value a))) ∧ (between B C D)) (B ≠ C) ThereExistsConjunctionRightMovement eliminateBiconditionalForward applySyllogism )) </jh> The following lemma is where we show that. <jh> thm (BetweennessOuterTransitivityFlipped-ad  ((((((between A C (value a)) ∧ (C (value a) ≡ C D)) ∧ (between B C (value a))) ∧ (between B C D)) ∧ (B ≠ C)) → ((value a) = D)) ( </jh> We'll be applying. It has five antecedents. The first is. <jh> ((((between A C (value a)) ∧ (C (value a) ≡ C D)) ∧ (between B C (value a))) ∧ (between B C D)) (B ≠ C) ConjunctionLeftElimination </jh> The second is <jh> ((((between A C (value a)) ∧ (C (value a) ≡ C D)) ∧ (between B C (value a))) ∧ (between B C D)) (B ≠ C) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

composeConjunction </jh> The third is <jh> ((((between A C (value a)) ∧ (C (value a) ≡ C D)) ∧ (between B C (value a))) ∧ (between B C D)) (B ≠ C) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateLeftConjunctInConsequent

composeConjunction </jh> The fourth is <jh> ((((between A C (value a)) ∧ (C (value a) ≡ C D)) ∧ (between B C (value a))) ∧ (between B C D)) (B ≠ C) ConjunctionRightElimination eliminateLeftConjunctInConsequent

composeConjunction </jh> The fifth is <jh> C D CongruenceReflexivity (((((between A C (value a)) ∧ (C (value a) ≡ C D)) ∧ (between B C (value a))) ∧ (between B C D)) ∧ (B ≠ C)) introduceAntecedent

composeConjunction </jh> Applying  we can conclude. <jh> B C (value a) C D D SegmentConstructionUniqueness applySyllogism )) </jh> Here we combine the  result with picking   out of the antecedent. <jh> thm (BetweennessOuterTransitivityFlipped-aca-ad  ((((((between A C (value a)) ∧ (C (value a) ≡ C D)) ∧ (between B C (value a))) ∧ (between B C D)) ∧ (B ≠ C)) → (((value a) = D) ∧ (between A C (value a)))) ( A C a D B BetweennessOuterTransitivityFlipped-ad

((((between A C (value a)) ∧ (C (value a) ≡ C D)) ∧ (between B C (value a))) ∧ (between B C D)) (B ≠ C) ConjunctionRightElimination eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent eliminateRightConjunctInConsequent

composeConjunction )) </jh> Now our substitution. <jh> thm (BetweennessOuterTransitivityFlipped-sub  ((((value a) = D) ∧ (between A C (value a))) → (between A C D)) ( A EqualityReflexivity C EqualityReflexivity A A C C (value a) D BetweennessBuilder detach2of3 detach1of2 </jh> That gives us. <jh> eliminateBiconditionalReverseInConsequent import )) </jh> We're ready to combine the various pieces. <jh> thm (BetweennessOuterTransitivityFlipped ((A a) (B a) (C a) (D a)) ((((between A B C) ∧ (between B C D)) ∧ (B ≠ C)) → (between A C D)) ( A B C D a BetweennessOuterTransitivityFlipped-2

A C a D B BetweennessOuterTransitivityFlipped-aca-ad a D A C BetweennessOuterTransitivityFlipped-sub applySyllogism

a addThereExists applySyllogism

removeThereExistsInConsequent )) </jh>

Middle transitivity
The next result is. The proof has two cases. If, then we can substitute   into   and we are done. If, then we first apply inner transitivity to get  , and then apply outer transitivity (flipped) to get. <jh> thm (BetweennessMiddleTransitivityBEqualsC  ((B = C) → (((between A B D) ∧ (between B C D)) → (between A C D))) ( A EqualityReflexivity D EqualityReflexivity A A B C D D BetweennessBuilder detach2of2 detach1of2 eliminateBiconditionalReverseInConsequent

(between A B D) (between B C D) ConjunctionRightElimination (between A C D) addCommonConsequent applySyllogism ))

thm (BetweennessMiddleTransitivityBNotEqualC  ((B ≠ C) → (((between A B D) ∧ (between B C D)) → (between A C D))) ( </jh> We'll prove, which is only an export away from our desired result.

To apply  we need three things. The first is <jh> (B ≠ C) ((between A B D) ∧ (between B C D)) ConjunctionLeftElimination A B D C BetweennessInnerTransitivity applySyllogism </jh> The second is <jh> (B ≠ C) ((between A B D) ∧ (between B C D)) ConjunctionLeftElimination eliminateLeftConjunctInConsequent

composeConjunction </jh> The third is <jh> (B ≠ C) ((between A B D) ∧ (between B C D)) ConjunctionRightElimination composeConjunction

A B C D BetweennessOuterTransitivityFlipped applySyllogism export ))

thm (BetweennessMiddleTransitivity  (((between A B D) ∧ (between B C D)) → (between A C D)) ( B C A D BetweennessMiddleTransitivityBEqualsC B C A D BetweennessMiddleTransitivityBNotEqualC eliminateCases )) </jh>

Outer transitivity, non-flipped
The non-flipped outer transitivity is. Our proof just takes  and flips it, whereas Narboux's proof also invokes.

<jh> thm (BetweennessOuterTransitivity  ((((between A B C) ∧ (between B C D)) ∧ (B ≠ C)) → (between A B D)) ( A B C BetweennessSymmetry B C D BetweennessSymmetry buildConjunction

(between C B A) (between D C B) ConjunctionCommutativity applyBiconditionalTransitivity

B C EqualitySymmetry addNegation

buildConjunction eliminateBiconditionalReverse

D C B A BetweennessOuterTransitivityFlipped applySyllogism

D B A BetweennessSymmetry eliminateBiconditionalReverse applySyllogism )) </jh>

Middle transitivity, flipped
Here we prove. <jh> thm (BetweennessMiddleTransitivityFlipped  (((between A B C) ∧ (between A C D)) → (between A B D)) ( A B C BetweennessSymmetry A C D BetweennessSymmetry buildConjunction

(between C B A) (between D C A) ConjunctionCommutativity applyBiconditionalTransitivity

eliminateBiconditionalReverse

D C A B BetweennessMiddleTransitivity applySyllogism

D B A BetweennessSymmetry eliminateBiconditionalReverse applySyllogism )) </jh>

Betweenness of more than three points
Narboux defines the concept of a betweenness relationship between four points, but we omit it here as Narboux does not use it anywhere.

Twoness
There exist two distinct points. In symbols,. The proof is based on the  axiom. There are two cases. If, we are done. If, then we can take   from the axiom and turn it into   which in turn implies.

Formalizing this proof has two parts. The first one follows the informal proof above and gets us as far as showing  or. The second part does the predicate logic needed to switch variables and combine the two inequalities.

The first thing is a lemma biconditionalizing. <jh> thm (IndivisibilityBiconditional  ((between x y x) ↔ (x = y)) ( x y Indivisibility

x x BetweenAAB

x EqualityReflexivity x EqualityReflexivity x x x y x x BetweennessBuilder detach2of2 detach1of2

detachImplicationBiconditional

introduceBiconditionalFromImplications ))

thm (TwonessLemma ((a b c)) (∃ a (∃ b (∃ c (((value a) ≠ (value b)) ∨ ((value b) ≠ (value c)))))) ( a b c LowerDimension </jh> The  case involves first picking out. <jh> ((¬ (between (value a) (value b) (value c)))         ∧ (¬ (between (value b) (value c) (value a)))) (¬ (between (value c) (value a) (value b))) ConjunctionRightElimination eliminateLeftConjunctInConsequent

((value a) = (value b)) introduceAntecedent </jh> Now we prove a substitution, <jh> (value b) EqualityReflexivity (value c) EqualityReflexivity (value b) (value b) (value c) (value c) (value a) (value b) BetweennessBuilder detach2of3 detach1of2

addNegationInConsequent </jh> We combine the substitution with our previous result to get. <jh> eliminateBiconditionalReverseInConsequent applySyllogismInConsequent </jh> Now we turn the consequent into , <jh> (value b) (value c) IndivisibilityBiconditional addNegation eliminateBiconditionalReverse ((value a) = (value b)) introduceAntecedent applySyllogismInConsequent </jh> and add the  disjunct. <jh> ((value b) ≠ (value c)) ((value a) ≠ (value b)) DisjunctionLeftIntroduction ((value a) = (value b)) introduceAntecedent applySyllogismInConsequent </jh> The  case is just a matter of arranging formulas for the case elimination and hooking to. <jh> ((value a) ≠ (value b)) ((value b) ≠ (value c)) DisjunctionRightIntroduction (((value a) ≠ (value b)) ∨ ((value b) ≠ (value c))) (((¬ (between (value a) (value b) (value c))) ∧ (¬ (between (value b) (value c) (value a))))         ∧ (¬ (between (value c) (value a) (value b)))        ) AntecedentIntroduction applySyllogism </jh> We combine the cases and finish the proof. <jh> eliminateCases c addThereExists b addThereExists a addThereExists applyModusPonens )) </jh> That's the first part of the proof. Now for the predicate logic. First is a lemma which expresses the variable change which is at the heart of all this rearrangement. <jh> thm (TwonessLemma2 ((a b c)) ((∃ a (∃ b ((value a) ≠ (value b)))) ↔ (∃ b (∃ c ((value b) ≠ (value c))))) ( </jh> Starting from the inside, our first substitution is <jh> (value b) (value c) (value a) EqualityBuilderLL addNegationInConsequent </jh> That leads to the variable change. <jh> ChangeVariableThereExists a buildThereExists </jh> We repeat the process with the outer quantifiers. The substitution is. <jh> (value a) (value b) (value c) EqualityBuilderRR addNegationInConsequent c buildThereExistsInConsequent </jh> The corresponding variable change is. Combining this with the first variable change proves our lemma. <jh> ChangeVariableThereExists applyBiconditionalTransitivity ))

thm (Twoness ((a b c)) (∃ a (∃ b ((value a) ≠ (value b)))) ( a b c TwonessLemma

c ((value a) ≠ (value b)) ((value b) ≠ (value c)) ThereExistsDisjunctionMovement eliminateBiconditionalReverse b addThereExists a addThereExists applyModusPonens </jh> We now have. We distribute  across the disjunction. <jh> b ((value a) ≠ (value b)) (∃ c ((value b) ≠ (value c))) ThereExistsDisjunction eliminateBiconditionalReverse a addThereExists applyModusPonens </jh> We have. We move the second disjunct outside of the quantifier for  to get <jh> a (∃ b ((value a) ≠ (value b))) (∃ b (∃ c ((value b) ≠ (value c)))) ThereExistsDisjunctionRightMovement eliminateBiconditionalReverse applyModusPonens </jh> At this point, we can change the variables in the latter disjunct. <jh> a b c TwonessLemma2 eliminateBiconditionalForward (∃ a (∃ b ((value a) ≠ (value b)))) disjoinLL applyModusPonens </jh> Having gotten both disjuncts to use the same variables, we are done. <jh> conflateDisjunction )) </jh>

Extending a line segment to a distinct point
Any line segment  can be extended beyond   to a point   which does not equal.

First we prove a lemma which just rearranges. <jh> thm (CongruenceIdentityFromEqualityImported  (((A = B) ∧ (A B ≡ C D)) → (C = D)) ( A B C D CongruenceIdentityFromEquality import ))

thm (NegatedCongruenceIdentityFromEquality   (((A ≠ B) ∧ (A B ≡ C D)) → (C ≠ D)) ( A B C D CongruenceSymmetry eliminateBiconditionalReverse (A ≠ B) conjoinLL

C D A B CongruenceIdentityFromEqualityImported export applyComm

(C = D) (A = B) Transposition eliminateBiconditionalReverse applySyllogism

applyComm import applySyllogism ))

</jh> The next lemma is just rearranging conjuncts and applying. <jh> thm (PointConstructionDifferentLemma2  ((((between A B C) ∧ (B C ≡ x y)) ∧ (x ≠ y)) → ((between A B C) ∧ (B ≠ C))) ( </jh> First we pick out. <jh> ((between A B C) ∧ (B C ≡ x y)) (x ≠ y) ConjunctionRightElimination eliminateRightConjunctInConsequent </jh> Next we pick out. <jh> ((between A B C) ∧ (B C ≡ x y)) (x ≠ y) ConjunctionLeftElimination </jh> Next we pick out  and swap it to. <jh> ((between A B C) ∧ (B C ≡ x y)) (x ≠ y) ConjunctionRightElimination eliminateLeftConjunctInConsequent swapCongruenceInConsequent </jh> Combining the second two results and applying  gives us. <jh> composeConjunction x y B C NegatedCongruenceIdentityFromEquality applySyllogism </jh> Combining  and   finishes the proof. <jh> composeConjunction ))

thm (PointConstructionDifferent ((c A) (c B) (a b A) (a b B) (a b c))  (∃ c ((between A B (value c)) ∧ (B ≠ (value c)))) ( </jh> The proof of our main theorem will proceed by constructing two different points  and , and using them to extend the segment   to a distinct point.

We start with the extension of  beyond   to a point. <jh> c A B (value a) (value b) SegmentConstruction </jh> That gives us. This a relationship which holds for any values of  and <jh> b generalize a generalize </jh> Now we put in the construction of the two distinct points, <jh> a b Twoness </jh> and combine the two statements and gather the quantifiers at the beginning to get <jh> introduceConjunction

a (∀ b (∃ c ((between A B (value c)) ∧ (B (value c) ≡ (value a) (value b))))) (∃ b ((value a) ≠ (value b))) ThereExistsConjunctionCombining applyModusPonens

b (∃ c ((between A B (value c)) ∧ (B (value c) ≡ (value a) (value b)))) ((value a) ≠ (value b)) ThereExistsConjunctionCombining a addThereExists applyModusPonens

c ((between A B (value c)) ∧ (B (value c) ≡ (value a) (value b))) ((value a) ≠ (value b)) ThereExistsConjunctionRightMovement b buildThereExists a buildThereExists eliminateBiconditionalForward applyModusPonens </jh> Applying our lemma, we get <jh> A B (value c) (value a) (value b) PointConstructionDifferentLemma2 c addThereExists b addThereExists a addThereExists applyModusPonens </jh> The first two quantifiers are no longer needed, and that finishes the proof. <jh> removeThereExists removeThereExists )) </jh>

A point distinct from a given point exists
Given a point, there exists a point   distinct from it. Here's the sketch of Narboux's proof: apply  to get   and   such that. If, we are done (  is the desired point). If, then subsituting into   gives us  , and   is the desired point. It would be possible (although somewhat cumbersome) to formalize this argument here, but it will be easier just to prove this theorem as a special case of. <jh> thm (AnotherPoint ((b A)) (∃ b (A ≠ (value b))) ( b A A PointConstructionDifferent

(between A A (value b)) (A ≠ (value b)) ConjunctionLeftElimination b addThereExists

applyModusPonens )) </jh>

Lemma l3_17 (Pasch variant)
This lemma is a variant of Pasch's axiom. The lemma is. The proof consists of two applications of Pasch's axiom. The first one uses the triangle  (with points   and  ) to construct a point. The second uses the triangle  (with points   and  ) to construct the point. <jh> thm (PaschLine ((q P) (q C) (q A) (q B) (q B′) (q′ q) (q′ P) (q′ C) (q′ B) (q′ A) (q′ B′) (q′ A′))   ((((between A B C) ∧ (between A′ B′ C)) ∧ (between A P A′)) → (∃ q ((between P (value q) C) ∧ (between B (value q) B′)))) ( </jh> To construct, we need   and  , and Pasch's axiom will give us   and. <jh> ((between A B C) ∧ (between A′ B′ C)) (between A P A′) ConjunctionLeftElimination

((between A B C) ∧ (between A′ B′ C)) (between A P A′) ConjunctionRightElimination eliminateLeftConjunctInConsequent swapBetweennessInConsequent

composeConjunction

A P A′ C B′ q′ Pasch applySyllogism </jh> That gives us. We'll need  in the next step, so we put   inside the quantifier to get. <jh> ((between A B C) ∧ (between A′ B′ C)) (between A P A′) ConjunctionRightElimination eliminateRightConjunctInConsequent swapBetweennessInConsequent

composeConjunction

q′ ((between P (value q′) C) ∧ (between B′ (value q′) A)) (between C B A) ThereExistsConjunctionRightMovement eliminateBiconditionalForward applySyllogism </jh> To construct, we need   and  , and Pasch's axiom will give us   and. <jh> ((between P (value q′) C) ∧ (between B′ (value q′) A)) (between C B A) ConjunctionLeftElimination

((between P (value q′) C) ∧ (between B′ (value q′) A)) (between C B A) ConjunctionRightElimination eliminateLeftConjunctInConsequent

composeConjunction

C B A B′ (value q′) q Pasch applySyllogism </jh> We're getting close. Right now there are two things on the proof stack,  and. Half of what we need is. We'll need to fish out  and   to get , so start by putting   inside the <jh> ((between P (value q′) C) ∧ (between B′ (value q′) A)) (between C B A) ConjunctionRightElimination eliminateRightConjunctInConsequent

composeConjunction

q ((between B (value q) B′) ∧ (between (value q′) (value q) C)) (between P (value q′) C) ThereExistsConjunctionRightMovement eliminateBiconditionalForward applySyllogism </jh> Combining with the previous results we get <jh> q′ addThereExists applySyllogism </jh> Now we can extract  and , and apply. <jh> ((between B (value q) B′) ∧ (between (value q′) (value q) C)) (between P (value q′) C) ConjunctionLeftElimination

((between B (value q) B′) ∧ (between (value q′) (value q) C)) (between P (value q′) C) ConjunctionRightElimination eliminateLeftConjunctInConsequent

composeConjunction

P (value q′) C (value q) BetweennessMiddleTransitivity applySyllogism </jh> The other half of what we need is <jh> ((between B (value q) B′) ∧ (between (value q′) (value q) C)) (between P (value q′) C) ConjunctionRightElimination eliminateRightConjunctInConsequent </jh> Combining we get. <jh> composeConjunction

q addThereExists q′ addThereExists applySyllogism </jh> The  quantifier is now unneeded, so remove it. <jh> removeThereExistsInConsequent )) </jh>

Export
We now export to Interface:Betweenness of points.

<jh> export (RESULTS Interface:Betweenness_of_points (CLASSICAL FIRSTORDER) ) </jh>