| |
libFAUDES
PlugIns
Types
Functions
|
Boolean Operations on LanguagesFunctions on generators that perform set theoretic operations on languages, aka union, intersection and complement. Unless otherwise noted, semantics refer to the marked languages as oposed to the generated closed languages.LanguageUnionComputes the union of languages.
Signature:
LanguageUnion(+In+ Generator L1, +In+ Generator L2, +Out+ Generator LRes) Detailed description: Computes a generator, which marks the union of the languages marked by the specified input generators. Moreover, the same is achieved for the involved generated (prefix-closed) languages. The implementation first performs the textbook version in taking unions of all generator entities (alphabets, initial states, ...) and then postprocesses the result in converting it to a deterministic generator. State sets are taken as disjoint by definition and thus are reindexed and renamed to achieve disjoint union. The resulting language is defined over the union of the alphabets of the original languages; original languages defined over different alphabets are treated as if they were defined over the union of all input alphabets.
Parameter Conditions: Input parameters may be nondeterministic. The implementation invokes Deterministic() to convert the result into a deterministic generator. Note that this conversion is usually straightforward, but there exist worst-case examples that manifest the exponential complexity.
LanguageIntersectionComputes the intersection of languages.
Signature:
LanguageIntersection(+In+ Generator L1, +In+ Generator L2, +Out+ Generator LRes) Detailed description: Computes a generator, which marks the intersection of the languages marked by the specified input generators. Moreover, the same is achieved for the involved generated (prefix-closed) languages. The resulting languages are defined over the intersection of the involved alphabets. This function calls Product(). In the product of two automata, an event occurs if and only if it occurs in both automata rGen1 and rGen2. The result generates/marks the intersection of the involved languages, see e.g. [Cassandras, Lafortune. Introduction to Discrete Event Systems, p.84] Parameter Conditions: Input parameters may be nondeterministic. The result can be nondeterministic only if input parameters are nondeterministic. LanguageComplementComputes the complement of a language.
Signature:
LanguageComplement(+InOut+ Generator LRes) Detailed description: Converts a generator marking the language Lm into a generator marking the language complement of Lm which is defined as Sigma^* - Lm. The implementation calls Automaton() first and then inverts the marking of the states of the result.
Parameter Conditions: The input generator must be deterministtc. If not explicitely specified, the alphabet Sigma is taken from the input generator.
LanguageDifferenceComputes the difference of two languages.
Detailed description: Computes a generator that marks the set-difference of two marked languages Lm1 and Lm2. The implementation first takes the complement of the second argument and then takes the intersection with the first.
Parameter Conditions: The second argument is required to be a deterministic realisation. Provided the first argument is deterministic, too, the result is deterministic. LanguageDisjointTests whether two languages are disjoint.
Detailed description: Test if language Lm1 is disjoint with Lm2 marked. The generated closed languages are not considered. The current implementation of this function computes the intersection of both languages and then tests for emptyness. Future implementations may be more efficient. Parameter Conditions: Generators are reqired to be deterministic realisations of the respective languages. LanguageEqualityTests whether two languages are equal.
Detailed description: Test whether language Lm1 equals Lm2. The generated closed languages are not considered. The current implementation of this function tests for mutual inclusion. Future implementations may be more efficient. Parameter Conditions: Generators are reqired to be deterministic realisations of the respective languages. LanguageInclusionTests whether a languages includes another language.
Detailed description: Test if language Lm1 is included in language Lm2, marked by the respecive generators. The generated closed languages are not considered. The current implementation of this function computes the intersection of Lm1 with the complement of Lm2 and then tests for emptyness. Future implementations may be more efficient. Parameter Conditions: Generators are reqired to be deterministic realisations of the respective languages. |
libFAUDES 2.13a run-time interface with "example observer hiosys multitasking timed simulator luabindings"