|
|
||||||
|
|
Functions on Rabin AutomataThe omega-automata plug-in provides a set of general purpose operations on Rabin Automata. RabinLifeStatesLife States w.r.t. Rabin acceptence condition. Signature:RabinLifeStates(+In+ Generator Gen, +In+ RabinPair RPair, +Out+ StateSet LifeStates) RabinLifeStates(+In+ RabinAutomaton RAut, +Out+ StateSet LifeStates) Detailed description:A state is considered life if it allows for a future path such that the acceptance condition is met. Given a Rabin pair (R,I), the implementation of this function is along the following lines
Depending on the signature, lifeness is required w.r.t. at least one of the provided Rabin pairs. Example:![]() For the blue Rabin pair, the life states are reported as {N0, A1, A2_R}. For the orange Rabin pair, the life states are reported as {N0, A1, A2_R, A3, AB4, B2_R, B3, B4}. For the green Rabin pair, no life states exist. Applying IsRabinTrim to the above automaton returns false because there exists accessible states, that are not life, e.g., N1 RabinTrimDelete states that do not contribute to the accepted language. Signature:RabinTrim(+InOut+ RabinAutomaton RAut) RabinTrim(+In+ RabinAutomaton RAut, +Out+ RabinAutomaton RAutRes) Detailed description:Trim a given Rabin automaton RAut by removing states that are not life and/or not accessible; see also RabinLifeStates. The accepted language Rm(RAut) is not affected.
When applied on the example given for RabinLifeStates,
RabinTrim returns
the result:
Applying IsRabinTrim to the above automaton returns true. IsRabinTrimTest for a Rabin automaton to be trim. Signature:IsRabinTrim(+In+ RabinAutomaton RAut, +Out+ Boolean BRes) Detailed description:A Rabin automaton is considered trim if all states are accessible and life w.r.t. at least one Rabin pair. In other words, trimness requires all states to contribute to the accepted language. For examples see RabinTrim and RabinLifeStates. RabinSimplifySimplify individual Rabin pairs and remove doublets. Signature:RabinSimplify(+InOut+ RabinAutomaton RAut) RabinSimplify(+In+ RabinAutomaton RAut, +Out+ RabinAutomaton RAutRes) Detailed description:Simplify the acceptance condition of the Rabin automaton RAut by restricting Rabin pairs to life states and removing doublets. The accepted language Rm(RAut) is not affected. Example:
We use the same automaton as in RabinLifeStates:
Applying RabinSimplify we obtain:
Applying RabinTrim and RabinSimplify
we obtain:
Applying IsRabinTrim to the above automaton returns true. RabinBuechiAutomatonAssemble an automaton to accept a given Rabin/Buechi accepted lanuage. Signature:RabinBuechiAutomaton(+In+ RabinAutomaton RAut, +In+ Generator BAut, +Out+ RabinAutomaton GRes) Detailed description:Given a Rabin automaton RAut and a Buechi automaton BAut, compose a Rabin automaton GRes on the product state set. Then lift acceptance conditions such that the Rabin accepted language matches that of RAut and the Buechi accepted language matches that of BAut; i.e., Rm(RAut) = Rm(Gres) and Bm(BAut) = Bm(Gres). Example:
Parameter Conditions:Arguments must have matching alphabets Sigma. Arguments must be full, i.e., generate Sigma^w RabinBuechiProductAssemble an automaton to accept the intsection of given Rabuin/Buechi accepted lanuage. Signature:RabinBuechiProduct(+In+ RabinAutomaton RAut, +In+ Generator BAut, +Out+ RabinAutomaton GRes) Detailed description:Given a Rabin automaton RAut and a Buechi automaton BAut, compose a Rabin automaton GRes on the product augmented state set (see BuechiProduct). Set the Rabin acceptance condition such that accepted words are those accepted by both arguments; i.e., Rm(Gres) = Rm(RAut)∩Bm(BAut). To facilitate controller syhnthesis, we also set the Buechi acceptance to appcept Bm(BAut). This feature requires RAut to be full. Example:
Parameter Conditions:Arguments must have matching alphabets Sigma. The argument RAut must be full, i.e., generate Sigma^w libFAUDES 2.33l --- 2025.09.16 --- with "omegaaut-synthesis-observer-observability-diagnosis-hiosys-iosystem-multitasking-coordinationcontrol-timed-simulator-iodevice-priorities-luabindings-hybrid-example-pybindings" |