@ -2,12 +2,15 @@
# include <ostream>
# include <boost/optional.hpp>
# include <storm/modelchecker/parametric/SparseParameterLiftingModelChecker.h>
# include "storm/utility/region.h"
# include "storm/modelchecker/region/AbstractSparseRegionModelChecker.h"
# include "storm/modelchecker/region/ParameterRegion.h"
# include "storm/modelchecker/region/ApproximationModel.h"
# include "storm/modelchecker/parametric/SparseInstantiationModelChecker.h"
# include "storm/modelchecker/parametric/SparseParameterLiftingModelChecker.h"
# include "storm/models/sparse/StandardRewardModel.h"
# include "storm/models/sparse/Model.h"
@ -39,7 +42,7 @@ namespace storm {
storm : : settings : : modules : : RegionSettings : : ApproxMode approxMode ;
storm : : settings : : modules : : RegionSettings : : SmtMode smtMode ;
} ;
template < typename ParametricSparseModelType , typename ConstantType >
class SparseRegionModelChecker : public AbstractSparseRegionModelChecker < typename ParametricSparseModelType : : ValueType , ConstantType > {
public :
@ -191,7 +194,7 @@ namespace storm {
* Returns the approximation model .
* If it is not yet available , it is computed .
*/
std : : shared_ptr < ApproximationModel < ParametricSparseModelType , ConstantType > > const & getApproximationModel ( ) ;
std : : shared_ptr < storm : : modelchecker : : parametric : : SparseParameterLiftingModelChecker < ParametricSparseModelType , ConstantType > > const & getApproximationModel ( ) ;
/*!
* Checks the value of the function at some sampling points within the given region .
@ -240,13 +243,18 @@ namespace storm {
/ / the model that can be instantiated to check the value at a certain point
std : : shared_ptr < storm : : modelchecker : : parametric : : SparseInstantiationModelChecker < ParametricSparseModelType , ConstantType > > samplingModel ;
private :
/*!
/*!
* initializes the Approximation Model
*
*
* @ note does not check whether approximation can be applied
*/
void initializeApproximationModel ( ParametricSparseModelType const & model , std : : shared_ptr < storm : : logic : : OperatorFormula const > formula ) ;
virtual void initializeApproximationModel ( ParametricSparseModelType const & model , std : : shared_ptr < storm : : logic : : OperatorFormula const > formula ) = 0 ;
/ / the model that is used to approximate the reachability values
std : : shared_ptr < storm : : modelchecker : : parametric : : SparseParameterLiftingModelChecker < ParametricSparseModelType , ConstantType > > approximationModel ;
private :
/ / The model this model checker is supposed to analyze .
@ -261,8 +269,6 @@ namespace storm {
std : : shared_ptr < storm : : logic : : OperatorFormula const > simpleFormula ;
/ / a flag that is true if approximation is applicable , i . e . , there are only linear functions at transitions of the model
bool isApproximationApplicable ;
/ / the model that is used to approximate the reachability values
std : : shared_ptr < ApproximationModel < ParametricSparseModelType , ConstantType > > approximationModel ;
/ / a flag that is true iff the resulting reachability function is constant
boost : : optional < ConstantType > constantResult ;