|
|
||||||
|
Detailed DescriptionThe omega-automata plug-in collects data structures and functions to support supervisory control of non-termination processes. LicenseThe omega-automata plugin is distributed with libFAUDES and under the terms of the LGPL. Copyright (c) 2025 Thomas Moor.
Function Documentation◆ aBuechiParallel()
Parallel composition with relaxed acceptance condition. See also BuechiParallel(const Generator&, const Generator&, Generator&). This version tries to be transparent on event attributes: if argument attributes match and if the result can take the respective attributes, then they are copied; it is considered an error if argument attributes do not match.
Definition at line 525 of file omg_buechifnct.cpp. ◆ aBuechiProduct()
Product composition for Buechi automata See also BuechiProduct(const Generator&, const Generator&, Generator&). This version tries to be transparent on event attributes: if argument attributes match and if the result can take the respective attributes, then they are copied; it is considered an error if argument attributes do not match.
Definition at line 288 of file omg_buechifnct.cpp. ◆ BuechiClosure()
Topological closure. This function computes the topological closure the omega language Bm accepted by the Buechi automaton rGen. Method: First, BuechiTrim is called to erase all states of rGen that do not contribute to Bm. Then, all remaining states are marked. No restrictions on parameter.
Example:
Definition at line 70 of file omg_buechifnct.cpp. ◆ BuechiCon() [1/2]
Omega-synthesis w.r.t. Buechi accptance This procedure first computes the supremal omega-controllable sublanguage as proposed by J. Thistle, 1992, applied to the specific case of deterministoc Buechi automata. It then applies a control pattern to obtain a relatively topologically-closed result, i.e., the topological closure of the result can be used as a supervisor. Parameter restrictions: both generators must be deterministic and have the same alphabet.
Definition at line 1381 of file omg_buechictrl.cpp. ◆ BuechiCon() [2/2]
Omega-synthesis This is the RTI wrapper for
Definition at line 1427 of file omg_buechictrl.cpp. ◆ BuechiConNorm() [1/2]
Omega-synthesis for partial observation (experimental!) Variation of supremal controllable prefix under partial observation. This variation applies a control pattern to obtain a relatively closed and omega-normal result. The latter properties are validated and an exception is thrown on an error. Thus, this function should not produce "false-positives". However, since it is derived from SupBuechiConNorm(), is may return the empty languages even if a non-empty controller exists. Parameter restrictions: both generators must be deterministic and have the same alphabet.
Definition at line 1492 of file omg_buechictrl.cpp. ◆ BuechiConNorm() [2/2]
Omega-synthesis for partial observation (experimental!) This is the RTI wrapper for
Definition at line 1548 of file omg_buechictrl.cpp. ◆ BuechiParallel()
Parallel composition with relaxed acceptance condition. This version of the parallel composition relaxes the synchronisation of the acceptance condition (marking). It requires that the omega extension of the generated language has infinitely many prefixes that comply to the marked languages of G1 and G2, referring to the projection on the respective alphabet. It does however not require the synchronous acceptance.
Definition at line 316 of file omg_buechifnct.cpp. ◆ BuechiProduct()
Product composition for Buechi automata Referring to the Buechi acceptance condition, the resulting genarator accepts all those inifinite words that are accepted by both, G1 and G2. This implementation extends the usual product state space by a flag to indentify executions with alternating marking.
Definition at line 166 of file omg_buechifnct.cpp. ◆ BuechiTrim() [1/2]
Trim generator w.r.t Buechi acceptance This is a API wrapper for BuechiTrim(vGenerator&).
Definition at line 54 of file omg_buechifnct.cpp. ◆ BuechiTrim() [2/2]
Trim generator w.r.t Buechi acceptance This function removes states such that the generator becomes omega trim while not affecting the induced omega language. The implementation first makes the generator accessible and then iteratively removes state that either never reach a marked state or that are guaranteed to eventually reach a terminal state. There might be a more efficient approach.
Definition at line 34 of file omg_buechifnct.cpp. ◆ ComputeTreeSignature()
Compute tree signature for state equivalence checking (Enhanced)
Definition at line 203 of file omg_pseudodet.cpp. ◆ ExportHoa() [1/2]
Export Automaton as HOA formated stream Convenience wrapper, for detail see ExportHoa(std::ostream&, const Generator&)
Definition at line 204 of file omg_hoa.cpp. ◆ ExportHoa() [2/2]
Export Automaton as HOA formated stream We iterate over all relevant entities of the specified automaton and somewhat adboc writes HOA formated entities to the specified stream. Our current implementation uses dynamic cast to figure wheter to to output a Buechi or a Rabin automaton
Definition at line 187 of file omg_hoa.cpp. ◆ ImportHoa() [1/2]
Import Automaton from HOA formated file Convenience wrapper, see ImportHoa(std::istream&,RabinAutomaton&) for details.
Definition at line 530 of file omg_hoa.cpp. ◆ ImportHoa() [2/2]
Import Automaton from HOA formated stream To reading input in HAO format we use the cpphoafparser library, authored/copyrighted by Joachim Klein klein David Mueller @tcs .inf. tu-d resde n.dedavid .mue ller@ tcs. inf.t u-dr esden .de We have found the original sources at http://automata.tools/hoa/cpphoafparser They are distributed under LGPL v2.1 conditions and we include them with libFAUDES under the same license terms. Our current implementation can read Rabin and Buechi automata, preferably with implicit edges. This is not a restriction of cpphoafparser and may be extended for further use cases in future.
Definition at line 503 of file omg_hoa.cpp. ◆ IsBuechiClosed()
Test for topologically closed omega language. This function tests whether the omega language Bm(G) realized by the specified Buechi automata is topologically closed. Method: First, compute the Buechi-trim state set and restrict the discussion to that set. Then, omega-closedness is equivalent to the non-existence on a non-trivial SCC with no marked states.
Definition at line 84 of file omg_buechifnct.cpp. ◆ IsBuechiControllable() [1/2]
Test omega controllability Tests whether the candidate supervisor H is omega controllable w.r.t. the plant G, where omega-languages are interpreted by Buechi acceptance condition. This implementation invokes IsControllable and IsBuechiRelativelyClosed. A future implementation may be more efficient. Parameter restrictions: both generators must be deterministic, omega-trim and have the same alphabet.
Definition at line 40 of file omg_buechictrl.cpp. ◆ IsBuechiControllable() [2/2]
Test omega-controllability. Tests whether the candidate supervisor h is omega controllable w.r.t. the plant g; this is a System wrapper for IsOmegaControllable.
Definition at line 105 of file omg_buechictrl.cpp. ◆ IsRabinLife()
Test for lifeness w.r.t a Rabin acceptance condition. Returns true iff all accessible states are life.
Definition at line 145 of file omg_rabinfnct.cpp. ◆ IsRabinTrim()
Test a Rabinautomaton to be trim. Returns true iff all states are accessible and life.
Definition at line 180 of file omg_rabinfnct.cpp. ◆ PseudoDet()
Pseudo-determinization algorithm for Rabin automata (Paper Algorithm) This function converts a nondeterministic Rabin automaton to an equivalent deterministic Rabin automaton using the pseudo-determinization algorithm from the paper, with fixed node numbering and enhanced state tracking.
Definition at line 248 of file omg_pseudodet.cpp. ◆ RabinBuechiAutomaton()
Construct Rabin-Buechi automata. Given two automata rRAut and rBAut, this function constructs the accessible product state set and corresponding syncronizsed transitions. For the generated languages, this is exactly the same as the common product operation. It then lifts the two individual acceptance conditions to the product state set. If both rRAut and rBAut are full, so is the result. In that case, the result accepts by its Rabin acceptance condition runs that are accepted by rRAut and by its Buechi acceptance condition those path thet are accepted by rBAut. The intended use case is when rRAut is a lifeness specification and rBAut is a plant with lifeness guarantees.
Definition at line 215 of file omg_rabinfnct.cpp. ◆ RabinBuechiProduct()
Product composition for a Rabin automaton with a Buechi automaton Referring to each acceptance condition specified by rRAut and rBAut, the resulting Rabin automaton accepts all those runs, that are accepted by both rRAut and rBAut. To support supervisory control, this function sets the marking of the result as a lifted variant of rBAut. This implementation extends the usual product state space by a flag to indentify executions with alternating marking. This restricts the applicability to one Rabin pair only. Future revisions may drop this restriction.
Definition at line 301 of file omg_rabinfnct.cpp. ◆ RabinCtrl() [1/4]
Omega-synthesis w.r.t. Buechi/Rabin acceptance condition Computation of a controller that respects next to the common upper bound specification also a lower bound. Only on exit of the lower-bound, the greedy controlle is activated. The result returned is a Buechi automaton of the closed-loop behaviour. The closure is readily utilised as a controller. Parameter restrictions: both generators must be deterministic and refer to the same alphabet. The lower bound argument is interpreted as the generated omega-language intersected with the plant behaviour. The effective lower bound must not exceed the supremal omega-controllable sublanguage of the upper bound specification. This is currently not checked.
Definition at line 810 of file omg_rabinctrl.cpp. ◆ RabinCtrl() [2/4]
Omega-synthesis w.r.t. Buechi/Rabin acceptance condition Computation of the "greedy" controller that runs for early acceptance. The result is a Buechi automaton of the closed-loop behaviour under greedy control. The closure is readily utilised as a controller. Parameter restrictions: both generators must be deterministic and refer to the same alphabet.
Definition at line 749 of file omg_rabinctrl.cpp. ◆ RabinCtrl() [3/4]
Omega-synthesis w.r.t. Buechi/Rabin acceptance condition Computation of a controller that respects next to the common upper bound specification also a lower bound. Only on exit of the lower-bound, the greedy controlle is activated. This is an API wrapper to obtain controllability attributes from the plant parameter. The result returned is a Buechi automaton of the closed-loop behaviour. The closure is readily utilised as a controller. Parameter restrictions: both generators must be deterministic and refer to the same alphabet. The lower bound argument is interpreted as the generated omega-language intersected with the plant behaviour. The effective lower bound must not exceed the supremal omega-controllable sublanguage of the upper bound specification. This is currently not checked.
Definition at line 941 of file omg_rabinctrl.cpp. ◆ RabinCtrl() [4/4]
Omega-synthesis w.r.t. Buechi/Rabin acceptance condition Computation of the "greedy" supervisor that runs for early acceptance; this variant retrieves controllabillity arguments from the specified plant. The result is a Buechi automaton of the closed-loop behaviour under greedy control. The closure is readily utilised as a controller. Parameter restrictions: both generators must be deterministic and refer to the same alphabet.
Definition at line 919 of file omg_rabinctrl.cpp. ◆ RabinCtrlPfx() [1/3]
Controllability prefix for Rabin automata. API wrapper to return the controllability prefix as generator.
Definition at line 600 of file omg_rabinctrl.cpp. ◆ RabinCtrlPfx() [2/3]
Controllability prefix for Rabin automata. Computation of the controllability prefix as proposed by Thistle/Wonham in "Supervision of infinite behavior of Discrete Event Systems, 1994, using the fixpoint iteration from "Control of w-Automata, Church's Problem, and the Emptiness Problem for Tree w-Automata", 1992.
Definition at line 555 of file omg_rabinctrl.cpp. ◆ RabinCtrlPfx() [3/3]
Controllability prefix for Rabin automata. API wrapper to return a controller
Definition at line 576 of file omg_rabinctrl.cpp. ◆ RabinCtrlPfxWithFeedback()
Controllability prefix with state feedback for Rabin automata. Extended version that computes both the controllability prefix and the corresponding state feedback controller, implementing Theorem 6.4 from Thistle/Wonham 1994.
Definition at line 732 of file omg_rabinctrlrk.cpp. ◆ RabinLifeStates() [1/3]
Life states w.r.t a Rabin acceptance condition. Iterates over all Rabin pairs and Returns the union of all life states.
Definition at line 126 of file omg_rabinfnct.cpp. ◆ RabinLifeStates() [2/3]
Life states w.r.t a Rabin pair. A state is considered life if it allows for a future path that such that the acceptance condition is met, The implementation is along the following line
Definition at line 34 of file omg_rabinfnct.cpp. ◆ RabinLifeStates() [3/3]
Life states w.r.t a Rabin pair. API wrapper.
Definition at line 111 of file omg_rabinfnct.cpp. ◆ RabinSimplify() [1/2]
Simplify Rabin acceptance condition Simplify Rabin pairs while maintaining the accepted laguage.
Definition at line 208 of file omg_rabinfnct.cpp. ◆ RabinSimplify() [2/2]
Simplify Rabin acceptance condition Simplify Rabin pairs while maintaining the accepted laguage.
Definition at line 189 of file omg_rabinfnct.cpp. ◆ RabinTrim() [1/2]
Trim generator w.r.t Rabin acceptance Restrict the automaton to the set of trim states; see also RaibLifeStates and RabinTrimSet
Definition at line 173 of file omg_rabinfnct.cpp. ◆ RabinTrim() [2/2]
Trim generator w.r.t Rabin acceptance Restrict the automaton to the set of trim states; see also RaibLifeStates and RabinTrimSet
Definition at line 162 of file omg_rabinfnct.cpp. ◆ RabinTrimSet()
Trim generator w.r.t. Rabin acceptance This function computes the set of states that contribute to the accepted omega language. The current implementation returns the union of all states that are life w.r.t. a Rabin pair, restricted to reachable states.
Definition at line 153 of file omg_rabinfnct.cpp. ◆ RemoveEps()
Remove epsilon transitions from a Rabin automaton This function removes epsilon transitions from a Rabin automaton by:
Definition at line 733 of file omg_pseudodet.cpp. ◆ SupBuechiCon() [1/2]
Omega-synthesis w.r.t. Buechi acceptance condition Computation of the supremal oemga-controllable sublanguage as proposed by Thistle/Wonham in "Control of w-Automata, Church's Problem, and the Emptiness Problem for Tree w-Automata", 1992, and, here, applied to the specific case of deterministic Buechi automata. In the given setting, the result matches the limit of the controllable prefix intersected with the plant and specification omega-languages. Parameter restrictions: both generators must be deterministic and refer to the same alphabet.
Definition at line 1342 of file omg_buechictrl.cpp. ◆ SupBuechiCon() [2/2]
Omega-synthesis w.r.t. Buechi acceptance This is the RTI wrapper for
Definition at line 1360 of file omg_buechictrl.cpp. ◆ SupBuechiConNorm() [1/2]
Omega-synthesis for partial observation (experimental!) Variation of supremal omega-controllable sublanguage to address normality requirements in the context of partial observation. The test used in this implementation is sufficient but presumably to necessary. Thus, the function in general return only a subset of the relevant controllable prefix. Parameter restrictions: both generators must be deterministic and have the same alphabet.
Definition at line 1450 of file omg_buechictrl.cpp. ◆ SupBuechiConNorm() [2/2]
Omega-synthesis for partial observation (experimental!) This is the RTI wrapper for
Definition at line 1471 of file omg_buechictrl.cpp. ◆ SupRabinCon() [1/2]
Omega-synthesis w.r.t. Buechi/Rabin acceptance condition Computation of the supremal oemga-controllable sublanguage as proposed by Thistle/Wonham in "Control of w-Automata, Church's Problem, and the Emptiness Problem for Tree w-Automata", 1992, and, here, applied to the specific case of deterministic Buechi plangt and a Rabin specification. Parameter restrictions: both generators must be deterministic and refer to the same alphabet.
Definition at line 657 of file omg_rabinctrl.cpp. ◆ SupRabinCon() [2/2]
Omega-synthesis w.r.t. Buechi acceptance This is the RTI wrapper for
Definition at line 697 of file omg_rabinctrl.cpp. libFAUDES 2.33l --- 2025.09.16 --- c++ api documentaion by doxygen |