Documentation

Complexitylib.Classes.PCP.Internal.AlgKey

The bounded data a composed edge depends on #

A composed edge's second endpoint and its constraint depend on the outer graph only through what one killed walk meets: the darts it takes, the parity of each vertex it stands on, the code of each constraint there, and the darts it returns by — together with the random string and the read. All of that lives in finite types that do not mention the graph, so it is a key of bounded length, and the edge's data is a function of the key alone.

Main definitions #

Main results #

@[reducible, inline]
abbrev Complexity.StepKey (E : ExpanderFamily) (T q B C : ) :

The bounded data a composed edge's head and constraint depend on.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    def Complexity.StepKey.dart {E : ExpanderFamily} {T q B C : } (k : StepKey E T q B C) :
    Fin TPreDart E

    The walk's darts.

    Equations
    Instances For
      def Complexity.StepKey.coins {E : ExpanderFamily} {T q B C : } (k : StepKey E T q B C) :
      Fin TFin q

      Its coins.

      Equations
      Instances For
        def Complexity.StepKey.par {E : ExpanderFamily} {T q B C : } (k : StepKey E T q B C) :
        Fin TFin 2

        The parity of the vertex each step stands on.

        Equations
        Instances For
          def Complexity.StepKey.code {E : ExpanderFamily} {T q B C : } (k : StepKey E T q B C) :
          Fin TFin C

          The code of the constraint each step meets.

          Equations
          Instances For
            def Complexity.StepKey.rev {E : ExpanderFamily} {T q B C : } (k : StepKey E T q B C) :
            Fin TPreDart E

            The darts the walk returns by.

            Equations
            Instances For

              The tester's random string.

              Equations
              Instances For
                def Complexity.StepKey.read {E : ExpanderFamily} {T q B C : } (k : StepKey E T q B C) :

                The read.

                Equations
                Instances For
                  def Complexity.StepKey.len {E : ExpanderFamily} {T q B C : } (k : StepKey E T q B C) :

                  How long the effective walk is.

                  Equations
                  Instances For
                    theorem Complexity.StepKey.len_le {E : ExpanderFamily} {T q B C : } (k : StepKey E T q B C) :
                    k.len T
                    noncomputable def Complexity.relOfKey {α : Type} [Fintype α] [DecidableEq α] {E : ExpanderFamily} {T q B C : } (k : StepKey E T q B C) :
                    (PreWalk E Tα)(PreWalk E Tα)Bool

                    The constraint the data describes: at each step of the effective walk, the preprocessed constraint its code and parity stand for.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      noncomputable def Complexity.satSetOfKey {α : Type} [Fintype α] [DecidableEq α] {E : ExpanderFamily} {T q B C : } (encβ : (PreWalk E Tα)BooleanAnalysis.Cube B) (k : StepKey E T q B C) :

                      The satisfying set the data describes.

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

                        Writing the data out #

                        noncomputable def Complexity.decOr {X : Type} [NumEnc X] (d : X) (n : ) :
                        X

                        The value a number names, or a default.

                        Equations
                        Instances For
                          theorem Complexity.decOr_enc {X : Type} [NumEnc X] (d a : X) :
                          noncomputable def Complexity.packKey {E : ExpanderFamily} {T q B C : } (k : StepKey E T q B C) :

                          The data written out: one unary number per component.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            noncomputable def Complexity.keyOfString {E : ExpanderFamily} {T q B C : } (dflt : StepKey E T q B C) (s : List Bool) :
                            StepKey E T q B C

                            The data read back from a string, falling back on a default.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              theorem Complexity.keyOfString_packKey {E : ExpanderFamily} {T q B C : } (dflt k : StepKey E T q B C) :
                              keyOfString dflt (packKey k) = k

                              The reading inverts the writing.

                              theorem Complexity.length_digitSum_eq_enc {X : Type} [NumEnc X] {T : } (s : Fin TX) (digit : List BoolList Bool) (w : List Bool) (h : ∀ (j : ) (hj : j < T), (digit j w).length = NumEnc.enc (s j, hj)) :

                              A digit sum is a tuple's number, when the digits are the entries'.

                              noncomputable def Complexity.stepKeyOf {α : Type} [Fintype α] [DecidableEq α] (G : ConstraintGraph α) (E : ExpanderFamily) {q T : } (v : (G.preprocess E).graph.V) (x : (Fin T(G.preprocess E).graph.D) × (Fin TFin q)) (B : ) (z : BooleanAnalysis.Cube (Tester.ROf B)) (i : ReadIdx) :
                              StepKey E T q B (Fintype.card (ααBool))

                              The data a killed walk actually shows.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                theorem Complexity.relOfKey_stepKeyOf {α : Type} [Fintype α] [DecidableEq α] (G : ConstraintGraph α) (E : ExpanderFamily) {q T : } (hq : 0 < q) (v : (G.preprocess E).graph.V) (x : (Fin T(G.preprocess E).graph.D) × (Fin TFin q)) (B : ) (z : BooleanAnalysis.Cube (Tester.ROf B)) (i : ReadIdx) :
                                relOfKey (stepKeyOf G E v x B z i) = ((G.preprocess E).killedPow q T hq).rel v x

                                The data a walk shows describes that walk's constraint.

                                theorem Complexity.satSetOfKey_stepKeyOf {α : Type} [Fintype α] [DecidableEq α] (G : ConstraintGraph α) (E : ExpanderFamily) {q T : } (hq : 0 < q) (v : (G.preprocess E).graph.V) (x : (Fin T(G.preprocess E).graph.D) × (Fin TFin q)) {B : } (z : BooleanAnalysis.Cube (Tester.ROf B)) (i : ReadIdx) (encβ : (PreWalk E Tα)BooleanAnalysis.Cube B) :
                                satSetOfKey encβ (stepKeyOf G E v x B z i) = RegCSP.satSet encβ ((G.preprocess E).killedPow q T hq) (v, x)

                                The data a walk shows describes that walk's satisfying set.

                                noncomputable def Complexity.cubeOfKey {α : Type} [Fintype α] [DecidableEq α] {E : ExpanderFamily} {T q B C : } (encβ : (PreWalk E Tα)BooleanAnalysis.Cube B) (k : StepKey E T q B C) :

                                The cube the data names.

                                Equations
                                Instances For
                                  noncomputable def Complexity.codeOfKey {α : Type} [Fintype α] [DecidableEq α] {E : ExpanderFamily} {T q B C : } (encβ : (PreWalk E Tα)BooleanAnalysis.Cube B) (k : StepKey E T q B C) :

                                  The constraint code the data names.

                                  Equations
                                  Instances For
                                    theorem Complexity.cubeOfKey_eq {α : Type} [Fintype α] [DecidableEq α] (G : ConstraintGraph α) (E : ExpanderFamily) {q T : } (hq : 0 < q) (v : (G.preprocess E).graph.V) (x : (Fin T(G.preprocess E).graph.D) × (Fin TFin q)) {B : } (z : BooleanAnalysis.Cube (Tester.ROf B)) (i : ReadIdx) (encβ : (PreWalk E Tα)BooleanAnalysis.Cube B) :
                                    cubeOfKey encβ (stepKeyOf G E v x B z i) = ((G.preprocess E).killedPow q T hq).cubeNum encβ (v, x) z i

                                    The data gives the composed edge's cube.

                                    theorem Complexity.codeOfKey_eq {α : Type} [Fintype α] [DecidableEq α] (G : ConstraintGraph α) (E : ExpanderFamily) {q T : } (hq : 0 < q) (v : (G.preprocess E).graph.V) (x : (Fin T(G.preprocess E).graph.D) × (Fin TFin q)) {B : } (z : BooleanAnalysis.Cube (Tester.ROf B)) (i : ReadIdx) (encβ : (PreWalk E Tα)BooleanAnalysis.Cube B) :
                                    codeOfKey encβ (stepKeyOf G E v x B z i) = codeOfRel (MultiTest.relOfCheck ((RegCSP.compose encβ ((G.preprocess E).killedPow q T hq)).check (v, x) z) i)

                                    And the composed edge's constraint.