Documentation

Complexitylib.Circuits.AC0.Iteration.Defs

Iterated switching for AC0 formulas -- definitions #

A restriction stage is stored newest first. The tail therefore contains the earlier stages used to simplify the children of a gate, while the head is the next restriction used to switch the normal form assembled at that gate.

This representation is finite and nonuniform. It contains restrictions and formula trees only; it does not contain or assume a circuit generator.

A newest-first sequence of exactly stageCount finite restrictions.

Equations
Instances For

    Compose all stages chronologically, so earlier fixed values take precedence over later stages.

    Equations
    Instances For

      Independent sparse-restriction seeds for exactly stageCount stages. The recursive product stores the earlier stages before the newest seed.

      Equations
      Instances For
        @[implicit_reducible]
        instance Complexity.RandomRestriction.stageSeedFintype (N q stageCount : ) :
        Fintype (StageSeed N q stageCount)
        Equations
        • One or more equations did not get rendered due to their size.
        @[implicit_reducible]
        instance Complexity.RandomRestriction.stageSeedDecidableEq (N q stageCount : ) :
        DecidableEq (StageSeed N q stageCount)
        Equations
        • One or more equations did not get rendered due to their size.
        def Complexity.RandomRestriction.finalRestriction {N q stageCount : } (seeds : StageSeed N q stageCount) :

        The cumulative finite restriction decoded from all stages.

        Equations
        Instances For
          def Complexity.RandomRestriction.stageEventCount {N stageCount : } (q : ) (event : Switching.RestrictionStages N stageCountProp) [DecidablePred event] :

          Count staged seeds whose decoded restrictions satisfy event.

          Equations
          Instances For

            Sum, over all staged seeds, of the number of variables left free by the cumulative restriction.

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

              The depth-at-most-one decision tree used at the bottom of the staged compiler. Gate cases are a harmless fallback: correctness uses this construction only when the formula has connective depth zero.

              Equations
              Instances For
                noncomputable def Complexity.AC0Formula.stagedDecisionTree {N : } (stageCount : ) :

                Compile a depth-bounded AC0 formula through a newest-first sequence of switching stages.

                At a gate, the earlier stages recursively compile every child to a decision tree. A conjunction of those trees becomes a CNF and a disjunction becomes a DNF. The newest restriction is then handled by the corresponding complete block switching tree.

                Equations
                Instances For
                  def Complexity.AC0Formula.stagedBad {N stageCount : } (formula : AC0Formula N) (queryCount : ) (stages : Switching.RestrictionStages N stageCount) :

                  The staged compiler fails its target depth when its output has depth at least queryCount.

                  Equations
                  Instances For
                    @[implicit_reducible]
                    noncomputable instance Complexity.AC0Formula.stagedBadDecidable {N : } (formula : AC0Formula N) (queryCount stageCount : ) :
                    DecidablePred (formula.stagedBad queryCount)
                    Equations