Documentation

Complexity.Computability.MCSP.Partial

The Partial Minimum Circuit Size Problem (MCSP*) #

The Partial Minimum Circuit Size Problem (MCSP* or PartialMCSP) asks, given the truth table of a partial Boolean function $f^* : \{0, 1\}^n \to \{0, 1, *\}$ on arity = n inputs and a size threshold s, whether there exists a total Boolean function $f : \{0, 1\}^n \to \{0, 1\}$ that extends $f^*$ (agreeing with $f^*$ on every input where $f^*(x) \ne *$) and has a circuit of size at most s [Ilango2020FOCS, Section II.B; ECCC TR20-183, Section 2.2; Hirahara2022, ECCC TR22-119, Definition 8.4, p. 30].

In PartialMCSP.Instance, the truth table has $2^n$ entries in Option Bool, where some b requires the circuit to output b and none represents the "don't care" symbol * (also written ? in [Hirahara2022, ECCC TR22-119, Definition 8.4]).

Cslib.PartialMCSP uses the standard De Morgan all-gates size measure Circuit.size (complexityOn interpretation x.definedInputs (single x.completion)), matching Cslib.MCSP and Cslib.SuccinctMCSP. We also define Cslib.PartialMCSP.BinaryGate using the AND/OR-only gate count c.program.cost binaryCost from [Ilango2020FOCS, Section II.B and Section III.B, p. 427; ECCC TR20-183, Section 2.2] (where NOT and constant gates are free), and prove the threshold-$n-1$ bridge theorems relating the two measures using the binary-cost support bounds in Complexity.Computability.Circuit.Boolean.BinaryCost:

String encodings of PartialMCSP.Instance, membership in NP, and the polynomial-time many-one reduction from MCSP to PartialMCSP are in Complexity.Computability.MCSP.PartialNP.

Main definitions #

Main results #

References #

