@ -4,6 +4,7 @@
# include "storm/logic/FragmentSpecification.h"
# include "storm/logic/FragmentSpecification.h"
# include "storm/modelchecker/results/ExplicitQuantitativeCheckResult.h"
# include "storm/modelchecker/results/ExplicitQuantitativeCheckResult.h"
# include "storm/modelchecker/results/ExplicitQualitativeCheckResult.h"
# include "storm/modelchecker/results/ExplicitQualitativeCheckResult.h"
# include "storm/utility/vector.h"
# include "storm/models/sparse/Dtmc.h"
# include "storm/models/sparse/Dtmc.h"
# include "storm/models/sparse/Mdp.h"
# include "storm/models/sparse/Mdp.h"
# include "storm/models/sparse/StandardRewardModel.h"
# include "storm/models/sparse/StandardRewardModel.h"
@ -130,6 +131,18 @@ namespace storm {
}
}
}
}
template < typename SparseModelType , typename ConstantType >
std : : unique_ptr < QuantitativeCheckResult < ConstantType > > SparseParameterLiftingModelChecker < SparseModelType , ConstantType > : : getBound ( storm : : storage : : ParameterRegion < typename SparseModelType : : ValueType > const & region , storm : : solver : : OptimizationDirection const & dirForParameters ) {
STORM_LOG_WARN_COND ( this - > currentCheckTask - > getFormula ( ) . hasQuantitativeResult ( ) , " Computing quantitative bounds for a qualitative formula... " ) ;
return std : : make_unique < ExplicitQuantitativeCheckResult < ConstantType > > ( std : : move ( computeQuantitativeValues ( region , dirForParameters ) - > template asExplicitQuantitativeCheckResult < ConstantType > ( ) ) ) ;
}
template < typename SparseModelType , typename ConstantType >
typename SparseModelType : : ValueType SparseParameterLiftingModelChecker < SparseModelType , ConstantType > : : getBoundAtInitState ( storm : : storage : : ParameterRegion < typename SparseModelType : : ValueType > const & region , storm : : solver : : OptimizationDirection const & dirForParameters ) {
STORM_LOG_THROW ( this - > parametricModel - > getInitialStates ( ) . getNumberOfSetBits ( ) = = 1 , storm : : exceptions : : NotSupportedException , " Getting a bound at the initial state requires a model with a single initial state. " ) ;
return storm : : utility : : convertNumber < typename SparseModelType : : ValueType > ( getBound ( region , dirForParameters ) - > template asExplicitQuantitativeCheckResult < ConstantType > ( ) [ * this - > parametricModel - > getInitialStates ( ) . begin ( ) ] ) ;
}
template < typename SparseModelType , typename ConstantType >
template < typename SparseModelType , typename ConstantType >
SparseModelType const & SparseParameterLiftingModelChecker < SparseModelType , ConstantType > : : getConsideredParametricModel ( ) const {
SparseModelType const & SparseParameterLiftingModelChecker < SparseModelType , ConstantType > : : getConsideredParametricModel ( ) const {
return * parametricModel ;
return * parametricModel ;