Documentation

Complexitylib.Algebraic.MassProduction.Nonuniform.PreparedInputs

Shared generated values with preserved original inputs #

A preprocessing circuit runs once and retains all original input wires. Downstream wiring can select generated values or original values without duplicating the preprocessing computation or adding charged gates.

def Algebraic.MassProduction.Nonuniform.PreparedInputs.circuit {inputs outputs : ℕ} (generated : Circuit DeMorgan.signature inputs outputs) :
Circuit DeMorgan.signature inputs (outputs + inputs)

Preserve the original inputs after the generated output block.

Equations
Instances For
    @[simp]
    theorem Algebraic.MassProduction.Nonuniform.PreparedInputs.circuit_size {inputs outputs : ℕ} (generated : Circuit DeMorgan.signature inputs outputs) :
    (circuit generated).size = generated.size

    The exact gate count of circuit.

    def Algebraic.MassProduction.Nonuniform.PreparedInputs.output {outputs : ℕ} (inputs : ℕ) (index : Fin outputs) :
    DeMorgan.Wiring (outputs + inputs)

    Select one generated output wire.

    Equations
    Instances For
      theorem Algebraic.MassProduction.Nonuniform.PreparedInputs.circuit_eval {inputs outputs : ℕ} (generated : Circuit DeMorgan.signature inputs outputs) (input : Fin inputs → Bool) :
      (circuit generated).eval DeMorgan.interpretation input = Fin.append (generated.eval DeMorgan.interpretation input) input

      The preprocessing output is its generated values followed by the original input.

      theorem Algebraic.MassProduction.Nonuniform.PreparedInputs.original_eval {inputs outputs : ℕ} (generated : Circuit DeMorgan.signature inputs outputs) (wire : DeMorgan.Wiring inputs) (input : Fin inputs → Bool) :

      Original values survive preprocessing exactly.

      theorem Algebraic.MassProduction.Nonuniform.PreparedInputs.output_eval {inputs outputs : ℕ} (generated : Circuit DeMorgan.signature inputs outputs) (index : Fin outputs) (input : Fin inputs → Bool) :
      DeMorgan.Wiring.eval ((circuit generated).eval DeMorgan.interpretation input) (output inputs index) = generated.eval DeMorgan.interpretation input index

      Generated values are available as fixed wires.

      Keeping the original inputs adds no charged gates.