63 std::cout <<
"################################\n";
64 std::cout <<
"# tutorial, handcraft generator \n";
66 std::cout <<
"################################\n";
102 version2.
Version(
"_str",
"_machine_3",version3);
110 std::cout <<
"################################\n";
111 std::cout <<
"# tutorial, version of generator \n";
113 std::cout <<
"################################\n";
124 std::cout <<
"################################\n";
125 std::cout <<
"# tutorial, relabeled generator \n";
127 std::cout <<
"################################\n";
141 g3.
Read(
"data/simplemachine.gen");
150 g4.
Write(
"tmp_simplemachine.gen");
151 g2.
Write(
"tmp_toberelabeled.gen");
152 g2alt.
Write(
"tmp_relabeled.gen");
157 g4.
Write(
"tmp_simplemachine_ridx.gen");
160 g4.
Read(
"tmp_simplemachine.gen");
161 g4.
Read(
"tmp_simplemachine_ridx.gen");
165 std::cout <<
"################################\n";
166 std::cout <<
"# tutorial, debug dump \n";
168 std::cout <<
"################################\n";
173 g4.
DotWrite(
"tmp_simplemachine.dot");
174 g4.
DDotWrite(
"tmp_simplemachine_debug.dot");
181 std::cout <<
"1_generator: cannot execute graphviz' dot. " << std::endl;
187 std::string str_singleevent = g1.
EStr(2);
192 std::string str_singlestate = g1.
SStr(3);
210 std::string str_name = g1.
Name();
232 eset_copy_alph.
Insert(
"new_event");
233 if(g1.
ExistsEvent(
"new_event")) std::cout <<
"### THIS CANNOT HAPPEN ###";
272 eset1.
Insert(
"newevent1");
356 std::cout <<
"################################\n";
357 std::cout <<
"# tutorial, on the way ... \n";
359 std::cout <<
"################################\n";
395 std::string str_eventname1 = g1.
EventName(1);
403 std::string str_tmp = g1.
StateName(idx_s10);
434 bool bool_isempty = g1.
Empty();
449 std::cout <<
"################################\n";
450 std::cout <<
"# tutorial, after ins and del \n";
452 std::cout <<
"################################\n";
468 std::cout <<
"################################\n";
469 std::cout <<
"# tutorial, iterators 1 \n";
470 EventSet::Iterator eit;
472 std::cout <<
"event \"" << g1.
EventName(*eit) <<
"\" with index "<< *eit << std::endl;
474 std::cout <<
"################################\n";
478 std::cout <<
"################################\n";
479 std::cout <<
"# tutorial, iterators 2 \n";
480 StateSet::Iterator sit;
482 std::cout << *sit << std::endl;
484 std::cout <<
"################################\n";
488 std::cout <<
"################################\n";
489 std::cout <<
"# tutorial, iterators 3 \n";
492 std::cout << g1.
TStr(*tit) << std::endl;
494 std::cout <<
"################################\n";
499 std::cout <<
"################################\n";
500 std::cout <<
"# tutorial, iterators 4 \n";
505 for (; tit != tit_end; ++tit) {
506 std::cout << g1.
TStr(*tit) << std::endl;
508 std::cout <<
"################################\n";
534 std::cout <<
"################################\n";
535 std::cout <<
"# tutorial, x2-ev-x1 sorting\n";
537 for (tit2 = tset_x2evx1.
Begin(); tit2 != tset_x2evx1.
End(); ++tit2) {
538 std::cout << g1.
TStr(*tit2) << std::endl;
540 std::cout <<
"################################\n";
604 std::cout <<
"################################\n";
605 std::cout <<
"# tutorial, default names \n";
607 std::cout <<
"################################\n";
615 Generator greach(
"data/trimness_nottrim.gen");
617 std::cout <<
"################################\n";
618 std::cout <<
"# tutorial, reachability test case \n";
620 std::cout <<
"# tutorial, reachability relevant sets \n";
627 std::cout <<
"# tutorial, reachability analysis \n";
630 std::cout <<
"accesibility: ok [error]\n";
632 std::cout <<
"accesibility: failed [expected]\n";
635 std::cout <<
"coaccesibility: ok [error]\n";
637 std::cout <<
"coaccesibility: failed [expected]\n";
640 std::cout <<
"completeness: ok [error]\n";
642 std::cout <<
"completeness: failed [expected]\n";
643 bool istrim = greach.
IsTrim();
645 std::cout <<
"trimness: ok [error]\n";
647 std::cout <<
"trimness: failed [expected]\n";
650 std::cout <<
"w-trimness: ok [error]\n";
652 std::cout <<
"w-trimness: failed [expected]\n";
653 std::cout <<
"################################\n";
663 gaccess.
Name(
"GAccessible");
669 gcoaccess.
Name(
"GCoccessible");
675 gcompl.
Name(
"GComplete");
683 bool bool_isnontrivial = gtrim.
Trim();
689 gotrim.
Name(
"GOmegaTrim");
693 std::cout <<
"################################\n";
694 std::cout <<
"# tutorial, reachability results \n";
700 std::cout <<
"################################\n";
703 greach.
Write(
"tmp_greach.gen");
704 gaccess.
Write(
"tmp_gaccess.gen");
705 gcoaccess.
Write(
"tmp_gcoaccess.gen");
706 gcompl.
Write(
"tmp_gcompl.gen");
707 gtrim.
Write(
"tmp_gtrim.gen");
708 gotrim.
Write(
"tmp_gotrim.gen");
723 Generator gsigcomplB(
"data/trimness_nottrim.gen");
724 Generator gsigcomplC(
"data/trimness_nottrim.gen");
730 std::cout <<
"################################\n";
731 std::cout <<
"# tutorial, sigma_o-completeness test case \n";
733 bool issigcompl = gsigcomplB.
IsComplete(sigoB);
735 std::cout <<
"completeness: ok [error]\n";
737 std::cout <<
"completeness: failed [expected]\n";
742 gsigcomplB.
Name(
"GSigoCompleteB");
744 gsigcomplC.
Name(
"GSigoCompleteC");
753 gsigcomplB.
Write(
"tmp_gsigcomplb.gen");
754 gsigcomplC.
Write(
"tmp_gsigcomplc.gen");
#define FAUDES_TEST_DIFF()
#define FAUDES_TEST_DUMP(mes, dat)
const std::string & Name(void) const
bool Insert(const Idx &rIndex)
virtual bool Insert(const Idx &rSrc, const Idx &rDst)
Iterator Begin(void) const
void DWrite(const Type *pContext=0) const
void Read(const std::string &rFileName, const std::string &rLabel="", const Type *pContext=0)
void FromString(const std::string &rString, const std::string &rLabel="", const Type *pContext=0)
void Write(const Type *pContext=0) const
StateSet::Iterator StatesBegin(void) const
const TransSet & TransRel(void) const
bool SetTransition(Idx x1, Idx ev, Idx x2)
const StateSet & MarkedStates(void) const
const EventSet & Alphabet(void) const
virtual void DDotWrite(const std::string &rFileName) const
virtual vGenerator & Assign(const Type &rSrc)
std::string StatesToString(void) const
EventSet ActiveEventSet(Idx x1) const
const StateSet & InitStates(void) const
TransSet::Iterator TransRelBegin(void) const
void ClrTransition(Idx x1, Idx ev, Idx x2)
Idx StateIndex(const std::string &rName) const
bool IsAccessible(void) const
void InsEvents(const EventSet &events)
void ClrMarkedState(Idx index)
bool EventRename(Idx event, const std::string &rNewName)
EventSet::Iterator AlphabetBegin(void) const
StateSet TransRelStates(void) const
bool IsComplete(void) const
void ClrStateName(Idx index)
void SetInitState(Idx index)
StateSet AccessibleSet(void) const
Idx EventIndex(const std::string &rName) const
bool ExistsState(Idx index) const
bool IsCoaccessible(void) const
std::string TStr(const Transition &rTrans) const
std::string StateName(Idx index) const
virtual void DotWrite(const std::string &rFileName) const
StateSet::Iterator StatesEnd(void) const
void ClrInitState(Idx index)
void DelStates(const StateSet &rDelStates)
TransSet::Iterator TransRelEnd(void) const
bool ExistsEvent(Idx index) const
std::string EStr(Idx index) const
StateSet TerminalStates(void) const
void SetMarkedState(Idx index)
bool ReindexOnWrite(void) const
bool StateNamesEnabled(void) const
void SetDefaultStateNames(void)
void GraphWrite(const std::string &rFileName, const std::string &rOutFormat="", const std::string &rDotExec="dot") const
Idx TransRelSize(void) const
virtual void Version(const std::string &rVersion, vGenerator &rResGen) const
EventSet UsedEvents(void) const
EventSet UnusedEvents(void) const
std::string EventName(Idx index) const
EventSet::Iterator AlphabetEnd(void) const
StateSet CoaccessibleSet(void) const
Idx AlphabetSize(void) const
bool ExistsInitState(Idx index) const
std::string SStr(Idx index) const
bool ExistsMarkedState(Idx index) const
std::string AlphabetToString(void) const
const StateSet & States(void) const
StateSet SuccessorStates(Idx x1) const
bool AlphabetEmpty(void) const
bool BuechiTrim(vGenerator &rGen)
void ApplyRelabelMap(const RelabelMap &rMap, const vGenerator &rGen, vGenerator &rRes)
bool IsBuechiTrim(const vGenerator &rGen)