|
Overview
This plugin implements data types and functions related to the input-/output (I/O-) based approach to hierarchical control of discrete event systems as introduced in:
S. Perk, Th. Moor and K. Schmidt. Hierarchical discrete event systems with inputs and outputs. WODES 2006 - 8th International Workshop on Discrete Event Systems, Ann Arbor, USA, 2006.
Examples are provided in the user reference, section HioSys.
License
This plug-in is distributed with libFAUDES and under the terms of the LGPL.
Copyright (c) 2009, Thomas Moor, Sebastian Perk, Klaus Schmidt.
Contents
|
class | faudes::HioEventFlags |
| Event attributes for hierarchical discrete event systems with inputs and outputs. More...
|
|
class | faudes::HioStateFlags |
| State attributes for hierarchical discrete event systems with inputs and outputs. More...
|
|
class | faudes::THioConstraint< GlobalAttr, StateAttr, EventAttr, TransAttr > |
| Generator with I/O-constraint attributes. More...
|
|
class | faudes::THioController< GlobalAttr, StateAttr, EventAttr, TransAttr > |
| Generator with I/O-controller attributes. More...
|
|
class | faudes::THioEnvironment< GlobalAttr, StateAttr, EventAttr, TransAttr > |
| Generator with I/O-environment attributes. More...
|
|
class | faudes::HioModule |
| Recurring structure in hierarchies designed according to the I/O based DES framework. More...
|
|
class | faudes::THioPlant< GlobalAttr, StateAttr, EventAttr, TransAttr > |
| Generator with I/O-plant attributes. More...
|
|
|
bool | faudes::CompleteSynth (const Generator &rPlant, const EventSet rCAlph, const Generator &rSpec, Generator &rClosedLoop) |
| CompleteSynth: compute supremal complete and controllable (and closed) sublanguage. More...
|
|
bool | faudes::NormalCompleteSynth (Generator &rPlant, const EventSet &rCAlph, const EventSet &rOAlph, const Generator &rSpec, Generator &rClosedLoop) |
| NormalCompleteSynth: compute normal, complete and controllable (and closed) sublanguage. More...
|
|
bool | faudes::NormalCompleteSynthNB (Generator &rPlant, const EventSet &rCAlph, const EventSet &rOAlph, const Generator &rSpec, Generator &rClosedLoop) |
| NormalCompleteSynthNB: compute normal, complete, controllable and nonblocking sublanguage. More...
|
|
Generator | faudes::HioSortCL (const EventSet &rYc, const EventSet &rUc, const EventSet &rYp, const EventSet &rUp, const EventSet &rYe, const EventSet &rUe) |
| IoSortCL: returns IO-sorting structure required for closed loops. More...
|
|
void | faudes::HioFreeInput (const Generator &rGen, const EventSet &rInput, const EventSet &rOutput, Generator &rResGen, const std::string &rErrState1, const std::string &rErrState2, Idx &rErrState1Idx, Idx &rErrState2Idx) |
| HioFreeInput: extend generator by obviously missing input transitions. More...
|
|
void | faudes::HioFreeInput (const Generator &rGen, const EventSet &rInput, const EventSet &rOutput, Generator &rResGen, const std::string &rErrState1, const std::string &rErrState2) |
| HioFreeInput: extend generator by obviously missing input transitions. More...
|
|
void | faudes::HioFreeInput (const Generator &rGen, const EventSet &rInput, const EventSet &rOutput, Generator &rResGen) |
| HioFreeInput: extend generator by obviously missing input transitions. More...
|
|
void | faudes::HioFreeInput (const HioPlant &rPlant, HioPlant &rResPlant) |
| HioFreeInput: extend HioPlant by obviously missing input transitions. More...
|
|
void | faudes::HioFreeInput (const HioController &rController, HioController &rResController) |
| HioFreeInput: extend HioController by obviously missing input transitions. More...
|
|
void | faudes::HioFreeInput (const HioEnvironment &rEnvironment, HioEnvironment &rResEnvironment) |
| HioFreeInput: extend HioEnvironment by obviously missing input transitions. More...
|
|
void | faudes::HioFreeInput (const HioConstraint &rConstraint, HioConstraint &rResConstraint) |
| HioFreeInput: extend HioConstraint by obviously missing input transitions. More...
|
|
void | faudes::HioFreeInput (HioPlant &rPlant) |
| HioFreeInput: convenience interface to faudes::HioFreeInput(const HioPlant&, HioPlant) More...
|
|
void | faudes::HioFreeInput (HioController &rController) |
| HioFreeInput: convenience interface to faudes::HioFreeInput(const HioController&, HioController) More...
|
|
void | faudes::HioFreeInput (HioEnvironment &rEnvironment) |
| HioFreeInput: convenience interface to faudes::HioFreeInput(const HioEnvironment&, HioEnvironment) More...
|
|
void | faudes::HioFreeInput (HioConstraint &rConstraint) |
| HioFreeInput: convenience interface to faudes::HioFreeInput(const HioConstraint&, HioConstraint) More...
|
|
void | faudes::MarkHioShuffle (const Generator &rGen1, const Generator &rGen2, const std::map< std::pair< Idx, Idx >, Idx > &rReverseCompositionMap, Generator &rShuffle) |
| MarkHioShuffle: marking rule for HioShuffle() in case of marked parameters rGen1 and rGen2 - UNDER CONSTRUCTION. More...
|
|
void | faudes::CheapAltAnB (const EventSet rAset, const EventSet rBset, const int Depth, Generator &rAltAnB) |
| CheapAltAnB: returns Generator of the following specification: "After a maximum of n (=depth) pairs of
A-transitions, a B-transition has to occur!". More...
|
|
void | faudes::CheapAltAB (const EventSet rAset, const EventSet rBset, const int Depth, Generator &rAltAB) |
| CheapAltAB: returns Generator of the following specification: "After a maximum of n (=depth) pairs of
A-transitions, a B-transition has to occur and vice-versa!". More...
|
|
void | faudes::MarkAlternationAB (const EventSet rAset, const EventSet rBset, Generator &rAltAB) |
| MarkAlternationAB: returns Generator marking the alternation of Aset-transitions with Bset-transitions. More...
|
|
void | faudes::HioShuffleUnchecked (const Generator &rPlantA, const Generator &rPlantB, const EventSet &rYp, const EventSet &rUp, const EventSet &rYe, const EventSet &rUe, Generator &rIOShuffAB) |
| HioShuffleUnchecked: IO-shuffle of rPlantA and rPlantB according to definition, no parameter check. More...
|
|
void | faudes::HioShuffle (const Generator &rPlantA, const Generator &rPlantB, const EventSet &rYp, const EventSet &rUp, const EventSet &rYe, const EventSet &rUe, Generator &rIOShuffAB) |
| HioShuffle: IO-shuffle of rPlantA and rPlantB according to definition. More...
|
|
void | faudes::HioShuffle (const HioPlant &rPlantA, const HioPlant &rPlantB, HioPlant &rIOShuffAB) |
| HioShuffle: IO-shuffle of rPlantA and rPlantB according to definition. More...
|
|
void | faudes::HioShuffleTU (const Generator &rPlantA, const Generator &rPlantB, const EventSet &rYp, const EventSet &rUp, const EventSet &rYe, const EventSet &rUe, const int Depth, Generator &rIOShuffAB) |
| HioShuffleTU: IO-shuffle of rPlantA and rPlantB according to definition with additional forced alternation of depth Depth (see CheapAltAB()) between A- and B-events. More...
|
|
void | faudes::SearchYclessScc (const Idx state, int &rcount, const Generator &rGen, const EventSet &rYc, const bool UnMarkedOnly, StateSet &rNewStates, std::stack< Idx > &rSTACK, StateSet &rStackStates, std::map< const Idx, int > &rDFN, std::map< const Idx, int > &rLOWLINK, std::set< StateSet > &rSccSet, StateSet &rRoots) |
| SearchYclessSCC: Search for strongly connected ycless components (YC-less SCC's). More...
|
|
bool | faudes::YclessScc (const Generator &rGen, const EventSet &rYc, std::set< StateSet > &rSccSet, StateSet &rRoots) |
| YclessSCC: Search for strongly connected ycless components (YC-less SCC's) - convenience api. More...
|
|
bool | faudes::YclessUnmarkedScc (const Generator &rGen, const EventSet &rYc, std::set< StateSet > &rSccSet, StateSet &rRoots) |
| YclessUnmarkedSCC: Search for strongly connected ycless components (YC-less SCC's) consisting of unmarked states only. More...
|
|
FAUDES_API bool | faudes::YclessSCC (const Generator &rGen, const EventSet &rYc, std::set< StateSet > &rSccSet) |
| YclessSCC: Search for strongly connected ycless components (YC-less SCC's) - convenience api. More...
|
|
bool | faudes::IsYcLive (const Generator &rGen, const EventSet &rYc) |
| IsYcLive: This function checks if generator is Yc-live. More...
|
|
void | faudes::WriteStateSets (const std::set< StateSet > &rStateSets) |
| WriteStateSets: Write set of StateSet's to console (indeces). More...
|
|
void | faudes::WriteStateSets (const Generator &rGen, const std::set< StateSet > &rStateSets) |
| WriteStateSets: Write set of StateSet's to console (symbolic state names taken from rGen). More...
|
|
void | faudes::SccEntries (const Generator &rGen, const std::set< StateSet > &rSccSet, StateSet &rEntryStates, TransSetX2EvX1 &rEntryTransSet) |
| SCCEntries: figure entry states and entry transitions of strongly connected components rSccSet of rGen. More...
|
|
void | faudes::CloneScc (Generator &rGen, const StateSet &rScc, std::set< StateSet > &rSccSet, const Idx EntryState, StateSet &rEntryStates, TransSetX2EvX1 &rEntryTransSet) |
| cloneSCC: makes a copy (clone) of strongly connected component (rSCC) of the generator and moves all transitions leading to some entry state EntryState of this SCC to the copy of EntryState. More...
|
|
void | faudes::CloneUnMarkedScc (Generator &rGen, const StateSet &rScc, const Idx EntryState, const StateSet &rEntryStates, TransSetX2EvX1 &rEntryTransSet) |
| CloneUnMarkedSCC: makes a copy (clone) of strongly connected unmarked component (rSCC) of rGen. More...
|
|
void | faudes::YcAcyclic (const Generator &rGen, const EventSet &rYc, Generator &rResGen) |
| YcAcyclic: Computes the supremal(?) Yc-acyclic sublanguage of L(Gen). More...
|
|
void | faudes::ConstrSynth_Beta (Generator &rPlant, const EventSet &rYp, const EventSet &rUp, const Generator &rLocConstr, Generator &rOpConstraint) |
| ConstrSynth_Beta: compute operator constraint Sp for plant under environment constraint Sl such that plant is complete & Yp-live wrt both constraints - Beta Version. More...
|
|
void | faudes::HioSynthUnchecked (const Generator &rPlant, const Generator &rSpec, const Generator &rConstr, const Generator &rLocConstr, const EventSet &rYc, const EventSet &rUc, const EventSet &rYp, const EventSet &rUp, const EventSet &rYel, const EventSet &rUel, Generator &rController) |
| HioSynthUnchecked: I/O controller synthesis procedure, no parameter check. More...
|
|
void | faudes::HioSynth (const Generator &rPlant, const Generator &rSpec, const Generator &rConstr, const Generator &rLocConstr, const EventSet &rYc, const EventSet &rUc, const EventSet &rYp, const EventSet &rUp, const EventSet &rYel, const EventSet &rUel, Generator &rController) |
| HioSynthUnchecked: I/O controller synthesis procedure. More...
|
|
void | faudes::HioSynthMonolithic (const HioPlant &rPlant, const HioPlant &rSpec, const HioConstraint &rSc, const HioConstraint &rSp, const HioConstraint &rSe, HioController &rController) |
| HioSynthMonolithic: I/O controller synthesis procedure for monolithic plant. More...
|
|
void | faudes::HioSynthHierarchical (const HioPlant &rHioShuffle, const HioEnvironment &rEnvironment, const HioPlant &rSpec, const Generator &rIntConstr, const HioConstraint &rSc, const HioConstraint &rSl, HioController &rController) |
| HioSynthHierarchical: I/O controller synthesis procedure for I/O-shuffle of i plants and their interaction via an I/O environment. More...
|
|
◆ CheapAltAB()
CheapAltAB: returns Generator of the following specification: "After a maximum of n (=depth) pairs of
A-transitions, a B-transition has to occur and vice-versa!".
- Parameters
-
rAset | alphabet A |
rBset | alphabet B |
Depth | depth of alternation |
rAltAB | generator of AB-specification |
- Exceptions
-
Exception |
- n less than 1 (id 0)
- rAset empty (id 0)
- rBset empty (id 0)
|
Definition at line 1363 of file hio_functions.cpp.
◆ CheapAltAnB()
CheapAltAnB: returns Generator of the following specification: "After a maximum of n (=depth) pairs of
A-transitions, a B-transition has to occur!".
- Parameters
-
rAset | alphabet A |
rBset | alphabet B |
Depth | depth of alternation |
rAltAnB | generator of AnB-specification |
- Exceptions
-
Exception |
- n less than 1 (id 0)
- rAset empty (id 0)
- rBset empty (id 0)
|
Definition at line 1301 of file hio_functions.cpp.
◆ CloneScc()
cloneSCC: makes a copy (clone) of strongly connected component (rSCC) of the generator and moves all transitions leading to some entry state EntryState of this SCC to the copy of EntryState.
If this is carried out for n-1 of all n entry states of the SCC, then, in the generator, this one SCC is transformed into n SCC's with one unique entry state each. The set of SCC's is extended by the clone-SCC. The set of entry states is extended by the (unique) entry state of the clone-SCC. Note: all added states are equivalent to some state in the original generator, the behaviour is not changed. The basic idea of this algorithm id taken from [Jéron,Marchand,Rusu,Tschaen] "Ensuring the conformance of reactive discrete-event systems using supervisory control" (CDC'03) todo: check const parameters
- Parameters
-
rGen | generator holding SCC's of rSccSet |
rScc | SCC of rGen that is to be cloned // Perk: check if idx of rSccSet is better? |
rSccSet | set of all SCC's of rGen |
EntryState | one of the entry states of this SCC |
rEntryStates | set of entry states of this SCC |
rEntryTransSet | set of respective transitions to the entry states, sorted by X2 |
- Exceptions
-
Exception |
- todo: exceptions, e.g. for rEntryState not subset of rEntryStates not subset of rScc not element of rSccSet, elements of rSccSet not subset of rGen.States() etc.
|
<>
Definition at line 1941 of file hio_functions.cpp.
◆ CloneUnMarkedScc()
CloneUnMarkedSCC: makes a copy (clone) of strongly connected unmarked component (rSCC) of rGen.
Definition at line 2030 of file hio_functions.cpp.
◆ CompleteSynth()
CompleteSynth: compute supremal complete and controllable (and closed) sublanguage.
Computes the supremal complete and controllable (and closed) sublanguage of the language generated by rSpec wrt the language generated by rPlant and the controllable events rCalph. Method: iteration of SupCon() and erasing of dead states found by IsComplete until a fix point is reached. Leads to maximal solution as shown in: Kumar, Garg, Marcus. "On Supervisory Control of
sequential behaviors" IEEE Transactions On Automatic Control, Vol. 37, 1992, pp. 1978-1985
More concise version SupConComplete() is under construction, see below.
- Parameters
-
rPlant | plant generator |
rCAlph | controllable events |
rSpec | specification generator |
rClosedLoop | reference to result |
- Returns
- success (true) for nonempty result
- Exceptions
-
Definition at line 104 of file hio_functions.cpp.
◆ ConstrSynth_Beta()
ConstrSynth_Beta: compute operator constraint Sp for plant under environment constraint Sl such that plant is complete & Yp-live wrt both constraints - Beta Version.
Plant can be individual or composed, ie Plant=Lpe || Le, or Plant=Lpe1 ||io Lpe2 || Lel || Ll, ie composition of plant and envconstr, or composition of HioShuffle of two plants with environment and envconstr. Parameter rLocConstr is optional and may contain environment constraints for Lpe1 and Lpe2; rOpConstraint is computed such that rLocConstr is met under rOpConstraint. More and better docu will follow in future version.
- Parameters
-
rPlant | model of plant under environment constraint. |
rYp | alphabet YP |
rUp | alphabet UP |
rLocConstr | reference to optional local constraints |
rOpConstraint | reference to operator constraint |
Definition at line 2282 of file hio_functions.cpp.
◆ HioFreeInput() [1/11]
HioFreeInput: extend generator by obviously missing input transitions.
States of the generator in which a strict but nonempty subset of the alphabet Input is active are extended by transitions to an error state (flag Err) such that now the whole Input alphabet is active in that state. If the alphabet Output is nonempty, an error behaviour (Output Input)* is concatenated to the error state using a second error state (flag Err). Note that this method only helps making the input free in an hio system but does not guarantee a free input. Method: the transition relation of all states with at least one active AND at least one inactive Input-event is extended by transitions such that formerly inactive Input- events lead to the first error state in the result. If the parameter Output is nonempty, transitions with all Output-events from first error state to the second error state, and transitions with all Input-events back to the first error state are inserted. Note: states with NO active Input-event are ignored.
- Parameters
-
rGen | generator |
rInput | alphabet Input |
rOutput | alphabet Output |
rResGen | reference to extended generator (result) |
- Exceptions
-
Exception |
- empty Input-alphabet or non-disjoint Input and Output (id 0)
|
Definition at line 504 of file hio_functions.cpp.
◆ HioFreeInput() [2/11]
HioFreeInput: extend generator by obviously missing input transitions.
States of the generator in which a strict but nonempty subset of the alphabet Input is active are extended by transitions to an error state (ErrState1, flag Err) such that now the whole Input alphabet is active in that state. If the alphabet Output is nonempty, an error behaviour (Output Input)* is concatenated to the error state using a second error state (ErrState2, flag Err). Note that this method only helps making the input free in an hio system but does not guarantee a free input. Method: the transition relation of all states with at least one active AND at least one inactive Input-event is extended by transitions such that formerly inactive Input- events lead to the first error state in the result. If the parameter Output is nonempty, transitions with all Output-events from first error state to the second error state, and transitions with all Input-events back to the first error state are inserted. Note: states with NO active Input-event are ignored.
- Parameters
-
rGen | generator |
rInput | alphabet Input |
rOutput | alphabet Output |
rResGen | reference to extended generator (result) |
rErrState1 | symbolic name of first error state; ignored if not rGen.StateNamesEnabled() |
rErrState2 | symbolic name of second error state; ignored if not rGen.StateNamesEnabled() |
- Exceptions
-
Exception |
- empty Input-alphabet or non-disjoint Input and Output (id 0)
|
Definition at line 492 of file hio_functions.cpp.
◆ HioFreeInput() [3/11]
HioFreeInput: extend generator by obviously missing input transitions.
States of the generator in which a strict but nonempty subset of the alphabet Input is active are extended by transitions to an error state (ErrState1, flag Err) such that now the whole Input alphabet is active in that state. If the alphabet Output is nonempty, an error behaviour (Output Input)* is concatenated to the error state using a second error state (ErrState2, flag Err). Note that this method only helps making the input free in an hio system but does not guarantee a free input. Method: the transition relation of all states with at least one active AND at least one inactive Input-event is extended by transitions such that formerly inactive Input- events lead to the first error state in the result. If the parameter Output is nonempty, transitions with all Output-events from first error state to the second error state, and transitions with all Input-events back to the first error state are inserted. Note: states with NO active Input-event are ignored.
- Parameters
-
rGen | generator |
rInput | alphabet Input |
rOutput | alphabet Output |
rResGen | reference to extended generator (result) |
rErrState1 | symbolic name of first error state; ignored if not rGen.StateNamesEnabled() |
rErrState2 | symbolic name of second error state; ignored if not rGen.StateNamesEnabled() |
rErrState1Idx | index of first error state (result) |
rErrState2Idx | index of second error state if inserted (result) |
- Exceptions
-
Exception |
- empty Input-alphabet or non-disjoint Input and Output (id 0)
|
Definition at line 381 of file hio_functions.cpp.
◆ HioFreeInput() [4/11]
HioFreeInput: extend HioConstraint by obviously missing input transitions.
States of the HioConstraint in which a strict but nonempty subset of the U-alphabet is active are extended by transitions to an error state such that now the whole U-alphabet is active in that state.To avoid an additional deadlock violating completeness, an error behaviour (U Y)* is concatenated to the error state using a second error state. Note that this method only helps making the input free in an hio system but does not guarantee a free input. Method: the transition relation of all states with at least one active AND at least one inactive U-event is events lead to the U-error state in the result. For each U-event, a transition to a second error state, and for each Y-event, a transition from the second to the first error state is inserted to realise the error behaviour. Note: states with NO active U-event are ignored.
- Parameters
-
rConstraint | HioConstraint |
rResConstraint | reference to extended HioConstraint (result) |
Definition at line 806 of file hio_functions.cpp.
◆ HioFreeInput() [5/11]
HioFreeInput: extend HioController by obviously missing input transitions.
States of the HioController in which a strict but nonempty subset of the Uc- or Yp-alphabet is active are extended by transitions to an error state such that now the whole Uc- or Yp-alphabet is active in that state. To avoid an additional deadlock violating completeness, an error behaviour (Up Yp)* is concatenated to the error state using a second error state. Note that this method only helps making the input free in an hio system but does not guarantee a free input. Method: the transition relation of all states with at least one active AND at least one inactive Uc- or Yp-event is events lead to the Uc- or Yp-error state in the result. For each Up-event, a transition to a second error state, and for each Yp-event, a transition from the second to the first error state is inserted to realise the error behaviour. Note: states with NO active Uc- or Yp-event are ignored.
- Parameters
-
rController | HioController |
rResController | reference to extended HioController (result) |
Definition at line 553 of file hio_functions.cpp.
◆ HioFreeInput() [6/11]
HioFreeInput: extend HioEnvironment by obviously missing input transitions.
States of the HioEnvironment in which a strict but nonempty subset of the Ul- or Ye-alphabet is active are extended by transitions to an error state such that now the whole Ul- or Ye-alphabet is active in that state.To avoid an additional deadlock violating completeness, an error behaviour (Ue Ye)* is concatenated to the error state using a second error state. Note that this method only helps making the input free in an hio system but does not guarantee a free input. Method: the transition relation of all states with at least one active AND at least one inactive Ul- or Ye-event is events lead to the Ul- or Ye-error state in the result. For each Ue-event, a transition to a second error state, and for each Ye-event, a transition from the second to the first error state is inserted to realise the error behaviour. Note: states with NO active Ul- or Ye-event are ignored.
- Parameters
-
rEnvironment | HioEnvironment |
rResEnvironment | reference to extended HioEnvironment (result) |
Definition at line 680 of file hio_functions.cpp.
◆ HioFreeInput() [7/11]
HioFreeInput: extend HioPlant by obviously missing input transitions.
States of the HioPlant in which a strict but nonempty subset of the Up- or Ue-alphabet is active are extended by transitions to an error state such that now the whole Up- or Ue-alphabet is active in that state. Note that this method only helps making the input free in an hio system but does not guarantee a free input. Method: the transition relation of all states with at least one active AND at least one inactive Up- or Ue-event is extended by transitions such that formerly inactive Up- or Ue- events lead to the Up- or Ue-error state in the result. Note: states with NO active Up- or Ue-event are ignored.
- Parameters
-
rPlant | HioPlant |
rResPlant | reference to extended HioPlant (result) |
Definition at line 516 of file hio_functions.cpp.
◆ HioFreeInput() [8/11]
HioFreeInput: convenience interface to faudes::HioFreeInput(const HioConstraint&, HioConstraint)
- Parameters
-
Definition at line 844 of file hio_functions.cpp.
◆ HioFreeInput() [9/11]
HioFreeInput: convenience interface to faudes::HioFreeInput(const HioController&, HioController)
- Parameters
-
Definition at line 834 of file hio_functions.cpp.
◆ HioFreeInput() [10/11]
HioFreeInput: convenience interface to faudes::HioFreeInput(const HioEnvironment&, HioEnvironment)
- Parameters
-
rEnvironment | HioEnvironment |
Definition at line 839 of file hio_functions.cpp.
◆ HioFreeInput() [11/11]
HioFreeInput: convenience interface to faudes::HioFreeInput(const HioPlant&, HioPlant)
- Parameters
-
Definition at line 828 of file hio_functions.cpp.
◆ HioShuffle() [1/2]
HioShuffle: IO-shuffle of rPlantA and rPlantB according to definition.
Moreover: marking of alternation according to MarkAlternationAB().
- Parameters
-
rPlantA | plant A generator |
rPlantB | plant B generator |
rYp | alphabet Yp |
rUp | alphabet Up |
rYe | alphabet Ye |
rUe | alphabet Ue |
rIOShuffAB | reference to I/O-shuffle generator |
- Exceptions
-
Exception |
- empty or non-disjoint alphabets rYp, rUp, rYe, rUe (id 0).
- plant A or plant B not in HioPlantForm (id 0).
|
Definition at line 1181 of file hio_functions.cpp.
◆ HioShuffle() [2/2]
HioShuffle: IO-shuffle of rPlantA and rPlantB according to definition.
Moreover: alternation of depth Depth (see CheapAltAB()) between A- and B-events (no alternation for Depth=1) and marking of alternation according to MarkAlternationAB().
- Parameters
-
rPlantA | HioPlant A |
rPlantB | HioPlant B |
rIOShuffAB | reference to composed HioPlant |
- Exceptions
-
Definition at line 1274 of file hio_functions.cpp.
◆ HioShuffleTU()
HioShuffleTU: IO-shuffle of rPlantA and rPlantB according to definition with additional forced alternation of depth Depth (see CheapAltAB()) between A- and B-events.
-> frozen version for transport unit example
- Parameters
-
rPlantA | plant A generator |
rPlantB | plant B generator |
rYp | alphabet Yp |
rUp | alphabet Up |
rYe | alphabet Ye |
rUe | alphabet Ue |
Depth | depth of alternation |
rIOShuffAB | reference to I/O-shuffle generator |
- Exceptions
-
Definition at line 1381 of file hio_functions.cpp.
◆ HioShuffleUnchecked()
HioShuffleUnchecked: IO-shuffle of rPlantA and rPlantB according to definition, no parameter check.
Moreover: marking of alternation according to MarkAlternationAB().
TODO: 'checked' version
- Parameters
-
rPlantA | plant A generator |
rPlantB | plant B generator |
rYp | alphabet Yp |
rUp | alphabet Up |
rYe | alphabet Ye |
rUe | alphabet Ue |
rIOShuffAB | reference to I/O-shuffle generator |
Definition at line 1030 of file hio_functions.cpp.
◆ HioSortCL()
IoSortCL: returns IO-sorting structure required for closed loops.
This structure is the prefix closure of the language structure [(Yp(Up+YcUcUp))*(YeUe)*]*
- Parameters
-
rYc | alphabet Yc |
rUc | alphabet Uc |
rYp | alphabet Yp |
rUp | alphabet Up |
rYe | alphabet Ye |
rUe | alphabet Ue |
- Returns
- IO-sorting language generator
- Exceptions
-
Exception |
- empty parameter(s) (id 0)
- non-disjoint parameters (id 0)
|
Definition at line 280 of file hio_functions.cpp.
◆ HioSynth()
FAUDES_API void faudes::HioSynth |
( |
const Generator & |
rPlant, |
|
|
const Generator & |
rSpec, |
|
|
const Generator & |
rConstr, |
|
|
const Generator & |
rLocConstr, |
|
|
const EventSet & |
rYc, |
|
|
const EventSet & |
rUc, |
|
|
const EventSet & |
rYp, |
|
|
const EventSet & |
rUp, |
|
|
const EventSet & |
rYel, |
|
|
const EventSet & |
rUel, |
|
|
Generator & |
rController |
|
) |
| |
HioSynthUnchecked: I/O controller synthesis procedure.
Main hio synthesis algorithm suitable for both the monolithic and the hierarchical case, see also respective api's HioSynthMonolithic and HioSynthHierarchical. The result rController realises a solution to the I/O controller synthesis problem (S_PE,S_C,S_P,S_E,S_SpecCE).
- Parameters
-
rPlant | plant model generator:
- monolithic case: I/O plant to be controlled;
- hierarchical case: parallel composition of group (I/O-shuffle) of n I/O plants S_PEi (or their abstractions) with the environment model S_EL for this group.
|
rSpec | generator of desired behaviour of the external closed loop. Must be in I/O plant form. |
rConstr | external constraint that may be assumed:
- monolithic case: composition of constraints S_C and S_E
- hierarchical case: composition of constraints S_C and S_L
|
rLocConstr | internal constraint that has to be achieved by the I/O controller for the closed loop:
- monolithic case: generator of constraint S_P
- hierarchical case: parallel composition of constraints S_Pi and S_Ei
|
rYc | alphabet YC |
rUc | alphabet UC |
rYp | alphabet YP |
rUp | alphabet UP |
rYel | monolithic: alphabet YE, hierarchical: alphabet YL |
rUel | monolithic: alphabet UE, hierarchical: alphabet UL |
rController | reference to I/O controller(result) |
- Exceptions
-
Exception |
- empty or non-disjoint alphabets rYc, rUc, rYp, rUp, rYel, rUel (id 0).
- rSpec not in HioPlantForm (id 0).
- alphabet mismatch between plant or constraints and spec (id 0).
|
Definition at line 2478 of file hio_functions.cpp.
◆ HioSynthHierarchical()
HioSynthHierarchical: I/O controller synthesis procedure for I/O-shuffle of i plants and their interaction via an I/O environment.
The result rController realises a solution to the I/O controller synthesis problem (S_PE,S_C,S_P,S_E,S_SpecCE) with the external behaviour S_PE of the I/Oshuffle-environment-composition and respects internal constraints Sp_i and Se_i preserving liveness of the individual plants.
- Parameters
-
rHioShuffle | I/O plant or group of I/O plants composed by I/O shuffle |
rEnvironment | environment model for rHioShuffle |
rSpec | I/O plant model of desired behaviour of the external closed loop. Must be in I/O plant form (tested if FAUDES_CHECKED); must be complete and Yp-live wrt. Sc and Se (not tested). |
rIntConstr | parallel composition of constraints Sp_i and Se_i of the individual plants composed to rHioShuffle |
rSc | external operator constraint that may be assumed; I/O constraint form is recommended. |
rSl | environment constraint that may be assumed; I/O constraint form is recommended. |
rController | I/O controller solving the I/O controller synthesis problem (result) |
- Exceptions
-
Exception |
- HioShuffle or spec not in HioPlantForm (id 0).
- Environment not in HioEnvironmentForm (id 0).
- alphabet mismatch between plant, environment, spec and constraints (id 0).
|
Definition at line 2650 of file hio_functions.cpp.
◆ HioSynthMonolithic()
HioSynthMonolithic: I/O controller synthesis procedure for monolithic plant.
The result rController realises a solution to the I/O controller synthesis problem (S_PE,S_C,S_P,S_E,S_SpecCE).
- Parameters
-
rPlant | I/O plant to be controlled; must be in I/O plant form (tested if FAUDES_CHECKED); must be complete and Yp-live wrt. Sp and Se (not tested). |
rSpec | I/O plant model of desired behaviour of the external closed loop. Must be in I/O plant form (tested if FAUDES_CHECKED); must be complete and Yp-live wrt. Sc and Se (not tested). |
rSc | external operator constraint that may be assumed; I/O constraint form is recommended. |
rSp | operator constraint for rPlant; is met by admissibility of rController; I/O constraint form is recommended. |
rSe | environment constraint that may be assumed; I/O constraint form is recommended. |
rController | I/O controller solving the I/O controller synthesis problem (result) |
- Exceptions
-
Exception |
- plant or spec not in HioPlantForm (id 0).
- alphabet mismatch between plant or constraints and spec (id 0).
|
Definition at line 2601 of file hio_functions.cpp.
◆ HioSynthUnchecked()
FAUDES_API void faudes::HioSynthUnchecked |
( |
const Generator & |
rPlant, |
|
|
const Generator & |
rSpec, |
|
|
const Generator & |
rConstr, |
|
|
const Generator & |
rLocConstr, |
|
|
const EventSet & |
rYc, |
|
|
const EventSet & |
rUc, |
|
|
const EventSet & |
rYp, |
|
|
const EventSet & |
rUp, |
|
|
const EventSet & |
rYel, |
|
|
const EventSet & |
rUel, |
|
|
Generator & |
rController |
|
) |
| |
HioSynthUnchecked: I/O controller synthesis procedure, no parameter check.
Main hio synthesis algorithm suitable for both the monolithic and the hierarchical case, see also respective api's HioSynth(with parameter check), HioSynthMonolithic and HioSynthHierarchical. The result rController realises a solution to the I/O controller synthesis problem (S_PE,S_C,S_P,S_E,S_SpecCE).
- Parameters
-
rPlant | plant model generator:
- monolithic case: I/O plant to be controlled;
- hierarchical case: parallel composition of group (I/O-shuffle) of n I/O plants S_PEi (or their abstractions) with the environment model S_EL for this group.
|
rSpec | generator of desired behaviour of the external closed loop over alphabet SigmaCE. Must be in I/O plant form. |
rConstr | external constraint that may be assumed:
- monolithic case: composition of constraints S_C and S_E
- hierarchical case: composition of constraints S_C and S_L
|
rLocConstr | internal constraint that has to be achieved by the I/O controller for the closed loop:
- monolithic case: generator of constraint S_P
- hierarchical case: parallel composition of constraints S_Pi and S_Ei
|
rYc | alphabet YC |
rUc | alphabet UC |
rYp | alphabet YP |
rUp | alphabet UP |
rYel | monolithic: alphabet YE, hierarchical: alphabet YL |
rUel | monolithic: alphabet UE, hierarchical: alphabet UL |
rController | reference to I/O controller(result) |
Definition at line 2330 of file hio_functions.cpp.
◆ IsYcLive()
IsYcLive: This function checks if generator is Yc-live.
Method: using YclessSCC(), the function checks if no Yc-less SCC is found.
- Parameters
-
rGen | investigated generator |
rYc | alphabet Yc |
- Returns
- true if Generator is YcLive.
- Exceptions
-
Definition at line 1818 of file hio_functions.cpp.
◆ MarkAlternationAB()
MarkAlternationAB: returns Generator marking the alternation of Aset-transitions with Bset-transitions.
More docu will be provided soon.
- Parameters
-
rAset | alphabet A |
rBset | alphabet B |
rAltAB | recognizer of AB-alternation |
- Exceptions
-
Exception |
- rAset empty (id 0)
- rBset empty (id 0)
|
Definition at line 977 of file hio_functions.cpp.
◆ MarkHioShuffle()
MarkHioShuffle: marking rule for HioShuffle() in case of marked parameters rGen1 and rGen2 - UNDER CONSTRUCTION.
Method: Strings ending with events from rGen1 are marked according to rGen1, strings ending with events from rGen2 are marked according to rGen2.
- Parameters
-
rGen1 | First generator |
rGen2 | Second generator |
rReverseCompositionMap | map from rGen1 and rGen2 state indeces to respective state indeces of result |
rShuffle | Shuffle of rGen1 and rGen2 that shall receive marking |
Definition at line 863 of file hio_functions.cpp.
◆ NormalCompleteSynth()
NormalCompleteSynth: compute normal, complete and controllable (and closed) sublanguage.
Computes the supremal normal, complete and controllable (and closed) sublanguage of the language generated by rSpec wrt the language generated by rPlant, the controllable events rCalph and the observable events rOAlph. Method: iteration of CompleteSynth() and SupNorm() until a fix point is reached. Note: Supremality (if existent at all) has not yet been considered. The proof of existence and construction of both -the supremal normal and complete sublanguage and -the supremal normal and controllable sublanguage can be found in literature, which gives reason for hope.
- Parameters
-
rPlant | plant generator |
rCAlph | controllable events |
rOAlph | observable events |
rSpec | specification generator |
rClosedLoop | reference to result |
- Returns
- success (true) for nonempty closed loop language
- Exceptions
-
Definition at line 178 of file hio_functions.cpp.
◆ NormalCompleteSynthNB()
NormalCompleteSynthNB: compute normal, complete, controllable and nonblocking sublanguage.
Computes a normal, complete, controllable and nonblocking (and closed) sublanguage of of the language marked by rSpec wrt the language marked by rPlant, the controllable events rCalph and the observable events rOAlph. Method: iteration of CompleteSynth(), SupNorm() and Trim() until a fix point is reached. Note: Supremality (if existent at all) has not yet been considered.
- Parameters
-
rPlant | plant generator |
rCAlph | controllable events |
rOAlph | observable events |
rSpec | specification generator |
rClosedLoop | reference to result |
- Returns
- success (true) for nonempty closed loop language
- Exceptions
-
Definition at line 230 of file hio_functions.cpp.
◆ SccEntries()
SCCEntries: figure entry states and entry transitions of strongly connected components rSccSet of rGen.
Entry states are the set of states of the SCC that are initial state or direct successor of some state not belonging to this SCC (i.e. belonging to a different or no SCC). Entry transitions are the set of respective transitions leading to an entrystate of some SCC from a state not belonging to this SCC.
- Parameters
-
rGen | generator holding SCC's of rSccSet |
rSccSet | generator holding SCC's of rSccSet |
rEntryStates | reference to set of entry states of all SCC's (result) |
rEntryTransSet | reference to set of entry transitions, sorted by X2 (result) |
- Exceptions
-
Exception |
- todo: if FAUDES_CHECKED: check if elements of rSccSet are all subsets of StateSet of rGen.
|
Definition at line 1884 of file hio_functions.cpp.
◆ SearchYclessScc()
FAUDES_API void faudes::SearchYclessScc |
( |
const Idx |
state, |
|
|
int & |
rcount, |
|
|
const Generator & |
rGen, |
|
|
const EventSet & |
rYc, |
|
|
const bool |
UnMarkedOnly, |
|
|
StateSet & |
rNewStates, |
|
|
std::stack< Idx > & |
rSTACK, |
|
|
StateSet & |
rStackStates, |
|
|
std::map< const Idx, int > & |
rDFN, |
|
|
std::map< const Idx, int > & |
rLOWLINK, |
|
|
std::set< StateSet > & |
rSccSet, |
|
|
StateSet & |
rRoots |
|
) |
| |
SearchYclessSCC: Search for strongly connected ycless components (YC-less SCC's).
This function partitions the stateset of a generator into equivalent classes such that states x1 and x2 are equivalent iff there is a ycless path from x1 to x2 and a ycless path from x2 to x1. "Trivial" SCC's consisting of one state without non-Yc- selfloop are omitted, SCC's consisting exclusively of unmarked states are stored in rUnMarkedSccSet; all OTHER SCC's are collected in rSccSet. Their roots (i.e. that state of each SCC that has been visited first during depth first search of the generator) are collected in rRoots. This function is built on the algorithm based on a depth first search presented in: "Aho, Hopcroft, Ullman:
The Design and Analysis of Computer Algorithms" Most of the comments in this function have been literally taken from this book! An api with generator and Yc-events as input parameters and the set of YC-less SCC's as output parameters is provided right below this method.
- Parameters
-
state | State, from which the current recursion is started. |
rcount | Denotes the current depth of the recursion. |
rGen | investigated generator |
rYc | alphabet Yc |
UnMarkedOnly | if set true, being unmarked is an additional condition for equivalence of states |
rNewStates | Set of states that up to now were not found by the depth first search. |
rSTACK | Stack of state indeces. |
rStackStates | Set of states whose indeces are on STACK. |
rDFN | Map assigning to each state idx its Depth-First Number. |
rLOWLINK | Map assigning to each state its LOWLINK Number. |
rSccSet | Set of YC-less strongly connected components (result). |
rRoots | Set of states that each are root of some SCC (result). |
- Exceptions
-
Definition at line 1571 of file hio_functions.cpp.
◆ WriteStateSets() [1/2]
WriteStateSets: Write set of StateSet's to console (symbolic state names taken from rGen).
Useful to output partitions over statesets like e.g. the set of strongly connected components. Also serves as template for walkthrough through each state of a set of statesets.
- Parameters
-
rGen | Generator holding symbolic state names. |
rStateSets | Reference to set of StateSets (result). |
- Exceptions
-
Definition at line 1861 of file hio_functions.cpp.
◆ WriteStateSets() [2/2]
WriteStateSets: Write set of StateSet's to console (indeces).
Useful to output partitions over statesets like e.g. the set of strongly connected components. Also serves as template for walkthrough through each state of a set of statesets.
- Parameters
-
rStateSets | Reference to set of StateSets (result). |
- Exceptions
-
Definition at line 1833 of file hio_functions.cpp.
◆ YcAcyclic()
YcAcyclic: Computes the supremal(?) Yc-acyclic sublanguage of L(Gen).
Procedure: 1) Find Yc-less SCC's with YclessScc(...) 2) transform SCC's with n entry states to n SCC's with one unique entry state. 3) erase transitions leading from a state of some SCC to the entry state of this SCC's. 4) repeat 1)-3) until no more Yc-less SCC is found, i.e. rResGen generates the supremal YcAcyclic sublanguage of the language generated by rGen.
- Parameters
-
rGen | input generator |
rYc | alphabet Yc |
rResGen | generator of supremal YcAcyclic sublanguage |
- Exceptions
-
Definition at line 2105 of file hio_functions.cpp.
◆ YclessSCC()
YclessSCC: Search for strongly connected ycless components (YC-less SCC's) - convenience api.
See SearchYclessSCC() for docu.
- Parameters
-
rGen | investigated generator |
rYc | alphabet Yc |
rSccSet | Set of YC-less strongly connected components (result). |
- Returns
- true if YclessSCC's have been found, false if not.
- Exceptions
-
◆ YclessScc()
YclessSCC: Search for strongly connected ycless components (YC-less SCC's) - convenience api.
See SearchYclessSCC() for docu.
- Parameters
-
rGen | investigated generator |
rYc | alphabet Yc |
rSccSet | Set of YC-less strongly connected components (result). |
rRoots | Set of states that each are root of some SCC (result). |
- Returns
- true if YclessSCC's have been found, false if not.
- Exceptions
-
Definition at line 1714 of file hio_functions.cpp.
◆ YclessUnmarkedScc()
YclessUnmarkedSCC: Search for strongly connected ycless components (YC-less SCC's) consisting of unmarked states only.
Uses SearchYclessSCC().
- Parameters
-
rGen | investigated generator |
rYc | alphabet Yc |
rSccSet | Set of unmarked YC-less strongly connected components (result). |
rRoots | Set of states that each are root of some SCC (result). |
- Returns
- true if unmarked YclessSCC's have been found, false if not.
- Exceptions
-
Definition at line 1758 of file hio_functions.cpp.
libFAUDES 2.32b
--- 2024.03.01
--- c++ api documentaion by doxygen
|