Observer PlugIn
[PlugIns]

Functions

void faudes::calcBisimulation (Generator &rGenOrig, std::map< Idx, Idx > &rMapStateToPartition, Generator &rGenPart, std::vector< Idx > &rNewPartitions)
 Computation of a bisimulation over a given generator.
void faudes::calcBisimulation (Generator &rGenOrig, std::map< Idx, Idx > &rMapStateToPartition, std::vector< Idx > &rNewPartitions)
 Computation of a bisimulation over a given generator.
bool faudes::IsMutuallyControllable (const System &rGen1, const System &rGen2)
 Verification of mutual controllability.
Idx faudes::calcClosedObserver (const Generator &rGenObs, EventSet &rHighAlph)
 L(G)-observer computation by adding events to the high-level alphabet.
Int faudes::calcNaturalObserver (const Generator &rGenObs, EventSet &rHighAlph)
 Lm(G)-observer computation by adding events to the high-level alphabet.
Int faudes::calcNaturalObserverLCC (const Generator &rGen, const EventSet &rControllableEvents, EventSet &rHighAlph)
 Lm(G)-observer computation including local control consistency (LCC) by adding events to the high-level alphabet.
Int faudes::calcMSAObserver (const Generator &rGen, EventSet &rHighAlph)
 MSA-observer computation by adding events to the high-level alphabet.
Int faudes::calcMSAObserverLCC (const Generator &rGen, const EventSet &rControllableEvents, EventSet &rHighAlph)
 MSA-observer computation including local control consistency (LCC) by adding events to the high-level alphabet.
void faudes::ExtendHighAlphabet (const Generator &rGenObs, EventSet &rHighAlph, std::map< Idx, Idx > &rMapStateToPartition)
 Extension of the high-level alphabet to achieve the Lm-observer property.
void faudes::calcAbstAlphClosed (System &rGenObs, EventSet &rHighAlph, EventSet &rNewHighAlph, std::map< Idx, std::set< Idx > > &rMapRelabeledEvents)
 L(G)-observer computation.
void faudes::calcAbstAlphObs (System &rGenObs, EventSet &rHighAlph, EventSet &rNewHighAlph, std::map< Idx, std::set< Idx > > &rMapRelabeledEvents)
 Lm-observer computation.
void faudes::calcAbstAlphMSA (System &rGenObs, EventSet &rHighAlph, EventSet &rNewHighAlph, std::map< Idx, std::set< Idx > > &rMapRelabeledEvents)
 MSA-observer computation.
void faudes::calcAbstAlphObsLCC (System &rGenObs, EventSet &rHighAlph, EventSet &rNewHighAlph, std::map< Idx, std::set< Idx > > &rMapRelabeledEvents)
 Lm-observer computation including output control consistency (OCC).
void faudes::calcAbstAlphMSALCC (System &rGenObs, EventSet &rHighAlph, EventSet &rNewHighAlph, std::map< Idx, std::set< Idx > > &rMapRelabeledEvents)
 MSA-observer computation including local control consistency (LCC).
bool faudes::IsObs (const Generator &rLowGen, const EventSet &rHighAlph)
 Verification of the natural observer property.
bool faudes::IsMSA (const Generator &rLowGen, const EventSet &rHighAlph)
 Verification of the MSA observer property.
bool faudes::IsOCC (const System &rLowGen, const EventSet &rHighAlph)
 Verification of output control consistency (OCC).
bool faudes::IsLCC (const System &rLowGen, const EventSet &rHighAlph)
 Verification of local control consistency (LCC).
void faudes::calcAbstAlphObs (MtcSystem &rGenObs, EventSet &rHighAlph, EventSet &rNewHighAlph, std::map< Idx, std::set< Idx > > &rMapRelabeledEvents)
 Lm-observer computation.

Detailed Description

Overview

This plugin offers algorithms for the verification and synthesis of natural projections that are observers according to

K. C. Wong and W. M. Wonham, "On the Computation of Observers in Discrete Event Systems," Discrete Event Dynamic Systems, vol. 14, no. 1, pp. 55-107, 2004.

and that fulfill the output control consistency (OCC) or local control consistency (LCC) condition for maximally permissive hierarchical control according to

K. Schmidt and C. Breindl, "On Maximal Permissiveness of Hierarchical and Modular Supervisory Control Approaches for Discrete Event Systems," Workshop on Discrete Event Systems, 2008.

