40template<
typename ModelType,
typename BlockDataType>
69 Options(ModelType
const&
model, std::vector<std::shared_ptr<storm::logic::Formula const>>
const& formulas);
86 STORM_LOG_WARN_COND(!discounted,
"Weak bisimulation does not preserve discounted properties.");
102 return this->discounted;
106 return this->keepRewards;
110 this->keepRewards = keepRewards;
114 return static_cast<bool>(optimalityType);
125 return optimalityType.value();
143 std::optional<OptimizationDirection> optimalityType;
174 void addToRespectedAtomicPropositions(std::vector<std::shared_ptr<storm::logic::AtomicExpressionFormula const>>
const&
expressions,
175 std::vector<std::shared_ptr<storm::logic::AtomicLabelFormula const>>
const& labels);
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 > * > &splitterVector)=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.
BisimulationDecomposition(ModelType const &model, Options const &options)
Decomposes the given model into equivalence classes of a bisimulation.
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.
A class that holds a possibly non-square matrix in the compressed row storage format.
#define STORM_LOG_ASSERT(cond, message)
#define STORM_LOG_WARN_COND(cond, message)
SettingsType const & getModule()
Get module.
BisimulationType resolveBisimulationTypeChoice(BisimulationTypeChoice c)
TargetType convertNumber(SourceType const &number)
solver::OptimizationDirection OptimizationDirection
static const bool IsExact
void preserveFormula(storm::logic::Formula const &formula)
Changes the options in a way that the given formula is preserved.
bool measureDrivenInitialPartition
void setType(BisimulationType t)
Sets the bisimulation type.
ValueType getTolerance() const
std::optional< storm::storage::BitVector > phiStates
void setKeepRewards(bool keepRewards)
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
std::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...
BisimulationType getType() const
std::optional< storm::storage::BitVector > psiStates
OptimizationDirection getOptimizationDirection() const
bool getDiscounted() const