libFAUDES

PlugIns

Types

Functions

Generator

A generator is a tupel G = (Q, Sigma, delta, Qo, Qm), where

  • the alphabet Sigma;
  • the state set Q;
  • the transition relation delta with transitions from Q x Sigma x Q;
  • the set of initial states Qo;
  • the set of marked states Qm.

Generators are used to represent the closed and the marked language L(G) and Lm(G) respectively.

A generator is deterministic if it hase one initial state and if transitions from each state are uniquely determined by the event label. Many functions on generators require a deterministic generator as input data. A non-detrministic generator can be converted to a deterministic generator, however, with exponential computational complexity.

The token-IO format is as follows:

<Generator>
% libFAUDES Generator for the simple machine
"simple machine"                   

<Alphabet>                         
"alpha" "beta" "mue" "lambda"      
</Alphabet>

<States>                           
"idle" "busy" "down"
</States>

<TransRel>
"idle" "alpha" "busy"
"busy" "beta" "idle"
"busy" "mue" "down"
"down" "lambda" "idle"
</TransRel>

<InitStates>
"idle"
</InitStates>

<MarkedStates>
"idle"
</MarkedStates>
</Generator>

Technical note: The base class for all libFAUDES generator classes is the faudes::vGenerator. It provides functions for read and write access to the core members and for file IO. Derived generator classes extend basic semantics by providing attibutes attached to events, states and transitions in order to extend basic generator semantics. Examples for attributes are controllability flags for events, addressed by the faudes::cGenerator. In fact, the run-time interface uses the cGenerator as the standard generator class.

libFAUDES 2.13a run-time interface with "example observer hiosys multitasking timed simulator luabindings"