License

The initial version of the observer plug-in was implemented by Bernd Opitz together with the initial version of libFAUDES. A major revision and extension was part of Christian Breindl's student project, supervised by Klaus Schmidt. The observer plugin is distributed with libFAUDES and under the terms of the LGPL.




Copyright (c) 2006, Bernd Opitz
Copyright (c) 2008, Christian Breindl, Klaus Schmidt.


Function Documentation

void faudes::calcAbstAlphClosed ( System &  rGenObs,
EventSet &  rHighAlph,
EventSet &  rNewHighAlph,
std::map< Idx, std::set< Idx > > &  rMapRelabeledEvents 
)

L(G)-observer computation.

This function modifies a given generator and an associated natural projection such that the resulting natural projection is an L(G)-observer for the prefix-closed language of the resulting generator. This function evaluates the observer algorithm as described in K. C. Wong and W. M. Wonham, "On the Computation of Observers in Discrete Event Systems," Discrete Event Dynamic Systems, vol. 14, no. 1, pp. 55-107, 2004.

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGenObs Low-level generator. It is modified by the algorithm by relabeling transitions and events
rHighAlph Initial abstraction alphabet
rNewHighAlph Modified abstraction alphabet such that the abstraction is an Lm-observer
rMapRelabeledEvents Maps the original events to sets of newly introduced events (accumulatoive, call clear before)

Example: Computation of an L(G)-observer

Generator with relabeled events
ex_relabel_closed_result.png
Original high-level alphabet (rHighAlph): alpha, beta, gamma
Result of calcAbstAlphClosed(rGenObs, rHighAlph, rNewHighAlph, rMapRelabeledEvents);
New high-level alphabet (rNewHighAlph): alpha, beta, gamma, aNewHLevent_1, eNewHLevent_1, hNewHLevent_1
ex_relabel_closed_high.png
void faudes::calcAbstAlphMSA ( System &  rGenObs,
EventSet &  rHighAlph,
EventSet &  rNewHighAlph,
std::map< Idx, std::set< Idx > > &  rMapRelabeledEvents 
)

MSA-observer computation.

This function modifies a given generator and an associated natural projection such that the resulting natural projection is an msa-observer for the language marked by the resulting generator. This function evaluates the msa-observer algorithm as described in K. Schmidt and Th. Moor, "Marked String Accepting Observers for the Hierarchical and Decentralized Control of Discrete Event Systems," Workshop on Discrete Event Systems, 2006.

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGenObs Low-level generator. It is modified by the algorithm by relabeling transitions and events
rHighAlph Initial abstraction alphabet
rNewHighAlph Modified abstraction alphabet such that the abstraction is an Lm-observer
rMapRelabeledEvents Maps the original events to sets of newly introduced events (accumulatoive, call clear before)

Example: Computation of an MSA-observer

Generator with relabeled events
ex_relabel_msa_result.png
Original high-level alphabet (rHighAlph): alpha, beta, gamma
Result of calcAbstAlphObs(rGenObs, rHighAlph, rNewHighAlph, rMapRelabeledEvents);
New high-level alphabet (rNewHighAlph): alpha, beta, gamma, aNewHLevent_1, eNewHLevent_1, hNewHLevent_1
ex_relabel_msa_high.png
void faudes::calcAbstAlphMSALCC ( System &  rGenObs,
EventSet &  rHighAlph,
EventSet &  rNewHighAlph,
std::map< Idx, std::set< Idx > > &  rMapRelabeledEvents 
)

MSA-observer computation including local control consistency (LCC).

This function modifies a given generator and an associated natural projection such that the resulting natural projection is an MSA-observer for the language marked by the resulting generator and at the same time fulfills the local control consistency condition (LCC). This function evaluates the msa-observer algorithm as described in K. Schmidt and C. Breindl, "On Maximal Permissiveness of Hierarchical and Modular Supervisory Control Approaches for Discrete Event Systems, Workshop on Discrete Event Systems, 2008. with an extension to LCC as indicated in K. Schmidt and C. Breindl, "On Maximal Permissiveness of Hierarchical and Modular Supervisory Control Approaches for Discrete Event Systems," Workshop on Discrete Event Systems, 2008.

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGenObs Low-level generator. It is modified by the algorithm by relabeling transitions and events
rHighAlph Initial abstraction alphabet
rNewHighAlph Modified abstraction alphabet such that the abstraction is an Lm-observer
rMapRelabeledEvents Maps the original events to sets of newly introduced events (accumulatoive, call clear before)

