This class infers the causality interface of an FSMActor by checking
the guards and actions of the transitions. If any transition in the
model has an output action that writes to a port and a guard that
references an input port, then there is a direct dependency of
that output on that input. Otherwise, there is no dependency.
Note that this is a conservative analysis in that it may indicate
a dependency when there is none. For example, if all outgoing
transitions from a state produce the same output value, and
a transition is always taken, then irrespective of the guards,
the output has no dependency on the inputs. A precise analysis,
however, is much more difficult (probably undecidable).
All input ports that affect the state (i.e. that are mentioned in
any guard) must be in an equivalence class. Otherwise, we cannot
reliably make a decision about what the next state is. In addition,
if any input in a refinement affects an output, that input must
also be in this equivalence class. Otherwise, the scheduler
will assume there is no relationship between these inputs and
could provide an event that triggers a state transition in an
earlier firing than an event that triggers an output from the
current refinement.