Hierarchical I/O Systems PlugIn

Detailed Description

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

Classes

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...
 

Functions

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...
 

Function Documentation

◆ CheapAltAB()

FAUDES_API 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!".

Parameters
rAsetalphabet A
rBsetalphabet B
Depthdepth of alternation
rAltABgenerator 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()

FAUDES_API 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!".

Parameters
rAsetalphabet A
rBsetalphabet B
Depthdepth of alternation
rAltAnBgenerator 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()

FAUDES_API 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.

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
rGengenerator holding SCC's of rSccSet
rSccSCC of rGen that is to be cloned // Perk: check if idx of rSccSet is better?
rSccSetset of all SCC's of rGen
EntryStateone of the entry states of this SCC
rEntryStatesset of entry states of this SCC
rEntryTransSetset 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()

FAUDES_API 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.

Definition at line 2030 of file hio_functions.cpp.

◆ CompleteSynth()

FAUDES_API bool faudes::CompleteSynth ( const Generator rPlant,
const EventSet  rCAlph,
const Generator rSpec,
Generator rClosedLoop 
)

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
rPlantplant generator
rCAlphcontrollable events
rSpecspecification generator
rClosedLoopreference to result
Returns
success (true) for nonempty result
Exceptions
Exception
  • see exceptions of SupCon()

Definition at line 104 of file hio_functions.cpp.

◆ ConstrSynth_Beta()

FAUDES_API 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.

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
rPlantmodel of plant under environment constraint.
rYpalphabet YP
rUpalphabet UP
rLocConstrreference to optional local constraints
rOpConstraintreference to operator constraint

Definition at line 2282 of file hio_functions.cpp.

◆ HioFreeInput() [1/11]

FAUDES_API void faudes::HioFreeInput ( const Generator rGen,
const EventSet rInput,
const EventSet rOutput,
Generator rResGen 
)

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
rGengenerator
rInputalphabet Input
rOutputalphabet Output
rResGenreference 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]

FAUDES_API 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.

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
rGengenerator
rInputalphabet Input
rOutputalphabet Output
rResGenreference to extended generator (result)
rErrState1symbolic name of first error state; ignored if not rGen.StateNamesEnabled()
rErrState2symbolic 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]

FAUDES_API 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.

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
rGengenerator
rInputalphabet Input
rOutputalphabet Output
rResGenreference to extended generator (result)
rErrState1symbolic name of first error state; ignored if not rGen.StateNamesEnabled()
rErrState2symbolic name of second error state; ignored if not rGen.StateNamesEnabled()
rErrState1Idxindex of first error state (result)
rErrState2Idxindex 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]

FAUDES_API void faudes::HioFreeInput ( const HioConstraint rConstraint,
HioConstraint rResConstraint 
)

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
rConstraintHioConstraint
rResConstraintreference to extended HioConstraint (result)

Definition at line 806 of file hio_functions.cpp.

◆ HioFreeInput() [5/11]

FAUDES_API void faudes::HioFreeInput ( const HioController rController,
HioController rResController 
)

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
rControllerHioController
rResControllerreference to extended HioController (result)

Definition at line 553 of file hio_functions.cpp.

◆ HioFreeInput() [6/11]

FAUDES_API void faudes::HioFreeInput ( const HioEnvironment rEnvironment,
HioEnvironment rResEnvironment 
)

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
rEnvironmentHioEnvironment
rResEnvironmentreference to extended HioEnvironment (result)

Definition at line 680 of file hio_functions.cpp.

◆ HioFreeInput() [7/11]

FAUDES_API void faudes::HioFreeInput ( const HioPlant rPlant,
HioPlant rResPlant 
)

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
rPlantHioPlant
rResPlantreference to extended HioPlant (result)

Definition at line 516 of file hio_functions.cpp.

◆ HioFreeInput() [8/11]

FAUDES_API void faudes::HioFreeInput ( HioConstraint rConstraint)

HioFreeInput: convenience interface to faudes::HioFreeInput(const HioConstraint&, HioConstraint)

Parameters
rConstraintHioConstraint

Definition at line 844 of file hio_functions.cpp.

◆ HioFreeInput() [9/11]

FAUDES_API void faudes::HioFreeInput ( HioController rController)

HioFreeInput: convenience interface to faudes::HioFreeInput(const HioController&, HioController)

Parameters
rControllerHioController

Definition at line 834 of file hio_functions.cpp.

◆ HioFreeInput() [10/11]

FAUDES_API void faudes::HioFreeInput ( HioEnvironment rEnvironment)

HioFreeInput: convenience interface to faudes::HioFreeInput(const HioEnvironment&, HioEnvironment)

Parameters
rEnvironmentHioEnvironment

Definition at line 839 of file hio_functions.cpp.

◆ HioFreeInput() [11/11]

