This class implements the algorithms needed for the computation of the coarsest quasi-congruence (=Bisimulation) of a given generator. More...

#include <op_bisimulation.h>

Public Member Functions

 Bisimulation (Generator &g)
 Contructor.
void writeW (void)
 Write W-tree to console.
void partition (std::map< Idx, Idx > &rMapStateToPartition, Generator &rGenPart, std::vector< Idx > &rNewPartitions)
 Administration of the various steps of the computation of the coarsest quasi-congruence.
void partition (std::map< Idx, Idx > &rMapStateToPartition, std::vector< Idx > &rNewPartitions)
 Administration of the various steps of the computation of the coarsest quasi-congruence.
void writeRo (void)
 Write the current set of equivalence classes to console.

Private Member Functions

void computeInfoMaps (Partition &node, Partition *pSmallerPart, Partition *pLargerPart, EventSet::Iterator eIt)
 Compute info-maps for two cosets P1 and P2.
void computeInfoMap (Partition &B, Partition &Bstates, EventSet::Iterator eIt, StateSet &tb)
 Compute info-maps for coset B.
bool stateLeadsToPartition (Idx state, Partition &node, EventSet::Iterator eIt)
 Check if a state has a eIt-transition into a coset denoted as node.
void partitionClass (Partition &B)
 Refine current partition with respect to partition B.
void partitionSplitter (Partition &B)
 Refine current partition with respect to partition B and make use of the fact that the current partition is stable with respect to the parent coset of B.
void writeNode (Partition &node)
 Function needed for recursively plotting the W-tree to console.

Private Attributes

Generatorgen
 Original Automaton.
std::map< Idx, PartitionW
 W-tree.
Idx index
 Counter to assign unique indices to the cosets.
std::vector< Partition * > ro
 Contains the cosets of the current partition.
TransSetEvX2X1 tset_evx2x1
 TransSet of original generator sorted by EvX2X1.
std::set< Partition * > roDividers
 Holds the cosets that can possibly split cosets in ro.

Detailed Description

This class implements the algorithms needed for the computation of the coarsest quasi-congruence (=Bisimulation) of a given generator.

Definition at line 89 of file op_bisimulation.h.

Constructor & Destructor Documentation

faudes::Bisimulation::Bisimulation ( Generator g)

Contructor.

Parameters
gOriginal generator

Definition at line 69 of file op_bisimulation.cpp.

Member Function Documentation

void faudes::Bisimulation::computeInfoMap ( Partition B,
Partition Bstates,
EventSet::Iterator  eIt,
StateSet tb 
)
private

Compute info-maps for coset B.

Parameters
BCoset for which the info-map is computed
BstatesCoset whose states are examined
eItiterator to an event in a EventSet
tbStateSet containing all the states that have a *eIt-transition into the coset B

Definition at line 743 of file op_bisimulation.cpp.

void faudes::Bisimulation::computeInfoMaps ( Partition node,
Partition pSmallerPart,
Partition pLargerPart,
EventSet::Iterator  eIt 
)
private

Compute info-maps for two cosets P1 and P2.

The current partition is stable with respect to their parent coset P.

Parameters
nodeCoset whose states are examined
pSmallerPartChild coset P1 of P with smaller number of states
pLargerPartChild coset P2 of P with larger number of states
eItEvent

Definition at line 502 of file op_bisimulation.cpp.

void faudes::Bisimulation::partition ( std::map< Idx, Idx > &  rMapStateToPartition,
Generator rGenPart,
std::vector< Idx > &  rNewPartitions 
)

Administration of the various steps of the computation of the coarsest quasi-congruence.

An output generator that represents the resulting quotient automaton is also provided.

Parameters
rMapStateToPartitionMaps each state to its equivalence class
rGenPartGenerator representing the result of the computation. Each state corresponds to an euivalence class
rNewPartitionsHolds the indices of all equivalence classes

Definition at line 798 of file op_bisimulation.cpp.

void faudes::Bisimulation::partition ( std::map< Idx, Idx > &  rMapStateToPartition,
std::vector< Idx > &  rNewPartitions 
)

Administration of the various steps of the computation of the coarsest quasi-congruence.

Parameters
rMapStateToPartitionMaps each state to its equivalence class
rNewPartitionsHolds the indices of all equivalence classes

Definition at line 929 of file op_bisimulation.cpp.

void faudes::Bisimulation::partitionClass ( Partition B)
private

Refine current partition with respect to partition B.

Parameters
BCoset

Definition at line 583 of file op_bisimulation.cpp.

void faudes::Bisimulation::partitionSplitter ( Partition B)
private

Refine current partition with respect to partition B and make use of the fact that the current partition is stable with respect to the parent coset of B.

Parameters
BCoset

Definition at line 99 of file op_bisimulation.cpp.

bool faudes::Bisimulation::stateLeadsToPartition ( Idx  state,
Partition node,
EventSet::Iterator  eIt 
)
private

Check if a state has a eIt-transition into a coset denoted as node.

Parameters
stateState to be examined
nodeCoset
eItEvent

Definition at line 557 of file op_bisimulation.cpp.

void faudes::Bisimulation::writeNode ( Partition node)
private

Function needed for recursively plotting the W-tree to console.

For debugging purpose

Parameters
nodeCoset

Definition at line 1011 of file op_bisimulation.cpp.

void faudes::Bisimulation::writeRo ( void  )

Write the current set of equivalence classes to console.

Definition at line 1041 of file op_bisimulation.cpp.

void faudes::Bisimulation::writeW ( void  )

Write W-tree to console.

Definition at line 1003 of file op_bisimulation.cpp.

Member Data Documentation

Generator* faudes::Bisimulation::gen
private

Original Automaton.

Definition at line 142 of file op_bisimulation.h.

Idx faudes::Bisimulation::index
private

Counter to assign unique indices to the cosets.

Definition at line 193 of file op_bisimulation.h.

std::vector<Partition*> faudes::Bisimulation::ro
private

Contains the cosets of the current partition.

Definition at line 198 of file op_bisimulation.h.

std::set<Partition*> faudes::Bisimulation::roDividers
private

Holds the cosets that can possibly split cosets in ro.

Definition at line 235 of file op_bisimulation.h.

TransSetEvX2X1 faudes::Bisimulation::tset_evx2x1
private

TransSet of original generator sorted by EvX2X1.

Definition at line 203 of file op_bisimulation.h.

std::map<Idx, Partition> faudes::Bisimulation::W
private

W-tree.

Contains all cosets ever created

Definition at line 188 of file op_bisimulation.h.


The documentation for this class was generated from the following files:

libFAUDES 2.24g --- 2014.09.15 --- c++ api documentaion by doxygen