@ -187,7 +187,7 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                storm : : storage : : BitVector  selectedRows  =  this - > parametricModel - > getTransitionMatrix ( ) . getRowFilter ( maybeStates ,  ~ infinityStates ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                parameterLifter  =  std : : make_unique < storm : : transformer : : ParameterLifter < typename  SparseModelType : : ValueType ,  ConstantType > > ( this - > parametricModel - > getTransitionMatrix ( ) ,  b ,  selectedRows ,  maybeStates ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                computePlayer1Matrix ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                computePlayer1Matrix ( selectedRows ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                // Check whether there is an EC consisting of maybestates
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                applyPreviousResultAsHint  =  ! storm : : solver : : minimize ( checkTask . getOptimizationDirection ( ) )  | |  // when maximizing, there can not be an EC within the maybestates
  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -241,7 +241,7 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  SparseModelType ,  typename  ConstantType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        std : : unique_ptr < CheckResult >  SparseMdpParameterLiftingModelChecker < SparseModelType ,  ConstantType > : : computeQuantitativeValues ( storm : : storage : : ParameterRegion < typename  SparseModelType : : ValueType >  const &  region ,  storm : : solver : : OptimizationDirection  const &  dirForParameters )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if ( maybeStates . empty ( ) )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if   ( maybeStates . empty ( ) )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                return  std : : make_unique < storm : : modelchecker : : ExplicitQuantitativeCheckResult < ConstantType > > ( resultsForNonMaybeStates ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -308,19 +308,31 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					         
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template  < typename  SparseModelType ,  typename  ConstantType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        void  SparseMdpParameterLiftingModelChecker < SparseModelType ,  ConstantType > : : computePlayer1Matrix ( )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        void  SparseMdpParameterLiftingModelChecker < SparseModelType ,  ConstantType > : : computePlayer1Matrix ( boost : : optional < storm : : storage : : BitVector >  const &  selectedRows )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            uint_fast64_t  n  =  0 ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            for ( auto  const &  maybeState  :  maybeStates )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                n  + =  this - > parametricModel - > getTransitionMatrix ( ) . getRowGroupSize ( maybeState ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if  ( selectedRows )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                // only count selected rows
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                n  =  selectedRows - > getNumberOfSetBits ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  else  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                for  ( auto  const &  maybeState  :  maybeStates )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    n  + =  this - > parametricModel - > getTransitionMatrix ( ) . getRowGroupSize ( maybeState ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // The player 1 matrix is the identity matrix of size n with the row groups as given by the original matrix
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					             
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // The player 1 matrix is the identity matrix of size n with the row groups as given by the original matrix (potentially without unselected rows)
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            storm : : storage : : SparseMatrixBuilder < storm : : storage : : sparse : : state_type >  matrixBuilder ( n ,  n ,  n ,  true ,  true ,  maybeStates . getNumberOfSetBits ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            uint_fast64_t  p1MatrixRow  =  0 ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            for  ( auto  maybeState  :  maybeStates ) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                matrixBuilder . newRowGroup ( p1MatrixRow ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                for  ( uint_fast64_t  row  =  this - > parametricModel - > getTransitionMatrix ( ) . getRowGroupIndices ( ) [ maybeState ] ;  row  <  this - > parametricModel - > getTransitionMatrix ( ) . getRowGroupIndices ( ) [ maybeState  +  1 ] ;  + + row ) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    matrixBuilder . addNextValue ( p1MatrixRow ,  p1MatrixRow ,  storm : : utility : : one < storm : : storage : : sparse : : state_type > ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    + + p1MatrixRow ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                if  ( selectedRows )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    for  ( uint_fast64_t  row  =  selectedRows - > getNextSetIndex ( this - > parametricModel - > getTransitionMatrix ( ) . getRowGroupIndices ( ) [ maybeState ] ) ;  row  <  this - > parametricModel - > getTransitionMatrix ( ) . getRowGroupIndices ( ) [ maybeState  +  1 ] ;  row  =  selectedRows - > getNextSetIndex ( row  +  1 ) )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        matrixBuilder . addNextValue ( p1MatrixRow ,  p1MatrixRow ,  storm : : utility : : one < storm : : storage : : sparse : : state_type > ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        + + p1MatrixRow ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                }  else  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    for  ( uint_fast64_t  endOfGroup  =  p1MatrixRow  +  this - > parametricModel - > getTransitionMatrix ( ) . getRowGroupSize ( maybeState ) ;  p1MatrixRow  <  endOfGroup ;  + + p1MatrixRow ) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        matrixBuilder . addNextValue ( p1MatrixRow ,  p1MatrixRow ,  storm : : utility : : one < storm : : storage : : sparse : : state_type > ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            player1Matrix  =  matrixBuilder . build ( ) ;