An instance of the Partial Minimum Circuit Size Problem (MCSP*): the truth table of a partial Boolean function on arity inputs (none for * / don't-care, some b for a required output b) and a circuit-size threshold [Ilango2020FOCS, Section II.B; ECCC TR20-183, Section 2.2; Hirahara2022, ECCC TR22-119, Definition 8.4, p. 30].

  • arity : ℕ

    The number of input variables of the partial Boolean function.

  • table : Fin (2 ^ self.arity) → Option Bool

    The truth table of the partial Boolean function, indexed via BitString.equivFin.

  • threshold : ℕ

    The maximum number of gates allowed.

Instances For

    The partial Boolean function represented by an instance.

    Instances For

      The set of inputs on which the partial Boolean function is defined (not *).

      Instances For

        The finite set of inputs on which the partial Boolean function is defined.

        Instances For

          The canonical total completion of x.partialFunction that maps undefined (*) entries to false. On x.definedInputs, a circuit agrees with x if and only if it agrees with x.completion.

          Instances For

            A total Boolean function f agrees with (extends) the partial truth table of x when f y = b for every input y where x.partialFunction y = some b [Ilango2020FOCS, Section II.B; ECCC TR20-183, Section 2.2].

            Instances For

              Agreement stated directly in terms of the table indices Fin (2 ^ x.arity).

              The canonical completion x.completion agrees with x.

              The Partial Minimum Circuit Size Problem (MCSP*) [Ilango2020FOCS, Section II.B; ECCC TR20-183, Section 2.2; Hirahara2022, ECCC TR22-119, Definition 8.4, p. 30]: the partial-function instances that can be computed on their defined inputs by a De Morgan circuit with at most threshold gates.

              Instances For

                The Partial Minimum Circuit Size Problem under the binary-gate cost measure [Ilango2020FOCS, Section II.B and Section III.B, p. 427; ECCC TR20-183, Section 2.2]: the partial-function instances for which some De Morgan circuit using at most threshold binary (AND/OR) gates agrees with the partial truth table.

                Instances For

                  An instance is in PartialMCSP if and only if some De Morgan circuit of size at most x.threshold agrees with x.partialFunction on all defined inputs.

                  Circuit characterization of PartialMCSP indexed by Fin (2 ^ x.arity).

                  Total-extension characterization of PartialMCSP [Ilango2020FOCS, Section II.B; ECCC TR20-183, Section 2.2]: an instance is in PartialMCSP if and only if some total Boolean function f agrees with x on all non-* entries and has circuit complexity at most x.threshold.

                  An instance is in PartialMCSP if and only if some function in computableFunctions x.arity x.threshold agrees with x.

                  theorem Cslib.PartialMCSP.mem_of_le {n s t : ℕ} {T : Fin (2 ^ n) → Option Bool} (h : { arity := n, table := T, threshold := s } ∈ PartialMCSP) (hst : s ≤ t) :
                  { arity := n, table := T, threshold := t } ∈ PartialMCSP

                  Raising the threshold preserves membership in PartialMCSP.

                  theorem Cslib.PartialMCSP.mem_binaryGate_of_le {n s t : ℕ} {T : Fin (2 ^ n) → Option Bool} (h : { arity := n, table := T, threshold := s } ∈ BinaryGate) (hst : s ≤ t) :
                  { arity := n, table := T, threshold := t } ∈ BinaryGate

                  Raising the threshold preserves membership in PartialMCSP.BinaryGate.

                  Bridge between all-gates PartialMCSP and binary-gate PartialMCSP.BinaryGate #

                  Every yes-instance under the all-gates measure is a yes-instance under the binary-gate measure, since c.program.cost binaryCost ≤ c.size.

                  Coordinate i is essential for the partial Boolean function of x when some pair of inputs differing only at i are both defined in x and assigned opposite Boolean values.

                  Instances For

                    If coordinate i is essential for x, then i is essential for every total Boolean function that agrees with x.

                    If coordinate i is essential for x, then i belongs to c.inputSupport for every circuit c whose output agrees with x.

                    When all x.arity input coordinates are essential for x, every circuit agreeing with x has full input support c.inputSupport = Finset.univ.

                    When all x.arity input coordinates are essential for x, every circuit agreeing with x uses at least x.arity - 1 binary (AND/OR) gates (x.arity ≤ 1 + c.program.cost binaryCost).

                    When all x.arity coordinates are essential for x and x.threshold + 1 < x.arity (i.e. x.threshold < x.arity - 1), x is a no-instance even under the binary-gate measure.

                    theorem Cslib.PartialMCSP.not_mem_of_threshold_lt {x : Instance} (hess : ∀ (i : Fin x.arity), x.EssentialAt i) (ht : x.threshold + 1 < x.arity) :

                    When all x.arity coordinates are essential for x and x.threshold + 1 < x.arity, x is a no-instance of PartialMCSP.

                    Threshold-n - 1 rigidity. When all x.arity coordinates are essential for x and x.threshold + 1 ≤ x.arity, any all-gates circuit c of size at most x.threshold agreeing with x has c.program.cost binaryCost = x.arity - 1, c.size = x.arity - 1, and consists exclusively of binary AND and OR gates (no NOT or constant gates).

                    Any circuit whose gates are all binary AND/OR gates has c.size = c.program.cost binaryCost, so a binary-gate witness without NOT or constant gates is immediately an all-gates witness of the same size.

                    When all x.arity coordinates are essential for x, 1 ≤ x.arity, and x.threshold = x.arity - 1, x ∈ PartialMCSP if and only if there is a circuit of size x.arity - 1 whose gates are all binary AND/OR gates that agrees with x.

                    If every binary-gate circuit for x of cost at most x.threshold can be replaced by a NOT-free, constant-free circuit of no greater binary cost (for example, in monotone reductions such as [Ilango2020FOCS, Theorem I.3; ECCC TR20-183, Theorem 3] where yes-instances have read-once monotone formulas of size n - 1 and no-instances require at least n binary gates), then x ∈ PartialMCSP ↔ x ∈ BinaryGate.

                    Embeddings from MCSP and into SuccinctMCSP #

                    View a total MCSP.Instance as a PartialMCSP.Instance with no * (none) entries.

                    Instances For
                      @[simp]

                      A total instance belongs to PartialMCSP if and only if it belongs to MCSP.

                      View a PartialMCSP.Instance as a SuccinctMCSP.Instance whose samples are the defined entries of its truth table.

                      Instances For
                        @[simp]

                        A partial truth table is in PartialMCSP if and only if its set of defined samples is in SuccinctMCSP.

                        Restrict a total truth table T : BitString (2 ^ n) to a subset S : Finset (BitString n) of defined inputs at threshold s, setting all entries outside S to none (*).

                        Instances For
                          @[simp]
                          @[simp]

                          Viewing Instance.restrictTable T S s as a SuccinctMCSP.Instance via Instance.toSuccinct yields SuccinctMCSP.Instance.ofFunction ((MCSP.truthTable n).symm T) S s.

                          @[simp]

                          The partial truth table Instance.restrictTable T S s is in PartialMCSP if and only if SuccinctMCSP.Instance.ofFunction ((MCSP.truthTable n).symm T) S s is in SuccinctMCSP.