Finite connectives and depth-two synthesis #
Constructing a new root adds one layer. Merging roots of the same kind uses
list flattening and preserves depth. Every Boolean function has depth-two
layers with at most 2^n + 1 gates, including at input length zero.
noncomputable def
Complexity.Shallow.Layer.gate
{n d : ℕ}
{ι : Type u_1}
[Fintype ι]
(fs : ι → Layer n d)
:
One root gate over a finite family of child layers.
Equations
Instances For
A clause excluding precisely one assignment.
Equations
- Complexity.Shallow.Layer.excludingClause y = Complexity.Shallow.Layer.gate fun (i : Fin n) => (i, y i)
Instances For
Truth-table CNF, used only at the bottom of the depth induction.
Equations
- Complexity.Shallow.Layer.cnf f = Complexity.Shallow.Layer.gate fun (y : { y : Complexity.BitString n // f y = false }) => Complexity.Shallow.Layer.excludingClause ↑y