Documentation

CslibFrontier.Computability.Complexity.Problems.Graph.RotationSystem.IntervalOrder

Linear ranks and literal directed rotation intervals #

Cutting a finite vertex cycle at any one of its darts gives first-hit ranks. These ranks retain the direction of the supplied rotation, without a geometric realization or any restriction on the graph's loops or components.

theorem Cslib.Complexity.Graph.RotationSystem.rotationDistance_le {G : Graph} (r : G.RotationSystem) {a b : G.Dart} (hab : a.vertex = b.vertex) {n : ℕ} (hn : (r.rotate ^ n) a = b) :

First-hit distance is bounded by any successful forward iterate.

First-hit ranks fit in one complete vertex cycle, including singleton cycles.

The rank of a forward iterate is its exponent reduced modulo the vertex period.

Forward rotation adds to a rank modulo the same vertex period.

The actual directed rotation interval is the cyclic order of first-hit ranks at any chosen cut. All three darts must be distinct and belong to that vertex cycle.

A zero-based linear rank of an incident dart, cutting each literal vertex cycle at one classically chosen dart. Different indexed ends, including loop ends, remain distinct.

Instances For
    theorem Cslib.Complexity.Graph.RotationSystem.portRank_injective {G : Graph} (r : G.RotationSystem) (a b : G.Dart) (hab : a.vertex = b.vertex) (heq : r.portRank a = r.portRank b) :
    a = b

    Ranks distinguish every actual dart at a vertex.

    theorem Cslib.Complexity.Graph.RotationSystem.mem_rotationInterval_iff_portRank {G : Graph} (r : G.RotationSystem) (a b c : G.Dart) (hab : a.vertex = b.vertex) (hbc : b.vertex = c.vertex) (hneab : a ≠ b) (hnebc : b ≠ c) (hneac : a ≠ c) :

    The chosen linear ranks retain the supplied clockwise cyclic interval.

    @[simp]

    A vertex cycle first reaches its starting dart at exponent zero.

    A different dart in the same source cycle has positive first-hit rank.

    A forward source step adds one to the first-hit rank until it returns to the specified cycle cut.

    The predecessor of a source cycle cut has its last rank, including unary cycles.

    The source vertex cycle after omitting its specified dart, in the original forward order. A unary vertex cycle gives Fin 0, without inventing a corner dart.

    Instances For

      The actual tail enumeration follows the original successor powers, rather than reusing contracted distances that have changed when the selected darts were removed.

      theorem Cslib.Complexity.Graph.RotationSystem.mem_rotationInterval_iff_lt_distance {G : Graph} (r : G.RotationSystem) (a b c : G.Dart) (hab : a.vertex = b.vertex) (hac : a.vertex = c.vertex) (hneab : a ≠ b) (hnebc : b ≠ c) (hneac : a ≠ c) :

      A strict interval based at its rank origin compares the two terminal ranks.

      theorem Cslib.Complexity.Graph.RotationSystem.mem_rotationInterval_cyclic {G : Graph} (r : G.RotationSystem) (a b c : G.Dart) (hab : a.vertex = b.vertex) (hbc : b.vertex = c.vertex) (hneab : a ≠ b) (hnebc : b ≠ c) (hneac : a ≠ c) :

      Strict literal rotation intervals are cyclic in three distinct incident darts.