|
|
||||||
|
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 1380 of file omg_buechictrl.cpp. ◆ BuechiCon() [2/2]
Omega-synthesis This is the RTI wrapper for
Definition at line 1426 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 1490 of file omg_buechictrl.cpp. ◆ BuechiConNorm() [2/2]
Omega-synthesis for partial observation (experimental!) This is the RTI wrapper for
Definition at line 1546 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. ◆ ExportHoa() [1/2]
Export Automaton as HOA formated stream Convenience wrapper, for detail see ExportHoa(std::ostream&, const Generator&)
Definition at line 150 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 is restricted to (nondetermistic) Buechi automata.
Definition at line 133 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 387 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 DDavid 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 deterministic Rabin automata with implicit edges. This is not a restriction of cpphoafparser and we extend for further use cases in future.
Definition at line 364 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. ◆ 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 liveness specification and rBAut is a plant with liveness guarantees.
Definition at line 188 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 269 of file omg_rabinfnct.cpp. ◆ RabinCtrlPfx()
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 358 of file omg_rabinctrl.cpp. ◆ RabinLiveStates() [1/3]
Live states w.r.t a Rabin acceptance condition. Iterates over all Rabin pairs and Returns the union of all live states.
Definition at line 125 of file omg_rabinfnct.cpp. ◆ RabinLiveStates() [2/3]
Live states w.r.t a Rabin pair. A state is considered live 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. ◆ RabinLiveStates() [3/3]
Live states w.r.t a Rabin pair. API wrapper.
Definition at line 111 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 RaibLiveStates and RabinTrimSet
Definition at line 180 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 RaibLiveStates and RabinTrimSet
Definition at line 153 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 live w.r.t. a Rabin pair, restricted to reachable states.
Definition at line 144 of file omg_rabinfnct.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 1341 of file omg_buechictrl.cpp. ◆ SupBuechiCon() [2/2]
Omega-synthesis w.r.t. Buechi acceptance This is the RTI wrapper for
Definition at line 1359 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 1448 of file omg_buechictrl.cpp. ◆ SupBuechiConNorm() [2/2]
Omega-synthesis for partial observation (experimental!) This is the RTI wrapper for
Definition at line 1469 of file omg_buechictrl.cpp. libFAUDES 2.33h --- 2025.06.18 --- c++ api documentaion by doxygen |