Documentation

Complexity.Foundations.Geometry.Orthogonal.Separation

Finite certificates for contacts of polygonal routes #

Two axis-aligned closed segments have rectangular bounding boxes whose intersection is empty, a singleton, or an overlapping segment. The Boolean checker accepts the first two cases when the singleton is an allowed contact point. Its soundness refers to the entire real segments. In fact, the sufficient bounding-box criterion is sound even for diagonal segments.

The route checker includes a degenerate segment for every listed point, so its soundness also covers empty and singleton routes. In particular, checking against a singleton route certifies that an incidence route avoids a nonincident vertex.

Main definitions #

Main results #

References #

This finite bounding-box certificate is an elementary geometric construction.

A pair of different segments may meet only at a consecutive shared bend.

Instances For

    A finite sufficient test that two segments meet only at listed grid points. It accepts disjoint bounding boxes or a singleton intersection belonging to allowed.

    Instances For
      theorem Cslib.Orthogonal.segmentContactCheck_sound {allowed : List Point} {a b c d : Point} (h : segmentContactCheck allowed a b c d = true) {p : ℝ × ℝ} (hab : p ∈ segment a b) (hcd : p ∈ segment c d) :
      ∃ q ∈ allowed, p = realPoint q

      The finite checker controls every real intersection, not only lattice intersections.

      Segment pieces for a route, including degenerate pieces for isolated listed points.

      Instances For

        Continuous route support is exactly the union of its finite segment pieces.

        Minimum of a coordinate projection along a nonempty route p :: r.

        Instances For

          Maximum of a coordinate projection along a nonempty route p :: r.

          Instances For

            Check whether the integer coordinate bounding boxes of two routes are disjoint. Empty routes have empty support, so their bounding boxes are treated as disjoint.

            Instances For

              Disjoint integer route bounding boxes certify disjoint continuous supports.

              Check whether two routes have disjoint bounding boxes or all finite segment-piece pairs have only permitted contacts.

              Instances For
                theorem Cslib.Orthogonal.routeContactCheck_sound {allowed : List Point} {r s : Route} (h : routeContactCheck allowed r s = true) {p : ℝ × ℝ} (hr : p ∈ support r) (hs : p ∈ support s) :
                ∃ q ∈ allowed, p = realPoint q

                Every real intersection of the route supports is one of the allowed grid points.

                An empty permitted-contact list certifies disjoint continuous supports.

                Testing against a singleton route certifies that a route avoids a specified vertex.