Example: Computation of an MSA-observer with local control consistency (LCC)

Generator with relabeled events
ex_relabel_msalcc_result.png
Original high-level alphabet (rHighAlph): alpha, beta, gamma
Result of calcAbstAlphObsLCC(rGenObs, rHighAlph, rNewHighAlph, rMapRelabeledEvents);
New high-level alphabet (rNewHighAlph): alpha, beta, gamma, d, f, h, aNewHLevent_2, bNewHLevent_1, cNewHLevent_1, eNewHLevent_2, hNewHLevent_2
ex_relabel_msalcc_high.png
void faudes::calcAbstAlphObs ( MtcSystem rGenObs,
EventSet rHighAlph,
EventSet rNewHighAlph,
std::map< Idx, std::set< Idx > > &  rMapRelabeledEvents 
)

Lm-observer computation.

This function modifies a given generator and an associated natural projection such that the resulting natural projection is an Lm-observer for the language marked by the resulting generator. This function evaluates the observer algorithm as described in K. C. Wong and W. M. Wonham, "On the Computation of Observers in Discrete Event Systems," Discrete Event Dynamic Systems, vol. 14, no. 1, pp. 55-107, 2004.

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGenObs Low-level generator. It is modified by the algorithm by relabeling transitions and events
rHighAlph Initial abstraction alphabet
rNewHighAlph Modified abstraction alphabet such that the abstraction is an Lm-observer
rMapRelabeledEvents Maps the original events to sets of newly introduced events (accumulatoive, call clear before)
void faudes::calcAbstAlphObs ( System &  rGenObs,
EventSet &  rHighAlph,
EventSet &  rNewHighAlph,
std::map< Idx, std::set< Idx > > &  rMapRelabeledEvents 
)

Lm-observer computation.

This function modifies a given generator and an associated natural projection such that the resulting natural projection is an Lm-observer for the language marked by the resulting generator. This function evaluates the observer algorithm as described in K. C. Wong and W. M. Wonham, "On the Computation of Observers in Discrete Event Systems," Discrete Event Dynamic Systems, vol. 14, no. 1, pp. 55-107, 2004.

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGenObs Low-level generator. It is modified by the algorithm by relabeling transitions and events
rHighAlph Initial abstraction alphabet
rNewHighAlph Modified abstraction alphabet such that the abstraction is an Lm-observer
rMapRelabeledEvents Maps the original events to sets of newly introduced events (accumulatoive, call clear before)

Example: Computation of an Lm(G)-observer

Generator with relabeled events
ex_relabel_obs_result.png
Original high-level alphabet (rHighAlph): alpha, beta, gamma
Result of calcAbstAlphObs(rGenObs, rHighAlph, rNewHighAlph, rMapRelabeledEvents);
New high-level alphabet (rNewHighAlph): alpha, beta, gamma, aNewHLevent_1, eNewHLevent_1, hNewHLevent_1
ex_relabel_obs_high.png
void faudes::calcAbstAlphObsLCC ( System &  rGenObs,
EventSet &  rHighAlph,
EventSet &  rNewHighAlph,
std::map< Idx, std::set< Idx > > &  rMapRelabeledEvents 
)

Lm-observer computation including output control consistency (OCC).

This function modifies a given generator and an associated natural projection such that the resulting natural projection is an Lm-observer for the language marked by the resulting generator and at the same time fulfills the output control consistency condition (OCC). This function evaluates the observer algorithm as described in K. C. Wong and W. M. Wonham, "On the Computation of Observers in Discrete Event Systems," Discrete Event Dynamic Systems, vol. 14, no. 1, pp. 55-107, 2004. with an extension to OCC as indicated in K. Schmidt and C. Breindl, "On Maximal Permissiveness of Hierarchical and Modular Supervisory Control Approaches for Discrete Event Systems," Workshop on Discrete Event Systems, 2008.

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGenObs Low-level generator. It is modified by the algorithm by relabeling transitions and events
rHighAlph Initial abstraction alphabet
rNewHighAlph Modified abstraction alphabet such that the abstraction is an Lm-observer
rMapRelabeledEvents Maps the original events to sets of newly introduced events (accumulatoive, call clear before)

Example: Computation of an Lm-observer with output control consistency (OCC)

