Wire numbers #
Wires are numbered inputs first, as in Cslib.Circuits.Circuit.trace: input i is wire i and
gate j is wire n + j, where n is the number of inputs.
Main definitions #
Cslib.Circuits.Wire.equivFin: wires asFin (inputCount + gateCount).Cslib.Circuits.Wire.toNat,Cslib.Circuits.Wire.ofNat: wire numbers and their inverse.
Main results #
Cslib.Circuits.Wire.toNat_lt,Cslib.Circuits.Wire.toNat_injective: wire numbers are distinct and below the wire count.Cslib.Circuits.Wire.ofNat_toNat,Cslib.Circuits.Wire.toNat_ofNat: the numbering is a bijection.
@[simp]
Input wire i maps to Fin.castAdd k i under equivFin.
@[simp]
Gate wire j maps to Fin.natAdd n j under equivFin.
The number of a wire: input i is i and gate j is inputCount + j.
Instances For
Wire numbering toNat is injective.