|
Classes |
struct | State |
| internal representation of transition relation with consecutive indexed states and events
Revision 20150724 tmoor — technically, re-indexing is equivalent to "pointers on source indicees" and buffers log-n searches [30sec -> 10sec for our testcases] More...
|
Public Member Functions |
| Bisimulation (const Generator &g) |
| Contructor: keep a reference to the generator and initialize the partition and the W-Tree to represent the universal equivalence relation, i.e.
|
| ~Bisimulation (void) |
| Destructor.
|
void | writeW (void) |
| Write W-tree to console.
|
void | writeRo (void) |
| Write the set of equivalence classes to console.
|
void | refine (void) |
| Perform fixpoint iteration to obtain the coarset bisimulation relation.
|
void | partition (std::map< Idx, Idx > &rMapStateToPartition, Generator &rGenPart) |
| Extract output generator that represents the resulting quotient automaton.
|
void | partition (std::map< Idx, Idx > &rMapStateToPartition) |
| Extract the coarsest quasi-congruence as an STL map (need to invoke refine() befor)
|
void | partition (std::list< StateSet > &rPartition) |
| Extract the coarsest quasi-congruence as a list of equivalence classes.
|
Private Member Functions |
Pnode * | newnode () |
| insert new node to W-tree (empty stateset) note: this method only cares about indexing, and initialisation of node members note: cross references are left to the caller
|
void | computeInfoMaps (Pnode &node, Pnode *pSmallerPart, Pnode *pLargerPart, Idx ev) |
| compute info-maps for two cosets pSmallerPart and pLargerpart.
|
void | computeInfoMap (Pnode &B, Pnode &Bstates, Idx ev, vector< Idx > &tb) |
| Compute info-map for coset B.
|
void | setInfoMap (Pnode &BSmaller, Pnode &BLarger, Idx ev) |
| Alternative: compute and set info-map to state data — this is for testing/debugging only, it did neither buy nor cost relevant performance.
|
void | invImage (Pnode &B, Pnode &Bstates, Idx ev, vector< Idx > &tb) |
bool | stateLeadsToPartition (Idx state, Pnode &node, Idx ev) |
| Test wehther a state has an ev-transitions into the specified coset.
|
void | partitionClass (Pnode &B) |
| Refine current partition with respect to coset B.
|
void | partitionSplitter (Pnode &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 (compound splitter).
|
void | writeNode (Pnode &node) |
| Function for recursively plotting the W-tree to console [debugging].
|
Private Attributes |
vector< State > | states |
vector< Idx > | events |
const Generator * | gen |
| Keep reference to Automaton.
|
Idx | nxidx |
| Counter to assign a unique index to each node [debugging/cosmetic only].
|
std::vector< Pnode * > | W |
| W-tree.
|
std::set< Pnode * > | ro |
| set of nodes that form current partition ro (i.e.
|
std::set< Pnode * > | roDividers |
| set of nodes that can possibly split classes in ro
|
Detailed Description
Definition at line 132 of file cfl_bisimulation.cpp.
Constructor & Destructor Documentation
faudes::Bisimulation::Bisimulation |
( |
const Generator & |
g | ) |
|
Contructor: keep a reference to the generator and initialize the partition and the W-Tree to represent the universal equivalence relation, i.e.
every two states are equivalent.
- Parameters
-
Definition at line 335 of file cfl_bisimulation.cpp.
faudes::Bisimulation::~Bisimulation |
( |
void |
| ) |
|
Member Function Documentation
void faudes::Bisimulation::computeInfoMap |
( |
Pnode & |
B, |
|
|
Pnode & |
Bstates, |
|
|
Idx |
ev, |
|
|
vector< Idx > & |
tb |
|
) |
| |
|
private |
Compute info-map for coset B.
- Parameters
-
B | Coset for which the info-map is computed |
Bstates | Node to provide states of B |
ev | Event to use |
tb | sorted vector containing all the states that have an ev-transition into coset B |
Definition at line 904 of file cfl_bisimulation.cpp.
void faudes::Bisimulation::computeInfoMaps |
( |
Pnode & |
node, |
|
|
Pnode * |
pSmallerPart, |
|
|
Pnode * |
pLargerPart, |
|
|
Idx |
ev |
|
) |
| |
|
private |
compute info-maps for two cosets pSmallerPart and pLargerpart.
- the current partition must be stable wrt the common parent the both parts
- the smaller part and larger part info maps must be initialized empty and by parent, resp.
- Parameters
-
node | Node to provide states of pSmallerPart (call with pSmallerPart) |
pSmallerPart | Child coset P1 of P with smaller number of states |
pLargerPart | Child coset P2 of P with larger number of states |
ev | Event |
Definition at line 654 of file cfl_bisimulation.cpp.
void faudes::Bisimulation::invImage |
( |
Pnode & |
B, |
|
|
Pnode & |
Bstates, |
|
|
Idx |
ev, |
|
|
vector< Idx > & |
tb |
|
) |
| |
|
private |
Pnode * faudes::Bisimulation::newnode |
( |
void |
| ) |
|
|
private |
insert new node to W-tree (empty stateset) note: this method only cares about indexing, and initialisation of node members note: cross references are left to the caller
Definition at line 392 of file cfl_bisimulation.cpp.
void faudes::Bisimulation::partition |
( |
std::map< Idx, Idx > & |
rMapStateToPartition, |
|
|
Generator & |
rGenPart |
|
) |
| |
Extract output generator that represents the resulting quotient automaton.
(need to invoke refine() befor)
- Parameters
-
rMapStateToPartition | Maps each state to its equivalence class |
rGenPart | Generator representing the result of the computation. Each state corresponds to an euivalence class |
Definition at line 1081 of file cfl_bisimulation.cpp.
void faudes::Bisimulation::partition |
( |
std::map< Idx, Idx > & |
rMapStateToPartition | ) |
|
Extract the coarsest quasi-congruence as an STL map (need to invoke refine() befor)
- Parameters
-
rMapStateToPartition | Maps each state to its equivalence class |
Definition at line 1149 of file cfl_bisimulation.cpp.
void faudes::Bisimulation::partition |
( |
std::list< StateSet > & |
rPartition | ) |
|
Extract the coarsest quasi-congruence as a list of equivalence classes.
(need to invoke refine() befor)
- Parameters
-
rPartition | List of equivcalent sets ogf states |
Definition at line 1175 of file cfl_bisimulation.cpp.
void faudes::Bisimulation::partitionClass |
( |
Pnode & |
B | ) |
|
|
private |
void faudes::Bisimulation::partitionSplitter |
( |
Pnode & |
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 (compound splitter).
- Parameters
-
Definition at line 412 of file cfl_bisimulation.cpp.
void faudes::Bisimulation::refine |
( |
void |
| ) |
|
Perform fixpoint iteration to obtain the coarset bisimulation relation.
Definition at line 1048 of file cfl_bisimulation.cpp.
void faudes::Bisimulation::setInfoMap |
( |
Pnode & |
BSmaller, |
|
|
Pnode & |
BLarger, |
|
|
Idx |
ev |
|
) |
| |
|
private |
Alternative: compute and set info-map to state data — this is for testing/debugging only, it did neither buy nor cost relevant performance.
Definition at line 956 of file cfl_bisimulation.cpp.
bool faudes::Bisimulation::stateLeadsToPartition |
( |
Idx |
state, |
|
|
Pnode & |
node, |
|
|
Idx |
ev |
|
) |
| |
|
private |
Test wehther a state has an ev-transitions into the specified coset.
- Parameters
-
state | State to be examined |
node | Coset |
ev | Event |
Definition at line 724 of file cfl_bisimulation.cpp.
void faudes::Bisimulation::writeNode |
( |
Pnode & |
node | ) |
|
|
private |
void faudes::Bisimulation::writeRo |
( |
void |
| ) |
|
void faudes::Bisimulation::writeW |
( |
void |
| ) |
|
Member Data Documentation
vector<Idx> faudes::Bisimulation::events |
|
private |
Idx faudes::Bisimulation::nxidx |
|
private |
Counter to assign a unique index to each node [debugging/cosmetic only].
Definition at line 225 of file cfl_bisimulation.cpp.
std::set<Pnode*> faudes::Bisimulation::ro |
|
private |
set of nodes that form current partition ro (i.e.
leaves of W)
Definition at line 245 of file cfl_bisimulation.cpp.
std::set<Pnode*> faudes::Bisimulation::roDividers |
|
private |
vector<State> faudes::Bisimulation::states |
|
private |
std::vector<Pnode*> faudes::Bisimulation::W |
|
private |
W-tree.
Contains all blocks ever created [required for destruction]
Definition at line 230 of file cfl_bisimulation.cpp.
The documentation for this class was generated from the following file:
libFAUDES 2.28a
--- 2016.09.13
--- c++ api documentaion by doxygen
|