Generator with relabeled events
ex_observer_all.png
Original high-level alphabet (rHighAlph): alpha, beta, gamma
Result of calcAbstAlphObsOCC(rGenObs, rHighAlph, rNewHighAlph, rMapRelabeledEvents);
New high-level alphabet (rNewHighAlph): alpha, beta, gamma, d, f, h, aNewHLevent_3, bNewHLevent_2, cNewHLevent_2, eNewHLevent_3
ex_synthesis_occ_result.png

Lm-observer computation including local control consistency (LCC). This function modifies a given generator and an associated natural projection such that the resulting natural projection is an Lm-observer for the language marked by the resulting generator and at the same time fulfills the local control consistency condition (LCC). The function evaluates the observer algorithm as described in K. C. Wong and W. M. Wonham, "On the Computation of Observers in Discrete Event Systems," Discrete Event Dynamic Systems, vol. 14, no. 1, pp. 55-107, 2004. with an extension to LCC as indicated in K. Schmidt and C. Breindl, "On Maximal Permissiveness of Hierarchical and Modular Supervisory Control Approaches for Discrete Event Systems," Workshop on Discrete Event Systems, 2008.

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGenObs Low-level generator. It is modified by the algorithm by relabeling transitions and events
rHighAlph Initial abstraction alphabet
rNewHighAlph Modified abstraction alphabet such that the abstraction is an Lm-observer
rMapRelabeledEvents Maps the original events to sets of newly introduced events (accumulatoive, call clear before)

Example: Computation of an Lm(G)-observer with local control consistency (LCC)

Generator with relabeled events
ex_relabel_obslcc_result.png
Original high-level alphabet (rHighAlph): alpha, beta, gamma
Result of calcAbstAlphObsLCC(rGenObs, rHighAlph, rNewHighAlph, rMapRelabeledEvents);
New high-level alphabet (rNewHighAlph): alpha, beta, gamma, d, f, h, aNewHLevent_2, bNewHLevent_1, cNewHLevent_1, eNewHLevent_2, hNewHLevent_2
ex_relabel_obslcc_high.png
void faudes::calcBisimulation ( Generator &  rGenOrig,
std::map< Idx, Idx > &  rMapStateToPartition,
std::vector< Idx > &  rNewPartitions 
)

Computation of a bisimulation over a given generator.

This funcion reates an instance of the class Bisimulation and starts the computation of the coarsest quasi-congruence on the given generator by calling the function Bisimulation::partition. See J.-C. Fernandez, “An implementation of an efficient algorithm for bisimulation equivalence,” Science of Computer Programming, vol. 13, pp. 219-236, 1990 for further details.

Parameters:
rGenOrig Original generator
rMapStateToPartition Maps each state to its equivalence class
rNewPartitions Holds the indices of all equivalence classes
void faudes::calcBisimulation ( Generator &  rGenOrig,
std::map< Idx, Idx > &  rMapStateToPartition,
Generator &  rGenPart,
std::vector< Idx > &  rNewPartitions 
)

Computation of a bisimulation over a given generator.

This funcion reates an instance of the class Bisimulation and starts the computation of the coarsest quasi-congruence on the given generator by calling the function Bisimulation::partition. A generator representing the result of the computation is generated.

Parameters:
rGenOrig Original generator
rMapStateToPartition Maps each state to its equivalence class
rGenPart Quotient automaton representing the result of the computation. Each state corresponds to an equivalence class
rNewPartitions Holds the indices of all equivalence classes
Idx faudes::calcClosedObserver ( const Generator &  rGenObs,
EventSet &  rHighAlph 
)

L(G)-observer computation by adding events to the high-level alphabet.

This function extends a given high-level alphabet such that the resulting natural projection is an L(G)-observer for the prefix-closed language of the given generator. This function evaluates the natural observer algorithm as described in Lei Feng; Wonham, W.M., "On the Computation of Natural Observers in Discrete-Event Systems," Decision and Control, 2006 45th IEEE Conference on , vol., no., pp.428-433, 13-15 Dec. 2006

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGenObs Low-level generator. It is modified by the algorithm by relabeling transitions and events
rHighAlph Reference to the initial abstraction alphabet that is modified by the algorithm
Returns:
number of states of the high-level generator

Example: Computation of an L(G)-observer

