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 #
Cslib.Orthogonal.consecutiveContact: permitted shared bend between two segments.Cslib.Orthogonal.segmentContactCheck: check permitted contacts between two closed segments.Cslib.Orthogonal.routeBoxDisjoint: check whether two route bounding boxes are disjoint.Cslib.Orthogonal.routeContactCheck: check permitted contacts between continuous route supports.
Main results #
Cslib.Orthogonal.segmentContactCheck_sound: every real intersection is an allowed grid point.Cslib.Orthogonal.isSimple_of_segmentContactCheck: consecutive-bend checks prove simplicity.Cslib.Orthogonal.disjoint_support_of_routeBoxDisjoint: disjoint route boxes have disjoint continuous supports.Cslib.Orthogonal.routeContactCheck_sound: the corresponding certificate for route supports.Cslib.Orthogonal.disjoint_support_of_routeContactCheck: an empty contact list proves disjointness.Cslib.Orthogonal.not_mem_support_of_routeContactCheck: a singleton check excludes a vertex.Cslib.Orthogonal.routeContactCheck_ite_sound: a conditional single-contact check identifies the only possible contact.
References #
This finite bounding-box certificate is an elementary geometric construction.
A route without repeated listed points is simple when every pair of distinct segments passes the contact check whose only allowed contact is their consecutive shared bend.
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.
A check that allows the single contact q exactly when P holds: any real contact proves
P and is q. This is the usual form of an access-to-terminal certificate.