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.
Linked p u v: one of the wiresu,vis a gate reading the other. These are the edges of the undirected wire graph.component p w: the wires joined towby a path of linked wires.gatesIn S: the gates whose wires lie inS(the inputs areSingleCut.inputsIn S).prefixUpTo rank wandprefixBelow rank t: the prefixes of a ranking of the wires.outputsIn out S: the output indices whose wires lie inS.leftFibre out f S xandrightFibre out f S x: the inputs that differ fromxonly on the coordinates placed inS(respectively outsideS) and keep every output carried outsideS(respectively inS).blockRank M Y X: the rank of the block of a matrix with rowsYand columnsX.TotallyRegular M: every square submatrix ofMis nonsingular.cauchy x y: the Cauchy matrix(1 / (x i - y j)), andcauchyZMod q N, its instance overZMod qwith nodesx i = iandy j = N + j.
The wire graph #
Two wires are linked when one of them is a gate reading the other.
Equations
- Algebraic.Cutwidth.MultiOutput.Linked p u v = ((∃ (g : Fin s), u = Cslib.Circuits.Wire.gate g ∧ p.Reads g v) ∨ ∃ (g : Fin s), v = Cslib.Circuits.Wire.gate g ∧ p.Reads g u)
Instances For
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
- Algebraic.Cutwidth.MultiOutput.gatesIn S = {g : Fin s | Cslib.Circuits.Wire.gate g ∈ S}
Instances For
Prefixes of a ranking #
The wires ranked at most as high as w.
Equations
- Algebraic.Cutwidth.MultiOutput.prefixUpTo rank w = {v : Cslib.Circuits.Wire n s | rank v ≤ rank w}
Instances For
The wires ranked below t.
Equations
- Algebraic.Cutwidth.MultiOutput.prefixBelow rank t = {v : Cslib.Circuits.Wire n s | rank v < t}
Instances For
Outputs and fibres #
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
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 #
The rank of the block of M with rows in Y and columns in X.
Equations
- Algebraic.Cutwidth.MultiOutput.blockRank M Y X = (M.submatrix (fun (i : ↥Y) => ↑i) fun (j : ↥X) => ↑j).rank
Instances For
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
- Algebraic.Cutwidth.MultiOutput.TotallyRegular M = ∀ (k : ℕ) (r : Fin k → Fin m) (c : Fin k → Fin n), Function.Injective r → Function.Injective c → (M.submatrix r c).det ≠ 0
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.