This will allow users to build, simulate and export NPDA machines on finsm.
Features include:
Build mode that allows users to specify their transitions as a triple consisting of the next tape input, the current stack state, and a characters to push onto the stack (must be space separated, and also allows LaTeX characters).
New simulation mode for NPDAs that shows a list of active configurations (consisting of current state, current stack, current tape position and an indicator on if the configuration is stuck, active, or in an accepting state). The configuration list also automatically paginates if there are more than a certain amount of configurations active. WARNING: Having too many active configurations WILL slow your browser down.
Export mode that will also render LaTeX in the transition label.
Design decisions:
A separate simulation interface for NPDAs specifically, for viewing NPDA configurations. An open question is if we should standardize tape simulation to have a separate view for DFA/NFAs as well.
The underlying machine type is an NPDA, but is used to represent DFAs and NFAs as well. Functions that need to differentiate on the type of machine it is operating on must have an additional parameter describing the type of the machine.
Next steps:
Decide if we should standardize the tape simulation to behave the same for all machine types.
Stress test to find out the tolerance on how many active configurations are allowed, and also to find if there are bugs in the implementation.
Decide if we should have a separate Bootstrap card for instantiating an initial NPDA (and it would probably be the balanced parenthesis stock example).
Move on to adding full-fledged Turing Machines? :)
This will allow users to build, simulate and export NPDA machines on finsm.
Features include:
Design decisions:
Next steps: