Circuit synthesis for reachability and first hitting times #
This module synthesizes the navigation word (reaches f x y, hittingTime f x y) on pair inputs
z : BitString (n + n) in two ways:
synthesis_navigation_given_flag: when a circuittransientReachalready decides reachability on transient targets (0 < transientDepth f y), we combine two depth circuits, two cycle-label circuits, a streaming modular difference (synthesis_subMod), and word arithmetic to outputnavigationBits f (inputLeft z) (inputRight z)without evaluating a variable-time iterate;synthesis_navigation: when no external transient-reachability circuit is supplied, we evaluatef^[transientDepth f x - transientDepth f y] xby binary powering (synthesis_binary_powering) to decide transient reachability directly.
Main results #
Cslib.Circuits.Boolean.Iteration.synthesis_navigation_given_flag: synthesizesnavigationBitsusing an external transient-reachability circuit.Cslib.Circuits.Boolean.Iteration.synthesis_navigation: synthesizesnavigationBitsusing binary powering for the transient check.
References #
- Adapted from lean/Proofs/NavigationSynthesis.lean in S. Schlesinger, Square-root circuit bounds for iterated functions.