Interface:Collinearity

We build on propositional logic and first-order logic (including equality):

 param (CLASSICAL Interface:Classical_propositional_calculus ) param (FIRSTORDER Interface:First-order_logic_with_quantifiability (CLASSICAL) ) 

The kind, defined in first-order logic, represents a point. We do not directly have a concept of lines, angles, or circles (nor can these be defined in the obvious way as sets of points, as this is a first-order theory).  kindbind (object point) var (point x y z w u v A B C D P Q) var (point x′ y′ z′ u′ A′ B′ C′ D′)

var (variable a b c a′ b′ c′) var (formula antecedent) 

Congruence of line segments
We introduce congruence of line segments;  means that the line segment   is the same length as the line segment. This property is also known as equidistance.  term (formula (≡ point point point point)) 

There are a variety of ways of expressing the idea that congruence is not affected by the order in which we list the line segment's endpoints.  stmt (CongruenceLeftCommutativity  ((x y ≡ z w) ↔ (y x ≡ z w))) stmt (CongruenceRightCommutativity  ((x y ≡ z w) ↔ (x y ≡ w z))) stmt (CongruenceCommutativity  ((x y ≡ z w) ↔ (y x ≡ w z)))

stmt (commuteCongruenceLeftInConsequent ((antecedent → (x y ≡ z w)))  (antecedent → (y x ≡ z w))) stmt (commuteCongruenceRightInConsequent ((antecedent → (x y ≡ z w)))  (antecedent → (x y ≡ w z))) stmt (commuteCongruenceInConsequent ((antecedent → (x y ≡ z w)))  (antecedent → (y x ≡ w z))) 

The congruence relation has the attributes of an equivalence relation between line segments.  stmt (CongruenceReflexivity  (x y ≡ x y)) stmt (CongruenceSymmetry  ((x y ≡ z w) ↔ (z w ≡ x y))) stmt (CongruenceTransitivity  (((x y ≡ z w) ∧ (z w ≡ u v)) → (x y ≡ u v)))

stmt (CongruenceABBA  (x y ≡ y x)) stmt (swapCongruenceInConsequent ((antecedent → (x y ≡ z w)))  (antecedent → (z w ≡ x y))) 

A segment which has zero length starts and ends at the same point (although saying "zero length" is a bit of a shortcut, as our theory is not based on real numbers or any other numbers).  stmt (CongruenceIdentity  ((x y ≡ z z) → (x = y))) stmt (CongruenceIdentityLeft  ((x x ≡ y z) → (y = z))) stmt (CongruenceTrivialIdentity  (y y ≡ x x)) stmt (CongruenceIdentityFromEquality  ((x = y) → ((x y ≡ z w) → (z = w)))) stmt (NegatedCongruenceIdentityFromEquality   (((A ≠ B) ∧ (A B ≡ C D)) → (C ≠ D))) 

Betweenness
The other fundamental formula is betweenness;  signifies "y is between x and z".

 term (formula (between point point point)) 

There are no points between a point and itself.  stmt (IndivisibilityBiconditional  ((between x y x) ↔ (x = y))) stmt (IndivisibilityFromEquality  (((x = z) ∧ (between x y z)) → (x = y))) 

A point is between itself and any second point.  stmt (BetweenABB  (between A B B)) stmt (BetweenAAB  (between A A B)) </jh>

In addition, this situation (a point is between itself and another) is the only way that betweenness can hold both as-is and with the first two points exchanged.  stmt (BetweennessEquality  (((between A B C) ∧ (between B A C)) → (A = B))) </jh>

The two endpoints of a betweenness relation are interchangeable.  stmt (BetweennessSymmetry  ((between A B C) ↔ (between C B A)))

stmt (swapBetweennessInConsequent ((antecedent → (between A B C)))  (antecedent → (between C B A))) </jh>

Transitivity
In this section we present 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.  stmt (BetweennessInnerTransitivity   (((between A B D) ∧ (between B C D)) → (between A B C))) stmt (BetweennessInnerTransitivityFlipped   (((between A B C) ∧ (between A C D)) → (between B C D)))

