composeGenerators
plain-language theorem explainer
The definition composeGenerators implements left-fold composition of a generator action on a state in an abstract carrier. Researchers addressing the DREAM completeness program for sigma-preserving reachability cite it when building ReachabilityWitness and ReachableTransition structures. The implementation is a direct one-line application of List.foldl to the supplied generator action.
Claim. Let $α$ and $G$ be types. Given a generator action $act : G → α → α$, a list of generators $gs : List G$, and an element $x : α$, the composed transformation is the result of iteratively applying $act$ to the successive elements of $gs$, starting from $x$.
background
This module supplies the constructive search infrastructure for the SigmaPreservingIsReachable residual hypothesis from the DREAM completeness program. It operates on abstract carriers $α$ and generator sets $G$ without importing broken golden-ratio references from related modules. The structural content applies to any finite carrier equipped with a finite generator set, treating the DREAM virtues as parameters of the abstract framework.
proof idea
The definition is a one-line wrapper that applies List.foldl to the generator action, using the accumulator update (fun acc g => act g acc) and initial value x.
why it matters
This definition supplies the decomposition operation required by ReachabilityWitness and ReachableTransition, which feed the theorem reachable_implies_sigma_preserving. It fills the constructive enumeration step needed to close the SigmaPreservingIsReachable residual in the DREAM completeness program. It touches the open question of verifying RichGeneratorAction for concrete DREAM actions.
Switch to Lean above to see the machine-checked source, dependencies, and usage graph.