Inverting permutations and testing periodicity #
The inverse of a permutation p of a finite type is the power p^[k! - 1], where k is the
number of elements (iterate_factorial_pred_eq_symm). The fixed-power bound does not depend on
the exponent, so a permutation computed by a circuit of size s has an inverse circuit within
the same bound (permutation_inverse), also through a supplied encoding of an arbitrary finite
type (permutation_inverse_encoded). Similarly, x is a periodic point exactly when
f^[(2 ^ n)!] x = x, which one more equality test decides (periodicPts_circuit).
Main results #
Cslib.Circuits.Boolean.Iteration.permutation_inverse: inverting a permutation circuit.Cslib.Circuits.Boolean.Iteration.permutation_inverse_encoded: inverting through an encoding.Cslib.Circuits.Boolean.Iteration.periodicPts_circuit: deciding periodicity.
References #
- Adapted from lean/Proofs/Applications.lean in S. Schlesinger, Square-root circuit bounds for iterated functions.
The inverse of a permutation of a finite type is its (card α)! - 1-st power.
Permutation inversion. A permutation computed by a circuit of size s has an inverse
circuit of size at most 40000 * powerBudget n s (2 ^ n) L.
Encoded permutation inversion. A permutation of a finite type of any universe, realized by a circuit on an injective encoding, has an inverse circuit whose storage term counts the type.