Documentation

CslibFrontier.Computability.Complexity.Problems.Graph.OrthogonalLayout

Finite orthogonal routes indexed by the existing graph edge list #

No new graph representation is introduced. Positions follow G.vertices and routes follow G.edges, so every edge occurrence keeps its original index, including parallel edge occurrences. The input port table is a finite list assigning a pair of three-way ports to each edge occurrence.

Main definitions #

Main results #

Vertex positions indexed by the existing declared vertex list.

Instances For

    The finite route list, in exactly the order of the graph's edge occurrences. A missing port-table entry defaults to the left port at both ends. Contact separation requires that the supplied table assigns distinct ports to different incidences.

    Instances For
      @[simp]

      The output lists have the original vertex and edge counts.

      @[simp]

      The output lists have the original vertex and edge counts.

      theorem Cslib.Complexity.Graph.getElem_orthogonalRoutes (G : Graph) (ports : List (Fin 3 × Fin 3)) {i : ℕ} (hi : i < G.edges.length) :

      The route at index i is the route for the edge at the same index.

      A side-indexed version of the exact route formula.

      Every route has the actual indexed graph edge's endpoints, regardless of the port table.

      theorem Cslib.Complexity.Graph.orthogonalRoutes_orthogonal (G : Graph) (ports : List (Fin 3 × Fin 3)) {i : ℕ} (hi : i < G.edges.length) (hu : G.edges[i].1 ∈ G.vertices) (hv : G.edges[i].2 ∈ G.vertices) (hne : G.edges[i].1 ≠ G.edges[i].2) :

      Declared, distinct edge endpoints give a proper orthogonal route.

      theorem Cslib.Complexity.Graph.orthogonalRoutes_simple (G : Graph) (ports : List (Fin 3 × Fin 3)) {i : ℕ} (hi : i < G.edges.length) (hu : G.edges[i].1 ∈ G.vertices) (hv : G.edges[i].2 ∈ G.vertices) (hne : G.edges[i].1 ≠ G.edges[i].2) :

      Declared, distinct edge endpoints give a continuously simple route.

      At most 2m² candidate grid sites suffice for every bridge/stem crossing. Candidates may repeat or be unused; this explicit list is a cover, not a claim that every candidate is crossed.

      Instances For
        @[simp]

        A quadratic bound on the explicit crossing-site cover, counting repeated candidates.

        Every indexed bridge/port intersection point occurs in the finite candidate cover.

        Every contact in the canonical drawing lies at a vertex center or in an explicit list of 2m² candidate crossing sites. Strict transversality is supplied by Layout.route_contact; this finite cover additionally bounds the number of distinct crossing sites.

        Exactly five segments are emitted for every edge occurrence.

        The total wire length is at most 90 (n+m)², for n declared vertices and m edge occurrences. Endpoint membership is the only graph hypothesis needed for this resource bound.