Constant clique sizes and essential edges #
Two elementary facts about binary, constant-free AND/OR circuits and the
CLIQUE function of Basic.lean. They give lower bounds for small clique
sizes, where the approximation method has nothing to say.
- Such a circuit outputs
falseon the empty graph, while0-CLIQUE and1-CLIQUE accept it. So no such circuit computes either (not_computes_of_le_one). - For
2 ≤ k ≤ n, every edge variable is essential tok-CLIQUE: removing one edge from the minimal graph of ak-set through it destroys everyk-clique. The fan-in bound then givesedgeCount n ≤ 1 + size(edgeCount_le_succ_size), and(n / 2)^2 ≤ edgeCount n.
theorem
Algebraic.Monotone.Clique.program_eval_allFalse
{inputCount gateCount : ℕ}
(program : Program AndOr.signature inputCount gateCount)
(gate : Fin gateCount)
:
Every gate of a binary AND/OR program is false on the all-false input.
theorem
Algebraic.Monotone.Clique.circuit_eval_allFalse
{inputCount : ℕ}
(circuit : Circuit AndOr.signature inputCount 1)
:
A binary AND/OR circuit outputs false on the all-false input.
theorem
Algebraic.Monotone.Clique.not_computes_of_le_one
{n k : ℕ}
(k_le_one : k ≤ 1)
(k_le_n : k ≤ n)
(circuit : Circuit AndOr.signature (edgeCount n) 1)
:
No binary, constant-free AND/OR circuit computes k-CLIQUE for k ≤ 1
(when k ≤ n): the empty graph is accepted but the circuit rejects it.
theorem
Algebraic.Monotone.Clique.program_fanInAtMost_two
{inputCount gateCount : ℕ}
(program : Program AndOr.signature inputCount gateCount)
:
program.FanInAtMost 2
Every binary AND/OR program has fan-in at most two.
theorem
Algebraic.Monotone.Clique.edgeCount_le_succ_size
{n k : ℕ}
(two_le : 2 ≤ k)
(k_le_n : k ≤ n)
(circuit : Circuit AndOr.signature (edgeCount n) 1)
(computes :
∀ (assignment : Fin (edgeCount n) → Bool),
circuit.eval AndOr.boolInterpretation assignment 0 = function n k assignment)
:
For 2 ≤ k ≤ n, a binary AND/OR circuit computing k-CLIQUE reads every
edge variable, so it has at least edgeCount n - 1 gates.