| 
					
					
						
							
						
					
					
				 | 
				@ -48,53 +48,50 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                            priorities[i] = (-(mDft.getElement(i)->rank()) + mDft.maxRank()) * 2 + 5; | 
				 | 
				 | 
				                            priorities[i] = (-(mDft.getElement(i)->rank()) + mDft.maxRank()) * 2 + 5; | 
			
		
		
	
		
			
				 | 
				 | 
				                    } | 
				 | 
				 | 
				                    } | 
			
		
		
	
		
			
				 | 
				 | 
				                } else { | 
				 | 
				 | 
				                } else { | 
			
		
		
	
		
			
				 | 
				 | 
				                    // make sure every element has a unique priority by working with the rank
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    std::map<uint64_t, uint64_t> rankMap; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    std::map<uint64_t, uint64_t> rankCounter; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    // initialize rankMap
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    for (std::size_t i = 0; i <= mDft.maxRank(); i++) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                        rankMap[i] = 0; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                        rankCounter[i] = 0; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    } | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    // Count the number of elements with each rank and get max. grade of dependency
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    uint64_t maxNrChildren = 0; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    uint64_t maxGrade = 0; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    uint64_t numberDependencies = 0; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    // Define some variables
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    u_int64_t maxNrOfChildren = 0; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    u_int64_t maxNrDependentEvents = 0; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    // Iterate over all elements of the DFT and sort them into the list
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    std::list<size_t> elementList; | 
			
		
		
	
		
			
				 | 
				 | 
				                    for (std::size_t i = 0; i < mDft.nrElements(); i++) { | 
				 | 
				 | 
				                    for (std::size_t i = 0; i < mDft.nrElements(); i++) { | 
			
		
		
	
		
			
				 | 
				 | 
				                        ++rankMap[mDft.getElement(i)->rank()]; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                        ++rankCounter[mDft.getElement(i)->rank()]; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                        if (mDft.getElement(i)->type() == storm::storage::DFTElementType::PDEP) { | 
				 | 
				 | 
				                        if (mDft.getElement(i)->type() == storm::storage::DFTElementType::PDEP) { | 
			
		
		
	
		
			
				 | 
				 | 
				                            numberDependencies++; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t nrDependentEvents = | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                                    sizeof((std::static_pointer_cast<storm::storage::DFTDependency<ValueType> const>( | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                                            mDft.getElement(i)))->dependentEvents()); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                            if (nrDependentEvents > maxGrade) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                                maxGrade = nrDependentEvents; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            // For dependencies, get the maximal number of dependent events
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            auto dependency = std::static_pointer_cast<storm::storage::DFTDependency<ValueType> const>( | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                    mDft.getElement(i)); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            uint64_t nrDependentEvents = (dependency->dependentEvents()).size(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            if (nrDependentEvents > maxNrDependentEvents) { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                maxNrDependentEvents = nrDependentEvents; | 
			
		
		
	
		
			
				 | 
				 | 
				                            } | 
				 | 
				 | 
				                            } | 
			
		
		
	
		
			
				 | 
				 | 
				                        } | 
				 | 
				 | 
				                        } | 
			
		
		
	
		
			
				 | 
				 | 
				                        if (mDft.getElement(i)->nrChildren() > maxNrChildren) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                            maxNrChildren = mDft.getElement(i)->nrChildren(); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    } | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    STORM_LOG_DEBUG("MaxGrade " << maxGrade); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    uint64_t dependency_priority = mDft.nrElements() + 1; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    for (std::size_t i = 0; i < mDft.nrElements(); i++) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                        if (mDft.getElement(i)->type() == storm::storage::DFTElementType::PDEP) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                            priorities[i] = dependency_priority; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                            dependency_priority++; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                        } else { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                            // Offset saves the number of elements with higher rank than the current element
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t offset = 0; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                            for (std::size_t j = mDft.maxRank(); j > mDft.getElement(i)->rank(); --j) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                                offset += rankMap[j]; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        // Get the maximum number of children
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        if (maxNrOfChildren < mDft.getElement(i)->nrChildren()) { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            maxNrOfChildren = mDft.getElement(i)->nrChildren(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        // Organize the elements according to their rank
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        if (!elementList.empty()) { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            std::list<size_t>::iterator it = elementList.begin(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            // Make sure dependencies are always in the front
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            while ((mDft.getElement(*it)->rank()) < (mDft.getElement(i)->rank()) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                   || mDft.getElement(*it)->type() == storm::storage::DFTElementType::PDEP) { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                it++; | 
			
		
		
	
		
			
				 | 
				 | 
				                            } | 
				 | 
				 | 
				                            } | 
			
		
		
	
		
			
				 | 
				 | 
				                            // Set priority according to rank such that all elements with the same rank have a unique prio
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                            priorities[i] = | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                                    (offset + rankCounter[mDft.getElement(i)->rank()]) * (maxNrChildren + 3) + | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                                    mDft.nrElements() + maxGrade * numberDependencies + 4; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                            rankCounter[mDft.getElement(i)->rank()]--; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            elementList.insert(it, i); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        } else { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            elementList.push_back(i); | 
			
		
		
	
		
			
				 | 
				 | 
				                        } | 
				 | 
				 | 
				                        } | 
			
		
		
	
		
			
				 | 
				 | 
				                    } | 
				 | 
				 | 
				                    } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    // Get the necessary length for priority intervals
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    // Note that additional priorities are necessary
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    u_int64_t priorityIntervalLength = std::max(maxNrDependentEvents, maxNrOfChildren) + 4; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    // Define a running variable for the current priority
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    // Initialize it with an offset for the DC priorities + first interval length as prios give upper interval limit
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    u_int64_t currentPrio = mDft.nrElements() + priorityIntervalLength; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    for (std::list<size_t>::iterator it = elementList.begin(); it != elementList.end(); ++it) { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        priorities[*it] = currentPrio; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        currentPrio += priorityIntervalLength; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    } | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                return priorities; | 
				 | 
				 | 
				                return priorities; | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -174,11 +171,6 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                    std::shared_ptr<storm::storage::DFTBE<ValueType> const> dftBE) { | 
				 | 
				 | 
				                    std::shared_ptr<storm::storage::DFTBE<ValueType> const> dftBE) { | 
			
		
		
	
		
			
				 | 
				 | 
				                double xcenter = mDft.getElementLayoutInfo(dftBE->id()).x; | 
				 | 
				 | 
				                double xcenter = mDft.getElementLayoutInfo(dftBE->id()).x; | 
			
		
		
	
		
			
				 | 
				 | 
				                double ycenter = mDft.getElementLayoutInfo(dftBE->id()).y; | 
				 | 
				 | 
				                double ycenter = mDft.getElementLayoutInfo(dftBE->id()).y; | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t propagationPrio = 0; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                if (extendedPriorities) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    propagationPrio = (getFailPriority(dftBE) - mDft.nrElements() - 3) / 3 + 3; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                else | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    propagationPrio = dontCarePriority; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t failedPlace = addFailedPlace(dftBE, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter)); | 
				 | 
				 | 
				                uint64_t failedPlace = addFailedPlace(dftBE, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter)); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -221,7 +213,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                            dependencyPropagationPlaces.emplace(dftBE->id(), dependencyPropagationPlace); | 
				 | 
				 | 
				                            dependencyPropagationPlaces.emplace(dftBE->id(), dependencyPropagationPlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setPlaceLayoutInfo(dependencyPropagationPlace, | 
				 | 
				 | 
				                            builder.setPlaceLayoutInfo(dependencyPropagationPlace, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                       storm::gspn::LayoutInfo(xcenter + 10.0, ycenter - 5.0)); | 
				 | 
				 | 
				                                                       storm::gspn::LayoutInfo(xcenter + 10.0, ycenter - 5.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t tPropagationFailed = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            uint64_t tPropagationFailed = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                         dftBE->name() + "_prop_fail"); | 
				 | 
				 | 
				                                                                                         dftBE->name() + "_prop_fail"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationFailed, | 
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationFailed, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                            storm::gspn::LayoutInfo(xcenter + 8.0, ycenter)); | 
				 | 
				 | 
				                                                            storm::gspn::LayoutInfo(xcenter + 8.0, ycenter)); | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -229,7 +221,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addInputArc(failedPlace, tPropagationFailed); | 
				 | 
				 | 
				                            builder.addInputArc(failedPlace, tPropagationFailed); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, failedPlace); | 
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, failedPlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, dependencyPropagationPlace); | 
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, dependencyPropagationPlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t tPropagationDontCare = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            uint64_t tPropagationDontCare = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                           dftBE->name() + | 
				 | 
				 | 
				                                                                                           dftBE->name() + | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                           "_prop_dontCare"); | 
				 | 
				 | 
				                                                                                           "_prop_dontCare"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationDontCare, | 
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationDontCare, | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -259,6 +251,8 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.addOutputArc(tPassive, unavailablePlace); | 
				 | 
				 | 
				                    builder.addOutputArc(tPassive, unavailablePlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                if (extendedPriorities) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    dontCarePriority++; | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            template<typename ValueType> | 
				 | 
				 | 
				            template<typename ValueType> | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -299,11 +293,6 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                    std::shared_ptr<storm::storage::DFTAnd<ValueType> const> dftAnd) { | 
				 | 
				 | 
				                    std::shared_ptr<storm::storage::DFTAnd<ValueType> const> dftAnd) { | 
			
		
		
	
		
			
				 | 
				 | 
				                double xcenter = mDft.getElementLayoutInfo(dftAnd->id()).x; | 
				 | 
				 | 
				                double xcenter = mDft.getElementLayoutInfo(dftAnd->id()).x; | 
			
		
		
	
		
			
				 | 
				 | 
				                double ycenter = mDft.getElementLayoutInfo(dftAnd->id()).y; | 
				 | 
				 | 
				                double ycenter = mDft.getElementLayoutInfo(dftAnd->id()).y; | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t propagationPrio = 0; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                if (extendedPriorities) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    propagationPrio = (getFailPriority(dftAnd) - mDft.nrElements() - 3) / 3 + 3; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                else | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    propagationPrio = dontCarePriority; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t failedPlace = addFailedPlace(dftAnd, storm::gspn::LayoutInfo(xcenter, ycenter - 3.0)); | 
				 | 
				 | 
				                uint64_t failedPlace = addFailedPlace(dftAnd, storm::gspn::LayoutInfo(xcenter, ycenter - 3.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -327,7 +316,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t propagationPlace = builder.addPlace(1, 0, dftAnd->name() + "_prop"); | 
				 | 
				 | 
				                            uint64_t propagationPlace = builder.addPlace(1, 0, dftAnd->name() + "_prop"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setPlaceLayoutInfo(propagationPlace, | 
				 | 
				 | 
				                            builder.setPlaceLayoutInfo(propagationPlace, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                       storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
				 | 
				 | 
				                                                       storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t tPropagationFailed = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            uint64_t tPropagationFailed = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                         dftAnd->name() + "_prop_fail"); | 
				 | 
				 | 
				                                                                                         dftAnd->name() + "_prop_fail"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationFailed, | 
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationFailed, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                            storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); | 
				 | 
				 | 
				                                                            storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -335,7 +324,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addInputArc(failedPlace, tPropagationFailed); | 
				 | 
				 | 
				                            builder.addInputArc(failedPlace, tPropagationFailed); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, failedPlace); | 
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, failedPlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, propagationPlace); | 
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, propagationPlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t tPropagationDontCare = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            uint64_t tPropagationDontCare = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                           dftAnd->name() + | 
				 | 
				 | 
				                                                                                           dftAnd->name() + | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                           "_prop_dontCare"); | 
				 | 
				 | 
				                                                                                           "_prop_dontCare"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationDontCare, | 
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationDontCare, | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -384,6 +373,8 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.addInputArc(getFailedPlace(child), tFailed); | 
				 | 
				 | 
				                    builder.addInputArc(getFailedPlace(child), tFailed); | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.addOutputArc(tFailed, getFailedPlace(child)); | 
				 | 
				 | 
				                    builder.addOutputArc(tFailed, getFailedPlace(child)); | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                if (extendedPriorities) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    dontCarePriority++; | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            template<typename ValueType> | 
				 | 
				 | 
				            template<typename ValueType> | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -391,11 +382,6 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                    std::shared_ptr<storm::storage::DFTOr<ValueType> const> dftOr) { | 
				 | 
				 | 
				                    std::shared_ptr<storm::storage::DFTOr<ValueType> const> dftOr) { | 
			
		
		
	
		
			
				 | 
				 | 
				                double xcenter = mDft.getElementLayoutInfo(dftOr->id()).x; | 
				 | 
				 | 
				                double xcenter = mDft.getElementLayoutInfo(dftOr->id()).x; | 
			
		
		
	
		
			
				 | 
				 | 
				                double ycenter = mDft.getElementLayoutInfo(dftOr->id()).y; | 
				 | 
				 | 
				                double ycenter = mDft.getElementLayoutInfo(dftOr->id()).y; | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t propagationPrio = 0; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                if (extendedPriorities) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    propagationPrio = (getFailPriority(dftOr) - mDft.nrElements() - 3) / 3 + 3; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                else | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    propagationPrio = dontCarePriority; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t failedPlace = addFailedPlace(dftOr, storm::gspn::LayoutInfo(xcenter, ycenter - 3.0)); | 
				 | 
				 | 
				                uint64_t failedPlace = addFailedPlace(dftOr, storm::gspn::LayoutInfo(xcenter, ycenter - 3.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -413,7 +399,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t propagationPlace = builder.addPlace(1, 0, dftOr->name() + "_prop"); | 
				 | 
				 | 
				                            uint64_t propagationPlace = builder.addPlace(1, 0, dftOr->name() + "_prop"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setPlaceLayoutInfo(propagationPlace, | 
				 | 
				 | 
				                            builder.setPlaceLayoutInfo(propagationPlace, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                       storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
				 | 
				 | 
				                                                       storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t tPropagationFailed = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            uint64_t tPropagationFailed = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                         dftOr->name() + "_prop_fail"); | 
				 | 
				 | 
				                                                                                         dftOr->name() + "_prop_fail"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationFailed, | 
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationFailed, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                            storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); | 
				 | 
				 | 
				                                                            storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -421,7 +407,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addInputArc(failedPlace, tPropagationFailed); | 
				 | 
				 | 
				                            builder.addInputArc(failedPlace, tPropagationFailed); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, failedPlace); | 
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, failedPlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, propagationPlace); | 
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, propagationPlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t tPropagationDontCare = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            uint64_t tPropagationDontCare = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                           dftOr->name() + | 
				 | 
				 | 
				                                                                                           dftOr->name() + | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                           "_prop_dontCare"); | 
				 | 
				 | 
				                                                                                           "_prop_dontCare"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationDontCare, | 
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationDontCare, | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -475,7 +461,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                 dftOr->name() + STR_FAILING + std::to_string(i)); | 
				 | 
				 | 
				                                                                 dftOr->name() + STR_FAILING + std::to_string(i)); | 
			
		
		
	
		
			
				 | 
				 | 
				                    else | 
				 | 
				 | 
				                    else | 
			
		
		
	
		
			
				 | 
				 | 
				                        tFailed = builder.addImmediateTransition(getFailPriority(dftOr), 0.0, | 
				 | 
				 | 
				                        tFailed = builder.addImmediateTransition(getFailPriority(dftOr), 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                      dftOr->name() + STR_FAILING + std::to_string(i)); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                                 dftOr->name() + STR_FAILING + std::to_string(i)); | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.setTransitionLayoutInfo(tFailed, | 
				 | 
				 | 
				                    builder.setTransitionLayoutInfo(tFailed, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                    storm::gspn::LayoutInfo(xcenter - 5.0 + i * 3.0, ycenter + 3.0)); | 
				 | 
				 | 
				                                                    storm::gspn::LayoutInfo(xcenter - 5.0 + i * 3.0, ycenter + 3.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.addInhibitionArc(failedPlace, tFailed); | 
				 | 
				 | 
				                    builder.addInhibitionArc(failedPlace, tFailed); | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -486,6 +472,8 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.addInputArc(getFailedPlace(child), tFailed); | 
				 | 
				 | 
				                    builder.addInputArc(getFailedPlace(child), tFailed); | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.addOutputArc(tFailed, getFailedPlace(child)); | 
				 | 
				 | 
				                    builder.addOutputArc(tFailed, getFailedPlace(child)); | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                if (extendedPriorities) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    dontCarePriority++; | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            template<typename ValueType> | 
				 | 
				 | 
				            template<typename ValueType> | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -495,11 +483,6 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                double xcenter = mDft.getElementLayoutInfo(dftVot->id()).x; | 
				 | 
				 | 
				                double xcenter = mDft.getElementLayoutInfo(dftVot->id()).x; | 
			
		
		
	
		
			
				 | 
				 | 
				                double ycenter = mDft.getElementLayoutInfo(dftVot->id()).y; | 
				 | 
				 | 
				                double ycenter = mDft.getElementLayoutInfo(dftVot->id()).y; | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t propagationPrio = 0; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                if (extendedPriorities) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    propagationPrio = (getFailPriority(dftVot) - mDft.nrElements() - 3) / 3 + 3; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                else | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    propagationPrio = dontCarePriority; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t failedPlace = addFailedPlace(dftVot, storm::gspn::LayoutInfo(xcenter, ycenter - 3.0)); | 
				 | 
				 | 
				                uint64_t failedPlace = addFailedPlace(dftVot, storm::gspn::LayoutInfo(xcenter, ycenter - 3.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -529,8 +512,8 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                  std::to_string(i)); | 
				 | 
				 | 
				                                                                  std::to_string(i)); | 
			
		
		
	
		
			
				 | 
				 | 
				                    else | 
				 | 
				 | 
				                    else | 
			
		
		
	
		
			
				 | 
				 | 
				                        tCollect = builder.addImmediateTransition(getFailPriority(dftVot), 0.0, | 
				 | 
				 | 
				                        tCollect = builder.addImmediateTransition(getFailPriority(dftVot), 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                       dftVot->name() + "_child_collect" + | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                       std::to_string(i)); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                                  dftVot->name() + "_child_collect" + | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                                  std::to_string(i)); | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.addOutputArc(tCollect, collectorPlace); | 
				 | 
				 | 
				                    builder.addOutputArc(tCollect, collectorPlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.addInputArc(childNextPlace, tCollect); | 
				 | 
				 | 
				                    builder.addInputArc(childNextPlace, tCollect); | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.addInputArc(getFailedPlace(child), tCollect); | 
				 | 
				 | 
				                    builder.addInputArc(getFailedPlace(child), tCollect); | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -551,7 +534,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t propagationPlace = builder.addPlace(1, 0, dftVot->name() + "_prop"); | 
				 | 
				 | 
				                            uint64_t propagationPlace = builder.addPlace(1, 0, dftVot->name() + "_prop"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setPlaceLayoutInfo(propagationPlace, | 
				 | 
				 | 
				                            builder.setPlaceLayoutInfo(propagationPlace, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                       storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
				 | 
				 | 
				                                                       storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t tPropagationFailed = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            uint64_t tPropagationFailed = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                         dftVot->name() + "_prop_fail"); | 
				 | 
				 | 
				                                                                                         dftVot->name() + "_prop_fail"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationFailed, | 
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationFailed, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                            storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); | 
				 | 
				 | 
				                                                            storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -559,7 +542,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addInputArc(failedPlace, tPropagationFailed); | 
				 | 
				 | 
				                            builder.addInputArc(failedPlace, tPropagationFailed); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, failedPlace); | 
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, failedPlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, propagationPlace); | 
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, propagationPlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t tPropagationDontCare = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            uint64_t tPropagationDontCare = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                           dftVot->name() + | 
				 | 
				 | 
				                                                                                           dftVot->name() + | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                           "_prop_dontCare"); | 
				 | 
				 | 
				                                                                                           "_prop_dontCare"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationDontCare, | 
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationDontCare, | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -597,6 +580,8 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                        } | 
				 | 
				 | 
				                        } | 
			
		
		
	
		
			
				 | 
				 | 
				                    } | 
				 | 
				 | 
				                    } | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                if (extendedPriorities) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    dontCarePriority++; | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            template<typename ValueType> | 
				 | 
				 | 
				            template<typename ValueType> | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -605,18 +590,13 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                //TODO Layouting
 | 
				 | 
				 | 
				                //TODO Layouting
 | 
			
		
		
	
		
			
				 | 
				 | 
				                double xcenter = mDft.getElementLayoutInfo(dftPand->id()).x; | 
				 | 
				 | 
				                double xcenter = mDft.getElementLayoutInfo(dftPand->id()).x; | 
			
		
		
	
		
			
				 | 
				 | 
				                double ycenter = mDft.getElementLayoutInfo(dftPand->id()).y; | 
				 | 
				 | 
				                double ycenter = mDft.getElementLayoutInfo(dftPand->id()).y; | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t propagationPrio = 0; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                if (extendedPriorities) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    propagationPrio = (getFailPriority(dftPand) - mDft.nrElements() - 3) / 3 + 3; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                else | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    propagationPrio = dontCarePriority; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t failedPlace = addFailedPlace(dftPand, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter - 3.0)); | 
				 | 
				 | 
				                uint64_t failedPlace = addFailedPlace(dftPand, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter - 3.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                // Set priority lower if the PAND is exclusive
 | 
				 | 
				 | 
				                // Set priority lower if the PAND is exclusive
 | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t tFailed = builder.addImmediateTransition( | 
				 | 
				 | 
				                uint64_t tFailed = builder.addImmediateTransition( | 
			
		
		
	
		
			
				 | 
				 | 
				                        /*inclusive ? getFailPriority(dftPand) : */getFailPriority(dftPand) - 1, 0.0, | 
				 | 
				 | 
				                        /*inclusive ? getFailPriority(dftPand) : */getFailPriority(dftPand) - 1, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                        dftPand->name() + STR_FAILING); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                                   dftPand->name() + STR_FAILING); | 
			
		
		
	
		
			
				 | 
				 | 
				                builder.setTransitionLayoutInfo(tFailed, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter + 3.0)); | 
				 | 
				 | 
				                builder.setTransitionLayoutInfo(tFailed, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter + 3.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				                builder.addInhibitionArc(failedPlace, tFailed); | 
				 | 
				 | 
				                builder.addInhibitionArc(failedPlace, tFailed); | 
			
		
		
	
		
			
				 | 
				 | 
				                builder.addOutputArc(tFailed, failedPlace); | 
				 | 
				 | 
				                builder.addOutputArc(tFailed, failedPlace); | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -684,11 +664,11 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                    uint64_t propagationPlace = builder.addPlace(1, 0, dftPand->name() + "_prop"); | 
				 | 
				 | 
				                    uint64_t propagationPlace = builder.addPlace(1, 0, dftPand->name() + "_prop"); | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.setPlaceLayoutInfo(propagationPlace, | 
				 | 
				 | 
				                    builder.setPlaceLayoutInfo(propagationPlace, | 
			
		
		
	
		
			
				 | 
				 | 
				                                               storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
				 | 
				 | 
				                                               storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				                    uint64_t tPropagationFailed = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    uint64_t tPropagationFailed = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                 dftPand->name() + "_prop_fail"); | 
				 | 
				 | 
				                                                                                 dftPand->name() + "_prop_fail"); | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.setTransitionLayoutInfo(tPropagationFailed, | 
				 | 
				 | 
				                    builder.setTransitionLayoutInfo(tPropagationFailed, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                    storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); | 
				 | 
				 | 
				                                                    storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				                    uint64_t tPropagationFailsafe = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    uint64_t tPropagationFailsafe = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                   dftPand->name() + "_prop_failsafe"); | 
				 | 
				 | 
				                                                                                   dftPand->name() + "_prop_failsafe"); | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.setTransitionLayoutInfo(tPropagationFailsafe, | 
				 | 
				 | 
				                    builder.setTransitionLayoutInfo(tPropagationFailsafe, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                    storm::gspn::LayoutInfo(xcenter + 8.0, ycenter + 6.0)); | 
				 | 
				 | 
				                                                    storm::gspn::LayoutInfo(xcenter + 8.0, ycenter + 6.0)); | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -721,7 +701,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                                                       storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); | 
				 | 
				 | 
				                                                       storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addInhibitionArc(dontCarePlace, tDontCare); | 
				 | 
				 | 
				                            builder.addInhibitionArc(dontCarePlace, tDontCare); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addOutputArc(tDontCare, dontCarePlace); | 
				 | 
				 | 
				                            builder.addOutputArc(tDontCare, dontCarePlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t tPropagationDontCare = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            uint64_t tPropagationDontCare = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                           dftPand->name() + | 
				 | 
				 | 
				                                                                                           dftPand->name() + | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                           "_prop_dontCare"); | 
				 | 
				 | 
				                                                                                           "_prop_dontCare"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationDontCare, | 
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationDontCare, | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -737,6 +717,8 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                        } | 
				 | 
				 | 
				                        } | 
			
		
		
	
		
			
				 | 
				 | 
				                    } | 
				 | 
				 | 
				                    } | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                if (extendedPriorities) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    dontCarePriority++; | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            template<typename ValueType> | 
				 | 
				 | 
				            template<typename ValueType> | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -745,11 +727,6 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                double xcenter = mDft.getElementLayoutInfo(dftPor->id()).x; | 
				 | 
				 | 
				                double xcenter = mDft.getElementLayoutInfo(dftPor->id()).x; | 
			
		
		
	
		
			
				 | 
				 | 
				                double ycenter = mDft.getElementLayoutInfo(dftPor->id()).y; | 
				 | 
				 | 
				                double ycenter = mDft.getElementLayoutInfo(dftPor->id()).y; | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t propagationPrio = 0; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                if (extendedPriorities) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    propagationPrio = (getFailPriority(dftPor) - mDft.nrElements() - 3) / 3 + 3; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                else | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    propagationPrio = dontCarePriority; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t delayPlace = 0; | 
				 | 
				 | 
				                uint64_t delayPlace = 0; | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -758,7 +735,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                // Set priority lower if the POR is exclusive
 | 
				 | 
				 | 
				                // Set priority lower if the POR is exclusive
 | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t tFailed = builder.addImmediateTransition( | 
				 | 
				 | 
				                uint64_t tFailed = builder.addImmediateTransition( | 
			
		
		
	
		
			
				 | 
				 | 
				                        /*inclusive ? getFailPriority(dftPor) : */getFailPriority(dftPor) - 1, 0.0, | 
				 | 
				 | 
				                        /*inclusive ? getFailPriority(dftPor) : */getFailPriority(dftPor) - 1, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                        dftPor->name() + STR_FAILING); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                                  dftPor->name() + STR_FAILING); | 
			
		
		
	
		
			
				 | 
				 | 
				                builder.setTransitionLayoutInfo(tFailed, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter + 3.0)); | 
				 | 
				 | 
				                builder.setTransitionLayoutInfo(tFailed, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter + 3.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				                builder.addOutputArc(tFailed, failedPlace); | 
				 | 
				 | 
				                builder.addOutputArc(tFailed, failedPlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                builder.addInhibitionArc(failedPlace, tFailed); | 
				 | 
				 | 
				                builder.addInhibitionArc(failedPlace, tFailed); | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -823,11 +800,11 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                    uint64_t propagationPlace = builder.addPlace(1, 0, dftPor->name() + "_prop"); | 
				 | 
				 | 
				                    uint64_t propagationPlace = builder.addPlace(1, 0, dftPor->name() + "_prop"); | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.setPlaceLayoutInfo(propagationPlace, | 
				 | 
				 | 
				                    builder.setPlaceLayoutInfo(propagationPlace, | 
			
		
		
	
		
			
				 | 
				 | 
				                                               storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
				 | 
				 | 
				                                               storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				                    uint64_t tPropagationFailed = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    uint64_t tPropagationFailed = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                 dftPor->name() + "_prop_fail"); | 
				 | 
				 | 
				                                                                                 dftPor->name() + "_prop_fail"); | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.setTransitionLayoutInfo(tPropagationFailed, | 
				 | 
				 | 
				                    builder.setTransitionLayoutInfo(tPropagationFailed, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                    storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); | 
				 | 
				 | 
				                                                    storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				                    uint64_t tPropagationFailsafe = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    uint64_t tPropagationFailsafe = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                   dftPor->name() + "_prop_failsafe"); | 
				 | 
				 | 
				                                                                                   dftPor->name() + "_prop_failsafe"); | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.setTransitionLayoutInfo(tPropagationFailsafe, | 
				 | 
				 | 
				                    builder.setTransitionLayoutInfo(tPropagationFailsafe, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                    storm::gspn::LayoutInfo(xcenter + 8.0, ycenter + 6.0)); | 
				 | 
				 | 
				                                                    storm::gspn::LayoutInfo(xcenter + 8.0, ycenter + 6.0)); | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -860,7 +837,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                                                       storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); | 
				 | 
				 | 
				                                                       storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addInhibitionArc(dontCarePlace, tDontCare); | 
				 | 
				 | 
				                            builder.addInhibitionArc(dontCarePlace, tDontCare); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addOutputArc(tDontCare, dontCarePlace); | 
				 | 
				 | 
				                            builder.addOutputArc(tDontCare, dontCarePlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t tPropagationDontCare = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            uint64_t tPropagationDontCare = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                           dftPor->name() + | 
				 | 
				 | 
				                                                                                           dftPor->name() + | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                           "_prop_dontCare"); | 
				 | 
				 | 
				                                                                                           "_prop_dontCare"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationDontCare, | 
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationDontCare, | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -876,7 +853,8 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                        } | 
				 | 
				 | 
				                        } | 
			
		
		
	
		
			
				 | 
				 | 
				                    } | 
				 | 
				 | 
				                    } | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                if (extendedPriorities) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    dontCarePriority++; | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            template<typename ValueType> | 
				 | 
				 | 
				            template<typename ValueType> | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -884,11 +862,6 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                    std::shared_ptr<storm::storage::DFTSpare<ValueType> const> dftSpare) { | 
				 | 
				 | 
				                    std::shared_ptr<storm::storage::DFTSpare<ValueType> const> dftSpare) { | 
			
		
		
	
		
			
				 | 
				 | 
				                double xcenter = mDft.getElementLayoutInfo(dftSpare->id()).x; | 
				 | 
				 | 
				                double xcenter = mDft.getElementLayoutInfo(dftSpare->id()).x; | 
			
		
		
	
		
			
				 | 
				 | 
				                double ycenter = mDft.getElementLayoutInfo(dftSpare->id()).y; | 
				 | 
				 | 
				                double ycenter = mDft.getElementLayoutInfo(dftSpare->id()).y; | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t propagationPrio = 0; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                if (extendedPriorities) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    propagationPrio = (getFailPriority(dftSpare) - mDft.nrElements() - 3) / 3 + 3; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                else | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    propagationPrio = dontCarePriority; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t failedPlace = addFailedPlace(dftSpare, storm::gspn::LayoutInfo(xcenter + 10.0, ycenter - 8.0)); | 
				 | 
				 | 
				                uint64_t failedPlace = addFailedPlace(dftSpare, storm::gspn::LayoutInfo(xcenter + 10.0, ycenter - 8.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -997,7 +970,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                         dftSpare->name() + "_prop"); | 
				 | 
				 | 
				                                                                         dftSpare->name() + "_prop"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setPlaceLayoutInfo(propagationPlace, | 
				 | 
				 | 
				                            builder.setPlaceLayoutInfo(propagationPlace, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                       storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
				 | 
				 | 
				                                                       storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t tPropagationFailed = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            uint64_t tPropagationFailed = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                         dftSpare->name() + | 
				 | 
				 | 
				                                                                                         dftSpare->name() + | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                         "_prop_fail"); | 
				 | 
				 | 
				                                                                                         "_prop_fail"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationFailed, | 
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationFailed, | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -1006,7 +979,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addInputArc(failedPlace, tPropagationFailed); | 
				 | 
				 | 
				                            builder.addInputArc(failedPlace, tPropagationFailed); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, failedPlace); | 
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, failedPlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, propagationPlace); | 
				 | 
				 | 
				                            builder.addOutputArc(tPropagationFailed, propagationPlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                            uint64_t tPropagationDontCare = builder.addImmediateTransition(propagationPrio, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            uint64_t tPropagationDontCare = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                           dftSpare->name() + | 
				 | 
				 | 
				                                                                                           dftSpare->name() + | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                                           "_prop_dontCare"); | 
				 | 
				 | 
				                                                                                           "_prop_dontCare"); | 
			
		
		
	
		
			
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationDontCare, | 
				 | 
				 | 
				                            builder.setTransitionLayoutInfo(tPropagationDontCare, | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -1049,6 +1022,8 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.addOutputArc(tNextConsiders.back(), unavailablePlace); | 
				 | 
				 | 
				                    builder.addOutputArc(tNextConsiders.back(), unavailablePlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                    builder.addOutputArc(tNextClaims.back(), unavailablePlace); | 
				 | 
				 | 
				                    builder.addOutputArc(tNextClaims.back(), unavailablePlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                if (extendedPriorities) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    dontCarePriority++; | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            template<typename ValueType> | 
				 | 
				 | 
				            template<typename ValueType> | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -1115,6 +1090,7 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                    if (!smart || mDft.isRepresentative(child->id())) { | 
				 | 
				 | 
				                    if (!smart || mDft.isRepresentative(child->id())) { | 
			
		
		
	
		
			
				 | 
				 | 
				                        builder.addOutputArc(tForwardFailure, unavailablePlaces.at(child->id())); | 
				 | 
				 | 
				                        builder.addOutputArc(tForwardFailure, unavailablePlaces.at(child->id())); | 
			
		
		
	
		
			
				 | 
				 | 
				                    } | 
				 | 
				 | 
				                    } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    propagationPriority--; | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                // Don't Care
 | 
				 | 
				 | 
				                // Don't Care
 | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -1166,6 +1142,8 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                if (failedPlace == 0) { | 
				 | 
				 | 
				                if (failedPlace == 0) { | 
			
		
		
	
		
			
				 | 
				 | 
				                    failedPlaces.push_back(failedPlace); | 
				 | 
				 | 
				                    failedPlaces.push_back(failedPlace); | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                if (extendedPriorities) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    dontCarePriority++; | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            template<typename ValueType> | 
				 | 
				 | 
				            template<typename ValueType> | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -1252,16 +1230,9 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                    std::shared_ptr<const storm::storage::DFTElement<ValueType> > dftElement, | 
				 | 
				 | 
				                    std::shared_ptr<const storm::storage::DFTElement<ValueType> > dftElement, | 
			
		
		
	
		
			
				 | 
				 | 
				                    storm::gspn::LayoutInfo const &layoutInfo) { | 
				 | 
				 | 
				                    storm::gspn::LayoutInfo const &layoutInfo) { | 
			
		
		
	
		
			
				 | 
				 | 
				                uint64_t dontcareTransition; | 
				 | 
				 | 
				                uint64_t dontcareTransition; | 
			
		
		
	
		
			
				 | 
				 | 
				                if (extendedPriorities) { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    dontcareTransition = builder.addImmediateTransition(dontCarePriority, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                dontcareTransition = builder.addImmediateTransition(dontCarePriority, 0.0, | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                        dftElement->name() + STR_DONTCARE + | 
				 | 
				 | 
				                                                                        dftElement->name() + STR_DONTCARE + | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                        "_transition"); | 
				 | 
				 | 
				                                                                        "_transition"); | 
			
		
		
	
		
			
				 | 
				 | 
				                    dontCarePriority++; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                } else { | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                    dontcareTransition = builder.addImmediateTransition(dontCarePriority, 0.0, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                        dftElement->name() + STR_DONTCARE + | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                                                                        "_transition"); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                } | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                dontcareTransitions.emplace(dftElement->id(), dontcareTransition); | 
				 | 
				 | 
				                dontcareTransitions.emplace(dftElement->id(), dontcareTransition); | 
			
		
		
	
		
			
				 | 
				 | 
				                builder.setTransitionLayoutInfo(dontcareTransition, layoutInfo); | 
				 | 
				 | 
				                builder.setTransitionLayoutInfo(dontcareTransition, layoutInfo); | 
			
		
		
	
		
			
				 | 
				 | 
				                return dontcareTransition; | 
				 | 
				 | 
				                return dontcareTransition; | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |