Extracting bottom AC0 gates as bounded normal forms #
Source logical depth counts AND/OR gates and gives every negation zero delay. This module proves the structural fact needed for circuit depth reduction: every wire of logical depth zero, including an arbitrary internal NOT chain, computes a signed original input. The older bottom-gate extraction API retains its checked input-negation premise for compatibility; semantic layer reduction uses the unrestricted literal theorem directly.
Those literal inputs are converted to the exact DNF or CNF from
LiteralGate. The resulting formula computes the internal shared-DAG gate
function pointwise and has width at most the gate's fan-in. No circuit is
unfolded into a formula, so sharing is preserved outside the one gate being
extracted.
Source logical depth of each internal program gate.
Equations
- Algebraic.AC0.Program.logicalGateDepths program = program.eval Algebraic.AC0.logicalDepthInterpretation fun (x : Fin n) => 0
Instances For
Source logical depth of each input or internal-gate wire.
Equations
- Algebraic.AC0.Program.logicalWireDepths program = program.trace Algebraic.AC0.logicalDepthInterpretation fun (x : Fin n) => 0
Instances For
Original inputs have source logical depth zero.
A gate wire has the source logical depth of that gate.
Evaluating a widened program line in the logical-depth interpretation recovers the stored depth of its gate.
Widening a line's gate-wire namespace preserves the property that a NOT reads an original input.
Every widened line of an input-negation-normal program satisfies the same input-negation condition.
Every source-depth-zero wire computes an explicit signed original-input literal, even when NOT gates form arbitrary internal chains.
Every source-depth-zero wire of an input-negation-normal program computes an explicit signed original-input literal.
Chosen literal family witnessing LiteralInputs.
Equations
- literalInputs.literals = Classical.choose literalInputs
Instances For
Each chosen literal computes its source argument wire.
Transport the chosen literal family to the declared fan-in of an AND line.
Equations
- literalInputs.andLiterals operation argument = literalInputs.literals (Fin.cast ⋯ argument)
Instances For
Transport the chosen literal family to the declared fan-in of an OR line.
Equations
- literalInputs.orLiterals operation argument = literalInputs.literals (Fin.cast ⋯ argument)
Instances For
Exact DNF representation of an AND line whose arguments are literals.
Equations
- literalInputs.andFormula operation = Algebraic.AC0.LiteralFamily.conjunction (literalInputs.andLiterals operation)
Instances For
Exact CNF representation of an OR line whose arguments are literals.
Equations
- literalInputs.orFormula operation = Algebraic.AC0.LiteralFamily.disjunction (literalInputs.orLiterals operation)
Instances For
The extracted AND formula has width at most the line fan-in.
The extracted OR formula has width at most the line fan-in.
The extracted DNF computes the original AND line.
The extracted CNF computes the original OR line.
Every argument of a connective gate at source logical depth one has source logical depth zero.
A connective gate at source logical depth one has a semantic signed literal for every argument wire.
Extract a source-depth-one AND gate as an exact DNF.
Equations
- Algebraic.AC0.Program.andGateFormula program normal gate operation depthOne = ⋯.andFormula operation
Instances For
Extract a source-depth-one OR gate as an exact CNF.
Equations
- Algebraic.AC0.Program.orGateFormula program normal gate operation depthOne = ⋯.orFormula operation
Instances For
The extracted depth-one AND-gate DNF has width at most its fan-in.
The extracted depth-one OR-gate CNF has width at most its fan-in.
The extracted DNF computes the internal AND gate's scalar function.
The extracted CNF computes the internal OR gate's scalar function.