@ -21,12 +21,10 @@ namespace storm {
namespace modelchecker {
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 , std : : set < size_t > const & relevantEvents ,
bool allowDCForRelevantEvents , double approximationError ,
storm : : builder : : ApproximationHeuristic approximationHeuristic , bool eliminateChains ,
storm : : transformer : : EliminationLabelBehavior labelBehavior ) {
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 , storm : : utility : : RelevantEvents const & relevantEvents ,
double approximationError , storm : : builder : : ApproximationHeuristic approximationHeuristic ,
bool eliminateChains , storm : : transformer : : EliminationLabelBehavior labelBehavior ) {
totalTimer . start ( ) ;
dft_results results ;
@ -50,8 +48,7 @@ namespace storm {
results . push_back ( result ) ;
}
} else {
results = checkHelper ( dft , properties , symred , allowModularisation , relevantEvents , allowDCForRelevantEvents , approximationError , approximationHeuristic ,
eliminateChains , labelBehavior ) ;
results = checkHelper ( dft , properties , symred , allowModularisation , relevantEvents , approximationError , approximationHeuristic , eliminateChains , labelBehavior ) ;
}
totalTimer . stop ( ) ;
return results ;
@ -59,9 +56,8 @@ namespace storm {
template < typename ValueType >
typename DFTModelChecker < ValueType > : : dft_results DFTModelChecker < ValueType > : : checkHelper ( storm : : storage : : DFT < ValueType > const & dft , property_vector const & properties ,
bool symred , bool allowModularisation , std : : set < size_t > const & relevantEvents ,
bool allowDCForRelevantEvents , double approximationError ,
storm : : builder : : ApproximationHeuristic approximationHeuristic ,
bool symred , bool allowModularisation , storm : : utility : : RelevantEvents const & relevantEvents ,
double approximationError , storm : : builder : : ApproximationHeuristic approximationHeuristic ,
bool eliminateChains , storm : : transformer : : EliminationLabelBehavior labelBehavior ) {
STORM_LOG_TRACE ( " Check helper called " ) ;
std : : vector < storm : : storage : : DFT < ValueType > > dfts ;
@ -118,8 +114,7 @@ namespace storm {
std : : vector < ValueType > res ;
for ( auto const ft : dfts ) {
// TODO: allow approximation in modularisation
dft_results ftResults = checkHelper ( ft , { property } , symred , true , relevantEvents ,
allowDCForRelevantEvents , 0.0 ) ;
dft_results ftResults = checkHelper ( ft , { property } , symred , true , relevantEvents , 0.0 ) ;
STORM_LOG_ASSERT ( ftResults . size ( ) = = 1 , " Wrong number of results " ) ;
res . push_back ( boost : : get < ValueType > ( ftResults [ 0 ] ) ) ;
}
@ -157,18 +152,13 @@ namespace storm {
return results ;
} else {
// No modularisation was possible
return checkDFT ( dft , properties , symred , relevantEvents , allowDCForRelevantEvents , approximationError ,
approximationHeuristic , eliminateChains , labelBehavior ) ;
return checkDFT ( dft , properties , symred , relevantEvents , approximationError , approximationHeuristic , eliminateChains , labelBehavior ) ;
}
}
template < typename ValueType >
std : : shared_ptr < storm : : models : : sparse : : Ctmc < ValueType > >
DFTModelChecker < ValueType > : : buildModelViaComposition ( storm : : storage : : DFT < ValueType > const & dft ,
property_vector const & properties , bool symred ,
bool allowModularisation ,
std : : set < size_t > const & relevantEvents ,
bool allowDCForRelevantEvents ) {
DFTModelChecker < ValueType > : : buildModelViaComposition ( storm : : storage : : DFT < ValueType > const & dft , property_vector const & properties , bool symred , bool allowModularisation , storm : : utility : : RelevantEvents const & relevantEvents ) {
// TODO: use approximation?
STORM_LOG_TRACE ( " Build model via composition " ) ;
std : : vector < storm : : storage : : DFT < ValueType > > dfts ;
@ -207,7 +197,7 @@ namespace storm {
STORM_LOG_DEBUG ( " Building Model via parallel composition... " ) ;
explorationTimer . start ( ) ;
ft . setRelevantEvents ( relevantEvents , allowDCForRelevantEvents ) ;
ft . setRelevantEvents ( relevantEvents ) ;
// Find symmetries
std : : map < size_t , std : : vector < std : : vector < size_t > > > emptySymmetry ;
storm : : storage : : DFTIndependentSymmetries symmetries ( emptySymmetry ) ;
@ -269,7 +259,7 @@ namespace storm {
// No composition was possible
explorationTimer . start ( ) ;
dft . setRelevantEvents ( relevantEvents , allowDCForRelevantEvents ) ;
dft . setRelevantEvents ( relevantEvents ) ;
// Find symmetries
std : : map < size_t , std : : vector < std : : vector < size_t > > > emptySymmetry ;
@ -299,17 +289,13 @@ namespace storm {
template < typename ValueType >
typename DFTModelChecker < ValueType > : : dft_results
DFTModelChecker < ValueType > : : checkDFT ( storm : : storage : : DFT < ValueType > const & dft ,
property_vector const & properties , bool symred ,
std : : set < size_t > const & relevantEvents , bool allowDCForRelevantEvents ,
double approximationError ,
storm : : builder : : ApproximationHeuristic approximationHeuristic ,
bool eliminateChains , storm : : transformer : : EliminationLabelBehavior labelBehavior ) {
DFTModelChecker < ValueType > : : checkDFT ( storm : : storage : : DFT < ValueType > const & dft , property_vector const & properties , bool symred , storm : : utility : : RelevantEvents const & relevantEvents ,
double approximationError , storm : : builder : : ApproximationHeuristic approximationHeuristic , bool eliminateChains , storm : : transformer : : EliminationLabelBehavior labelBehavior ) {
explorationTimer . start ( ) ;
auto ioSettings = storm : : settings : : getModule < storm : : settings : : modules : : IOSettings > ( ) ;
auto dftIOSettings = storm : : settings : : getModule < storm : : settings : : modules : : DftIOSettings > ( ) ;
dft . setRelevantEvents ( relevantEvents , allowDCForRelevantEvents ) ;
dft . setRelevantEvents ( relevantEvents ) ;
// Find symmetries
std : : map < size_t , std : : vector < std : : vector < size_t > > > emptySymmetry ;