Monotone formulas #
A monotone formula is a formula over the monotone basis, Formula Monotone.signature n,
evaluated under Monotone.interpretation: a tree of AND and OR gates of fan-in two whose leaves
are inputs and Boolean constants (Monotone.const, Monotone.and, Monotone.or). Every function
it computes is monotone (monotone_eval), and every monotone function has one: the disjunction,
over the inputs z where the function is true, of the conjunction of the bits that are one in z
(exists_computes_of_monotone). Unlike De Morgan formulas, monotone formulas thus compute only
some Boolean functions, so the least depth of a monotone formula for f is extended-valued:
eformulaDepth f, the least depth with constants free (Formula.minDepthWith for binaryCost),
is ⊤ when no monotone formula computes f, that is, when f is not monotone
(eformulaDepth_ne_top_iff). A monotone formula is a De Morgan formula (Formula.mapOp along
toDeMorgan), so the De Morgan formula depth is at most the monotone one
(formulaDepth_le_eformulaDepth).
Main definitions #
Cslib.Circuits.Monotone.const,Cslib.Circuits.Monotone.and,Cslib.Circuits.Monotone.or: monotone formulas built from constants and smaller formulas.Cslib.Circuits.Monotone.eformulaDepth: the least depth of a monotone formula for a function, or⊤if there is none.
Main results #
Cslib.Circuits.Monotone.exists_computes_iff_monotone: a Boolean function has a monotone formula exactly when it is monotone.Cslib.Circuits.Monotone.eformulaDepth_ne_top_iff: monotone formula depth is finite exactly for monotone functions.Cslib.Circuits.Monotone.formulaDepth_le_eformulaDepth: De Morgan formulas are at most as deep as monotone ones.
References #
Constructors #
Monotone functions #
Monotone formulas compute monotone functions.
Every monotone function has a monotone formula: the disjunction, over the inputs z where it
is true, of the conjunction of the bits that are one in z.
A Boolean function has a monotone formula exactly when it is monotone.
Depth #
The least depth of a monotone formula computing f, with constants free, or ⊤ if no
monotone formula computes f: the least depth with costs binaryCost (Formula.minDepthWith),
whose API applies to it.
Instances For
The monotone formula depth of a function is finite exactly when the function is monotone.
A monotone formula is a De Morgan formula of the same depth, so De Morgan formulas are at most as deep as monotone ones.