Splitting an arbitrary Boolean function into prefix and suffix inputs #
The finite composition theorem accepts a function indexed by a numeric
prefixWidth-bit prefix and an ordinary Boolean suffix. The headline theorem
instead quantifies over an arbitrary Boolean function on the concatenated
input block. This module proves that the runtime prefix encoding used by the
circuit is exactly inverse to the corresponding semantic split.
All transports are explicit functions or equalities; no instances are introduced.
Decode a bounded numeric prefix into the same little-endian Boolean bits
used by RuntimePacking.source.
Equations
- Algebraic.MassProduction.InputSplit.sourceBits source bit = finTwoEquiv (finFunctionFinEquiv.symm source bit)
Instances For
Encoding the decoded bits of a bounded source returns that source.
Concatenate the decoded prefix and the ordinary suffix.
Equations
- Algebraic.MassProduction.InputSplit.joinedInput source suffix = Fin.append (Algebraic.MassProduction.InputSplit.sourceBits source) suffix
Instances For
Semantic split of an arbitrary function on a concatenated input block.
Equations
- Algebraic.MassProduction.InputSplit.splitFunction function source suffix = function (Algebraic.MassProduction.InputSplit.joinedInput source suffix)
Instances For
Splitting a function and passing it through the runtime request interface recovers the original function exactly.
The finite composition theorem therefore bounds the ordinary mass
complexity of every function on prefixWidth + suffixWidth inputs.
Zero-cost input transport #
Apply one input-index map independently in every row-major request block.
Equations
- Algebraic.MassProduction.InputSplit.batchedInputMap copies inputMap input = finProdFinEquiv ((finProdFinEquiv.symm input).1, inputMap (finProdFinEquiv.symm input).2)
Instances For
Reindexing the inputs of every copy commutes with direct product.
Rewiring source inputs cannot increase minimum circuit complexity.
The scalar direct-product specialization of zero-cost input rewiring.
Padding to a convenient larger block length #
Retraction from a padded input block to a nonempty original block. Only its behavior on the initial embedded block matters.
Equations
Instances For
Extend a function to a larger input block by ignoring the padded tail.
Equations
- Algebraic.MassProduction.InputSplit.paddedFunction fits function input = function (input ∘ Fin.castLE fits)
Instances For
Padding unused tail variables cannot make the original Boolean direct product cheaper: a circuit for the padded function rewires back at zero cost.