stmt (BetweennessOuterTransitivity   ((((between A B C) ∧ (between B C D)) ∧ (B ≠ C)) → (between A B D))) stmt (BetweennessOuterTransitivityFlipped   ((((between A B C) ∧ (between B C D)) ∧ (B ≠ C)) → (between A C D)))

stmt (BetweennessMiddleTransitivity   (((between A B D) ∧ (between B C D)) → (between A C D))) stmt (BetweennessMiddleTransitivityFlipped   (((between A B C) ∧ (between A C D)) → (between A B D))) </jh>

Segment construction
A line segment can be extended beyond one of its endpoints by a specified distance (where by "distance" we mean a second line segment, which the constructed segment is to be congruent to). The segment extended this way is unique.  stmt (SegmentConstruction ((a w) (a x) (a y) (a z)) (∃ a ((between w x (value a)) ∧ (x (value a) ≡ y z)))) stmt (SegmentConstructionUniqueness  ((((((Q ≠ A) ∧ (between Q A x)) ∧ (A x ≡ B C)) ∧ (between Q A y)) ∧ (A y ≡ B C)) → (x = y))) </jh>

Existence of distinct points
Here we can construct a point distinct from a given point, or a point distinct from a given point extended along a given line segment.  stmt (PointConstructionDifferent ((c A) (c B))  (∃ c ((between A B (value c)) ∧ (B ≠ (value c))))) stmt (AnotherPoint ((b A)) (∃ b (A ≠ (value b)))) </jh>

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))) stmt (BetweennessCollinearity  ((between x y z) → (collinear x y z))) stmt (CollinearityRotation  ((collinear x y z) ↔ (collinear y z x))) stmt (Collinearity23  ((collinear x y z) ↔ (collinear x z y))) stmt (Collinearity12  ((collinear x y z) ↔ (collinear y x z))) stmt (Collinearity13  ((collinear x y z) ↔ (collinear z y x))) </jh>

A point, itself, and any second point are collinear.  stmt (CollinearityAAB  (collinear A A B)) stmt (CollinearityABB  (collinear A B B)) stmt (CollinearityABA  (collinear A B A)) </jh>

Determining lines, or points, by distance to two 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.  stmt (EquidistantLine   (((((A ≠ B) ∧ (collinear A B C)) ∧ (A P ≡ A Q)) ∧ (B P ≡ B Q)) → (C P ≡ C Q))) </jh>

On a given line, the distance to two points can uniquely determine a point. We have two versions: one in which the two given points are distinct, and one in which they are endpoints of a line segment on which the point lies.  stmt (CollinearTwoDistanceUniqueness   (((((A ≠ B) ∧ (collinear A B C)) ∧ (A C ≡ A C′)) ∧ (B C ≡ B C′)) → (C = C′))) stmt (BetweennessTwoDistanceUniqueness  ((((between A C B) ∧ (A C ≡ A C′)) ∧ (B C ≡ B C′)) → (C = C′))) </jh>

Triangle congruence defined
At least for now, we define triangle congruence here (rather than provide a theorem providing this definition, which corresponds to the familiar side-side-side property of triangle congruence). The definition allows degenerate triangles: the points may be collinear, and need not all be distinct from each other.  def ((≅ x y z x′ y′ z′) (((x y ≡ x′ y′) ∧ (x z ≡ x′ z′)) ∧ (y z ≡ y′ z′))) </jh> The corresponding sides of congruent (possibly degenerate) triangles are congruent.  stmt (Congruence12  ((A B C ≅ A′ B′ C′) → (A B ≡ A′ B′))) stmt (Congruence23  ((A B C ≅ A′ B′ C′) → (B C ≡ B′ C′))) stmt (Congruence13  ((A B C ≅ A′ B′ C′) → (A C ≡ A′ C′))) </jh>

Rotate the order of points in a triangle congruence.  stmt (CongruenceRotation  ((A B C ≅ A′ B′ C′) ↔ (B C A ≅ B′ C′ A′))) </jh>

Five segment
The five segment theorems are variations of the familiar congruences for triangles (although without any explicit reference to angles).  stmt (OuterFiveSegment   ((((((((x ≠ y) ∧ (between x y z)) ∧ (between x′ y′ z′)) ∧ (x y ≡ x′ y′)) ∧ (y z ≡ y′ z′)) ∧ (x u ≡ x′ u′)) ∧ (y u ≡ y′ u′)) → (z u ≡ z′ u′)) ) stmt (InnerFiveSegment   (((((((between x y z) ∧ (between x′ y′ z′)) ∧ (x z ≡ x′ z′)) ∧ (y z ≡ y′ z′)) ∧ (x u ≡ x′ u′)) ∧ (z u ≡ z′ u′)) → (y u ≡ y′ u′))) stmt (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′))) </jh>

Three segment
The three segment theorems can be thought of as degenerate cases of five segment, or as basic properties of points on a line.  stmt (OuterThreeSegment   (((((between x y z) ∧ (between x′ y′ z′)) ∧ (x y ≡ x′ y′)) ∧ (y z ≡ y′ z′)) → (x z ≡ x′ z′))) stmt (InnerThreeSegment   (((((between x y z) ∧ (between x′ y′ z′)) ∧ (x z ≡ x′ z′)) ∧ (y z ≡ y′ z′)) → (x y ≡ x′ y′))) </jh>

Some degenerate triangle congruence theorems
 stmt (BetweennessDegenerateTriangle    (((between A B C) ∧ (A B C ≅ A′ B′ C′)) → (between A′ B′ C′))) stmt (CollinearityDegenerateTriangle   (((collinear A B C) ∧ (A B C ≅ A′ B′ C′)) → (collinear A′ B′ C′))) stmt (InnerDegenerateTriangle ((b′ A) (b′ B) (b′ C) (b′ A′) (b′ C′))   (((between A B C) ∧ (A C ≡ A′ C′)) → (∃ b′ ((between A′ (value b′) C′) ∧ (A B C ≅ A′ (value b′) C′))))) stmt (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′))))) </jh>

Tarski's axioms
We repeat those axioms which are not subsumed by the theorems we have proved so far. Explanations are at Interface:Tarski's geometry axioms. <jh> stmt (Pasch ((a x) (a u) (a z) (a y) (a v)) (((between x u z) ∧ (between y v z)) → (∃ a ((between u (value a) y) ∧ (between v (value a) x))))) var (formula φx ψy) var (variable xx yy) stmt (Continuity ((φx yy) (φx a) (φx b) (ψy xx) (ψy a) (ψy b) (a b xx yy))   ((∃ a (∀ xx (∀ yy ((φx ∧ ψy) → (between (value a) (value xx) (value yy)))))) → (∃ b (∀ xx (∀ yy ((φx ∧ ψy) → (between (value xx) (value b) (value yy)))))))) stmt (LowerDimension ((a b c))  (∃ a (∃ b (∃ c    (((¬ (between (value a) (value b) (value c))) ∧ (¬ (between (value b) (value c) (value a))))    ∧ (¬ (between (value c) (value a) (value b))) ))))) stmt (UpperDimension   (((((x u ≡ x v) ∧ (y u ≡ y v)) ∧ (z u ≡ z v)) ∧ (u ≠ v)) → (((between x y z) ∨ (between y z x)) ∨ (between z x y)))) stmt (AxiomEuclid ((a b x) (a b u) (a b v) (a b y) (a b z)) ( (((between x u v) ∧ (between y u z)) ∧ (x ≠ u)) → (∃ a (∃ b (((between x y (value a)) ∧ (between x z (value b))) ∧ (between (value a) v (value b))))))) var (point x0 x1 x2 x3 y0 y1 y2 y3) stmt (CongruenceBuilder  ( ((((x0 = y0) ∧ (x1 = y1)) ∧ (x2 = y2)) ∧ (x3 = y3)) → ((x0 x1 ≡ x2 x3) ↔ (y0 y1 ≡ y2 y3)) )) stmt (BetweennessBuilder  ( (((x0 = y0) ∧ (x1 = y1)) ∧ (x2 = y2)) → ((between x0 x1 x2) ↔ (between y0 y1 y2)) )) stmt (CollinearityBuilder  ( (((x0 = y0) ∧ (x1 = y1)) ∧ (x2 = y2)) → ((collinear x0 x1 x2) ↔ (collinear y0 y1 y2)))) </jh>