Documentation

LeanPool.HadwigerNelsonBounds.PartsPlaneGeometry

Plane geometry for the Parts spindle #

This module gives an explicit triangular-lattice realization and elementary distance-preserving rotations. The two exact cosines are the angles used in Parts' doubled wheel and spindle.

noncomputable def HadwigerNelsonBounds.pointR2 (x y : ) :

A point in from its two Cartesian coordinates.

Equations
Instances For
    @[simp]
    @[simp]
    noncomputable def HadwigerNelsonBounds.partsAxialPoint (q r : ) :

    The triangular-lattice point with axial coordinates (q,r).

    Equations
    Instances For
      theorem HadwigerNelsonBounds.partsAxialPoint_dist_sq (q r q' r' : ) :
      dist (partsAxialPoint q r) (partsAxialPoint q' r') ^ 2 = ↑(q - q') ^ 2 + ↑(q - q') * ↑(r - r') + ↑(r - r') ^ 2

      Squared distance on the axial triangular lattice.

      theorem HadwigerNelsonBounds.partsAxialPoint_dist_eq_one {q r q' r' : } (hnorm : (q - q') ^ 2 + (q - q') * (r - r') + (r - r') ^ 2 = 1) :
      noncomputable def HadwigerNelsonBounds.planeRotation (cosine sine : ) (p : R2) :

      Rotation through an angle represented by its cosine and sine.

      Equations
      Instances For
        @[simp]
        theorem HadwigerNelsonBounds.planeRotation_zero (cosine sine : ) :
        planeRotation cosine sine 0 = 0
        theorem HadwigerNelsonBounds.planeRotation_dist_eq {cosine sine : } (htrig : cosine ^ 2 + sine ^ 2 = 1) (p q : R2) :
        dist (planeRotation cosine sine p) (planeRotation cosine sine q) = dist p q
        theorem HadwigerNelsonBounds.planeRotation_displacement_sq {cosine sine : } (htrig : cosine ^ 2 + sine ^ 2 = 1) (p : R2) :
        dist p (planeRotation cosine sine p) ^ 2 = 2 * (1 - cosine) * dist p 0 ^ 2

        The doubled-wheel angle has cosine 7/8.

        Equations
        Instances For

          Positive sine of the doubled-wheel angle.

          Equations
          Instances For
            noncomputable def HadwigerNelsonBounds.partsApplyPatch (rotated : Bool) (p : R2) :

            Apply the doubled-wheel rotation exactly when selecting its second patch.

            Equations
            Instances For
              theorem HadwigerNelsonBounds.partsApplyPatch_dist_eq (rotated : Bool) (p q : R2) :
              dist (partsApplyPatch rotated p) (partsApplyPatch rotated q) = dist p q

              Optionally apply the central inversion used by a triangle witness.

              Equations
              Instances For
                noncomputable def HadwigerNelsonBounds.partsTriangleMotion (rotated : Bool) (centerQ centerR : ) (negated : Bool) (p : R2) :

                Translate, optionally invert, and optionally rotate a canonical triangle.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem HadwigerNelsonBounds.partsTriangleMotion_dist_eq (rotated : Bool) (centerQ centerR : ) (negated : Bool) (p q : R2) :
                  dist (partsTriangleMotion rotated centerQ centerR negated p) (partsTriangleMotion rotated centerQ centerR negated q) = dist p q
                  theorem HadwigerNelsonBounds.partsTriangleMotion_A (rotated : Bool) (centerQ centerR : ) (negated : Bool) :
                  partsTriangleMotion rotated centerQ centerR negated partsTriangleA = partsApplyPatch rotated (partsAxialPoint (centerQ + if negated = true then -1 else 1) centerR)
                  theorem HadwigerNelsonBounds.partsTriangleMotion_B (rotated : Bool) (centerQ centerR : ) (negated : Bool) :
                  partsTriangleMotion rotated centerQ centerR negated partsTriangleB = partsApplyPatch rotated (partsAxialPoint centerQ (centerR + if negated = true then 1 else -1))
                  theorem HadwigerNelsonBounds.partsTriangleMotion_C (rotated : Bool) (centerQ centerR : ) (negated : Bool) :
                  partsTriangleMotion rotated centerQ centerR negated partsTriangleC = partsApplyPatch rotated (partsAxialPoint (centerQ + if negated = true then 1 else -1) (centerR + if negated = true then -1 else 1))
                  noncomputable def HadwigerNelsonBounds.pullbackUnitDistanceColoring {color : Type u_1} (planeColoring : unitDistanceGraph.Coloring color) (motion : R2R2) (hdist : ∀ (p q : R2), dist (motion p) (motion q) = dist p q) :

                  Pull a proper plane coloring back along any distance-preserving map.

                  Equations
                  Instances For
                    @[simp]
                    theorem HadwigerNelsonBounds.pullbackUnitDistanceColoring_apply {color : Type u_1} (planeColoring : unitDistanceGraph.Coloring color) (motion : R2R2) (hdist : ∀ (p q : R2), dist (motion p) (motion q) = dist p q) (p : R2) :
                    (pullbackUnitDistanceColoring planeColoring motion hdist) p = planeColoring (motion p)
                    theorem HadwigerNelsonBounds.parts_triangle_motion_not_monochromatic (planeColoring : unitDistanceGraph.Coloring (Fin 4)) (rotated : Bool) (centerQ centerR : ) (negated : Bool) :
                    ¬(planeColoring (partsTriangleMotion rotated centerQ centerR negated partsTriangleA) = planeColoring (partsTriangleMotion rotated centerQ centerR negated partsTriangleB) planeColoring (partsTriangleMotion rotated centerQ centerR negated partsTriangleB) = planeColoring (partsTriangleMotion rotated centerQ centerR negated partsTriangleC))

                    Every rigid image of the checked canonical triangle is non-monochromatic.

                    The final spindle angle has cosine 31/32.

                    Equations
                    Instances For

                      Positive sine of the final spindle angle.

                      Equations
                      Instances For