Documentation

Complexitylib.Algebraic.LowerBound.Cutwidth.MultiOutput.Defs

Multi-output cuts: definitions #

The single-cut infrastructure (SingleCut) splits the wires of a straight-line program into a set S and its complement and counts the forward and backward signals crossing the split. This file collects the notions used to apply it to programs with several outputs.

The wire graph #

def Algebraic.Cutwidth.MultiOutput.Linked {σ : Signature} {n s : ℕ} (p : Program σ n s) (u v : Wire n s) :

Two wires are linked when one of them is a gate reading the other.

Equations
Instances For
    noncomputable def Algebraic.Cutwidth.MultiOutput.component {σ : Signature} {n s : ℕ} (p : Program σ n s) (w : Wire n s) :
    Finset (Wire n s)

    The connected component of a wire in the wire graph: the wires joined to it by a path of linked wires.

    Equations
    Instances For

      The gates whose wires lie in S.

      Equations
      Instances For

        Prefixes of a ranking #

        def Algebraic.Cutwidth.MultiOutput.prefixUpTo {n s : ℕ} (rank : Wire n s → ℕ) (w : Wire n s) :
        Finset (Wire n s)

        The wires ranked at most as high as w.

        Equations
        Instances For
          def Algebraic.Cutwidth.MultiOutput.prefixBelow {n s : ℕ} (rank : Wire n s → ℕ) (t : ℕ) :
          Finset (Wire n s)

          The wires ranked below t.

          Equations
          Instances For

            Outputs and fibres #

            def Algebraic.Cutwidth.MultiOutput.outputsIn {n s m : ℕ} (out : Fin m → Wire n s) (S : Finset (Wire n s)) :

            The output indices whose wires lie in S.

            Equations
            Instances For
              def Algebraic.Cutwidth.MultiOutput.leftFibre {n s m : ℕ} {U : Type u_1} [Fintype U] [DecidableEq U] (out : Fin m → Wire n s) (f : (Fin n → U) → Fin m → U) (S : Finset (Wire n s)) (x : Fin n → U) :
              Finset (Fin n → U)

              The inputs that agree with x on every coordinate placed outside S and on which f takes the values it takes at x on every output whose wire lies outside S.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                def Algebraic.Cutwidth.MultiOutput.rightFibre {n s m : ℕ} {U : Type u_1} [Fintype U] [DecidableEq U] (out : Fin m → Wire n s) (f : (Fin n → U) → Fin m → U) (S : Finset (Wire n s)) (x : Fin n → U) :
                Finset (Fin n → U)

                The inputs that agree with x on every coordinate placed in S and on which f takes the values it takes at x on every output whose wire lies in S.

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

                  Matrices #

                  noncomputable def Algebraic.Cutwidth.MultiOutput.blockRank {n m : ℕ} {F : Type u_1} [Field F] (M : Matrix (Fin m) (Fin n) F) (Y : Finset (Fin m)) (X : Finset (Fin n)) :

                  The rank of the block of M with rows in Y and columns in X.

                  Equations
                  Instances For
                    def Algebraic.Cutwidth.MultiOutput.TotallyRegular {n m : ℕ} {F : Type u_1} [Field F] (M : Matrix (Fin m) (Fin n) F) :

                    A matrix is totally regular when every square submatrix is nonsingular: for every k and all injective choices of k rows and k columns, the determinant is nonzero.

                    Equations
                    Instances For
                      def Algebraic.Cutwidth.MultiOutput.cauchy {n m : ℕ} {F : Type u_1} [Field F] (x : Fin m → F) (y : Fin n → F) :
                      Matrix (Fin m) (Fin n) F

                      The Cauchy matrix with entries 1 / (x i - y j).

                      Equations
                      Instances For

                        The N × N Cauchy matrix over ZMod q with nodes x i = i and y j = N + j. For a prime q ≥ 2 N the nodes are distinct, so it is totally regular.

                        Equations
                        Instances For