| 
					
					
						
							
						
					
					
				 | 
				@ -7,10 +7,11 @@ | 
			
		
		
	
		
			
				 | 
				 | 
				namespace storm { | 
				 | 
				 | 
				namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				    namespace analysis { | 
				 | 
				 | 
				    namespace analysis { | 
			
		
		
	
		
			
				 | 
				 | 
				        template<typename ValueType> | 
				 | 
				 | 
				        template<typename ValueType> | 
			
		
		
	
		
			
				 | 
				 | 
				        AssumptionMaker<ValueType>::AssumptionMaker(storm::analysis::LatticeExtender<ValueType>* latticeExtender, storm::analysis::AssumptionChecker<ValueType>* assumptionChecker, uint_fast64_t numberOfStates) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        AssumptionMaker<ValueType>::AssumptionMaker(storm::analysis::LatticeExtender<ValueType>* latticeExtender, storm::analysis::AssumptionChecker<ValueType>* assumptionChecker, uint_fast64_t numberOfStates, bool validate) { | 
			
		
		
	
		
			
				 | 
				 | 
				            this->latticeExtender = latticeExtender; | 
				 | 
				 | 
				            this->latticeExtender = latticeExtender; | 
			
		
		
	
		
			
				 | 
				 | 
				            this->numberOfStates = numberOfStates; | 
				 | 
				 | 
				            this->numberOfStates = numberOfStates; | 
			
		
		
	
		
			
				 | 
				 | 
				            this->assumptionChecker = assumptionChecker; | 
				 | 
				 | 
				            this->assumptionChecker = assumptionChecker; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            this->validate = validate; | 
			
		
		
	
		
			
				 | 
				 | 
				            this->expressionManager = std::make_shared<storm::expressions::ExpressionManager>(storm::expressions::ExpressionManager()); | 
				 | 
				 | 
				            this->expressionManager = std::make_shared<storm::expressions::ExpressionManager>(storm::expressions::ExpressionManager()); | 
			
		
		
	
		
			
				 | 
				 | 
				            for (uint_fast64_t i = 0; i < this->numberOfStates; ++i) { | 
				 | 
				 | 
				            for (uint_fast64_t i = 0; i < this->numberOfStates; ++i) { | 
			
		
		
	
		
			
				 | 
				 | 
				                expressionManager->declareRationalVariable(std::to_string(i)); | 
				 | 
				 | 
				                expressionManager->declareRationalVariable(std::to_string(i)); | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -48,7 +49,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				            // only the last assumption is new
 | 
				 | 
				 | 
				            // only the last assumption is new
 | 
			
		
		
	
		
			
				 | 
				 | 
				            std::tuple<storm::analysis::Lattice*, uint_fast64_t, uint_fast64_t> criticalTriple = this->latticeExtender->extendLattice(lattice, assumptions.back()); | 
				 | 
				 | 
				            std::tuple<storm::analysis::Lattice*, uint_fast64_t, uint_fast64_t> criticalTriple = this->latticeExtender->extendLattice(lattice, assumptions.back()); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            if (assumptionChecker->validated(assumptions.back())) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            if (validate && assumptionChecker->validated(assumptions.back())) { | 
			
		
		
	
		
			
				 | 
				 | 
				                assumptions.pop_back(); | 
				 | 
				 | 
				                assumptions.pop_back(); | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -81,8 +82,9 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                        var1.getExpression().getBaseExpressionPointer(), var2.getExpression().getBaseExpressionPointer(), | 
				 | 
				 | 
				                        var1.getExpression().getBaseExpressionPointer(), var2.getExpression().getBaseExpressionPointer(), | 
			
		
		
	
		
			
				 | 
				 | 
				                        storm::expressions::BinaryRelationExpression::RelationType::GreaterOrEqual)); | 
				 | 
				 | 
				                        storm::expressions::BinaryRelationExpression::RelationType::GreaterOrEqual)); | 
			
		
		
	
		
			
				 | 
				 | 
				            if (assumptionChecker->checkOnSamples(assumption)) { | 
				 | 
				 | 
				            if (assumptionChecker->checkOnSamples(assumption)) { | 
			
		
		
	
		
			
				 | 
				 | 
				                // TODO: only if validation on
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                if (validate) { | 
			
		
		
	
		
			
				 | 
				 | 
				                    assumptionChecker->validateAssumption(assumption, lattice); | 
				 | 
				 | 
				                    assumptionChecker->validateAssumption(assumption, lattice); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				                assumptions.push_back(std::shared_ptr<storm::expressions::BinaryRelationExpression>(assumption)); | 
				 | 
				 | 
				                assumptions.push_back(std::shared_ptr<storm::expressions::BinaryRelationExpression>(assumption)); | 
			
		
		
	
		
			
				 | 
				 | 
				                result = (runRecursive(lattice, assumptions)); | 
				 | 
				 | 
				                result = (runRecursive(lattice, assumptions)); | 
			
		
		
	
		
			
				 | 
				 | 
				            } else { | 
				 | 
				 | 
				            } else { | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |