Stack-free streams for finite Boolean folds — definitions #
Right-associated finite conjunctions and disjunctions have linear tree depth. Their raw compilation nevertheless has a simple streaming order: compile every member from left to right, emit one terminal constant, then emit the binary connectors from right to left. This module names the connector suffix used by that decomposition.
Tree size shared by a right-associated conjunction or disjunction over
formulas.
Equations
- Complexity.BoolFormula.rightFoldSize formulas = 1 + (List.map (fun (formula : Complexity.BoolFormula) => formula.size + 1) formulas).sum
Instances For
Connector gates completing a right-associated finite Boolean fold.
The recursive call emits the deeper, right-hand connectors first. The final gate combines the current member output with the completed tail output.
Equations
Instances For
Explicit stack-free raw stream for a finite Boolean fold. Members are compiled forward, the identity constant is emitted once, and connectors are emitted in reverse member order.
Equations
- One or more equations did not get rendered due to their size.