Documentation

Complexitylib.Cslib.Circuit.Fanout.Defs

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.

@[reducible, inline]
abbrev Cslib.Circuits.Circuit.WireUse {σ : Signature} {n m : ℕ} (c : Circuit σ n m) :

A gate argument slot or a designated output, counting repeated occurrences separately.

Equations
Instances For
    def Cslib.Circuits.Circuit.useWire {σ : Signature} {n m : ℕ} (c : Circuit σ n m) :
    c.WireUse → Wire n c.size

    The wire read by an argument slot or a designated output.

    Equations
    Instances For
      def Cslib.Circuits.Circuit.wireUses {σ : Signature} {n m : ℕ} (c : Circuit σ n m) (w : Wire n c.size) :

      The number of uses of a wire, including designated outputs.

      Equations
      Instances For
        def Cslib.Circuits.Circuit.inputUses {σ : Signature} {n m : ℕ} (c : Circuit σ n m) :

        Total occurrences of original input wires among gate arguments and outputs.

        Equations
        Instances For

          Gate-wire uses beyond the first; unused gates contribute zero.

          Equations
          Instances For

            Gates whose output is used at least twice. Primary inputs are excluded.

            Equations
            Instances For

              Every gate wire supplies at least one gate argument or designated output.

              Equations
              Instances For