|
Go to the documentation of this file.
47 FD_DF( "NormalityConsistencyCheck(...)");
50 std::stringstream errstr;
51 errstr << "Nondeterministic parameter rK.";
53 throw Exception( "NormalityConsistencyCheck", errstr.str(), 101);
56 std::stringstream errstr;
57 errstr << "Nondeterministic parameter rL.";
59 throw Exception( "NormalityConsistencyCheck", errstr.str(), 101);
67 if(!(rOAlph<=Sigma)) {
68 EventSet only_in_OAlph = rOAlph - Sigma;
69 std::stringstream errstr;
70 errstr << "Not all observable events are contained in Sigma: "
72 throw Exception( "NormalityConsistencyCheck", errstr.str(), 100);
76 if ( Sigma != Kevents) {
77 EventSet only_in_L = Sigma - Kevents;
78 EventSet only_in_K = Kevents - Sigma;
79 only_in_L. Name( "Only_In_L");
80 only_in_L. Name( "Only_In_K");
81 std::stringstream errstr;
82 errstr << "Alphabets of generators do not match.";
83 if(!only_in_L. Empty())
84 errstr << " " << only_in_L. ToString() << ".";
85 if(!only_in_K. Empty())
86 errstr << " " << only_in_K. ToString() << ".";
87 throw Exception( "NormalityConsistencyCheck", errstr.str(), 100);
92 std::stringstream errstr;
93 errstr << "K is not subset of L.";
94 throw Exception( "NormalityConsistencyCheck", errstr.str(), 0);
104 FD_DF( "IsNormal(...)");
149 FD_DF( "ConcatenateFullLanguage(" << rGen. Name() << ")");
152 rGen. Name( "ConcatenateFullLanguage(" + rGen. Name() + ")");
164 StateSet::Iterator sit;
166 EventSet::Iterator evit;
171 TransToClear. Insert(*tit);
175 for (tit = TransToClear. Begin(); tit != TransToClear. End(); ++tit) {
178 TransToClear. Clear();
201 TransToSet. Insert(tit2->X1,tit2->Ev,marked);
210 StatesToClear. Insert(*sit);
212 for (sit=StatesToClear. Begin(); sit != StatesToClear. End(); ++sit) {
215 StatesToClear. Clear();
218 for (tit = TransToSet. Begin(); tit != TransToSet. End(); ++tit) {
225 for (evit = alph. Begin(); evit != alph. End(); ++evit) {
232 FD_DF( "ConcatenateFullLanguage(" << rGen. Name() << "): marked initial state");
239 for (evit = alph. Begin(); evit != alph. End(); ++evit) {
256 FD_DF( "SupNorm(" << rL. Name() << "," << rK. Name() << "," << rOAlph. Name() << ")");
276 Project(rResult,rOAlph,rResult);
277 FD_DF( "SupNorm: sizeof p(L-K): "<< rResult. Size());
279 FD_DF( "SupNorm: sizeof pinv(p(L-K)): "<< rResult. Size());
299 FD_DF( "SupNormClosed(" << rL. Name() << "," << rK. Name() << "," << rOAlph. Name() << ")");
319 Project(rResult,rOAlph,rResult);
320 FD_DF( "SupNormClosed: sizeof p(L-K): "<< rResult. Size());
322 FD_DF( "SupNormClosed: sizeof pinv(p(L-K)): "<< rResult. Size());
327 FD_DF( "SupNormClosed: sizeof pinv(p(L-K))Sigma*: "<< rResult. Size());
336 rResult. Name( "SupNormClosed("+rL. Name()+ ", "+rK. Name()+ ")");
349 FD_DF( "SupConNormClosed(" << rL. Name() << "," << rK. Name() << ")");
388 FD_DF( "SupConNormNB(" << rL. Name() << "," << rK. Name() << ")");
418 FD_DF( "SupConNormNB(" << rL. Name() << "," << rK. Name() << "): done");
428 FD_DF( "SupPrefixClosed("<<rK. Name()<< ")");
431 rResult. Name( "SupPrefixClosed("+rK. Name()+ ")");
445 while(tit!=tit_end) {
464 q(rq), x(rx), z(rz) {};
469 if ( q < other. q) return( true);
470 if ( q > other. q) return( false);
471 if ( x < other. x) return( true);
472 if ( x > other. x) return( false);
473 if ( z < other. z) return( true);
492 FD_DF( "SupConNormClosedUnchecked(" << &rSupCandGen << "," << &rPlantGen << ")");
503 FD_DF( "SupConNormClosedUnchecked(" << &rSupCandGen << "," << &rPlantGen << "): until fixpoint #" << rSupCandGen. Size());
513 std::stack<SNOState> todo;
526 FD_DF( "SupNorm: todo push initial state");
533 while(!todo.empty()) {
535 FD_WPC(1,2, "Normality(): iterating states");
537 current = todo.top();
539 FD_DF( "SupNorm: todo #" << todo.size() << " processed #" << processed. Size());
540 FD_DF( "SupNorm: pop: (" << rPlantGen. SStr(current. q) << "|" << rSupCandGen. SStr(current. x) << ")");
543 if(processed. Exists(current. x)) continue;
544 if(critical. Exists(current. x)) continue;
553 if(!(disabled <= rCAlph)) {
561 while(titho!=titho_end) {
562 if(!disabled. Exists(titho->Ev)) { ++titho; continue; }
573 while( (titg != titg_end) && (tith != tith_end) && (titho != titho_end) ) {
574 FD_DF( "SupNorm: processing g-transition: " << rPlantGen. TStr(*titg));
575 FD_DF( "SupNorm: processing h-transition: " << rSupCandGen. TStr(*tith));
577 if( (titg->Ev == tith->Ev) && (tith->Ev == titho->Ev) ) {
578 FD_DF( "SupNorm: processing common event " << rPlantGen. EStr(titg->Ev));
580 if(!processed. Exists(tith->X2)) {
581 successor. q=titg->X2;
582 successor. x=tith->X2;
583 successor. z=titho->X2;
584 todo.push(successor);
587 ++titg; ++tith; ++titho;
590 else if (tith->Ev < titho->Ev) {
594 else if (titho->Ev < tith->Ev) {
598 else if (titg->Ev < tith->Ev) {
610 while( (tith != tith_end) ) {
650 if(&rResGen== &rPlantGen || &rResGen== &rSpecGen) {
651 pResGen= rResGen. New();
658 if(pResGen != &rResGen) {
659 pResGen-> Move(rResGen);
672 if(&rResGen== &rPlantGen || &rResGen== &rSpecGen) {
673 pResGen= rResGen. New();
680 if(pResGen != &rResGen) {
681 pResGen-> Move(rResGen);
695 if(&rResGen== &rPlantGen || &rResGen== &rSpecGen) {
696 pResGen= rResGen. New();
703 if(pResGen != &rResGen) {
704 pResGen-> Move(rResGen);
715 FD_DF( "SupConNormNB(" << rPlantGen. Name() << "," << rSpecGen. Name() << "): rti wrapper");
718 if(&rResGen== &rPlantGen || &rResGen== &rSpecGen) {
719 pResGen= rResGen. New();
724 pResGen->EventAttributes(rPlantGen. Alphabet());
726 if(pResGen != &rResGen) {
727 pResGen->Move(rResGen);
libFAUDES 2.26g
--- 2015.08.17
--- c++ api documentaion by doxygen
|