1#ifndef STORM_STORAGE_BISIMULATIONDECOMPOSITION_H_
2#define STORM_STORAGE_BISIMULATIONDECOMPOSITION_H_
44template<
typename ModelType,
typename BlockDataType>
73 Options(ModelType
const&
model, std::vector<std::shared_ptr<storm::logic::Formula const>>
const& formulas);
103 return this->keepRewards;
107 return static_cast<bool>(optimalityType);
112 return optimalityType.get();
130 boost::optional<OptimizationDirection> optimalityType;
157 void addToRespectedAtomicPropositions(std::vector<std::shared_ptr<storm::logic::AtomicExpressionFormula const>>
const& expressions,
158 std::vector<std::shared_ptr<storm::logic::AtomicLabelFormula const>>
const& labels);
This class is the superclass of all decompositions of a sparse model into its bisimulation quotient.
storm::storage::SparseMatrix< ValueType > backwardTransitions
virtual void buildQuotient()=0
Builds the quotient model based on the previously computed equivalence classes (stored in the blocks ...
virtual void refinePartitionBasedOnSplitter(bisimulation::Block< BlockDataType > &splitter, std::vector< bisimulation::Block< BlockDataType > * > &splitterQueue)=0
Refines the partition by considering the given splitter.
storm::utility::ConstantsComparator< ValueType > comparator
std::shared_ptr< ModelType > getQuotient() const
Retrieves the quotient of the model under the computed bisimulation.
std::shared_ptr< ModelType > quotient
void performPartitionRefinement()
Performs the partition refinement on the model and thereby computes the equivalence classes under str...
virtual void splitInitialPartitionBasedOnRewards()
Splits the initial partition based on the (unique) reward model of the current model.
virtual void splitInitialPartitionBasedOnActionRewards(std::vector< std::set< ValueType > > const &rewardVector)
Splits the initial partition based on the given vector of action rewards.
storm::storage::bisimulation::Partition< BlockDataType > partition
void computeBisimulationDecomposition()
Computes the decomposition of the model into bisimulation equivalence classes.
ModelType::ValueType ValueType
ModelType::RewardModelType RewardModelType
void extractDecompositionBlocks()
Constructs the blocks of the decomposition object based on the current partition.
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 ~BisimulationDecomposition()=default
virtual void initializeMeasureDrivenPartition()
Creates the measure-driven initial partition for reaching psi states from phi states.
virtual void initializeLabelBasedPartition()
Initializes the initial partition based on all respected labels.
virtual void initialize()
A function that can initialize auxiliary data structures.
This class represents the decomposition of a model into blocks which are of the template type.
A class that holds a possibly non-square matrix in the compressed row storage format.
#define STORM_LOG_ASSERT(cond, message)
SettingsType const & getModule()
Get module.
BisimulationType resolveBisimulationTypeChoice(BisimulationTypeChoice c)
void preserveFormula(storm::logic::Formula const &formula)
Changes the options in a way that the given formula is preserved.
boost::optional< storm::storage::BitVector > psiStates
boost::optional< storm::storage::BitVector > phiStates
bool measureDrivenInitialPartition
void setType(BisimulationType t)
Sets the bisimulation type.
boost::optional< std::set< std::string > > respectedAtomicPropositions
An optional set of strings that indicate which of the atomic propositions of the model are to be resp...
bool buildQuotient
A flag that governs whether the quotient model is actually built or only the decomposition is compute...
bool isOptimizationDirectionSet() const
bool getKeepRewards() const
BisimulationType getType() const
OptimizationDirection getOptimizationDirection() const