Counting wire uses in CSLib circuits #
A wire use is one argument slot of a gate or one designated output. Repeated arguments of the same gate and repeated outputs are separate uses. In particular, counting distinct consumer gates would give the wrong fan-out.
Circuit.inputUses counts uses of original inputs. Circuit.excessFanout
counts uses beyond the first for each gate wire, and Circuit.sharedGates
selects gates with at least two uses. Outputs count as uses, so these notions
also handle a gate that supplies both another gate and a designated output.
On a trimmed single-output circuit this selects the usual shared internal gates.
A gate argument slot or a designated output, counting repeated occurrences separately.
Instances For
Gate-wire uses beyond the first; unused gates contribute zero.
Equations
- c.excessFanout = ∑ j : Fin c.size, (c.wireUses (Cslib.Circuits.Wire.gate j) - 1)
Instances For
Every gate wire supplies at least one gate argument or designated output.
Equations
- c.NoUnusedGates = ∀ (j : Fin c.size), 0 < c.wireUses (Cslib.Circuits.Wire.gate j)