Recently, I’ve been interested in the console of the Source game engine, more specifically, its alias command, which allows one command to invoke others. It may allow recursion (i.e. running alias freeze freeze will cause inputting freeze to freeze the engine), but does not allow parameters (i.e. running "alias define alias" will cause "define a b" to function as if alias with no parameters is ran).

An alias may consist of several commands, however, so alias foo "alias foo bar; foo" is allowed. Lastly, aliases may be modified to do nothing whatsoever (for example, alias foo removes the functionality of foo).

Given these properties, it’s rather trivial to prove that aliases are exactly as powerful as a finite-state machine. However, it does not require redefinition of aliases during state changes, and may define transitions to do nothing.

If state one is defined by alias state1 "alias input1 state2; alias input2 state1", and state two is defined by alias state2 "alias input2 state2", then the function of input one does not change.

This means that it may be modeled by a standard deterministic finite automaton with transitions not redefined after the transition from one state to another persisting, and the ability for states to define transitions to do nothing whatsoever.

Alternatively, it may be modeled by a single, constantly active state with transitions leading to actions which may define, undefine, or redefine one or several transitions, but keep the other transitions the same, and keep the main state active.

Given these principles, what studied extension of a finite state machine (such as a UML state machine), if any, does this model?

If there is no studied model, I would still be interested in knowing what tuple describes this.



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.