00001
00019 #include <stdio.h>
00020 #include <iostream>
00021 #include <libfaudes.h>
00022 #include <op_observer.h>
00023
00024
00025
00026 int main(int argc, char* argv[])
00027 {
00028
00029
00030 Generator genOrig("data/ex_bisim/ex_bisim.gen");
00031
00032 std::cout << "#####################\n";
00033 std::cout << "# original generator \n";
00034 std::cout << "#####################\n";
00035 genOrig.DWrite();
00036
00037
00038
00039 map<Idx,Idx> mapStateToPartition;
00040
00041
00042
00043 Generator genPart;
00044
00045
00046
00047
00048 vector<Idx> newPartitions;
00049
00050
00051 calcBisimulation(genOrig, mapStateToPartition, genPart, newPartitions);
00052
00053
00054 std::cout << "#########################################\n";
00055 std::cout << "# generator holding the quasi-congruence\n";
00056 std::cout << "#########################################\n";
00057 genPart.DWrite();
00058
00059 genPart.Write("./results/ex_bisim/genPart.gen");
00060
00061 map<Idx,Idx>::const_iterator mIt, mEndIt;
00062 mIt = mapStateToPartition.begin();
00063 mEndIt = mapStateToPartition.end();
00064 std::cout << "##################################################\n";
00065 std::cout << "# map from original states to equivalence classes\n";
00066 for( ; mIt != mEndIt; mIt++){
00067 std::cout << "state: " << mIt->first << " class: " << mIt->second << "\n";
00068 }
00069 std::cout << "##################################################\n";
00070
00071 return 0;
00072 }