Uhlig routing circuits #
This module lifts Uhlig's two-request recovery invariant to Boolean functions on independent row-major inputs. It defines the finite semantic layer, explicitly routes each request suffix to its selected resources, and composes those routers with an externally supplied bank of shorter-function circuits.
The final source index among the 2 ^ prefixWidth prefix assignments.
Equations
- Algebraic.MassProduction.UhligCircuit.prefixLast prefixWidth = 2 ^ prefixWidth - 1
Instances For
Restrict the first prefixWidth variables of a Boolean function to one
canonical source value.
Equations
- Algebraic.MassProduction.UhligCircuit.restriction function source suffix = function (Algebraic.MassProduction.InputSplit.joinedInput (Fin.cast ⋯ source) suffix)
Instances For
Uhlig's resource functions, now viewed as functions of the unspecialized suffix variables.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pair-major enumeration of the 2 * pairs requests.
Equations
- Algebraic.MassProduction.UhligCircuit.pairRequest pair side = Fin.cast ⋯ (finProdFinEquiv (pair, side))
Instances For
The full input block belonging to one side of one request pair.
Equations
- Algebraic.MassProduction.UhligCircuit.requestBlock input pair side = Algebraic.MassProduction.directProductInput input (Algebraic.MassProduction.UhligCircuit.pairRequest pair side)
Instances For
The prefix bits of one request.
Equations
- Algebraic.MassProduction.UhligCircuit.requestPrefix input pair side bit = Algebraic.MassProduction.UhligCircuit.requestBlock input pair side (Fin.castAdd suffixWidth bit)
Instances For
The suffix bits of one request.
Equations
- Algebraic.MassProduction.UhligCircuit.requestSuffix input pair side bit = Algebraic.MassProduction.UhligCircuit.requestBlock input pair side (Fin.natAdd prefixWidth bit)
Instances For
Canonical numeric source selected by the request prefix.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The two disjoint resource sets assigned to one request pair.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Runtime suffix sent to one resource. Disjointness makes the first two branches mutually exclusive; an unused resource receives an arbitrary zero suffix.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Value produced by one resource for one request pair.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Decode one requested output by XORing its assigned resource values.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The runtime prefix and suffix really reassemble the selected input block.
Exact correctness for one side of one pair.
Exact row-major finite Uhlig layer: decoding all pairs is the ordinary direct product of the original function.
Explicit routing expressions #
Input coordinate in one two-request block.
Equations
- Algebraic.MassProduction.UhligCircuit.localInputIndex side coordinate = finProdFinEquiv (side, coordinate)
Instances For
Prefix bits in one two-request block.
Equations
- Algebraic.MassProduction.UhligCircuit.localPrefix input side bit = input (Algebraic.MassProduction.UhligCircuit.localInputIndex side (Fin.castAdd suffixWidth bit))
Instances For
Suffix bits in one two-request block.
Equations
- Algebraic.MassProduction.UhligCircuit.localSuffix input side bit = input (Algebraic.MassProduction.UhligCircuit.localInputIndex side (Fin.natAdd prefixWidth bit))
Instances For
Numeric source represented by a local request prefix.
Equations
Instances For
Indicator that one local request prefix equals a fixed source.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The fixed suffix input chosen for a resource after the two prefixes have been hardwired.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Runtime routing for one suffix bit, written as a one-hot selection over the two request prefixes.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Explicit circuit routing one pair's suffix to one Uhlig resource.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Batched routing and supplied resource circuits #
Embed one local two-request input into the corresponding global pair.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Charged/gate count of one resource router.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Route all request pairs to one shared resource circuit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Compose one supplied pairs-copy resource circuit after its explicit
Uhlig router.
Equations
- Algebraic.MassProduction.UhligCircuit.routedResourceCircuit pairs resource resourceCircuit = resourceCircuit.comp (Algebraic.MassProduction.UhligCircuit.resourceRouterArrayCircuit pairs resource)
Instances For
Gate count of one routed supplied resource circuit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
All Uhlig resources evaluated in parallel, in (resource, pair) order.
Equations
- One or more equations did not get rendered due to their size.