From: David Bergman (davidb_at_[hidden])
Date: 2004-05-30 10:32:57
> Andreas Huber <ah2003 <at> gmx.net> writes:
> > Darryl Green wrote:
> > > It seems that this whole business of having an FSM that has
> > > meta-states in which no state exists (ok, you call them unstable
> > > states and an outer state, or possibly the FSM itself, always
> > > exists, but the outer state isn't really part of the simple state
> > > machine) is a LEM violation that just makes things complicated.
> > What does LEM stand for?
> Law of Excluded Middle. A proposition must be true or false.
> A FSM is always in exactly one state.
> A FSM has a finite number of states.
> If an FSM is not in some state A then it must be in some other state.
Ok, I must defend Andreas a bit: you are obviously right about the LEM and
the single-statedness of the FSM (I am talking about DFA.) BUT, it is
crucial to realize that an implementation is, beside a proper abstraction of
a single-stated, also contains its own state to emulate that FSM. This is
necessarily so. Most of the time the FSM's actual state can be held by an
equivalent (actually, identical...) state in the implementation, but there
are times when the emulator (read "implementation") have to visit a meta
state that is not directly isomorphic to the FSM state.
I think that is what Andreas is talking about in his "unstable states" or
"outer states." So, in fact, one should, via UML or other means (;-)),
describe the (meta) states of the emulating implementation, and create a
homomorphism from those states to the (object-level) FSM states.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk