Documentation

Complexity.Computability.Circuit.Monotone.Clique.Approximator

Clique approximators #

Razborov's method of approximations for the clique function replaces the value of every gate of a monotone circuit by an approximator: a family of at most sunflowerBound p w sets of at most w vertices, read as the disjunction of the indicators "all edges inside s" (Cslib.Circuits.Monotone.Approximator.decode). An input variable is approximated by its edge, a disjunction by the union of the families, and a conjunction by the pairwise unions of their sets; sets of more than w vertices are dropped, and sunflowers with p petals are plucked (Cslib.pluckNormalForm) to keep the family small. Sets of at most one vertex contain no edges and so stand for true; they are dropped from a pairwise union rather than joined (Cslib.Circuits.Monotone.join).

The approximate interpretation (Cslib.Circuits.Monotone.Approximator.interpretation) makes errors on the two kinds of test inputs, counted in Complexity/Computability/Circuit/Monotone/Clique/Positive.lean and Complexity/Computability/Circuit/Monotone/Clique/Negative.lean.

Main definitions #

References #

A family of vertex sets accepts an input when the input contains all edges inside one of the sets.

Instances For
    @[instance_reducible]
    noncomputable instance Cslib.Circuits.Monotone.instDecidableAccepts {n : ℕ} (F : Finset (Finset (Fin n))) (x : Fin (Clique.edgeCount n) → Bool) :
    theorem Cslib.Circuits.Monotone.Accepts.of_forall_exists_subset {n : ℕ} {F G : Finset (Finset (Fin n))} {x : Fin (Clique.edgeCount n) → Bool} (hF : Accepts F x) (h : ∀ s ∈ F, ∃ t ∈ G, t ⊆ s) :

    A family accepts whatever a family whose every set contains one of its sets accepts.

    A set of at most one vertex contains no edge.

    The input x contains all edges inside the vertices of an edge exactly when it has the edge.

    The vertex set standing for the conjunction of two sets: a set of at most one vertex stands for true and is dropped.

    Instances For

      An input containing all edges inside the join of two sets contains all edges inside each.

      On the complete graph on c, the join of two sets with all edges inside has all edges inside.

      def Cslib.Circuits.Monotone.gateTerms {n : ℕ} (w : ℕ) (op : Op) :
      (Fin (signature.Arity op) → Finset (Finset (Fin n))) → Finset (Finset (Fin n))

      The sets produced at a gate from the sets of its arguments, before plucking: {∅} or ∅ for the constants, the union for a disjunction, and the pairwise joins for a conjunction, dropping the sets of more than w vertices.

      Instances For
        theorem Cslib.Circuits.Monotone.card_le_of_mem_gateTerms {n w : ℕ} {op : Op} {F : Fin (signature.Arity op) → Finset (Finset (Fin n))} {s : Finset (Fin n)} (hs : s ∈ gateTerms w op F) :
        s.card ≤ w

        An approximator: a family of at most sunflowerBound p w sets of at most w vertices.

        Instances For
          noncomputable def Cslib.Circuits.Monotone.Approximator.decode {n p w : ℕ} (A : Approximator n p w) (x : Fin (Clique.edgeCount n) → Bool) :

          The truth value of an approximator on an input: whether one of its sets has all edges inside.

          Instances For
            noncomputable def Cslib.Circuits.Monotone.Approximator.input {n p w : ℕ} [Fact (2 ≤ p)] (i : Fin (Clique.edgeCount n)) :

            The approximator of an input variable: its edge, if 2 ≤ w.

            Instances For
              theorem Cslib.Circuits.Monotone.Approximator.decode_input {n p w : ℕ} [Fact (2 ≤ p)] (hw : 2 ≤ w) (i : Fin (Clique.edgeCount n)) (x : Fin (Clique.edgeCount n) → Bool) :
              (input i).decode x = x i

              The approximate interpretation of the monotone basis: compute the sets at the gate (gateTerms) and pluck sunflowers with p petals.

              Instances For