00001
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include "corefaudes.h"
00033 #include "op_debug.h"
00034 #include "op_bisimulation.h"
00035 #include <map>
00036 #include <vector>
00037 #include <stack>
00038
00039
00040 #ifndef FAUDES_OP_OBSERVERCOMPUTATION_H
00041 #define FAUDES_OP_OBSERVERCOMPUTATION_H
00042
00043
00044 using namespace faudes;
00045 using namespace std;
00046
00047 namespace faudes {
00086 void calcAbstAlphObs(cGenerator& rGenObs, EventSet& rHighAlph, EventSet& rNewHighAlph, map<Idx, set<Idx> >& rMapRelabeledEvents);
00087
00113 void calcAbstAlphObs(vGenerator& rGenObs, EventSet& rControllableEvents, EventSet& rHighAlph, EventSet& rNewHighAlph, map<Idx, set<Idx> >& rMapRelabeledEvents);
00114
00140 void calcAbstAlphObs(vGenerator& rGenObs, EventSet& rControllableEvents, EventSet& rHighAlph, EventSet& rNewHighAlph, map<Transition,Idx>& rMapChangedTrans);
00141
00158 void calculateDynamicSystemObs(const vGenerator& rGen, EventSet& rHighAlph, vGenerator& rGenDyn);
00159
00203 void calcAbstAlphObsOCC(cGenerator& rGenObs, EventSet& rHighAlph, EventSet& rNewHighAlph, map<Idx,set<Idx > > & rMapRelabeledEvents);
00204
00234 void calcAbstAlphObsOCC(vGenerator& rGenObs, EventSet& rControllableEvents, EventSet& rHighAlph, EventSet& rNewHighAlph, map<Transition,Idx>& rMapChangedTrans);
00235
00254 void calculateDynamicSystemObsOCC(const vGenerator& rGen, EventSet& rControllableEvents, EventSet& rHighAlph, vGenerator& rGenDyn);
00255
00274 void forwardReachabilityObs(const vGenerator& rGen, const EventSet& rHighAlph, Idx lowState, Idx mLabel, vGenerator& rGenDyn);
00275
00302 void backwardReachabilityObsOCC(const TransSetX2EvX1& rTransSetX2EvX1, const EventSet& rControllableEvents, const EventSet& rHighAlphabet, Idx exitState, Idx currentState, bool controllablePath, map<Idx, map<Idx, bool> >& rExitLocalStatesMap, StateSet& rDoneStates);
00303
00347 void calcAbstAlphObsLCC(cGenerator& rGenObs, EventSet& rHighAlph, EventSet& rNewHighAlph, map<Idx,set<Idx > > & rMapRelabeledEvents);
00348
00378 void calcAbstAlphObsLCC(vGenerator& rGenObs, EventSet& rControllableEvents, EventSet& rHighAlph, EventSet& rNewHighAlph, map<Transition,Idx>& rMapChangedTrans);
00379
00398 void calculateDynamicSystemObsLCC(const vGenerator& rGen, EventSet& rControllableEvents, EventSet& rHighAlph, vGenerator& rGenDyn);
00399
00426 void backwardReachabilityObsLCC(const TransSetX2EvX1& rTransSetX2EvX1, const EventSet& rControllableEvents, const EventSet& rHighAlphabet, Idx exitState, Idx currentState, bool controllablePath, map<Idx, map<Idx, bool> >& rExitLocalStatesMap, StateSet& rDoneStates);
00427
00453 bool relabel(vGenerator& rGenRelabel, EventSet& rControllableEvents, EventSet& rHighAlph, vector<Idx>& rNewPartitions, map<Idx,Idx>& rMapStateToPartition, map<Transition,Transition>& rMapChangedTransReverse, map<Transition,Idx>& rMapChangedTrans, map<Idx, EventSet>& rMapRelabeledEvents);
00454
00455
00471 void insertRelabeledEvents(cGenerator& rGenPlant, const map<Idx, set<Idx> >& rMapRelabeledEvents, cEventSet& rNewEvents);
00472
00486 void insertRelabeledEvents(cGenerator& rGenPlant, const map<Idx, set<Idx> >& rMapRelabeledEvents);
00487
00488 }
00489
00490
00491 #endif
00492