| 
					
					
						
							
						
					
					
				 | 
				@ -22,6 +22,7 @@ | 
			
		
		
	
		
			
				 | 
				 | 
				#include "storm/modelchecker/results/QualitativeCheckResult.h"
 | 
				 | 
				 | 
				#include "storm/modelchecker/results/QualitativeCheckResult.h"
 | 
			
		
		
	
		
			
				 | 
				 | 
				#include "storm/environment/solver/MinMaxSolverEnvironment.h"
 | 
				 | 
				 | 
				#include "storm/environment/solver/MinMaxSolverEnvironment.h"
 | 
			
		
		
	
		
			
				 | 
				 | 
				#include "storm/environment/solver/TopologicalSolverEnvironment.h"
 | 
				 | 
				 | 
				#include "storm/environment/solver/TopologicalSolverEnvironment.h"
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				#include "storm/environment/solver/MultiplierEnvironment.h"
 | 
			
		
		
	
		
			
				 | 
				 | 
				#include "storm/settings/modules/CoreSettings.h"
 | 
				 | 
				 | 
				#include "storm/settings/modules/CoreSettings.h"
 | 
			
		
		
	
		
			
				 | 
				 | 
				#include "storm/logic/Formulas.h"
 | 
				 | 
				 | 
				#include "storm/logic/Formulas.h"
 | 
			
		
		
	
		
			
				 | 
				 | 
				#include "storm/storage/jani/Property.h"
 | 
				 | 
				 | 
				#include "storm/storage/jani/Property.h"
 | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -31,7 +32,7 @@ namespace { | 
			
		
		
	
		
			
				 | 
				 | 
				     | 
				 | 
				 | 
				     | 
			
		
		
	
		
			
				 | 
				 | 
				    enum class MdpEngine {PrismSparse, JaniSparse, JitSparse, Hybrid, PrismDd, JaniDd}; | 
				 | 
				 | 
				    enum class MdpEngine {PrismSparse, JaniSparse, JitSparse, Hybrid, PrismDd, JaniDd}; | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				    class SparseDoubleValueIterationEnvironment { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    class SparseDoubleValueIterationGmmxxGaussSeidelMultEnvironment { | 
			
		
		
	
		
			
				 | 
				 | 
				    public: | 
				 | 
				 | 
				    public: | 
			
		
		
	
		
			
				 | 
				 | 
				        static const storm::dd::DdType ddType = storm::dd::DdType::Sylvan; // Unused for sparse models
 | 
				 | 
				 | 
				        static const storm::dd::DdType ddType = storm::dd::DdType::Sylvan; // Unused for sparse models
 | 
			
		
		
	
		
			
				 | 
				 | 
				        static const MdpEngine engine = MdpEngine::PrismSparse; | 
				 | 
				 | 
				        static const MdpEngine engine = MdpEngine::PrismSparse; | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -42,6 +43,59 @@ namespace { | 
			
		
		
	
		
			
				 | 
				 | 
				            storm::Environment env; | 
				 | 
				 | 
				            storm::Environment env; | 
			
		
		
	
		
			
				 | 
				 | 
				            env.solver().minMax().setMethod(storm::solver::MinMaxMethod::ValueIteration); | 
				 | 
				 | 
				            env.solver().minMax().setMethod(storm::solver::MinMaxMethod::ValueIteration); | 
			
		
		
	
		
			
				 | 
				 | 
				            env.solver().minMax().setPrecision(storm::utility::convertNumber<storm::RationalNumber>(1e-10)); | 
				 | 
				 | 
				            env.solver().minMax().setPrecision(storm::utility::convertNumber<storm::RationalNumber>(1e-10)); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            env.solver().minMax().setMultiplicationStyle(storm::solver::MultiplicationStyle::GaussSeidel); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            env.solver().multiplier().setType(storm::solver::MultiplierType::Gmmxx); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            return env; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    }; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    class SparseDoubleValueIterationGmmxxRegularMultEnvironment { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    public: | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        static const storm::dd::DdType ddType = storm::dd::DdType::Sylvan; // Unused for sparse models
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        static const MdpEngine engine = MdpEngine::PrismSparse; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        static const bool isExact = false; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        typedef double ValueType; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        typedef storm::models::sparse::Mdp<ValueType> ModelType; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        static storm::Environment createEnvironment() { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            storm::Environment env; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            env.solver().minMax().setMethod(storm::solver::MinMaxMethod::ValueIteration); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            env.solver().minMax().setPrecision(storm::utility::convertNumber<storm::RationalNumber>(1e-10)); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            env.solver().minMax().setMultiplicationStyle(storm::solver::MultiplicationStyle::Regular); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            env.solver().multiplier().setType(storm::solver::MultiplierType::Gmmxx); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            return env; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    }; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				     | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    class SparseDoubleValueIterationNativeGaussSeidelMultEnvironment { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    public: | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        static const storm::dd::DdType ddType = storm::dd::DdType::Sylvan; // Unused for sparse models
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        static const MdpEngine engine = MdpEngine::PrismSparse; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        static const bool isExact = false; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        typedef double ValueType; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        typedef storm::models::sparse::Mdp<ValueType> ModelType; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        static storm::Environment createEnvironment() { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            storm::Environment env; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            env.solver().minMax().setMethod(storm::solver::MinMaxMethod::ValueIteration); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            env.solver().minMax().setPrecision(storm::utility::convertNumber<storm::RationalNumber>(1e-10)); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            env.solver().minMax().setMultiplicationStyle(storm::solver::MultiplicationStyle::GaussSeidel); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            env.solver().multiplier().setType(storm::solver::MultiplierType::Native); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            return env; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    }; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    class SparseDoubleValueIterationNativeRegularMultEnvironment { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				    public: | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        static const storm::dd::DdType ddType = storm::dd::DdType::Sylvan; // Unused for sparse models
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        static const MdpEngine engine = MdpEngine::PrismSparse; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        static const bool isExact = false; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        typedef double ValueType; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        typedef storm::models::sparse::Mdp<ValueType> ModelType; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        static storm::Environment createEnvironment() { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            storm::Environment env; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            env.solver().minMax().setMethod(storm::solver::MinMaxMethod::ValueIteration); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            env.solver().minMax().setPrecision(storm::utility::convertNumber<storm::RationalNumber>(1e-10)); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            env.solver().minMax().setMultiplicationStyle(storm::solver::MultiplicationStyle::Regular); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            env.solver().multiplier().setType(storm::solver::MultiplierType::Native); | 
			
		
		
	
		
			
				 | 
				 | 
				            return env; | 
				 | 
				 | 
				            return env; | 
			
		
		
	
		
			
				 | 
				 | 
				        } | 
				 | 
				 | 
				        } | 
			
		
		
	
		
			
				 | 
				 | 
				    }; | 
				 | 
				 | 
				    }; | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -447,7 +501,10 @@ namespace { | 
			
		
		
	
		
			
				 | 
				 | 
				    }; | 
				 | 
				 | 
				    }; | 
			
		
		
	
		
			
				 | 
				 | 
				   | 
				 | 
				 | 
				   | 
			
		
		
	
		
			
				 | 
				 | 
				    typedef ::testing::Types< | 
				 | 
				 | 
				    typedef ::testing::Types< | 
			
		
		
	
		
			
				 | 
				 | 
				            SparseDoubleValueIterationEnvironment, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            SparseDoubleValueIterationGmmxxGaussSeidelMultEnvironment, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            SparseDoubleValueIterationGmmxxRegularMultEnvironment, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            SparseDoubleValueIterationNativeGaussSeidelMultEnvironment, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            SparseDoubleValueIterationNativeRegularMultEnvironment, | 
			
		
		
	
		
			
				 | 
				 | 
				            JaniSparseDoubleValueIterationEnvironment, | 
				 | 
				 | 
				            JaniSparseDoubleValueIterationEnvironment, | 
			
		
		
	
		
			
				 | 
				 | 
				            JitSparseDoubleValueIterationEnvironment, | 
				 | 
				 | 
				            JitSparseDoubleValueIterationEnvironment, | 
			
		
		
	
		
			
				 | 
				 | 
				            SparseDoubleIntervalIterationEnvironment, | 
				 | 
				 | 
				            SparseDoubleIntervalIterationEnvironment, | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |