Subject: Miscellany

From: "Clive D.W. Feather" <[email-masked]>
Date: Mon, 8 Jan 2007 16:43:05 +0000

Some miscellaneous comments.

Allow more than one initial or final state:

    Initial : main-entry , alternate-entry
    Final : success , failure

It's possible to remove this need by adding dummy states, but it's often
easier to describe a system if you don't.

Allow non-deterministic state machines. They're useful; even though it's
always possible to convert a NDFSM to a DFSM, the latter can be much harder
to understand. By all means make the default for validation be
deterministic.

I'm not sure what the difference is between "Initial" and a start state.
Similarly, why is "must be complete" only a command-line option? Better
would be:
- allow the definition of the machine to say "must be complete";
- allow command-line options to add/override "Initial", "Final", and
  "must be complete" declarations (compare the -D option of many C
  compilers, which does an extra #define).

The former would best be done with extra syntax for "properties". Perhaps:

    !Complete           # Must be complete
or
    !-Deterministic     # Need not be deterministic

Contrary to the alternative in section 8, you don't want to force every
transition to be declared. Sometimes it's easier to understand a FSM if all
the "message @ state5 -> state5" entries are omitted.

Have a property saying "this is an acceptor"; that is, there are no actions
but every state is either a success state or a failure state. This property
would require some way of classifying states. In fact, allowing states or
messages or actions to be classified would be useful in itself, since
programs that draw state machines could use classes to indicate things
differently (different fonts, different colours, different shapes of
boxes). A possible syntax:

    STATE = alpha, bravo, charlie : normal;
    STATE = x-ray, yankee, zulu   : error;

    MESSAGE = letter, digit, space : keyboard;
    MESSAGE = down, up, motion : mouse;

    ACTION = ring, on-hook, off-hook : local-loop;
    ACTION = assign-trunk, find-route : internal;

-- 
Clive D.W. Feather  | Work:  <[email-masked]>   | Tel:    +44 20 8495 6138
Internet Expert     | Home:  <[email-masked]>  | Fax:    +44 870 051 9937
Demon Internet      | WWW: http://www.davros.org | Mobile: +44 7973 377646
THUS plc            |                            |

_______________________________________________
Cosmogol mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/cosmogol

---

From: Stephane Bortzmeyer <[email-masked]>
Date: Tue, 9 Jan 2007 23:14:30 +0100

On Mon, Jan 08, 2007 at 04:43:05PM +0000,
 Clive D.W. Feather <[email-masked]> wrote 

> I'm not sure what the difference is between "Initial" and a start

The very first version called them "start state", indeed. But it also
called the current state the start state, which was confusing. In the
present version of the draft, "start" disappeared. One of the reasons
is that it is common for an actual state in a FSM to be named "Start".

> Similarly, why is "must be complete" only a command-line option?
> Better would be:

Yes, it would be more consistent with Initial and Final.