@ -1,4 +1,6 @@
# include <storm-pars/transformer/SparseParametricModelSimplifier.h>
# include <storm-pars/transformer/SparseParametricDtmcSimplifier.h>
# include "storm-pars/api/storm-pars.h"
# include "storm-pars/api/storm-pars.h"
# include "storm-pars/settings/ParsSettings.h"
# include "storm-pars/settings/ParsSettings.h"
# include "storm-pars/settings/modules/ParametricSettings.h"
# include "storm-pars/settings/modules/ParametricSettings.h"
@ -612,6 +614,7 @@ namespace storm {
STORM_LOG_THROW ( model | | input . properties . empty ( ) , storm : : exceptions : : InvalidSettingsException , " No input model. " ) ;
STORM_LOG_THROW ( model | | input . properties . empty ( ) , storm : : exceptions : : InvalidSettingsException , " No input model. " ) ;
if ( model ) {
if ( model ) {
auto preprocessingResult = storm : : pars : : preprocessModel < DdType , ValueType > ( model , input ) ;
auto preprocessingResult = storm : : pars : : preprocessModel < DdType , ValueType > ( model , input ) ;
if ( preprocessingResult . second ) {
if ( preprocessingResult . second ) {
@ -624,9 +627,21 @@ namespace storm {
if ( parSettings . isMonotonicityAnalysisSet ( ) ) {
if ( parSettings . isMonotonicityAnalysisSet ( ) ) {
// Do something more fancy.
// Do something more fancy.
std : : cout < < " Hello, Jip " < < std : : endl ;
std : : cout < < " Hello, Jip " < < std : : endl ;
auto testModel = ( model - > as < storm : : models : : sparse : : Dtmc < ValueType > > ( ) ) ;
// TODO: check if it is a Dtmc
auto simplifier = storm : : transformer : : SparseParametricDtmcSimplifier < storm : : models : : sparse : : Dtmc < ValueType > > ( * testModel ) ;
std : : shared_ptr < storm : : models : : sparse : : Model < ValueType > > sparseModel = model - > as < storm : : models : : sparse : : Model < ValueType > > ( ) ;
std : : vector < std : : shared_ptr < storm : : logic : : Formula const > > formulas = storm : : api : : extractFormulasFromProperties ( input . properties ) ;
std : : vector < std : : shared_ptr < storm : : logic : : Formula const > > formulas = storm : : api : : extractFormulasFromProperties ( input . properties ) ;
STORM_LOG_THROW ( formulas . begin ( ) ! = formulas . end ( ) , storm : : exceptions : : NotSupportedException , " Only one formula at the time supported " ) ;
if ( ! simplifier . simplify ( * ( formulas [ 0 ] ) ) ) {
STORM_LOG_THROW ( false , storm : : exceptions : : UnexpectedException , " Simplifying the model was not successfull. " ) ;
}
std : : shared_ptr < storm : : models : : sparse : : Model < ValueType > > sparseModel = simplifier . getSimplifiedModel ( ) ; //->as<storm::models::sparse::Model<ValueType>>();
// formulas = std::vector<std::shared_ptr<storm::logic::Formula const>>({simplifier.getSimplifiedFormula()});//storm::api::extractFormulasFromProperties(input.properties);
STORM_LOG_THROW ( ( * ( formulas [ 0 ] ) ) . isProbabilityOperatorFormula ( ) & & ( * ( formulas [ 0 ] ) ) . asProbabilityOperatorFormula ( ) . getSubformula ( ) . isUntilFormula ( ) , storm : : exceptions : : NotSupportedException , " Expecting until formula " ) ;
STORM_LOG_THROW ( ( * ( formulas [ 0 ] ) ) . isProbabilityOperatorFormula ( ) & & ( * ( formulas [ 0 ] ) ) . asProbabilityOperatorFormula ( ) . getSubformula ( ) . isUntilFormula ( ) , storm : : exceptions : : NotSupportedException , " Expecting until formula " ) ;
storm : : modelchecker : : SparsePropositionalModelChecker < storm : : models : : sparse : : Model < ValueType > > propositionalChecker ( * sparseModel ) ;
storm : : modelchecker : : SparsePropositionalModelChecker < storm : : models : : sparse : : Model < ValueType > > propositionalChecker ( * sparseModel ) ;