|
Go to the documentation of this file.
50 FD_DF( "NormalityConsistencyCheck(...)");
53 std::stringstream errstr;
54 errstr << "Nondeterministic parameter rK.";
56 throw Exception( "NormalityConsistencyCheck", errstr.str(), 101);
59 std::stringstream errstr;
60 errstr << "Nondeterministic parameter rL.";
62 throw Exception( "NormalityConsistencyCheck", errstr.str(), 101);
70 if(!(rOAlph<=Sigma)) {
71 EventSet only_in_OAlph = rOAlph - Sigma;
72 std::stringstream errstr;
73 errstr << "Not all observable events are contained in Sigma: "
75 throw Exception( "NormalityConsistencyCheck", errstr.str(), 100);
79 if ( Sigma != Kevents) {
80 EventSet only_in_L = Sigma - Kevents;
81 EventSet only_in_K = Kevents - Sigma;
82 only_in_L. Name( "Only_In_L");
83 only_in_L. Name( "Only_In_K");
84 std::stringstream errstr;
85 errstr << "Alphabets of generators do not match.";
86 if(!only_in_L. Empty())
87 errstr << " " << only_in_L. ToString() << ".";
88 if(!only_in_K. Empty())
89 errstr << " " << only_in_K. ToString() << ".";
90 throw Exception( "NormalityConsistencyCheck", errstr.str(), 100);
95 std::stringstream errstr;
96 errstr << "K is not subset of L.";
97 throw Exception( "NormalityConsistencyCheck", errstr.str(), 0);
107 FD_DF( "IsNormal(...)");
152 FD_DF( "ConcatenateFullLanguage(" << rGen. Name() << ")");
155 rGen. Name( "ConcatenateFullLanguage(" + rGen. Name() + ")");
167 StateSet::Iterator sit;
169 EventSet::Iterator evit;
174 TransToClear. Insert(*tit);
178 for (tit = TransToClear. Begin(); tit != TransToClear. End(); ++tit) {
181 TransToClear. Clear();
204 TransToSet. Insert(tit2->X1,tit2->Ev,marked);
213 StatesToClear. Insert(*sit);
215 for (sit=StatesToClear. Begin(); sit != StatesToClear. End(); ++sit) {
218 StatesToClear. Clear();
221 for (tit = TransToSet. Begin(); tit != TransToSet. End(); ++tit) {
228 for (evit = alph. Begin(); evit != alph. End(); ++evit) {
235 FD_DF( "ConcatenateFullLanguage(" << rGen. Name() << "): marked initial state");
242 for (evit = alph. Begin(); evit != alph. End(); ++evit) {
259 FD_DF( "SupNorm(" << rL. Name() << "," << rK. Name() << "," << rOAlph. Name() << ")");
279 Project(rResult,rOAlph,rResult);
280 FD_DF( "SupNorm: sizeof p(L-K): "<< rResult. Size());
282 FD_DF( "SupNorm: sizeof pinv(p(L-K)): "<< rResult. Size());
302 FD_DF( "SupNormClosed(" << rL. Name() << "," << rK. Name() << "," << rOAlph. Name() << ")");
322 Project(rResult,rOAlph,rResult);
323 FD_DF( "SupNormClosed: sizeof p(L-K): "<< rResult. Size());
325 FD_DF( "SupNormClosed: sizeof pinv(p(L-K)): "<< rResult. Size());
330 FD_DF( "SupNormClosed: sizeof pinv(p(L-K))Sigma*: "<< rResult. Size());
339 rResult. Name( "SupNormClosed("+rL. Name()+ ", "+rK. Name()+ ")");
341 FD_DF( "SupNormClosed(" << rL. Name() << "," << rK. Name() << "," << rOAlph. Name() << ")");
354 FD_DF( "SupConNormClosed(" << rL. Name() << "," << rK. Name() << ")");
393 FD_DF( "SupConNormNB(" << rL. Name() << "," << rK. Name() << ")");
423 FD_DF( "SupConNormNB(" << rL. Name() << "," << rK. Name() << "): done");
433 FD_DF( "SupPrefixClosed("<<rK. Name()<< ")");
436 rResult. Name( "SupPrefixClosed("+rK. Name()+ ")");
450 while(tit!=tit_end) {
469 q(rq), x(rx), z(rz) {};
474 if ( q < other. q) return( true);
475 if ( q > other. q) return( false);
476 if ( x < other. x) return( true);
477 if ( x > other. x) return( false);
478 if ( z < other. z) return( true);
497 FD_DF( "SupConNormClosedUnchecked(" << &rSupCandGen << "," << &rPlantGen << ")");
508 FD_DF( "SupConNormClosedUnchecked(" << &rSupCandGen << "," << &rPlantGen << "): until fixpoint #" << rSupCandGen. Size());
518 std::stack<SNOState> todo;
531 FD_DF( "SupNorm: todo push initial state");
538 while(!todo.empty()) {
540 FD_WPC(1,2, "Normality(): iterating states");
542 current = todo.top();
544 FD_DF( "SupNorm: todo #" << todo.size() << " processed #" << processed. Size());
545 FD_DF( "SupNorm: pop: (" << rPlantGen. SStr(current. q) << "|" << rSupCandGen. SStr(current. x) << ")");
548 if(processed. Exists(current. x)) continue;
549 if(critical. Exists(current. x)) continue;
558 if(!(disabled <= rCAlph)) {
566 while(titho!=titho_end) {
567 if(!disabled. Exists(titho->Ev)) { ++titho; continue; }
578 while( (titg != titg_end) && (tith != tith_end) && (titho != titho_end) ) {
579 FD_DF( "SupNorm: processing g-transition: " << rPlantGen. TStr(*titg));
580 FD_DF( "SupNorm: processing h-transition: " << rSupCandGen. TStr(*tith));
582 if( (titg->Ev == tith->Ev) && (tith->Ev == titho->Ev) ) {
583 FD_DF( "SupNorm: processing common event " << rPlantGen. EStr(titg->Ev));
585 if(!processed. Exists(tith->X2)) {
586 successor. q=titg->X2;
587 successor. x=tith->X2;
588 successor. z=titho->X2;
589 todo.push(successor);
592 ++titg; ++tith; ++titho;
595 else if (tith->Ev < titho->Ev) {
599 else if (titho->Ev < tith->Ev) {
603 else if (titg->Ev < tith->Ev) {
615 while( (tith != tith_end) ) {
655 if(&rResGen== &rPlantGen || &rResGen== &rSpecGen) {
656 pResGen= rResGen. New();
663 if(pResGen != &rResGen) {
664 pResGen-> Move(rResGen);
677 if(&rResGen== &rPlantGen || &rResGen== &rSpecGen) {
678 pResGen= rResGen. New();
685 if(pResGen != &rResGen) {
686 pResGen-> Move(rResGen);
700 if(&rResGen== &rPlantGen || &rResGen== &rSpecGen) {
701 pResGen= rResGen. New();
708 if(pResGen != &rResGen) {
709 pResGen-> Move(rResGen);
720 FD_DF( "SupConNormNB(" << rPlantGen. Name() << "," << rSpecGen. Name() << "): rti wrapper");
723 if(&rResGen== &rPlantGen || &rResGen== &rSpecGen) {
724 pResGen= rResGen. New();
729 pResGen->EventAttributes(rPlantGen. Alphabet());
731 if(pResGen != &rResGen) {
732 pResGen->Move(rResGen);
libFAUDES 2.28c
--- 2016.09.30
--- c++ api documentaion by doxygen
|