Moving and rewiring gates of states #
The preparatory operations of Mishra and Santhanam, Sections 4.1 and 4.2 that change only gates, on states of gate elimination:
State.moveAffine: moving an affine gate reading no gates into the affine system, as the equationSemiCircuit.affEqn(State.Valid.moveAffine);State.rewire: replacing a gate by one reading only parameters and computing the same value whenever the other gates take their values, used to reroute the children of the minimal AND (State.Valid.rewire).
Both keep the parameters, the pairs and the parameter map.
Main definitions #
Cslib.Circuits.Boolean.AffineDisperser.State.moveAffine,Cslib.Circuits.Boolean.AffineDisperser.State.rewire.
Main results #
Cslib.Circuits.Boolean.AffineDisperser.State.Valid.moveAffine,Cslib.Circuits.Boolean.AffineDisperser.State.Valid.rewire: they preserve validity.
References #
Moving affine gates into the affine system #
@[simp]
theorem Cslib.Circuits.Boolean.AffineDisperser.State.moveAffine_params {n : ℕ} (S : State n) (J e : ℕ) :
@[simp]
theorem Cslib.Circuits.Boolean.AffineDisperser.State.moveAffine_pairs {n : ℕ} (S : State n) (J e : ℕ) :
theorem Cslib.Circuits.Boolean.AffineDisperser.State.moveAffine_size {n : ℕ} {S : State n} {J e : ℕ} (h : S.MoveOK J e) :
theorem Cslib.Circuits.Boolean.AffineDisperser.State.moveAffine_deg_le {n : ℕ} {f : BooleanFunction n} {S : State n} (hS : S.Valid f) {J e : ℕ} (h : S.MoveOK J e) {z : ℕ} (hz : z ∈ S.params) :
Moving a gate into the affine system does not increase the degree of any parameter.
theorem Cslib.Circuits.Boolean.AffineDisperser.State.Valid.moveAffine {n : ℕ} {f : BooleanFunction n} {S : State n} (hS : S.Valid f) {J e : ℕ} (h : S.MoveOK J e) :
(S.moveAffine J e).Valid f
Moving an affine gate reading no gates into the affine system preserves validity.
Rewiring a gate #
def Cslib.Circuits.Boolean.AffineDisperser.State.rewire {n : ℕ} (S : State n) (J : ℕ) (g : SemiCircuit.Gate) :
State n
Replace the gate J by the gate g.
Instances For
@[simp]
theorem Cslib.Circuits.Boolean.AffineDisperser.State.rewire_params {n : ℕ} (S : State n) (J : ℕ) (g : SemiCircuit.Gate) :
@[simp]
theorem Cslib.Circuits.Boolean.AffineDisperser.State.rewire_pairs {n : ℕ} (S : State n) (J : ℕ) (g : SemiCircuit.Gate) :
theorem Cslib.Circuits.Boolean.AffineDisperser.State.rewire_size {n : ℕ} (S : State n) (J : ℕ) (g : SemiCircuit.Gate) :
theorem Cslib.Circuits.Boolean.AffineDisperser.State.rewire_gates {n : ℕ} (S : State n) (J : ℕ) (g : SemiCircuit.Gate) :
theorem Cslib.Circuits.Boolean.AffineDisperser.State.Valid.rewire {n : ℕ} {f : BooleanFunction n} {S : State n} (hS : S.Valid f) {J : ℕ} {g : SemiCircuit.Gate} (h : S.RewireOK J g) :
Rewiring a gate preserves validity.