Reactive Programming in Lean Part 2: Execution traces

Welcome back! Last time we implemented a simple reactive program in Lean. We implemented a pop machine State datatype, an Action type, and a step function that consumes a state, an action, and a logical proposition encoding why the action is valid for the given state, and produces a new state with that action applied. We also saw that while that step validity proposition was straightforward enough…