op_obserververification.cpp
Go to the documentation of this file.
49 // One step of the observer algorithm: A dynamic system is computed that fulfills the one-step observer condition.
50 // if the result is equal to the original generator, then the natural projection on the high-level alphabet fulfills the observer property
74 // One step of the observer algorithm: A dynamic system is computed that fulfills the one-step observer condition.
75 // if the result is equal to the original generator, then the natural projection on the high-level alphabet fulfills the observer property
95 bool IsOCC(const Generator& rLowGen, const EventSet& rControllableEvents, const EventSet& rHighAlph){
102 // iteration over all states of rLowGen. If there is an uncontrollable feasible high-level event, backward reachability is conducted to determine if OCC holds.
122 bool backwardVerificationOCC(const Generator& rLowGen, const EventSet& rControllableEvents, const EventSet& rHighAlph, Idx currentState){
123 OP_DF("backwardVerificationOCC(" << rLowGen.Name() << "," << rControllableEvents.Name() << "," << rHighAlph.Name() << "," << currentState << ")");
211 bool IsLCC(const Generator& rLowGen, const EventSet& rControllableEvents, const EventSet& rHighAlph){
224 // iteration over all states of rLowGen. If there is an uncontrollable feasible high-level event,
237 backwardVerificationLCC(tset_X2EvX1, rControllableEvents, rHighAlph, *stIt, *stIt, false, localStatesMap, doneStates);
272 // go along all backward transitions. Discard the goal state if it is reached via a high-level event or if it is in the rDoneStates and
280 // we iterate over all backward transitions of the currentState to establish backward reachability
283 // are not in the local backward reach and the controllability property of the current exitState does not change
285 // if the state has not been visited, yet, the controllability of the current path are set in the rExitLocalStatesMap
288 // the path is uncontrollable if the current transition has an uncontrollable event or the path was already uncontrollable
293 backwardVerificationLCC(rTransSetX2EvX1, rControllableEvents, rHighAlph, exitState, tsIt->X1, currentControllablePath, rLocalStatesMap, rDoneStates);
295 else{ // for an existing state, the controllability value can change from controllable to uncontrollable (if
296 // a new uncontrollable path has been found). It is important to note, that the LCC condition implies that
297 // if there is one uncontrollable path, then the state is flagged uncontrollable except for the case of the
302 // as the controllabiity attribute of the current state changed it is subject to a new backward reachability
303 backwardVerificationLCC(rTransSetX2EvX1, rControllableEvents, rHighAlph, exitState, tsIt->X1, false, rLocalStatesMap, rDoneStates);
libFAUDES 2.24g --- 2014.09.15 --- c++ api documentaion by doxygen |