Documentation

Complexitylib.Classes.PCP.Internal.AlgWalk

The killed walk, in numbers #

A dart of the powered graph is a tuple of steps together with a tuple of coins; the walk runs until the first coin that is zero. NumEncPi numbers both tuples digit by digit, so an algorithm recovers a step or a coin by dividing and taking the remainder. This module reads the stopping rule off those digits.

Main definitions #

Main results #

theorem Complexity.findIdx_congr {β : Type} {l : List β} {p q : βBool} (h : xl, p x = q x) :

Where a killed walk stops, read off the coins' number: the first digit that is zero, or the whole length if there is none.

Equations
Instances For
    theorem Complexity.stopAtNum_eq {T q : } (hq : 0 < q) (c : Fin TFin q) :

    The digits give the stopping index.

    How many darts the preprocessed graph has at each vertex.

    Equations
    Instances For
      noncomputable def Complexity.ConstraintGraph.walkNum {α : Type} [DecidableEq α] (G : ConstraintGraph α) (E : ExpanderFamily) (s : ) :

      The vertex reached after k steps, following the digits of s.

      Equations
      Instances For
        theorem Complexity.ConstraintGraph.digit_enc {α : Type} [DecidableEq α] (G : ConstraintGraph α) (E : ExpanderFamily) {T : } (s : Fin T(G.preprocess E).graph.D) (hpos : 0 < G.preDeg E) (k : ) (hk : k < T) :
        NumEnc.enc s / G.preDeg E ^ k % G.preDeg E = NumEnc.enc (s k, hk)

        The digits of a tuple's number are its entries' numbers.

        theorem Complexity.ConstraintGraph.walkNum_eq {α : Type} [DecidableEq α] (G : ConstraintGraph α) (E : ExpanderFamily) {T : } (v : G.HalfEdge) (s : Fin T(G.preprocess E).graph.D) (n : ) (hdig : ∀ (k : ) (hk : k < T), n / G.preDeg E ^ k % G.preDeg E = NumEnc.enc (s k, hk)) {k : } :
        k TG.walkNum E n k (NumEnc.enc v) = NumEnc.enc ((G.preprocess E).graph.walkAt T v s k)

        Following the digits walks the graph. The steps are read from any number whose digits are the tuple's entries, so a prefix of a longer walk may be run from that walk's own number.

        The dart the walk comes back by #

        noncomputable def Complexity.ConstraintGraph.killedRevNum {α : Type} [DecidableEq α] (G : ConstraintGraph α) (E : ExpanderFamily) (T q v s c : ) :

        The dart a killed walk comes back by, in numbers: below the stopping index the digits are the labels pointing back, read in reverse order; above it they are the original steps.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem Complexity.ConstraintGraph.killedRevNum_eq {α : Type} [DecidableEq α] (G : ConstraintGraph α) (E : ExpanderFamily) {T q : } (hq : 0 < q) (hpos : 0 < G.preDeg E) (v : G.HalfEdge) (s : Fin T(G.preprocess E).graph.D) (c : Fin TFin q) :

          The digits give the dart the walk comes back by.

          The powered graph's rotation map #

          noncomputable def Complexity.ConstraintGraph.killedRotNum {α : Type} [DecidableEq α] (G : ConstraintGraph α) (E : ExpanderFamily) (T q v s c : ) :

          The powered graph's rotation map, in numbers: walk to the end, come back by the reversed labels, and keep the coins.

          Equations
          Instances For
            theorem Complexity.ConstraintGraph.killedRotNum_eq {α : Type} [DecidableEq α] (G : ConstraintGraph α) (E : ExpanderFamily) {T q : } (hq : 0 < q) (hpos : 0 < G.preDeg E) (v : G.HalfEdge) (x : (Fin T(G.preprocess E).graph.D) × (Fin TFin q)) {w : G.HalfEdge} {y : (Fin T(G.preprocess E).graph.D) × (Fin TFin q)} (hw : ((G.preprocess E).graph.killedPower q T hq).rot (v, x) = (w, y)) :

            The numbers run the powered graph's rotation map.