| 
					
					
						
							
						
					
					
				 | 
				@ -18,9 +18,8 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				        template<typename ValueType> | 
				 | 
				 | 
				        template<typename ValueType> | 
			
		
		
	
		
			
				 | 
				 | 
				        typename DFTModelChecker<ValueType>::dft_results DFTModelChecker<ValueType>::check(storm::storage::DFT<ValueType> const& origDft, std::vector<std::shared_ptr<const storm::logic::Formula>> const& properties, bool symred, bool allowModularisation, bool enableDC, double approximationError, storm::builder::ApproximationHeuristic approximationHeuristic) { | 
				 | 
				 | 
				        typename DFTModelChecker<ValueType>::dft_results DFTModelChecker<ValueType>::check(storm::storage::DFT<ValueType> const& origDft, std::vector<std::shared_ptr<const storm::logic::Formula>> const& properties, bool symred, bool allowModularisation, bool enableDC, double approximationError, storm::builder::ApproximationHeuristic approximationHeuristic) { | 
			
		
		
	
		
			
				 | 
				 | 
				            // Initialize
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				            this->approximationError = approximationError; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				            totalTimer.start(); | 
				 | 
				 | 
				            totalTimer.start(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            dft_results results; | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            // Optimizing DFT
 | 
				 | 
				 | 
				            // Optimizing DFT
 | 
			
		
		
	
		
			
				 | 
				 | 
				            storm::storage::DFT<ValueType> dft = origDft.optimize(); | 
				 | 
				 | 
				            storm::storage::DFT<ValueType> dft = origDft.optimize(); | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -34,13 +33,13 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                // Model checking
 | 
				 | 
				 | 
				                // Model checking
 | 
			
		
		
	
		
			
				 | 
				 | 
				                std::vector<ValueType> resultsValue = checkModel(model, properties); | 
				 | 
				 | 
				                std::vector<ValueType> resultsValue = checkModel(model, properties); | 
			
		
		
	
		
			
				 | 
				 | 
				                for (ValueType result : resultsValue) { | 
				 | 
				 | 
				                for (ValueType result : resultsValue) { | 
			
		
		
	
		
			
				 | 
				 | 
				                    checkResults.push_back(result); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    results.push_back(result); | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				            } else { | 
				 | 
				 | 
				            } else { | 
			
		
		
	
		
			
				 | 
				 | 
				                checkResults = checkHelper(dft, properties, symred, allowModularisation, enableDC, approximationError, approximationHeuristic); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                results = checkHelper(dft, properties, symred, allowModularisation, enableDC, approximationError, approximationHeuristic); | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				            totalTimer.stop(); | 
				 | 
				 | 
				            totalTimer.stop(); | 
			
		
		
	
		
			
				 | 
				 | 
				            return checkResults; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            return results; | 
			
		
		
	
		
			
				 | 
				 | 
				        } | 
				 | 
				 | 
				        } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				        template<typename ValueType> | 
				 | 
				 | 
				        template<typename ValueType> | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -442,22 +441,16 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				        } | 
				 | 
				 | 
				        } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				        template<typename ValueType> | 
				 | 
				 | 
				        template<typename ValueType> | 
			
		
		
	
		
			
				 | 
				 | 
				        void DFTModelChecker<ValueType>::printResults(std::ostream& os) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        void DFTModelChecker<ValueType>::printResults(dft_results const& results, std::ostream& os) { | 
			
		
		
	
		
			
				 | 
				 | 
				            bool first = true; | 
				 | 
				 | 
				            bool first = true; | 
			
		
		
	
		
			
				 | 
				 | 
				            os << "Result: ["; | 
				 | 
				 | 
				            os << "Result: ["; | 
			
		
		
	
		
			
				 | 
				 | 
				            for (auto result : checkResults) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                if (!first) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    os << ", "; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                if (this->approximationError > 0.0) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    approximation_result resultApprox = boost::get<approximation_result>(result); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    os << "(" << resultApprox.first << ", " << resultApprox.second << ")"; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                } else { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    os << boost::get<ValueType>(result); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            for (auto result : results) { | 
			
		
		
	
		
			
				 | 
				 | 
				                if (first) { | 
				 | 
				 | 
				                if (first) { | 
			
		
		
	
		
			
				 | 
				 | 
				                    first = false; | 
				 | 
				 | 
				                    first = false; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                } else { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    os << ", "; | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                os << boost::apply_visitor(ResultOutputVisitor(), result); | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				            os << "]" << std::endl; | 
				 | 
				 | 
				            os << "]" << std::endl; | 
			
		
		
	
		
			
				 | 
				 | 
				        } | 
				 | 
				 | 
				        } | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |