Combined block advice for the switching lemma #
This module isolates the finite counting argument that improves the elementary one-position/two-bit switching encoding. Following the combined encoding in Beame's A Switching Lemma Primer, a term block records an unordered subset of source-term positions and the path bits relative to the assignment satisfying that term. Every block followed by another block has a nonzero difference string; only the final block may use the all-zero string.
CombinedAdvice width pathLength packages exactly those block sequences. Its
cardinality is at most ((5 * width - 1) / 2) ^ pathLength for positive width.
This is an abstract structural count: it does not enumerate formulas, paths,
or circuits.
Advice for one source-term block. Positions form a subset because the canonical path queries them in source order; sorting the subset recovers that order. Each Boolean says whether the path value differs from the value that satisfies the corresponding literal.
Queried source-term positions.
Difference bits, indexed in increasing source-position order.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
A block has a mismatch when its path falsifies at least one of the source term's literals.
Equations
- block.HasMismatch = (block.differences ≠ fun (x : Fin length) => false)
Instances For
A nonfinal block, whose difference string must be nonzero before the canonical construction can move to a later source term.
Equations
- Algebraic.AC0.Switching.ContinuingBlockAdvice width length = { block : Algebraic.AC0.Switching.BlockAdvice width length // block.HasMismatch }
Instances For
A sequence of source-term blocks occupying exactly pathLength queries.
The last block is arbitrary; every block with a recursive tail is continuing
and therefore carries a mismatch.
Equations
- One or more equations did not get rendered due to their size.
- Algebraic.AC0.Switching.CombinedAdvice width 0 = PUnit.{1}
Instances For
The finite enumeration inherited from bounded position subsets and Boolean difference strings.
Equations
- One or more equations did not get rendered due to their size.
Proof-irrelevant finiteness obtained by strong induction on total path length.
Combined advice is finite at every path length.
Equations
- Algebraic.AC0.Switching.combinedAdviceFintype width pathLength = Fintype.ofFinite (Algebraic.AC0.Switching.CombinedAdvice width pathLength)
Continuing blocks form a finite subtype of block advice.
Equations
- Algebraic.AC0.Switching.continuingBlockAdviceFintype width length = Fintype.ofFinite (Algebraic.AC0.Switching.ContinuingBlockAdvice width length)
A length-length block chooses that many of the width positions and one
Boolean difference bit per position.
Requiring a mismatch removes exactly the all-zero difference string.
Exact first-block recurrence for the combined advice cardinality.
Combined block advice has at most ((5 * width - 1) / 2)^pathLength
elements. The subtraction occurs in Real, and positive width makes the base
positive.
Fintype.card form of the combined-advice cardinality bound.