The depth of a simulation #
Replacing every gate of a program by a circuit computing its operation (Program.simulate) makes
each wire at most as deep as its depth in the original program when an operation op costs the
depth of its replacement circuit (Program.wireDepths_simulateRenaming_le). So a circuit over one
basis is simulated by a circuit over another basis whose depth is bounded by the original depth
with these costs (Circuit.depth_simulate_le), at most the original depth times the largest depth
of a replacement.
Main results #
Cslib.Circuits.Program.wireDepths_simulateRenaming_le: depths of simulated wires.Cslib.Circuits.Circuit.depth_simulate_le: the depth of a simulated circuit.Cslib.Circuits.Circuit.exists_simulation_depth_le: simulation with bounds on size and depth.
The depth of a simulation: a wire of the simulating program is at most as deep as the original wire, when every operation costs the depth of the circuit replacing it.
Simulation with bounds on size and depth: if every operation of I is computed under J
by a circuit with at most size op gates and depth at most depth op, then every circuit over
σ has an equivalent circuit over τ with at most c.program.cost size gates and depth at most
c.depthWith depth.