Original generator
ex_natural_all.png
Original high-level alphabet (rHighAlph): alpha, gamma
Result of calcClosedObserver(rGenObs, rHighAlph);
New high-level alphabet (rHighAlph): alpha, beta, gamma, h
ex_natural_closed_proj.png
Int faudes::calcMSAObserver ( const Generator &  rGen,
EventSet &  rHighAlph 
)

MSA-observer computation by adding events to the high-level alphabet.

This function extends a given high-level alphabet such that the resulting natural projection is an MSA-observer for the marked language of the given generator. This function adapts the natural observer algorithm as described in Lei Feng; Wonham, W.M., "On the Computation of Natural Observers in Discrete-Event Systems," Decision and Control, 2006 45th IEEE Conference on , vol., no., pp.428-433, 13-15 Dec. 2006 to the msa-obsever property.

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGen Low-level generator. It is modified by the algorithm by relabeling transitions and events
rHighAlph Reference to the initial abstraction alphabet that is modified by the algorithm
Returns:
number of states of the high-level generator

Example: Computation of an msa-observer

Original generator
ex_natural_all.png
Original high-level alphabet (rHighAlph): alpha, gamma
Result of calcMSAObserver(rGenObs, rHighAlph);
New high-level alphabet (rHighAlph): alpha, beta, gamma, h
ex_natural_msa_proj.png
Int faudes::calcMSAObserverLCC ( const Generator &  rGen,
const EventSet &  rControllableEvents,
EventSet &  rHighAlph 
)

MSA-observer computation including local control consistency (LCC) by adding events to the high-level alphabet.

This function extends a given high-level alphabet such that the resulting natural projection is an MSA-observer and locally control consistent (lcc) for the marked language of the given generator. This function adapts the natural observer algorithm as described in Lei Feng; Wonham, W.M., "On the Computation of Natural Observers in Discrete-Event Systems," Decision and Control, 2006 45th IEEE Conference on , vol., no., pp.428-433, 13-15 Dec. 2006 to the msa-obsever property and uses LCC as defined in K. Schmidt and C. Breindl, "On Maximal Permissiveness of Hierarchical and Modular Supervisory Control Approaches for Discrete Event Systems, Workshop on Discrete Event Systems, 2008.

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGen Low-level generator. It is modified by the algorithm by relabeling transitions and events
rControllableEvents 
rHighAlph Reference to the initial abstraction alphabet that is modified by the algorithm
Returns:
number of states of the high-level generator

Example: Computation of an msa-observer with LCC

Original generator
ex_natural_all.png
Original high-level alphabet (rHighAlph): alpha, gamma; controllable events: a, f, g, h
Result of calcMSAObserverLCC(rGenObs, rControllableEvents, rHighAlph);
New high-level alphabet (rHighAlph): alpha, beta, gamma, a, e, f, g, h
ex_natural_msalcc_proj.png
Int faudes::calcNaturalObserver ( const Generator &  rGenObs,
EventSet &  rHighAlph 
)

Lm(G)-observer computation by adding events to the high-level alphabet.

This function extends a given high-level alphabet such that the resulting natural projection is an Lm(G)-observer for the marked language of the given generator. This function evaluates the natural observer algorithm as described in Lei Feng; Wonham, W.M., "On the Computation of Natural Observers in Discrete-Event Systems," Decision and Control, 2006 45th IEEE Conference on , vol., no., pp.428-433, 13-15 Dec. 2006

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGenObs Low-level generator. It is modified by the algorithm by relabeling transitions and events
rHighAlph Reference to the initial abstraction alphabet that is modified by the algorithm
Returns:
number of states of the high-level generator

Example: Computation of an Lm(G)-observer

Original generator
ex_natural_all.png
Original high-level alphabet (rHighAlph): alpha, gamma
Result of calcNaturalObserver(rGenObs, rHighAlph);
New high-level alphabet (rHighAlph): alpha, beta, gamma, delta, h
ex_natural_obs_proj.png
Int faudes::calcNaturalObserverLCC ( const Generator &  rGen,
const EventSet &  rControllableEvents,
EventSet &  rHighAlph 
)

Lm(G)-observer computation including local control consistency (LCC) by adding events to the high-level alphabet.

