|
|
||||||
|
|
Functions on Buechi AutomataThe omega-automata plug-in provides a set of general purpose operations on Buechi Automata. IsBuechiTrimTests a Buechi automaton for trimness. Detailed description:A Buechi automaton G is trim if it is accessible, co-accessible, and complete; i.e. if all states contribute to the accepted language Bm(G). This function returns "true" if G is omega-trim. Else it returns "false". Example:
The example generator fails to be trim since it is co-accessible nor complete. Clearly, any state that is not does contribute to Bm(G), neither does a state that is guaranteed to evolve into a state with no successor. Note, however, the states s3 and s4 do not fall into any of the latter cathegories but still don't conribute to Bm(G). This is because s3 and s4 can evolve into a marked state and they can be extended infinitely, but they can not be extended infinitely while passing marked states infinitely often. BuechiTrimDelete states to achieve omega-trimness. Detailed description:Trim a given Buechi automaton G by repeatedly removing states that are not accessible, not co-accessible, or have no successor state. The accepted language Bm(G) is not affected.
When applied on the above example, BuechiTrim returns
the result:
IsBuechiClosedTests a language for being topolicigally closed. Detailed description:
A omega-language L ⊆ Sigma^w
is topologically closed if any strictly
increasing sequence of prefixes from L converges to an
omega-string in L, i.e. if
The function IsBuechiClosed tests for the specified Buechi automaton G whether Bm(G) is topologically closed. The implementation first computes the omega-trim state set. If within this set there exists an SCC with no marked states the function returns false. Else it returns true. Example:
The language Bm(G) realized by the above Buechi automaton is not topolgically closed. The states 6 and 7 constitute an SCC when restricting G to the buechi-trim state set {1,2,4,6,7}. Thus, the limit of the sequence a d (a b)^i is in B(Prefix(L)) but not in B(L). The function IsBuechiClosed returns false. Parameter Conditions:The argument must be deterministic. BuechiClosureRealise topological closure for given language. Signature:BuechiClosure(+InOut+ Generator GArg) Detailed description:
For any omega-language L ⊆ Sigma^w
there exists a smallest omega-closed
superset, the so-called topological closure
of L:
The function BuechiClosure computes a realisation of the the topological closure for the specified omega language Bm(GArg). It first invokes BuechiTrim and then markes all states. Thus, Closure(Bm(GArg)) = B(GRes) = Bm(GRes) and Prefix(Bm(GArg)) = L(GRes) = Lm(GRes). Example:
IsBuechiRelativelyClosedTest for relative closedness of Buechi accepted language Signature:IsBuechiRelativelyClosed(+In+ Generator GPlant, +In+ Generator GCand, +Out+ Boolean BRes) Detailed description:
An omega-language K is relatively closed w.r.t. the omega-language
L, if K can be recovered from its closure and L.
Formally:
This function tests, whether
The function returns "true" if all conditions are satisfied. Example:Consider the A-B-machine in the variant in which B exhausts the machine with the specification that persistently requires any sucessful operation; see Omega Synthesiss Example. Then the product will generate strings b c (b d)^*. Consider the omega-limit w of this set of strings. The states attained when generating w eventually correspond to the plant states XB and FB and to the specification state B. In the product generator, the states must be part of an SCC. Furthermore, since B is not marked there must exists an SCC with no specification-marked state. However, this SCC also contains a state that coresponds to XB, which is marked by the plant. Thus, the procedures return "false". Parameter Conditions:This implementation requires the alphabets of both generators to match. Furthermore, both specified generators must be deterministic and trim (w.r.t. Buechi acceptance). BuechiProductProduct composition for Buechi acceptance condition. Detailed description:
Given two Buechi automata G1 and G2,
this function computes an automaton GRes such that
The implementation is similar to that of Parallel, except that we augment the state set to hold an extra flag to track when G1 attains a marking after G2 did so. This enables the construction of a a set of marked states for GRes that when passed infinitely often implies that this also was the case for G1 and G2. Parameter Conditions:The alphabets of both arguents must match. Arguments are required to be deterministic, and so will be the result. In this implementation, only accessible states are generated. It is considered an error if the controllability flags in the arguments don't match. BuechiParallelParallel composition with relaxed acceptance condition. Detailed description:The marking introduced by the ordinary Parallel composition requires that each component attains a marked state simultaneously. This condition may turn out too restrictive when focus is on the infinite time behaviour. The function BuechiParallel relaxes the acceptance condition, in that it requires each component always to eventually accept the generated prefix, but not necessarily simultaneously with the other component:
Technically, BuechiParallel constructs its result on the product of the state spaces of G1 and G2 with an additional boolean flag. The flag is used to mark those states in GRes that correspond to a G2-marking with most recent marking in G1. Thus, a trajectory that passes a GRes-marking infinitely often, also passes infinitely many marked states in G1 and G2. Example:
Parameter Conditions:In this implementation, only accessible states are generated. Arguments are required to be deterministic, and so will be the result. It is considered an error if the controllability flags in the arguments don't match. libFAUDES 2.33h --- 2025.06.18 --- with "omegaaut-synthesis-observer-observability-diagnosis-hiosys-iosystem-multitasking-coordinationcontrol-timed-simulator-iodevice-priorities-luabindings-hybrid-example-pybindings" |