|
|
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.28c
--- 2016.09.30
--- c++ api documentaion by doxygen
|