This function extends a given high-level alphabet such that the resulting natural projection is an Lm(G)-observer and locally control consistent (lcc) for the marked language of the given generator. This function evaluates the natural observer algorithm as described in Lei Feng; Wonham, W.M., "On the Computation of Natural Observers in Discrete-Event Systems," Decision and Control, 2006 45th IEEE Conference on , vol., no., pp.428-433, 13-15 Dec. 2006 and uses LCC as defined in K. Schmidt and C. Breindl, "On Maximal Permissiveness of Hierarchical and Modular Supervisory Control Approaches for Discrete Event Systems

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGen Low-level generator. It is modified by the algorithm by relabeling transitions and events
rHighAlph Reference to the initial abstraction alphabet that is modified by the algorithm
rControllableEvents 
Returns:
number of states of the high-level generator

Example: Computation of an Lm(G)-observer with LCC

Original generator
ex_natural_all.png
Original high-level alphabet (rHighAlph): alpha, gamma; controllable events: a, f, g, h
Result of calcNaturalObserverLCC(rGenObs, rControllableEvents, rHighAlph);
New high-level alphabet (rHighAlph): alpha, beta, gamma, delta, a, e, f, g, h
ex_natural_obslcc_proj.png
void faudes::ExtendHighAlphabet ( const Generator &  rGenObs,
EventSet &  rHighAlph,
std::map< Idx, Idx > &  rMapStateToPartition 
)

Extension of the high-level alphabet to achieve the Lm-observer property.

This algorithm extends the given high-level alphabet such that nondeterminism and unobservable transitions in the quotient automaton computed with the current high-level alphabet are removed. The function is called by calcNaturalObserver.

The alphabet rHighAlph has to be a subset of the alphabet of rGenObs. rGenObs must be a deterministic generator. There are no further restrictions on parameters.

Parameters:
rGenObs Low-level generator. It is modified by the algorithm by relabeling transitions and events
rHighAlph Reference to the initial abstraction alphabet that is modified by the algorithm
rMapStateToPartition Map from states in rGenObs to states (partitions) in the computed quotient automaton
bool faudes::IsLCC ( const System &  rLowGen,
const EventSet &  rHighAlph 
)

Verification of local control consistency (LCC).

For verifying if a natural projection fulfills the local control consistency condition, a backward reachability is conducted. If starting from a state, where an uncontrollable high-level event is feasible, at least one local state cannot be reached by an uncontrollable path, LCC is violated.

Parameters:
rLowGen Input System
rHighAlph High level alphabet
Returns:
true if LCC holds
bool faudes::IsMSA ( const Generator &  rLowGen,
const EventSet &  rHighAlph 
)

Verification of the MSA observer property.

For verifying if a natural projection has the marked string accepting observer property, one step in the MSA observer algorithm is evaluated. If the resulting generator equals the input generator, then the natural projection on the abstraction alphabet is an MSA observer.

Parameters:
rLowGen Input generator
rHighAlph High level alphabet
Returns:
true if the MSA observer property holds
bool faudes::IsMutuallyControllable ( const System &  rGen1,
const System &  rGen2 
)

Verification of mutual controllability.

This function checks if two generators are mutually controllable w.r.t. each other. A definition of mutual controllability is given in S.-H. Lee and K. C. Wong, “Structural decentralised control of concurrent DES,” European Journal of Control, vol. 35, pp. 1125-1134,2002.

Parameters:
rGen1 Generator 1
rGen2 Generator 2
Returns:
True if mutual controllability is fulfilled

Example:

Violation of mutual controllability

rGen1 rGen2
ex_mc1.png
ex_mc2.png

Mutual controllability is fulfilled

rGen3 rGen2
ex_mc3.png
ex_mc2.png
bool faudes::IsObs ( const Generator &  rLowGen,
const EventSet &  rHighAlph 
)

Verification of the natural observer property.

For verifying if a natural projection has the observer property, one step in the observer algorithm is evaluated. If the resulting generator equals the input generator, then the natural projection on the abstraction alphabet is an observer.

Parameters:
rLowGen Input generator
rHighAlph High level alphabet
Returns:
true if the observer property holds
bool faudes::IsOCC ( const System &  rLowGen,
const EventSet &  rHighAlph 
)

Verification of output control consistency (OCC).

For verifying if a natural projection fulfills the output control consistency condition, a backward reachability is conducted. If starting from a state, where an uncontrollable high-level event is feasible, a controllable event can be reached on a local backward path, OCC is violated.

Parameters:
rLowGen Input System
rHighAlph High level alphabet
Returns:
true if OCC holds

libFAUDES 2.23h --- 2014.04.03 --- c++ api documentaion by doxygen