| 
					
					
						
							
						
					
					
				 | 
				@ -2,17 +2,19 @@ | 
			
		
		
	
		
			
				 | 
				 | 
				#ifndef DFT_H | 
				 | 
				 | 
				#ifndef DFT_H | 
			
		
		
	
		
			
				 | 
				 | 
				#define	DFT_H | 
				 | 
				 | 
				#define	DFT_H | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				#include "DFTElements.h" | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				#include "../BitVector.h" | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				#include <memory> | 
				 | 
				 | 
				#include <memory> | 
			
		
		
	
		
			
				 | 
				 | 
				#include <unordered_map> | 
				 | 
				 | 
				#include <unordered_map> | 
			
		
		
	
		
			
				 | 
				 | 
				#include <list> | 
				 | 
				 | 
				#include <list> | 
			
		
		
	
		
			
				 | 
				 | 
				#include <map> | 
				 | 
				 | 
				#include <map> | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				#include <boost/iterator/counting_iterator.hpp> | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				#include "DFTIsomorphism.h" | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				#include "DFTElements.h" | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				#include "../BitVector.h" | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				#include "../../utility/math.h" | 
				 | 
				 | 
				#include "../../utility/math.h" | 
			
		
		
	
		
			
				 | 
				 | 
				#include "src/utility/macros.h" | 
				 | 
				 | 
				#include "src/utility/macros.h" | 
			
		
		
	
		
			
				 | 
				 | 
				#include <boost/iterator/counting_iterator.hpp> | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				namespace storm { | 
				 | 
				 | 
				namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				    namespace storage { | 
				 | 
				 | 
				    namespace storage { | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -28,8 +30,9 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				        }; | 
				 | 
				 | 
				        }; | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /** | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				         * Represents a Dynamic Fault Tree | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				         */ | 
			
		
		
	
		
			
				 | 
				 | 
				        template<typename ValueType> | 
				 | 
				 | 
				        template<typename ValueType> | 
			
		
		
	
		
			
				 | 
				 | 
				        class DFT { | 
				 | 
				 | 
				        class DFT { | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -136,12 +139,17 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				                return result; | 
				 | 
				 | 
				                return result; | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            /** | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				             *  Get a pointer to an element in the DFT | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				             *  @param index The id of the element | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				             */ | 
			
		
		
	
		
			
				 | 
				 | 
				            DFTElementPointer const& getElement(size_t index) const { | 
				 | 
				 | 
				            DFTElementPointer const& getElement(size_t index) const { | 
			
		
		
	
		
			
				 | 
				 | 
				                assert(index < nrElements()); | 
				 | 
				 | 
				                assert(index < nrElements()); | 
			
		
		
	
		
			
				 | 
				 | 
				                return mElements[index]; | 
				 | 
				 | 
				                return mElements[index]; | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            std::shared_ptr<DFTBE<ValueType>> getBasicElement(size_t index) const { | 
				 | 
				 | 
				            std::shared_ptr<DFTBE<ValueType>> getBasicElement(size_t index) const { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                assert(index < nrElements()); | 
			
		
		
	
		
			
				 | 
				 | 
				                assert(mElements[index]->isBasicElement()); | 
				 | 
				 | 
				                assert(mElements[index]->isBasicElement()); | 
			
		
		
	
		
			
				 | 
				 | 
				                return std::static_pointer_cast<DFTBE<ValueType>>(mElements[index]); | 
				 | 
				 | 
				                return std::static_pointer_cast<DFTBE<ValueType>>(mElements[index]); | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -182,7 +190,8 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				            std::string getElementsWithStateString(DFTStatePointer const& state) const; | 
				 | 
				 | 
				            std::string getElementsWithStateString(DFTStatePointer const& state) const; | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            std::string getStateString(DFTStatePointer const& state) const; | 
				 | 
				 | 
				            std::string getStateString(DFTStatePointer const& state) const; | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            DFTIsomorphisms detectIsomorphicChildren() const; | 
			
		
		
	
		
			
				 | 
				 | 
				        private: | 
				 | 
				 | 
				        private: | 
			
		
		
	
		
			
				 | 
				 | 
				            bool elementIndicesCorrect() const { | 
				 | 
				 | 
				            bool elementIndicesCorrect() const { | 
			
		
		
	
		
			
				 | 
				 | 
				                for(size_t i = 0; i < mElements.size(); ++i) { | 
				 | 
				 | 
				                for(size_t i = 0; i < mElements.size(); ++i) { | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |