Visual Designing and Debugging of Deterministic Finite-State Machines in FSM
This work addresses the challenge of teaching automata theory to students by providing a domain-specific tool that simplifies machine design and debugging, though it is incremental as it builds on existing visualization tools with added features.
The authors tackled the problem of designing and debugging deterministic finite-state machines in an educational context by developing a visualization tool that includes a novel design recipe and invariant predicates for validation, enabling students to debug machines before proving correctness or submission.
This article presents a visualization tool for designing and debugging deterministic finite-state machines in FSM -- a domain specific language for the automata theory classroom. Like other automata visualization tools, users can edit machines and observe their execution, given some input. Unlike other automata visualization tools, the user is not burdened nor distracted with rendering a machine as a graph. Furthermore, emphasis is placed on the design of machines and this article presents a novel design recipe for deterministic finite-state machines. In support of the design process, the visualization tool allows for each state to be associated with an invariant predicate. During machine execution, the visualization tool indicates if the proposed invariant holds or does not hold after each transition. In this manner, students can validate and debug their machines before attempting to prove partial correctness or submitting for grading. In addition, any machine edited with the visualization tool can be rendered as executable code. The interface of the visualization tool along with extended examples of its use are presented.