FAUDES_API void faudes::HioFreeInput ( HioPlant rPlant)

HioFreeInput: convenience interface to faudes::HioFreeInput(const HioPlant&, HioPlant)

Parameters
rPlantHioPlant

Definition at line 828 of file hio_functions.cpp.

◆ HioShuffle() [1/2]

FAUDES_API 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.

Moreover: marking of alternation according to MarkAlternationAB().

Parameters
rPlantAplant A generator
rPlantBplant B generator
rYpalphabet Yp
rUpalphabet Up
rYealphabet Ye
rUealphabet Ue
rIOShuffABreference 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]

FAUDES_API void faudes::HioShuffle ( const HioPlant rPlantA,
const HioPlant rPlantB,
HioPlant rIOShuffAB 
)

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
rPlantAHioPlant A
rPlantBHioPlant B
rIOShuffABreference to composed HioPlant
Exceptions
Exception
  • todo...

Definition at line 1274 of file hio_functions.cpp.

◆ HioShuffleTU()

FAUDES_API 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.

-> frozen version for transport unit example

Parameters
rPlantAplant A generator
rPlantBplant B generator
rYpalphabet Yp
rUpalphabet Up
rYealphabet Ye
rUealphabet Ue
Depthdepth of alternation
rIOShuffABreference to I/O-shuffle generator
Exceptions
Exception
  • todo...

Definition at line 1381 of file hio_functions.cpp.

◆ HioShuffleUnchecked()

FAUDES_API 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.

Moreover: marking of alternation according to MarkAlternationAB().

TODO: 'checked' version

Parameters
rPlantAplant A generator
rPlantBplant B generator
rYpalphabet Yp
rUpalphabet Up
rYealphabet Ye
rUealphabet Ue
rIOShuffABreference to I/O-shuffle generator

Definition at line 1030 of file hio_functions.cpp.

◆ HioSortCL()

FAUDES_API 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.

This structure is the prefix closure of the language structure [(Yp(Up+YcUcUp))*(YeUe)*]*

Parameters
rYcalphabet Yc
rUcalphabet Uc
rYpalphabet Yp
rUpalphabet Up
rYealphabet Ye
rUealphabet 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
rPlantplant 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.
rSpecgenerator of desired behaviour of the external closed loop. Must be in I/O plant form.
rConstrexternal 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
rLocConstrinternal 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
rYcalphabet YC
rUcalphabet UC
rYpalphabet YP
rUpalphabet UP
rYelmonolithic: alphabet YE, hierarchical: alphabet YL
rUelmonolithic: alphabet UE, hierarchical: alphabet UL
rControllerreference 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()

FAUDES_API 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.

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
rHioShuffleI/O plant or group of I/O plants composed by I/O shuffle
rEnvironmentenvironment model for rHioShuffle
rSpecI/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).
rIntConstrparallel composition of constraints Sp_i and Se_i of the individual plants composed to rHioShuffle
rScexternal operator constraint that may be assumed; I/O constraint form is recommended.
rSlenvironment constraint that may be assumed; I/O constraint form is recommended.
rControllerI/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()

FAUDES_API 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.

The result rController realises a solution to the I/O controller synthesis problem (S_PE,S_C,S_P,S_E,S_SpecCE).

Parameters
rPlantI/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).
rSpecI/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).
rScexternal operator constraint that may be assumed; I/O constraint form is recommended.
rSpoperator constraint for rPlant; is met by admissibility of rController; I/O constraint form is recommended.
rSeenvironment constraint that may be assumed; I/O constraint form is recommended.
rControllerI/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
rPlantplant 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.
rSpecgenerator of desired behaviour of the external closed loop over alphabet SigmaCE. Must be in I/O plant form.
rConstrexternal 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
rLocConstrinternal 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
rYcalphabet YC
rUcalphabet UC
rYpalphabet YP
rUpalphabet UP
rYelmonolithic: alphabet YE, hierarchical: alphabet YL
rUelmonolithic: alphabet UE, hierarchical: alphabet UL
rControllerreference to I/O controller(result)

Definition at line 2330 of file hio_functions.cpp.

◆ IsYcLive()

FAUDES_API bool faudes::IsYcLive ( const Generator rGen,
const EventSet rYc 
)

IsYcLive: This function checks if generator is Yc-live.

Method: using YclessSCC(), the function checks if no Yc-less SCC is found.

Parameters
rGeninvestigated generator
rYcalphabet Yc
Returns
true if Generator is YcLive.
Exceptions
Exception
  • todo...

Definition at line 1818 of file hio_functions.cpp.

◆ MarkAlternationAB()

FAUDES_API void faudes::MarkAlternationAB ( const EventSet  rAset,
const EventSet  rBset,
Generator rAltAB 
)

