Documentation

Complexitylib.Algebraic.LowerBound.Nechiporuk.Sharing.Defs

Definitions for programs with shared gates over the full binary basis #

This file holds the definitions behind the bounded-sharing Nechiporuk bounds, so that both the proof internals (Complexitylib.Algebraic.LowerBound.Nechiporuk.Sharing.Internal) and the surface statements (Complexitylib.Algebraic.LowerBound.Nechiporuk.Sharing) can refer to them:

The number of binary gates in a formula.

Equations
Instances For

    The number of variable leaves on the primary input variables 0, …, m - 1.

    Equations
    Instances For

      The number of variable leaves on the shared variables from m on.

      Equations
      Instances For

        A program on n inputs with k shared gates over the full binary basis: k + 1 binary formulas, where each formula reads the primary inputs and the values of the earlier shared formulas.

        Instances For

          Evaluate a binary program with shared gates.

          Equations
          Instances For
            @[simp]

            A program that only returns F evaluates as F.

            @[simp]
            theorem Algebraic.Nechiporuk.SharedProgram.eval_share {n k : ℕ} (G : Binary.Formula n) (P : SharedProgram (n + 1) k) (x : Fin n → Bool) :
            (share G P).eval x = P.eval (Fin.snoc x (G.eval x))

            A shared gate evaluates G and appends its value as the last variable.

            A program computes f when it agrees with f on every input.

            Equations
            Instances For

              A program computing f has evaluation function f.

              The number of binary gates, summed over the formulas of the program.

              Equations
              Instances For
                @[simp]

                The gates of an output-only program are those of its formula.

                @[simp]

                The gates of share G P are those of G plus those of P.

                The number of variable leaves on the variables 0, …, m - 1, summed over the formulas.

                Equations
                Instances For

                  The number of variable leaves on the variables from m on, summed over the formulas.

                  Equations
                  Instances For
                    @[simp]

                    Occurrences in an output-only program are those of its formula.

                    @[simp]

                    Occurrences in share G P are those of G plus those of P.

                    Embed a block Y ⊆ Fin N into Fin (N + 1) without including Fin.last N.

                    Equations
                    Instances For

                      Extend a block Y ⊆ Fin N to Fin (N + 1) by including the new shared variable Fin.last N.

                      Equations
                      Instances For

                        Advance a block across share G P: include Fin.last N iff G has a leaf in Y.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For

                          The block leaf count of a program on Y when every shared variable is unconditionally added to the block.

                          Equations
                          Instances For

                            The number of shared gates of P that are active on Y (have at least one leaf in the current active block).

                            Equations
                            Instances For

                              The number of shared-variable leaves of P that read shared gates active on Y.

                              Equations
                              Instances For

                                Sharing measures of binary circuits #

                                def Algebraic.Nechiporuk.sharedFanOut {σ : Signature} {n m : ℕ} (c : Circuit σ n m) :

                                The total fan-out of all shared gates (gates of fan-out at least two) of a circuit.

                                Equations
                                Instances For
                                  def Algebraic.Nechiporuk.gateActive {σ : Signature} {n : ℕ} (Y : Finset (Fin n)) {t : ℕ} :
                                  Program σ n t → Fin t → Bool

                                  Whether gate g of p has at least one input from Y in its syntactic cone.

                                  Equations
                                  Instances For
                                    def Algebraic.Nechiporuk.wireActive {σ : Signature} {n : ℕ} (Y : Finset (Fin n)) {t : ℕ} (p : Program σ n t) :
                                    Wire n t → Bool

                                    Whether wire w of p has at least one input from Y in its syntactic cone.

                                    Equations
                                    Instances For
                                      def Algebraic.Nechiporuk.activeSharedGateCount {σ : Signature} {n m : ℕ} (c : Circuit σ n m) (Y : Finset (Fin n)) :

                                      The number of shared gates of c whose syntactic cone intersects Y.

                                      Equations
                                      Instances For
                                        def Algebraic.Nechiporuk.activeSharedFanOut {σ : Signature} {n m : ℕ} (c : Circuit σ n m) (Y : Finset (Fin n)) :

                                        The total fan-out of the shared gates of c whose syntactic cone intersects Y.

                                        Equations
                                        Instances For
                                          def Algebraic.Nechiporuk.gateBlockSpan {σ : Signature} {n t B : ℕ} (Y : Fin B → Finset (Fin n)) (p : Program σ n t) (g : Fin t) :

                                          The number of blocks in Y : Fin B → Finset (Fin n) on which gate g of p is active.

                                          Equations
                                          Instances For
                                            def Algebraic.Nechiporuk.highSpanSharedFanOut {σ : Signature} {n m B : ℕ} (c : Circuit σ n m) (Y : Fin B → Finset (Fin n)) (d : ℕ) :

                                            The total fan-out of the shared gates of c that are active on strictly more than d of the blocks Y.

                                            Equations
                                            Instances For