STORM_LOG_THROW(this->canHandle(checkTask),storm::exceptions::InvalidArgumentException,"The model checker is not able to check the formula '"<<formula<<"'.");
STORM_LOG_THROW(this->canHandle(checkTask),storm::exceptions::InvalidArgumentException,"The model checker is not able to check the formula '"<<formula<<"'.");
if(formula.isStateFormula()){
if(formula.isStateFormula()){
@ -20,7 +28,8 @@ namespace storm {
STORM_LOG_THROW(false,storm::exceptions::InvalidArgumentException,"The given formula '"<<formula<<"' is invalid.");
STORM_LOG_THROW(false,storm::exceptions::InvalidArgumentException,"The given formula '"<<formula<<"' is invalid.");
STORM_LOG_THROW(stateFormula.getLeftSubformula().isStateFormula()&&stateFormula.getRightSubformula().isStateFormula(),storm::exceptions::InvalidArgumentException,"The given formula is invalid.");
STORM_LOG_THROW(stateFormula.getLeftSubformula().isStateFormula()&&stateFormula.getRightSubformula().isStateFormula(),storm::exceptions::InvalidArgumentException,"The given formula is invalid.");
STORM_LOG_THROW(result->isQuantitative(),storm::exceptions::InvalidOperationException,"Unable to perform comparison operation on non-quantitative result.");
STORM_LOG_THROW(result->isQuantitative(),storm::exceptions::InvalidOperationException,"Unable to perform comparison operation on non-quantitative result.");
STORM_LOG_THROW(result->isQuantitative(),storm::exceptions::InvalidOperationException,"Unable to perform comparison operation on non-quantitative result.");
STORM_LOG_THROW(result->isQuantitative(),storm::exceptions::InvalidOperationException,"Unable to perform comparison operation on non-quantitative result.");
STORM_LOG_THROW(stateFormula.getSubformula().isReachabilityTimeFormula(),storm::exceptions::InvalidArgumentException,"The given formula is invalid.");
STORM_LOG_THROW(stateFormula.getSubformula().isReachabilityTimeFormula(),storm::exceptions::InvalidArgumentException,"The given formula is invalid.");
@ -209,13 +241,14 @@ namespace storm {
if(checkTask.isBoundSet()){
if(checkTask.isBoundSet()){
STORM_LOG_THROW(result->isQuantitative(),storm::exceptions::InvalidOperationException,"Unable to perform comparison operation on non-quantitative result.");
STORM_LOG_THROW(result->isQuantitative(),storm::exceptions::InvalidOperationException,"Unable to perform comparison operation on non-quantitative result.");
STORM_LOG_THROW(stateFormula.getSubformula().isStateFormula(),storm::exceptions::InvalidArgumentException,"The given formula is invalid.");
STORM_LOG_THROW(stateFormula.getSubformula().isStateFormula(),storm::exceptions::InvalidArgumentException,"The given formula is invalid.");
@ -223,15 +256,16 @@ namespace storm {
if(checkTask.isBoundSet()){
if(checkTask.isBoundSet()){
STORM_LOG_THROW(result->isQuantitative(),storm::exceptions::InvalidOperationException,"Unable to perform comparison operation on non-quantitative result.");
STORM_LOG_THROW(result->isQuantitative(),storm::exceptions::InvalidOperationException,"Unable to perform comparison operation on non-quantitative result.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(pathFormula.getLeftSubformula().isTrueFormula(),storm::exceptions::NotImplementedException,"Only bounded properties of the form 'true U[t1, t2] phi' are currently supported.");
STORM_LOG_THROW(pathFormula.getLeftSubformula().isTrueFormula(),storm::exceptions::NotImplementedException,"Only bounded properties of the form 'true U[t1, t2] phi' are currently supported.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(this->getModel().isClosed(),storm::exceptions::InvalidPropertyException,"Unable to compute reachability rewards in non-closed Markov automaton.");
STORM_LOG_THROW(this->getModel().isClosed(),storm::exceptions::InvalidPropertyException,"Unable to compute reachability rewards in non-closed Markov automaton.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(this->getModel().isClosed(),storm::exceptions::InvalidPropertyException,"Unable to compute long-run average in non-closed Markov automaton.");
STORM_LOG_THROW(this->getModel().isClosed(),storm::exceptions::InvalidPropertyException,"Unable to compute long-run average in non-closed Markov automaton.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(this->getModel().isClosed(),storm::exceptions::InvalidPropertyException,"Unable to compute expected times in non-closed Markov automaton.");
STORM_LOG_THROW(this->getModel().isClosed(),storm::exceptions::InvalidPropertyException,"Unable to compute expected times in non-closed Markov automaton.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(pathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidPropertyException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(pathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidPropertyException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(rewardPathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidPropertyException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(rewardPathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidPropertyException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(rewardPathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidPropertyException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(rewardPathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidPropertyException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(this->getModel().getInitialStates().getNumberOfSetBits()==1,storm::exceptions::InvalidPropertyException,"Cannot compute conditional probabilities on MDPs with more than one initial state.");
STORM_LOG_THROW(this->getModel().getInitialStates().getNumberOfSetBits()==1,storm::exceptions::InvalidPropertyException,"Cannot compute conditional probabilities on MDPs with more than one initial state.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(rewardPathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidArgumentException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(rewardPathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidArgumentException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(rewardPathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidArgumentException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(rewardPathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidArgumentException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(pathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidPropertyException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(pathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidPropertyException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(rewardPathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidPropertyException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(rewardPathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidPropertyException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidArgumentException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(rewardPathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidPropertyException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(rewardPathFormula.hasDiscreteTimeBound(),storm::exceptions::InvalidPropertyException,"Formula needs to have a discrete time bound.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");
STORM_LOG_THROW(checkTask.isOptimizationDirectionSet(),storm::exceptions::InvalidPropertyException,"Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model.");