|  | @ -36,23 +36,31 @@ | 
		
	
		
			
				|  |  | /*!
 |  |  | /*!
 | 
		
	
		
			
				|  |  |  * Load DFT from filename, build corresponding Model and check against given property. |  |  |  * Load DFT from filename, build corresponding Model and check against given property. | 
		
	
		
			
				|  |  |  * |  |  |  * | 
		
	
		
			
				|  |  |  * @param filename Path to DFT file in Galileo format. |  |  |  | 
		
	
		
			
				|  |  |  * @param property PCTC formula capturing the property to check. |  |  |  * @param property PCTC formula capturing the property to check. | 
		
	
		
			
				|  |  |  * @param symred Flag whether symmetry reduction should be used. |  |  |  * @param symred Flag whether symmetry reduction should be used. | 
		
	
		
			
				|  |  |  * @param allowModularisation Flag whether modularisation should be applied if possible. |  |  |  * @param allowModularisation Flag whether modularisation should be applied if possible. | 
		
	
		
			
				|  |  |  * @param enableDC Flag whether Don't Care propagation should be used. |  |  |  * @param enableDC Flag whether Don't Care propagation should be used. | 
		
	
		
			
				|  |  |  */ |  |  |  */ | 
		
	
		
			
				|  |  | template <typename ValueType> |  |  | template <typename ValueType> | 
		
	
		
			
				|  |  | void analyzeDFT(std::string filename, std::string property, bool symred, bool allowModularisation, bool enableDC, double approximationError) { |  |  |  | 
		
	
		
			
				|  |  |     std::cout << "Running DFT analysis on file " << filename << " with property " << property << std::endl; |  |  |  | 
		
	
		
			
				|  |  |  |  |  | void analyzeDFT(std::string property, bool symred, bool allowModularisation, bool enableDC, double approximationError) { | 
		
	
		
			
				|  |  |  |  |  |     storm::settings::modules::DFTSettings const& dftSettings = storm::settings::getModule<storm::settings::modules::DFTSettings>(); | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |  |  |  |     std::shared_ptr<storm::storage::DFT<ValueType>> dft; | 
		
	
		
			
				|  |  |  |  |  |     if (dftSettings.isDftJsonFileSet()) { | 
		
	
		
			
				|  |  |  |  |  |         storm::parser::DFTJsonParser<ValueType> parser; | 
		
	
		
			
				|  |  |  |  |  |         std::cout << "Running DFT analysis on file " << dftSettings.getDftJsonFilename() << " with property " << property << std::endl; | 
		
	
		
			
				|  |  |  |  |  |         dft = std::make_shared<storm::storage::DFT<ValueType>>(parser.parseJson(dftSettings.getDftJsonFilename())); | 
		
	
		
			
				|  |  |  |  |  |     } else { | 
		
	
		
			
				|  |  |         storm::parser::DFTGalileoParser<ValueType> parser; |  |  |         storm::parser::DFTGalileoParser<ValueType> parser; | 
		
	
		
			
				|  |  |     storm::storage::DFT<ValueType> dft = parser.parseDFT(filename); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |         std::cout << "Running DFT analysis on file " << dftSettings.getDftFilename() << " with property " << property << std::endl; | 
		
	
		
			
				|  |  |  |  |  |         dft = std::make_shared<storm::storage::DFT<ValueType>>(parser.parseDFT(dftSettings.getDftFilename())); | 
		
	
		
			
				|  |  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
 | 
		
	
		
			
				|  |  |     std::vector<std::shared_ptr<storm::logic::Formula const>> formulas = storm::extractFormulasFromProperties(storm::parsePropertiesForExplicit(property)); |  |  |     std::vector<std::shared_ptr<storm::logic::Formula const>> formulas = storm::extractFormulasFromProperties(storm::parsePropertiesForExplicit(property)); | 
		
	
		
			
				|  |  |     STORM_LOG_ASSERT(formulas.size() == 1, "Wrong number of formulas."); |  |  |     STORM_LOG_ASSERT(formulas.size() == 1, "Wrong number of formulas."); | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |     storm::modelchecker::DFTModelChecker<ValueType> modelChecker; |  |  |     storm::modelchecker::DFTModelChecker<ValueType> modelChecker; | 
		
	
		
			
				|  |  |     modelChecker.check(dft, formulas[0], symred, allowModularisation, enableDC, approximationError); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |     modelChecker.check(*dft, formulas[0], symred, allowModularisation, enableDC, approximationError); | 
		
	
		
			
				|  |  |     modelChecker.printTimings(); |  |  |     modelChecker.printTimings(); | 
		
	
		
			
				|  |  |     modelChecker.printResult(); |  |  |     modelChecker.printResult(); | 
		
	
		
			
				|  |  | } |  |  | } | 
		
	
	
		
			
				|  | @ -247,12 +255,12 @@ int main(const int argc, const char** argv) { | 
		
	
		
			
				|  |  |         // From this point on we are ready to carry out the actual computations.
 |  |  |         // From this point on we are ready to carry out the actual computations.
 | 
		
	
		
			
				|  |  |         if (parametric) { |  |  |         if (parametric) { | 
		
	
		
			
				|  |  | #ifdef STORM_HAVE_CARL
 |  |  | #ifdef STORM_HAVE_CARL
 | 
		
	
		
			
				|  |  |             analyzeDFT<storm::RationalFunction>(dftSettings.getDftFilename(), pctlFormula, dftSettings.useSymmetryReduction(), dftSettings.useModularisation(), !dftSettings.isDisableDC(), approximationError); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |             analyzeDFT<storm::RationalFunction>(pctlFormula, dftSettings.useSymmetryReduction(), dftSettings.useModularisation(), !dftSettings.isDisableDC(), approximationError); | 
		
	
		
			
				|  |  | #else
 |  |  | #else
 | 
		
	
		
			
				|  |  |             STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "Parameters are not supported in this build."); |  |  |             STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "Parameters are not supported in this build."); | 
		
	
		
			
				|  |  | #endif
 |  |  | #endif
 | 
		
	
		
			
				|  |  |         } else { |  |  |         } else { | 
		
	
		
			
				|  |  |             analyzeDFT<double>(dftSettings.getDftFilename(), pctlFormula, dftSettings.useSymmetryReduction(), dftSettings.useModularisation(), !dftSettings.isDisableDC(), approximationError); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |             analyzeDFT<double>(pctlFormula, dftSettings.useSymmetryReduction(), dftSettings.useModularisation(), !dftSettings.isDisableDC(), approximationError); | 
		
	
		
			
				|  |  |         } |  |  |         } | 
		
	
		
			
				|  |  |          |  |  |          | 
		
	
		
			
				|  |  |         // All operations have now been performed, so we clean up everything and terminate.
 |  |  |         // All operations have now been performed, so we clean up everything and terminate.
 | 
		
	
	
		
			
				|  | 
 |