Monotone Boolean formulas -- definitions #
This file defines a typed formula tree containing variables, conjunctions, and disjunctions only. Constants and negations are deliberately absent: this is the standard syntax used by the Karchmer--Wigderson correspondence.
A monotone Boolean formula over exactly N input variables.
- var
{N : ℕ}
(index : Fin N)
: MonotoneFormula N
An input variable.
- conj
{N : ℕ}
(left right : MonotoneFormula N)
: MonotoneFormula N
Conjunction.
- disj
{N : ℕ}
(left right : MonotoneFormula N)
: MonotoneFormula N
Disjunction.
Instances For
@[implicit_reducible]
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[implicit_reducible]
Equations
- One or more equations did not get rendered due to their size.
- Complexity.instDecidableEqMonotoneFormula.decEq (Complexity.MonotoneFormula.var a) (Complexity.MonotoneFormula.var b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Complexity.instDecidableEqMonotoneFormula.decEq (Complexity.MonotoneFormula.var index) (left.conj right) = isFalse ⋯
- Complexity.instDecidableEqMonotoneFormula.decEq (Complexity.MonotoneFormula.var index) (left.disj right) = isFalse ⋯
- Complexity.instDecidableEqMonotoneFormula.decEq (left.conj right) (Complexity.MonotoneFormula.var index) = isFalse ⋯
- Complexity.instDecidableEqMonotoneFormula.decEq (left.conj right) (left_1.disj right_1) = isFalse ⋯
- Complexity.instDecidableEqMonotoneFormula.decEq (left.disj right) (Complexity.MonotoneFormula.var index) = isFalse ⋯
- Complexity.instDecidableEqMonotoneFormula.decEq (left.disj right) (left_1.conj right_1) = isFalse ⋯
Instances For
Evaluate a monotone formula.
Equations
- Complexity.MonotoneFormula.eval input (Complexity.MonotoneFormula.var index) = input index
- Complexity.MonotoneFormula.eval input (left.conj right) = (Complexity.MonotoneFormula.eval input left && Complexity.MonotoneFormula.eval input right)
- Complexity.MonotoneFormula.eval input (left.disj right) = (Complexity.MonotoneFormula.eval input left || Complexity.MonotoneFormula.eval input right)
Instances For
Number of variable leaves, counting repeated occurrences.
Equations
Instances For
Longest root-to-leaf path, with variables at depth zero.
Equations
Instances For
The set of variables occurring in the formula.
Equations
Instances For
def
Complexity.MonotoneFormula.Computes
{N : ℕ}
(formula : MonotoneFormula N)
(function : BitString N → Bool)
:
Whether a formula computes a given single-output Boolean function.
Equations
- formula.Computes function = ∀ (input : Complexity.BitString N), Complexity.MonotoneFormula.eval input formula = function input
Instances For
Erase finite-index proofs and view a monotone formula as a general
BoolFormula.
Equations
- (Complexity.MonotoneFormula.var index).toBoolFormula = Complexity.BoolFormula.var ↑index
- (left.conj right).toBoolFormula = left.toBoolFormula.conj right.toBoolFormula
- (left.disj right).toBoolFormula = left.toBoolFormula.disj right.toBoolFormula
Instances For
A single-output Boolean function is monotone in the pointwise Boolean order.
Equations
- Complexity.IsMonotoneBoolFun function = ∀ ⦃x y : Complexity.BitString N⦄, x.PointwiseLE y → function x = true → function y = true