00001
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef SUBCON_H
00025
00026 #include "definitions.h"
00027 #include "project.h"
00028 #include "parallel.h"
00029 #include <stack>
00030
00031 namespace faudes {
00032
00033
00034
00064 bool IsControllable(
00065 const vGenerator& rPlantGen,
00066 const EventSet& rCAlph,
00067 const vGenerator& rSupCandGen);
00068
00069
00106 bool IsControllable(
00107 const vGenerator& rPlantGen,
00108 const EventSet& rCAlph,
00109 const vGenerator& rSupCandGen,
00110 StateSet& rCriticalStates);
00111
00112
00113
00148 void SupConNB(
00149 const vGenerator& rPlantGen,
00150 const EventSet& rCAlph,
00151 const vGenerator& rSpecGen,
00152 vGenerator& rResGen);
00153
00154
00179 void SupCon(
00180 const vGenerator& rPlantGen,
00181 const EventSet& rCAlph,
00182 const vGenerator& rSpecGen,
00183 vGenerator& rResGen);
00184
00185
00223 void SupCon(
00224 const vGenerator& rPlantGen,
00225 const EventSet& rCAlph,
00226 const vGenerator& rSpecGen,
00227 std::map< std::pair<Idx,Idx>,Idx >& rReverseCompositionMap,
00228 vGenerator& rResGen);
00229
00289 void SupConNBNonDet(
00290 const vGenerator& rPlantGen,
00291 const EventSet& rCAlph,
00292 const vGenerator& rSpecGen,
00293 std::map< std::pair<Idx,Idx>, Idx>& rReverseCompositionMap,
00294 Generator rDetPlantGen,
00295 Generator rDetSpecGen,
00296 std::map<Idx,StateSet>& rPowerStatesPlant,
00297 std::map<Idx,StateSet>& rPowerStatesSpec,
00298 bool& rDetPlantBool,
00299 bool& rDetSpecBool,
00300 vGenerator& rResGen);
00301
00327 void SupConNBUnchecked(
00328 const vGenerator& rPlantGen,
00329 const EventSet& rCAlph,
00330 const vGenerator& rSpecGen,
00331 std::map< std::pair<Idx,Idx>,Idx >& rReverseCompositionMap,
00332 vGenerator& rResGen);
00333
00334
00335
00357 bool SupConUnchecked(
00358 const vGenerator& rPlantGen,
00359 const EventSet& rCAlph,
00360 vGenerator& rSupCandGen);
00361
00362
00381 void SupconParallel(
00382 const vGenerator& rPlantGen,
00383 const EventSet& rCAlph,
00384 const vGenerator& rSpecGen,
00385 std::map< std::pair<Idx,Idx>, Idx>& rReverseCompositionMap,
00386 vGenerator& rResGen);
00387
00416 bool IsControllableUnchecked(
00417 const vGenerator& rPlantGen,
00418 const EventSet& rCAlph,
00419 const vGenerator& rSpecGen,
00420 StateSet& rCriticalStates);
00421
00422
00437 void TraverseUncontrollableBackwards(
00438 const EventSet& rCAlph,
00439 TransSetX2EvX1& rtransrel,
00440 StateSet& rCriticalStates,
00441 Idx current);
00442
00443
00444
00462 void ControlProblemConsistencyCheck(
00463 const vGenerator& rPlantGen,
00464 const EventSet& rCAlph,
00465 const vGenerator& rSpecGen);
00466
00467
00468
00469
00470
00471 }
00472
00473 #define SUBCON_H
00474 #endif
00475
00476