Storm
A Modern Probabilistic Model Checker
|
This class is the superclass of all decompositions of a sparse model into its bisimulation quotient. More...
#include <BisimulationDecomposition.h>
Classes | |
struct | Options |
Public Types | |
typedef ModelType::ValueType | ValueType |
typedef ModelType::RewardModelType | RewardModelType |
![]() | |
typedef StateBlock | block_type |
typedef std::vector< block_type >::iterator | iterator |
typedef std::vector< block_type >::const_iterator | const_iterator |
Public Member Functions | |
BisimulationDecomposition (ModelType const &model, Options const &options) | |
Decomposes the given model into equivalance classes of a bisimulation. | |
virtual | ~BisimulationDecomposition ()=default |
std::shared_ptr< ModelType > | getQuotient () const |
Retrieves the quotient of the model under the computed bisimulation. | |
void | computeBisimulationDecomposition () |
Computes the decomposition of the model into bisimulation equivalence classes. | |
![]() | |
Decomposition () | |
Creates an empty decomposition. | |
Decomposition (Decomposition const &other) | |
Creates a decomposition by copying the given decomposition. | |
Decomposition (Decomposition &&other) | |
Creates a decomposition by moving the given decomposition. | |
virtual | ~Decomposition ()=default |
Default (virtual) deconstructor. | |
Decomposition & | operator= (Decomposition const &other) |
Assigns the contents of the given decomposition to the current one by copying the contents. | |
Decomposition & | operator= (Decomposition &&other) |
Assigns the contents of the given decomposition to the current one by moving the contents. | |
std::size_t | size () const |
Retrieves the number of blocks of this decomposition. | |
bool | empty () const |
Checks if the decomposition is empty. | |
iterator | begin () |
Retrieves an iterator that points to the first block of this decomposition. | |
const_iterator | begin () const |
Retrieves a const iterator that points to the first block of this decomposition. | |
iterator | end () |
Retrieves an iterator that points past the last block of this decomposition. | |
const_iterator | end () const |
Retrieves a const iterator that points past the last block of this decomposition. | |
block_type const & | getBlock (uint_fast64_t index) const |
Retrieves the block with the given index. | |
block_type & | getBlock (uint_fast64_t index) |
Retrieves the block with the given index. | |
block_type const & | operator[] (uint_fast64_t index) const |
Retrieves the block with the given index. | |
block_type & | operator[] (uint_fast64_t index) |
Retrieves the block with the given index. | |
storm::storage::SparseMatrix< ValueType > | extractPartitionDependencyGraph (storm::storage::SparseMatrix< ValueType > const &matrix) const |
Protected Member Functions | |
BisimulationDecomposition (ModelType const &model, storm::storage::SparseMatrix< ValueType > const &backwardTransitions, Options const &options) | |
Decomposes the given model into equivalance classes of a bisimulation. | |
void | performPartitionRefinement () |
Performs the partition refinement on the model and thereby computes the equivalence classes under strong bisimulation equivalence. | |
virtual void | refinePartitionBasedOnSplitter (bisimulation::Block< BlockDataType > &splitter, std::vector< bisimulation::Block< BlockDataType > * > &splitterQueue)=0 |
Refines the partition by considering the given splitter. | |
virtual void | buildQuotient ()=0 |
Builds the quotient model based on the previously computed equivalence classes (stored in the blocks of the decomposition. | |
virtual void | initializeLabelBasedPartition () |
Initializes the initial partition based on all respected labels. | |
virtual void | initializeMeasureDrivenPartition () |
Creates the measure-driven initial partition for reaching psi states from phi states. | |
virtual void | initialize () |
A function that can initialize auxiliary data structures. | |
virtual std::pair< storm::storage::BitVector, storm::storage::BitVector > | getStatesWithProbability01 ()=0 |
Computes the set of states with probability 0/1 for satisfying phi until psi. | |
virtual void | splitInitialPartitionBasedOnRewards () |
Splits the initial partition based on the (unique) reward model of the current model. | |
virtual void | splitInitialPartitionBasedOnRewards (std::vector< ValueType > const &rewardVector) |
Splits the initial partition based on the given reward vector. | |
virtual void | splitInitialPartitionBasedOnActionRewards (std::vector< std::set< ValueType > > const &rewardVector) |
Splits the initial partition based on the given vector of action rewards. | |
void | extractDecompositionBlocks () |
Constructs the blocks of the decomposition object based on the current partition. | |
Protected Attributes | |
ModelType const & | model |
storm::storage::SparseMatrix< ValueType > | backwardTransitions |
Options | options |
storm::storage::bisimulation::Partition< BlockDataType > | partition |
storm::utility::ConstantsComparator< ValueType > | comparator |
std::shared_ptr< ModelType > | quotient |
![]() | |
std::vector< block_type > | blocks |
This class is the superclass of all decompositions of a sparse model into its bisimulation quotient.
Definition at line 45 of file BisimulationDecomposition.h.
typedef ModelType::RewardModelType storm::storage::BisimulationDecomposition< ModelType, BlockDataType >::RewardModelType |
Definition at line 48 of file BisimulationDecomposition.h.
typedef ModelType::ValueType storm::storage::BisimulationDecomposition< ModelType, BlockDataType >::ValueType |
Definition at line 47 of file BisimulationDecomposition.h.
storm::storage::BisimulationDecomposition< ModelType, BlockDataType >::BisimulationDecomposition | ( | ModelType const & | model, |
Options const & | options | ||
) |
Decomposes the given model into equivalance classes of a bisimulation.
model | The model to decompose. |
options | The options to use during for the decomposition. |
Definition at line 182 of file BisimulationDecomposition.cpp.
|
virtualdefault |
|
protected |
Decomposes the given model into equivalance classes of a bisimulation.
model | The model to decompose. |
backwardTransition | The backward transitions of the model. |
options | The options to use during for the decomposition. |
Definition at line 188 of file BisimulationDecomposition.cpp.
|
protectedpure virtual |
Builds the quotient model based on the previously computed equivalence classes (stored in the blocks of the decomposition.
Implemented in storm::storage::DeterministicModelBisimulationDecomposition< ModelType >, and storm::storage::NondeterministicModelBisimulationDecomposition< ModelType >.
void storm::storage::BisimulationDecomposition< ModelType, BlockDataType >::computeBisimulationDecomposition | ( | ) |
Computes the decomposition of the model into bisimulation equivalence classes.
If requested, a quotient model is built.
Definition at line 208 of file BisimulationDecomposition.cpp.
|
protected |
Constructs the blocks of the decomposition object based on the current partition.
Definition at line 381 of file BisimulationDecomposition.cpp.
std::shared_ptr< ModelType > storm::storage::BisimulationDecomposition< ModelType, BlockDataType >::getQuotient | ( | ) | const |
Retrieves the quotient of the model under the computed bisimulation.
Definition at line 292 of file BisimulationDecomposition.cpp.
|
protectedpure virtual |
Computes the set of states with probability 0/1 for satisfying phi until psi.
This is used for the measure driven initial partition.
Implemented in storm::storage::DeterministicModelBisimulationDecomposition< ModelType >, and storm::storage::NondeterministicModelBisimulationDecomposition< ModelType >.
|
protectedvirtual |
A function that can initialize auxiliary data structures.
It is called after initializing the initial partition.
Reimplemented in storm::storage::NondeterministicModelBisimulationDecomposition< ModelType >.
Definition at line 376 of file BisimulationDecomposition.cpp.
|
protectedvirtual |
Initializes the initial partition based on all respected labels.
Reimplemented in storm::storage::DeterministicModelBisimulationDecomposition< ModelType >.
Definition at line 338 of file BisimulationDecomposition.cpp.
|
protectedvirtual |
Creates the measure-driven initial partition for reaching psi states from phi states.
Reimplemented in storm::storage::DeterministicModelBisimulationDecomposition< ModelType >.
Definition at line 356 of file BisimulationDecomposition.cpp.
|
protected |
Performs the partition refinement on the model and thereby computes the equivalence classes under strong bisimulation equivalence.
If required, the quotient model is built and may be retrieved using getQuotient().
Definition at line 258 of file BisimulationDecomposition.cpp.
|
protectedpure virtual |
Refines the partition by considering the given splitter.
All blocks that become potential splitters because of this refinement, are marked as splitters and inserted into the splitter vector.
splitter | The splitter to use. |
splitterVector | The vector into which to insert the newly discovered potential splitters. |
|
protectedvirtual |
Splits the initial partition based on the given vector of action rewards.
Definition at line 331 of file BisimulationDecomposition.cpp.
|
protectedvirtual |
Splits the initial partition based on the (unique) reward model of the current model.
Definition at line 299 of file BisimulationDecomposition.cpp.
|
protectedvirtual |
Splits the initial partition based on the given reward vector.
Definition at line 324 of file BisimulationDecomposition.cpp.
|
protected |
Definition at line 274 of file BisimulationDecomposition.h.
|
protected |
Definition at line 283 of file BisimulationDecomposition.h.
|
protected |
Definition at line 271 of file BisimulationDecomposition.h.
|
protected |
Definition at line 277 of file BisimulationDecomposition.h.
|
protected |
Definition at line 280 of file BisimulationDecomposition.h.
|
protected |
Definition at line 286 of file BisimulationDecomposition.h.