Native Shannon synthesis #
This module gives an Algebraic-native version of the finite synthesis construction used as the base case of the mass-production induction. It uses a shared circuit for all minterms, followed by a shared library of all Boolean functions on a short address block. No external circuit model and no new type-class instances are used.
Canonical finite index of a Boolean vector.
Equations
- Algebraic.MassProduction.ShannonSynthesis.bitVectorEquiv width = (Equiv.piCongrRight fun (x : Fin width) => finTwoEquiv.symm).trans finFunctionFinEquiv
Instances For
Decode a canonical finite index back to its Boolean vector.
Equations
- Algebraic.MassProduction.ShannonSynthesis.assignmentBits width assignment = (Algebraic.MassProduction.ShannonSynthesis.bitVectorEquiv width).symm assignment
Instances For
A positive or negative occurrence of one input, according to the expected Boolean value.
Equations
- Algebraic.MassProduction.ShannonSynthesis.matchingLiteral index expected = if expected = true then Algebraic.DeMorgan.Expression.input index else (Algebraic.DeMorgan.Expression.input index).not
Instances For
Index in the retained-state vector of a minterm from the previous dimension.
Equations
- Algebraic.MassProduction.ShannonSynthesis.previousMintermInput assignment = Fin.castAdd 1 assignment
Instances For
Index in the retained-state vector of the newly prepended input bit.
Equations
- Algebraic.MassProduction.ShannonSynthesis.newHeadInput width = Fin.last (2 ^ width)
Instances For
One output of the layer which extends all width-bit minterms by one
new head bit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Program-gate count of one full minterm-extension layer.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Compute all extended minterms in parallel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Program-gate count of the shared all-minterms circuit.
Equations
- One or more equations did not get rendered due to their size.
- Algebraic.MassProduction.ShannonSynthesis.mintermGateCount 0 = 1
Instances For
A shared circuit computing the indicator of every Boolean assignment.
The recursive layer prepends the new input bit, matching Fin.cons.
Equations
- One or more equations did not get rendered due to their size.
- Algebraic.MassProduction.ShannonSynthesis.mintermCircuit 0 = (Algebraic.DeMorgan.Expression.constant true).circuit
Instances For
Equality with a decoded assignment is exactly equality of the head bit and equality of the encoded tail.
The Boolean conjunction used by an extension layer is the indicator of the represented full assignment.
Every output of the shared minterm circuit is the exact indicator of its canonical Boolean assignment.
The complete shared minterm table costs at most four gates per Boolean assignment.
The shared library of short-address Boolean functions #
One hardwired term in the truth-table disjunction for a short-address function.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The truth-table formula for one Boolean function of the address block, evaluated on a one-hot vector of address minterms.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A hardwired column formula reads the truth-table bit selected by a one-hot minterm vector.
Program-gate count of the complete short-address function library.
Equations
- One or more equations did not get rendered due to their size.
Instances For
All Boolean functions of addressWidth inputs, sharing the same address
minterm vector.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Composing the library after the shared minterm circuit evaluates the canonical truth-table bit of the input address.
Synthesis of an arbitrary split-input Boolean function #
The initial address block of a split input.
Equations
- Algebraic.MassProduction.ShannonSynthesis.addressInput dataWidth input = input ∘ Fin.castAdd dataWidth
Instances For
The final data block of a split input.
Equations
- Algebraic.MassProduction.ShannonSynthesis.dataInput addressWidth input = input ∘ Fin.natAdd addressWidth
Instances For
Gate count of the two shared minterm tables.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Compute all address and all data minterms in parallel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Gate count of the library stage, whose retained data minterms are free wires.
Equations
Instances For
Evaluate the complete address library while retaining every data minterm.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The address truth-table column required when the data block has one fixed assignment.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Input coordinate of a precomputed address-column value.
Equations
- Algebraic.MassProduction.ShannonSynthesis.columnInput dataWidth pattern = Fin.castAdd (2 ^ dataWidth) pattern
Instances For
Input coordinate of a retained data minterm.
Equations
- Algebraic.MassProduction.ShannonSynthesis.dataMintermInput addressWidth assignment = Fin.natAdd (2 ^ 2 ^ addressWidth) assignment
Instances For
Combine one retained data minterm with the corresponding hardwired address-function column.
Equations
- One or more equations did not get rendered due to their size.
Instances For
OR the row terms to obtain the synthesized function.
Equations
Instances For
Program-gate count of the complete native Shannon circuit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Algebraic-native Shannon synthesis with a caller-selected address/data split.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Intermediate values after both minterm tables and the address-function library have been evaluated.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The native Shannon circuit computes the supplied Boolean function.
Explicit cost ledger for the split synthesis construction.