Documentation

Complexitylib.Classes.PCP.Internal.AlgPreprocess

The preprocessed graph, in numbers #

Preprocessing superposes three edge sets on the half-edges of a graph: the edge-links pairing the two halves of an edge, the cloud-links joining the halves that share an endpoint, and the expander's own edges, with a self-loop added at every vertex. This module reads off what each of those does to a number.

The numbering is the one NumEnc gives: a half-edge is 2 e or 2 e + 1 according to which end it is — the same number DegreeReduction sorts clouds by — and a dart is 0 for the self-loop, 1 for the edge-link, 2 + j for the j-th cloud-link and 2 + degree + j for the j-th expander edge.

Main results #

A half-edge's number is the code the clouds are sorted by.

The self-loop at a vertex.

Equations
Instances For

    The link to the other half of the same edge.

    Equations
    Instances For

      The j-th link inside the cloud.

      Equations
      Instances For

        The j-th edge of the superposed expander.

        Equations
        Instances For

          The darts of the preprocessed graph: a self-loop, an edge-link, the cloud-links, and the expander's edges.

          theorem Complexity.ConstraintGraph.preDart_cases {α : Type} [DecidableEq α] (G : ConstraintGraph α) (E : ExpanderFamily) (d : (G.preprocess E).graph.D) :
          d = G.preLoop E d = G.preEdge E (∃ (j : Fin E.degree), d = G.preCloud E j) ∃ (j : Fin E.degree), d = G.preExp E j

          Every dart is one of the four kinds.

          What each kind of dart does #

          theorem Complexity.ConstraintGraph.rot_preCloud {α : Type} [DecidableEq α] (G : ConstraintGraph α) (E : ExpanderFamily) (v : G.HalfEdge) (j : Fin E.degree) :
          (G.preprocess E).graph.rot (v, G.preCloud E j) = ((G.cloudRot E v j).1, G.preCloud E (G.cloudRot E v j).2)

          The three moves, in numbers #

          Crossing an edge flips the last bit of the number.

          The expander's vertices are numbered as the graph's are.

          The cloud step, in numbers #

          noncomputable def Complexity.ConstraintGraph.cloudStepNum {α : Type} (G : ConstraintGraph α) (E : ExpanderFamily) (v : Fin G.numVerts) (c : ) (j : Fin E.degree) :

          The cloud step on numbers: count how many of the cloud's half-edges come before this one, let the expander family move that index, and read off the code the new index names.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem Complexity.ConstraintGraph.cloudStepNum_eq {α : Type} (G : ConstraintGraph α) (E : ExpanderFamily) (p : G.HalfEdge) (j : Fin E.degree) :
            G.cloudStepNum E (G.owner p) (NumEnc.enc p) j = (NumEnc.enc (G.cloudRot E p j).1, (G.cloudRot E p j).2)

            The numbers run the cloud step.

            The whole rotation map, in numbers #

            noncomputable def Complexity.ConstraintGraph.ownerNum {α : Type} (G : ConstraintGraph α) (v : ) :

            The vertex a half-edge number is attached to.

            Equations
            Instances For
              noncomputable def Complexity.ConstraintGraph.cloudStepN {α : Type} (G : ConstraintGraph α) (E : ExpanderFamily) (u c j : ) :

              The cloud step, on numbers throughout.

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

                The expander step, on numbers.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  noncomputable def Complexity.ConstraintGraph.preRotNum {α : Type} [DecidableEq α] (G : ConstraintGraph α) (E : ExpanderFamily) (v d : ) :

                  The preprocessed graph's rotation map, on numbers. Dart 0 is the self-loop, dart 1 crosses the edge, darts 2 to deg + 1 rotate inside the cloud, and the rest are the superposed expander's.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For

                    The numbers run the preprocessed graph's rotation map.