About
User Reference
C++ API
luafaudes
Developer
Links
libFAUDES online
libFAUDES

Sections

libFAUDES User Reference

The user reference provides libFAUDES documentation on faudes-types and faudes-functions relevant to users of libFAUDES based applicatione like e.g. luafaudes or DESTool. The user reference is complemented by the comprehensive and more technical C++ API documentation.

A good starting point for a first reading is the section CoreFaudes, which documents general purpose functions on generators, e.g. regular expressions. The remaining sections loosely correspond to libFAUDES plug-ins, which provide specialised faudes-types and faudes-functions to address specific approaches to the design or analysis of discrete event systems.

Sections present in this copy of libFAUDES are: CoreFaudes, Simulator (see also navigation on the left).

Types

Faudes-typed objects are characterised by their configuration data, which can be read from or written to a file. The corresponding file formats are based on sequences of tokens that form nested sections to hold sets or lists of strings or integers. For example, the alphabet Sigma = {alpha, beta, gamma} is represented as

<Alphabet> "alpha" "beta" "gamma" </Alphabet>

Faudes-types available in this copy of libFAUDES are:

AlphabetBasic alphabet with controllability attributes.
BooleanElementary type to hold a boolean value true or false.
ComediDeviceAccess digital IO hardware within the comedi framework.
D3RipUrtDeviceSynchronize events via D3RIP protocols.
DeviceContainerMerge individual IO devices.
DeviceExecutorSimulation of synchronized timed automata, incl. physical events and time.
EventSetBasic alphabet.
EventSetVectorVector of alphabets
GeneratorBasic generator model G=(Sigma,Q,delta,Qo,Qm).
GeneratorVectorVector of generators
IntegerElementary type to hold a 32bit signed integer value.
IntegerVectorVector of integers
LoggingExecutorSimulation of synchronized timed automata, incl logging.
ModbusDeviceSynchronize process image via Modbus/TCP protocol.
ParallelExecutorBasic simulation of synchronized timed automata.
ProposingExecutorSimulation of synchronized timed automata, incl. stochastic execution.
SignalDeviceAbstract interface for signal based event detection and execution.
SimplenetDeviceNetwork based communication of events.
SpiDeviceSynchronize process image via serial interface.
StringElementary type to hold an ASCII encoded string
SystemGenerator model G=(Sigma,Q,delta,Qo,Qm) with controllability attributes.
SystemVectorVector of systems
WagoDeviceAccess digital IO hardware by Wago Kbus interface.

Functions

Faudes-functions implement operations to be performed on faudes-typed parameters. Each faudes-function has one or more signatures to specify supported parameter types. For example, the function for the parallel composition of two generators has the following signature:

Signature:

Parallel(+In+ Generator G1, +In+ Generator G2, +Out+ Generator GRes)
Parallel(+In+ GeneratorVector GVec, +Out+ Generator GRes)

A parameter that remains constant during the execution of a function is referred to as an argument, indicated by +In+. A parameter, that does not affect the outcome of the function, but that does change its value during execution, is referred to as a result, indicated by +Out+. Other parameters are flagged +InOut+.

Faudes-functions available in this copy of libFAUDES are:

AccessibleDelete non-accessible states and transitions.
AlphabetDifferenceDifference of two alphabets.
AlphabetEqualityTests whether two alphabets match.
AlphabetExtractExtract alphabet from generator.
AlphabetInclusionTests whether an alphabet includes another alphabet.
AlphabetIntersectionIntersection over alphabets.
AlphabetLanguageGenerator with Lm(G)=Sigma.
AlphabetUnionUnion over Alphabets
AutomatonConvert generator to formal automaton.
CoaccessibleDelete non-coaccessible states and transitions.
CompleteDelete states that evolve into a terminal state.
DeterministicPowerset construction to enforce determinism.
EmptyLanguageSet generator to mark empty language.
EmptyStringLanguageGenerator with Lm(G)={epsilon}.
FullLanguageGenerator with Lm(G)=Sigma*.
IntegerSumSum of integer arguments.
InvProjectInverse projection of marked and generated language.
IsAccessibleTests a generator for accessibility.
IsCoaccessibleTests a generator for coaccessibility.
IsCompleteTest completeness of a generator.
IsDeterministicTest for determinsim.
IsEmptyLanguageTest Generator G for empty marked language Lm(G).
IsNonblockingTest a generator/ two languages for being nonblocking.
IsOmegaClosedTests a language for being omega-closed.
IsOmegaTrimTests a generator for omega trimness.
IsPrefixClosedTests a language for being prefix-closed.
IsTrimTests a generator for trimness.
KleeneClosureCompute Kleene closure for given language.
LanguageComplementComputes the complement of a language.
LanguageConcatenateConcatenates two languages.
LanguageDifferenceComputes the difference of two languages.
LanguageDisjointTests whether two languages are disjoint.
LanguageEqualityTests whether two languages are equal.
LanguageInclusionTests whether a languages includes another language.
LanguageIntersectionComputes the intersection of languages.
LanguageUnionComputes the union of languages.
MarkAllStatesMark all states in generator.
OmegaClosureCompute omega closure for given language.
OmegaParallelParallel composition with relaxed acceptance condition.
OmegaTrimDelete states to achieve omega-trimness.
ParallelComputes the parallel composition of two or more generators.
PrefixClosureCompute prefix closure for given language.
ProductComputes the product composition of two genertors.
ProjectNatural projection of marked and generated language.
SelfLoopSelf loop with specified alphabet.
StateMinStateset minimization.
TrimDelete non-coaccessible and non-accessible states and transitions.
UniqueInitEnforce unique initial state.

Literature

The following list of references is assembled from the plug-ins available in this copy of libFAUDES. It is meant to acknowledge research contributions relevant to the implemented algorithms and may serve as a starting point for a deeper literature review.

[C1] W.M. Wonham: Supervisory Control of Discrete-Event Systems, available at University of Toronto, 2009 (revised).

[C2] C.G. Cassandras, S. Lafortune: Introduction to Discrete Event Systems, 2007 (2nd ed).

[C3] E. Hopcroft, J.D. Ullman: Introduction to Automata Theory, Languages, and Computation, 1979.

libFAUDES 2.22k --- 2013.04.02 --- with "timed-iodevice-simulator"