Single cuts of a straight-line program #
The vertices of a straight-line program are its wires: the inputs and the gates. A cut is a
set S of wires, with complement Sᶜ. A signal is the value carried by one wire, however
many gates read it.
inputsIn Sis the set of input coordinates whose wires lie inS;forward p Sis the set of wires inSread by some gate outsideS;backward p Sis the set of wires outsideSread by some gate inS;boundaryKey p I S xrecords the values of the forward and backward signals ofSunder the inputx;mix S x x'takes the coordinates ofxwhose input wires lie inSand the other coordinates ofx';leftPart S xandrightPart S xrestrictxto the coordinates whose input wires lie inSand outsideS, respectively;leftParts p I S Z κandrightParts p I S Z κcollect these restrictions over the members ofZwith boundary keyκ.
The definitions are generic in the signature and in the value type; the single-cut criterion
specializes the value type to Bool.
The input coordinates whose wires lie in S.
Equations
- Algebraic.Cutwidth.SingleCut.inputsIn S = {j : Fin n | Cslib.Circuits.Wire.input j ∈ S}
Instances For
The forward signals of S: the wires in S read by some gate outside S. A wire read by
several gates outside S is one signal.
Equations
- Algebraic.Cutwidth.SingleCut.forward p S = {w ∈ S | ∃ (g : Fin s), Cslib.Circuits.Wire.gate g ∉ S ∧ p.Reads g w}
Instances For
The backward signals of S: the wires outside S read by some gate in S. A wire read by
several gates in S is one signal.
Equations
- Algebraic.Cutwidth.SingleCut.backward p S = {w ∉ S | ∃ (g : Fin s), Cslib.Circuits.Wire.gate g ∈ S ∧ p.Reads g w}
Instances For
The values of the forward and of the backward signals of S under the input x.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The input taking the coordinates of x whose wires lie in S and the other coordinates
of x'.
Equations
- Algebraic.Cutwidth.SingleCut.mix S x x' j = if Cslib.Circuits.Wire.input j ∈ S then x j else x' j
Instances For
The restriction of an input to the coordinates whose wires lie in S.
Equations
- Algebraic.Cutwidth.SingleCut.leftPart S x j = x ↑j
Instances For
The left parts of the members of Z whose boundary key is κ.
Equations
- Algebraic.Cutwidth.SingleCut.leftParts p I S Z κ = Finset.image (Algebraic.Cutwidth.SingleCut.leftPart S) ({x ∈ Z | Algebraic.Cutwidth.SingleCut.boundaryKey p I S x = κ})
Instances For
The right parts of the members of Z whose boundary key is κ.
Equations
- Algebraic.Cutwidth.SingleCut.rightParts p I S Z κ = Finset.image (Algebraic.Cutwidth.SingleCut.rightPart S) ({x ∈ Z | Algebraic.Cutwidth.SingleCut.boundaryKey p I S x = κ})