MarkAlternationAB: returns Generator marking the alternation of Aset-transitions with Bset-transitions.

More docu will be provided soon.

Parameters
rAsetalphabet A
rBsetalphabet B
rAltABrecognizer of AB-alternation
Exceptions
Exception
  • rAset empty (id 0)
  • rBset empty (id 0)

Definition at line 977 of file hio_functions.cpp.

◆ MarkHioShuffle()

FAUDES_API 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.

Method: Strings ending with events from rGen1 are marked according to rGen1, strings ending with events from rGen2 are marked according to rGen2.

Parameters
rGen1First generator
rGen2Second generator
rReverseCompositionMapmap from rGen1 and rGen2 state indeces to respective state indeces of result
rShuffleShuffle of rGen1 and rGen2 that shall receive marking

Definition at line 863 of file hio_functions.cpp.

◆ NormalCompleteSynth()

FAUDES_API 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.

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
rPlantplant generator
rCAlphcontrollable events
rOAlphobservable events
rSpecspecification generator
rClosedLoopreference to result
Returns
success (true) for nonempty closed loop language
Exceptions
Exception

Definition at line 178 of file hio_functions.cpp.

◆ NormalCompleteSynthNB()

FAUDES_API bool faudes::NormalCompleteSynthNB ( Generator rPlant,
const EventSet rCAlph,
const EventSet rOAlph,
const Generator rSpec,
Generator rClosedLoop 
)

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
rPlantplant generator
rCAlphcontrollable events
rOAlphobservable events
rSpecspecification generator
rClosedLoopreference to result
Returns
success (true) for nonempty closed loop language
Exceptions
Exception

Definition at line 230 of file hio_functions.cpp.

◆ SccEntries()

FAUDES_API 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.

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
rGengenerator holding SCC's of rSccSet
rSccSetgenerator holding SCC's of rSccSet
rEntryStatesreference to set of entry states of all SCC's (result)
rEntryTransSetreference 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
stateState, from which the current recursion is started.
rcountDenotes the current depth of the recursion.
rGeninvestigated generator
rYcalphabet Yc
UnMarkedOnlyif set true, being unmarked is an additional condition for equivalence of states
rNewStatesSet of states that up to now were not found by the depth first search.
rSTACKStack of state indeces.
rStackStatesSet of states whose indeces are on STACK.
rDFNMap assigning to each state idx its Depth-First Number.
rLOWLINKMap assigning to each state its LOWLINK Number.
rSccSetSet of YC-less strongly connected components (result).
rRootsSet of states that each are root of some SCC (result).
Exceptions
Exception
  • todo...

Definition at line 1571 of file hio_functions.cpp.

◆ WriteStateSets() [1/2]

FAUDES_API 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).

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
rGenGenerator holding symbolic state names.
rStateSetsReference to set of StateSets (result).
Exceptions
Exception
  • todo?

Definition at line 1861 of file hio_functions.cpp.

◆ WriteStateSets() [2/2]

FAUDES_API void faudes::WriteStateSets ( const std::set< StateSet > &  rStateSets)

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
rStateSetsReference to set of StateSets (result).
Exceptions
Exception
  • todo?

Definition at line 1833 of file hio_functions.cpp.

◆ YcAcyclic()

FAUDES_API void faudes::YcAcyclic ( const Generator rGen,
const EventSet rYc,
Generator rResGen 
)

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
rGeninput generator
rYcalphabet Yc
rResGengenerator of supremal YcAcyclic sublanguage
Exceptions
Exception

Definition at line 2105 of file hio_functions.cpp.

◆ YclessSCC()

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.

See SearchYclessSCC() for docu.

Parameters
rGeninvestigated generator
rYcalphabet Yc
rSccSetSet of YC-less strongly connected components (result).
Returns
true if YclessSCC's have been found, false if not.
Exceptions
Exception
  • todo...

◆ YclessScc()

FAUDES_API 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.

See SearchYclessSCC() for docu.

Parameters
rGeninvestigated generator
rYcalphabet Yc
rSccSetSet of YC-less strongly connected components (result).
rRootsSet of states that each are root of some SCC (result).
Returns
true if YclessSCC's have been found, false if not.
Exceptions
Exception
  • todo...

Definition at line 1714 of file hio_functions.cpp.

◆ YclessUnmarkedScc()

FAUDES_API 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.

Uses SearchYclessSCC().

Parameters
rGeninvestigated generator
rYcalphabet Yc
rSccSetSet of unmarked YC-less strongly connected components (result).
rRootsSet of states that each are root of some SCC (result).
Returns
true if unmarked YclessSCC's have been found, false if not.
Exceptions
Exception
  • todo...

Definition at line 1758 of file hio_functions.cpp.

libFAUDES 2.32b --- 2024.03.01 --- c++ api documentaion by doxygen