Skip to content

User Guide

Reeshav Sinha edited this page Jun 14, 2026 · 1 revision

User Guide

A tour of the editor and how to build, edit, and manage machines. For running a machine see Simulation; for the model semantics see Machine Types.

The layout

  • Toolbar (top) — machine type, file actions (New / Open / Save / Save As), machine settings (blank symbol, step limit, tape count, declared Σ/Γ alphabets), undo/redo, auto‑layout, and an ⋯ overflow menu (theme, help, check‑for‑updates, Export…).
  • Canvas (centre) — your state diagram, with a tool palette on the left rail and a minimap (auto‑hides for small machines).
  • Side panel (right) — tabbed: Validation, History, Computation Tree, the δ‑table, and (for TM/LBA) the Tape. The panel is resizable and remembers its width.
  • Input bar + simulation controls (bottom) — the input string and the play / step / step‑back / reset controls.
  • Tab bar — multiple machines open at once; each tab is independent.

The canvas tool palette

The left rail makes the editing mode explicit (instead of relying on hidden modifier keys):

Tool Use
Select Move and select states/edges (default).
Add state Click an empty spot to drop a new state (also N at the viewport centre).
Add transition Click a source state, then a target, to connect them.
Add text Drop a free‑floating, resizable text annotation (not part of the machine).

You can always draw a transition directly by hovering a state until its connection dot appears and dragging to the target.

Editing states

  • Move — drag in Select mode.
  • Rename — double‑click a state and type; Enter commits, Esc cancels.
  • Mark start / accept / reject — right‑click a state for the context menu. Exactly one state may be the start; any number may be accept; reject states apply only to TM/LBA and render with a red double‑ring (a state cannot be both accept and reject).
  • Delete — select and press Delete, or right‑click → Delete.

Editing transitions

Double‑click an edge (or use the transition editor that opens when you connect two states) to set its label. The editor adapts to the machine type:

  • Finite automata (DFA/NFA/ε‑NFA) — one or more input symbols; an ε‑edge is allowed for ε‑NFA.
  • Pushdown automata (DPDA/NPDA)read, pop → push (any field may be ε/empty).
  • Turing machines & LBAread → write, direction with an L / R / S selector; multi‑tape TMs show one cluster per tape (a → b, R | _ → c, L).

Several transitions between the same pair of states are bundled onto a single edge; the label shows a compact ×n count that expands on hover/selection. See Validation & Alphabets for the determinism rules per type.

Auto‑layout

Press the auto‑layout button to tidy a messy diagram. It uses the ELK "stress" layout for a compact, roughly symmetric, deterministic arrangement with no overlapping states (start state toward the left) and re‑frames the view to fit. Free‑floating text notes keep their place.

Undo / redo, copy / paste

  • Undo / RedoCtrl+Z / Ctrl+Y; rapid edits are coalesced into single steps.
  • Copy / Cut / PasteCtrl+C / X / V. Paste preserves PDA stack operations, TM tape moves (write/direction, multi‑tape arrays), and reject states.

Files, tabs, and saving

  • Machines are saved as .autolab.json (plain JSON — see File Format).
  • New / Open / Save / Save As… live in the toolbar, with a Recent files menu and shortcuts Ctrl+N / O / S / Shift+S, plus Ctrl+T / Ctrl+W for tabs.
  • An unsaved‑changes guard prompts Save All / Discard / Cancel before you close the app or a tab with unsaved work; a dot marks unsaved tabs.
  • Opening a file never clobbers unsaved work — it reuses an empty tab or opens a new one.

Themes & help

  • Toggle light / dark from the overflow menu; the choice is remembered.
  • The ? help dialog has a quick‑start and a keyboard‑shortcut cheat sheet. See also Keyboard Shortcuts.

Accessibility

AutomataLab ships with a visible keyboard‑focus ring, higher‑contrast muted text, larger base fonts, and ARIA roles/labels on the side‑panel tabs, canvas tool palette, context menus, and simulation controls.

Clone this wiki locally