Computation Theory Simulator is an interactive, canvas-first web application for building, editing, converting, and simulating multiple automata models used in formal languages and automata theory courses.
It is designed for education, experimentation, and fast visual iteration.
- Finite Automata (FA): NFA and DFA workflows
- Pushdown Automata: PDA and NDPA
- Turing Machines: deterministic and nondeterministic, single-tape and multi-tape transitions
- Mealy Machines
- Moore Machines
- Create and place states on a zoomable/pannable canvas
- Create and edit transitions directly from canvas interactions
- Use mode-aware controls so each machine family enforces appropriate transition syntax
- Move, duplicate, and re-place generated/saved automata on the workspace
- Save selected automata regions as reusable cards
- Reopen saved automata in edit mode
- Duplicate selected automata
- Export a selected automaton as JSON
- Import automata JSON (including backward compatibility handling for legacy snapshots)
- Save and load full workspace snapshots
- Clear workspace safely through confirmation flow
- Regex conversion tool for finite automata workflows
- NFA to DFA conversion for selected FA models
- FA to GNFA generation
- CFG generation and grammar-oriented artifacts from selected models
- Test strings/inputs from saved cards
- Transition-path highlighting on canvas during simulation
- Stack activity visualization for PDA/NDPA runs
- Output-sequence feedback for Mealy and Moore machine simulations
- Transition table rendering per model
- Regex summary views for finite automata cards
- Machine summaries (model-specific tuple/style summaries)
- Label format: single symbol per transition edge
- Epsilon symbol:
ε
- Label format:
input,pop/push - Examples:
a,A/BAε,Z/Zb,ε/A
- Single tape segment:
read/write,move - Multi-tape label:
segment;segment;... - Move values:
L,R,N - Examples:
- Single tape:
0/1,R - Two tapes:
0/1,R;_/_,N
- Single tape:
- Label format:
input/output - Examples:
a/0b/1
- Output is state-bound rather than transition-bound
- Transition labels still carry input symbols for movement
- Open the tools menu.
- Use the regex conversion action.
- Place the generated automaton on canvas.
- Save and test strings from the saved card panel.
- Select a saved NFA card.
- Trigger NFA to DFA conversion.
- Place the converted automaton.
- Compare transition tables and run test inputs.
- Select a compatible saved automaton.
- Trigger FA to GNFA or CFG generation.
- Place/use generated artifacts for analysis.
- Save canvas to JSON.
- Reload later from the workspace loader.
- Continue editing with previous state and saved cards restored.
- Strongly typed model layer for state and alphabet handling
- Regex simplification utilities integrated with FA summary flows
- Language-equivalence-aware conversion safeguards in finite automata paths
- Shared parsing/codec utilities for pushdown and machine snapshots
- Refactored common FA view helpers to reduce duplicated logic
- Next.js 16
- React 19
- TypeScript 5
- Tailwind CSS 4
- Lucide React
- This project is actively evolving; conversion and simplification paths may continue to improve over time.
- If you use exported JSON from older versions, import compatibility logic attempts to normalize legacy shapes.
