@ -418,27 +418,27 @@ namespace storm { 
		
	
		
			
				                STORM_LOG_THROW ( regions . size ( )  = =  1 ,  storm : : exceptions : : NotSupportedException ,  " Region refinement is not supported for multiple initial regions. " ) ;                 STORM_LOG_THROW ( regions . size ( )  = =  1 ,  storm : : exceptions : : NotSupportedException ,  " Region refinement is not supported for multiple initial regions. " ) ;  
		
	
		
			
				                STORM_PRINT_AND_LOG ( "  with iterative refinement until  "  < <  ( 1.0  -  regionSettings . getCoverageThreshold ( ) )  *  100.0  < <  " % is covered. "  < <  ( regionSettings . isDepthLimitSet ( )  ?  "  Depth limit is  "  +  std : : to_string ( regionSettings . getDepthLimit ( ) )  +  " . "  :  " " )  < <  std : : endl ) ;                 STORM_PRINT_AND_LOG ( "  with iterative refinement until  "  < <  ( 1.0  -  regionSettings . getCoverageThreshold ( ) )  *  100.0  < <  " % is covered. "  < <  ( regionSettings . isDepthLimitSet ( )  ?  "  Depth limit is  "  +  std : : to_string ( regionSettings . getDepthLimit ( ) )  +  " . "  :  " " )  < <  std : : endl ) ;  
		
	
		
			
				                verificationCallback  =  [ & ]  ( std : : shared_ptr < storm : : logic : : Formula  const >  const &  formula )  {                 verificationCallback  =  [ & ]  ( std : : shared_ptr < storm : : logic : : Formula  const >  const &  formula )  {  
		
	
		
			
				                                         ValueType  refinementThreshold  =  storm : : utility : : convertNumber < ValueType > ( regionSettings . getCoverageThreshold ( ) ) ;  
		
	
		
			
				                                         boost : : optional < uint64_t >  optionalDepthLimit ;  
		
	
		
			
				                                         if  ( regionSettings . isDepthLimitSet ( ) )  {  
		
	
		
			
				                                             optionalDepthLimit  =  regionSettings . getDepthLimit ( ) ;  
		
	
		
			
				                                         }  
		
	
		
			
				                                         std : : unique_ptr < storm : : modelchecker : : RegionRefinementCheckResult < ValueType > >  result  =  storm : : api : : checkAndRefineRegionWithSparseEngine < ValueType > ( model ,  storm : : api : : createTask < ValueType > ( formula ,  true ) ,  regions . front ( ) ,  engine ,  refinementThreshold ,  optionalDepthLimit ,  regionSettings . getHypothesis ( ) ) ;  
		
	
		
			
				                                         return  result ;  
		
	
		
			
				                                     } ;  
		
	
		
			
				                    ValueType  refinementThreshold  =  storm : : utility : : convertNumber < ValueType > ( regionSettings . getCoverageThreshold ( ) ) ;  
		
	
		
			
				                    boost : : optional < uint64_t >  optionalDepthLimit ;  
		
	
		
			
				                    if  ( regionSettings . isDepthLimitSet ( ) )  {  
		
	
		
			
				                        optionalDepthLimit  =  regionSettings . getDepthLimit ( ) ;  
		
	
		
			
				                    }  
		
	
		
			
				                    std : : unique_ptr < storm : : modelchecker : : RegionRefinementCheckResult < ValueType > >  result  =  storm : : api : : checkAndRefineRegionWithSparseEngine < ValueType > ( model ,  storm : : api : : createTask < ValueType > ( formula ,  true ) ,  regions . front ( ) ,  engine ,  refinementThreshold ,  optionalDepthLimit ,  regionSettings . getHypothesis ( ) ) ;  
		
	
		
			
				                    return  result ;  
		
	
		
			
				                } ;  
		
	
		
			
				            }  else  {             }  else  {  
		
	
		
			
				                STORM_PRINT_AND_LOG ( " . "  < <  std : : endl ) ;                 STORM_PRINT_AND_LOG ( " . "  < <  std : : endl ) ;  
		
	
		
			
				                verificationCallback  =  [ & ]  ( std : : shared_ptr < storm : : logic : : Formula  const >  const &  formula )  {                 verificationCallback  =  [ & ]  ( std : : shared_ptr < storm : : logic : : Formula  const >  const &  formula )  {  
		
	
		
			
				                                         std : : unique_ptr < storm : : modelchecker : : CheckResult >  result  =  storm : : api : : checkRegionsWithSparseEngine < ValueType > ( model ,  storm : : api : : createTask < ValueType > ( formula ,  true ) ,  regions ,  engine ,  regionSettings . getHypothesis ( ) ) ;  
		
	
		
			
				                                         return  result ;  
		
	
		
			
				                                     } ;  
		
	
		
			
				                    std : : unique_ptr < storm : : modelchecker : : CheckResult >  result  =  storm : : api : : checkRegionsWithSparseEngine < ValueType > ( model ,  storm : : api : : createTask < ValueType > ( formula ,  true ) ,  regions ,  engine ,  regionSettings . getHypothesis ( ) ) ;  
		
	
		
			
				                    return  result ;  
		
	
		
			
				                } ;  
		
	
		
			
				            }             }  
		
	
		
			
				
 
		
	
		
			
				            postprocessingCallback  =  [ & ]  ( std : : unique_ptr < storm : : modelchecker : : CheckResult >  const &  result )  {             postprocessingCallback  =  [ & ]  ( std : : unique_ptr < storm : : modelchecker : : CheckResult >  const &  result )  {  
		
	
		
			
				                                         if  ( parametricSettings . exportResultToFile ( ) )  {  
		
	
		
			
				                                             storm : : api : : exportRegionCheckResultToFile < ValueType > ( result ,  parametricSettings . exportResultPath ( ) ) ;  
		
	
		
			
				                                         }  
		
	
		
			
				                                     } ;  
		
	
		
			
				                if  ( parametricSettings . exportResultToFile ( ) )  {  
		
	
		
			
				                    storm : : api : : exportRegionCheckResultToFile < ValueType > ( result ,  parametricSettings . exportResultPath ( ) ) ;  
		
	
		
			
				                }  
		
	
		
			
				            } ;  
		
	
		
			
				
 
		
	
		
			
				            verifyProperties < ValueType > ( input . properties ,  verificationCallback ,  postprocessingCallback ) ;             verifyProperties < ValueType > ( input . properties ,  verificationCallback ,  postprocessingCallback ) ;  
		
	
		
			
				        }         }  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -527,17 +527,25 @@ namespace storm { 
		
	
		
			
				
 
		
	
		
			
				            if  ( parSettings . isMonotonicityAnalysisSet ( ) )  {             if  ( parSettings . isMonotonicityAnalysisSet ( ) )  {  
		
	
		
			
				                std : : cout  < <  " Hello, Jip2 "  < <  std : : endl ;                 std : : cout  < <  " Hello, Jip2 "  < <  std : : endl ;  
		
	
		
			
				
 
		
	
		
			
				                std : : vector < std : : shared_ptr < storm : : logic : : Formula  const > >  formulas  =  storm : : api : : extractFormulasFromProperties ( input . properties ) ;                 std : : vector < std : : shared_ptr < storm : : logic : : Formula  const > >  formulas  =  storm : : api : : extractFormulasFromProperties ( input . properties ) ;  
		
	
		
			
				                std : : shared_ptr < storm : : models : : sparse : : Model < ValueType > >  sparseModel  =  model - > as < storm : : models : : sparse : : Model < ValueType > > ( ) ;                 std : : shared_ptr < storm : : models : : sparse : : Model < ValueType > >  sparseModel  =  model - > as < storm : : models : : sparse : : Model < ValueType > > ( ) ;  
		
	
		
			
				
 
		
	
		
			
				                // Check if MC is acyclic
  
		
	
		
			
				                auto  decomposition  =  storm : : storage : : StronglyConnectedComponentDecomposition < ValueType > ( sparseModel - > getTransitionMatrix ( ) ,  false ,  false ) ;  
		
	
		
			
				                for  ( auto  i  =  0 ;  i  <  decomposition . size ( ) ;  + + i )  {  
		
	
		
			
				                    auto  scc  =  decomposition . getBlock ( i ) ;  
		
	
		
			
				                    STORM_LOG_THROW ( scc . size ( )  < =  1 ,  storm : : exceptions : : NotSupportedException ,  " Cycle found, not supporting cyclic MCs " ) ;  
		
	
		
			
				                }  
		
	
		
			
				
 
		
	
		
			
				
 
		
	
		
			
				                // Transform to Lattices
                 // Transform to Lattices
  
		
	
		
			
				                storm : : utility : : Stopwatch  latticeWatch ( true ) ;                 storm : : utility : : Stopwatch  latticeWatch ( true ) ;  
		
	
		
			
				                storm : : analysis : : LatticeExtender < ValueType >  * extender  =  new  storm : : analysis : : LatticeExtender < ValueType > ( sparseModel ) ;                 storm : : analysis : : LatticeExtender < ValueType >  * extender  =  new  storm : : analysis : : LatticeExtender < ValueType > ( sparseModel ) ;  
		
	
		
			
				                std : : tuple < storm : : analysis : : Lattice * ,  uint_fast64_t ,  uint_fast64_t >  criticalPair  =  extender - > toLattice ( formulas ) ;                 std : : tuple < storm : : analysis : : Lattice * ,  uint_fast64_t ,  uint_fast64_t >  criticalPair  =  extender - > toLattice ( formulas ) ;  
		
	
		
			
				
 
		
	
		
			
				                auto  assumptionMaker  =  storm : : analysis : : AssumptionMaker < ValueType > ( extender ,  sparseModel - > getNumberOfStates ( ) ) ;  
		
	
		
			
				                std : : map < storm : : analysis : : Lattice * ,  std : : set < std : : shared_ptr < storm : : expressions : : BinaryRelationExpression > > >  result  =  assumptionMaker . startMakingAssumptions ( std : : get < 0 > ( criticalPair ) ,  std : : get < 1 > ( criticalPair ) ,  std : : get < 2 > ( criticalPair ) ) ;                 std : : map < storm : : analysis : : Lattice * ,  std : : set < std : : shared_ptr < storm : : expressions : : BinaryRelationExpression > > >  result  =  assumptionMaker . startMakingAssumptions ( std : : get < 0 > ( criticalPair ) ,  std : : get < 1 > ( criticalPair ) ,  std : : get < 2 > ( criticalPair ) ) ;  
		
	
		
			
				
 
		
	
		
			
				
 
		
	
		
			
				                latticeWatch . stop ( ) ;                 latticeWatch . stop ( ) ;  
		
	
		
			
				                STORM_PRINT ( std : : endl  < <  " Time for lattice creation:  "  < <  latticeWatch  < <  " . "  < <  std : : endl  < <  std : : endl ) ;                 STORM_PRINT ( std : : endl  < <  " Time for lattice creation:  "  < <  latticeWatch  < <  " . "  < <  std : : endl  < <  std : : endl ) ;