Orbits in finite functional graphs #
Iterating f : α → α from a state x traces a path in the functional graph of f. On a finite
type every orbit eventually enters a cycle: its transient depth is the first time it reaches a
periodic point, and its cycle length is the minimal period of that point. The transient and
one complete cycle contain no repeated state (orbit_prefix_injective), so their total length
is at most the number of states (transientDepth_add_cycleLength_le_card).
A repeat f^[i] x = f^[j] x with i < j makes f^[i] x periodic with period j - i and reduces
every later time modulo j - i (iterate_add_mod_sub). Consequently every reachable target has
a first visit before the number of states (exists_first_visit), and the map that stops at a
target finds it after that many steps (absorb_iterate_card).
The state type may live in any universe. Finiteness is required only where stated.
Main definitions #
Cslib.FunctionalGraph.absorb: stop at states satisfying a predicate.Cslib.FunctionalGraph.transientDepth: the first time an orbit is periodic.Cslib.FunctionalGraph.cycleLength: the period of the eventual cycle.
Main results #
Cslib.FunctionalGraph.exists_first_visit: first visits occur before the state count.Cslib.FunctionalGraph.absorb_iterate_card_eq_iff: the absorbing map decides reachability.Cslib.FunctionalGraph.iterate_mem_periodicPts_iff: periodicity begins exactly at the transient depth.Cslib.FunctionalGraph.orbit_prefix_injective: the transient and one cycle are repeat-free.Cslib.FunctionalGraph.exists_iterate_eq_iff_of_not_mem_periodicPts: a transient target is reached only at the difference of transient depths.
References #
- Adapted from lean/Proofs/{Reconstruction,FiniteOrbit,OrbitStructure}.lean in S. Schlesinger, Square-root circuit bounds for iterated functions.
Repeats #
First visits #
The map that stops at states satisfying P and otherwise applies f.
Instances For
Before any visit to P, the absorbing map agrees with f: if no f^[j] x with j < t
satisfies P, then (absorb f P)^[t] x = f^[t] x.
The absorbing map fixes every state satisfying P, under any number of iterations.
Iterating the absorbing map as many times as there are states returns the first visit.
The absorbing map decides reachability after as many steps as there are states.
Transient depth and cycle length #
Every orbit of a map on a finite type reaches a periodic point.
The transient depth of x: the first time its orbit is periodic.
Instances For
The orbit of x is at a periodic point at its transient depth.
Periodicity begins exactly at the transient depth.
The transient depth of x is zero exactly when x is periodic.
For a periodic state, the transient depth is zero.
The transient depth is less than the number of states.
Advancing t steps lowers the transient depth by t, truncated at zero.
The cycle length of x: the minimal period of its eventual cycle.
Instances For
For a periodic state, the cycle length is the minimal period.
The cycle length is positive.
The state at the transient depth is periodic with period the cycle length.
Past the transient, every state has the cycle length as exact period.
Two times give the same state exactly when the earlier is past the transient and their difference is a multiple of the cycle length.
The transient and one complete cycle contain no repeated state.
The transient depth plus the cycle length is at most the number of states.
A transient target can only be reached at the difference of the transient depths.