1 changed files with 66 additions and 0 deletions
			
			
		@ -0,0 +1,66 @@ | 
				
			|||
#pragma once | 
				
			|||
 | 
				
			|||
#include "storm/storage/dd/bisimulation/Status.h" | 
				
			|||
#include "storm/storage/dd/bisimulation/Partition.h" | 
				
			|||
 | 
				
			|||
#include "storm/storage/dd/bisimulation/SignatureComputer.h" | 
				
			|||
#include "storm/storage/dd/bisimulation/SignatureRefiner.h" | 
				
			|||
 | 
				
			|||
namespace storm { | 
				
			|||
    namespace models { | 
				
			|||
        namespace symbolic { | 
				
			|||
            template <storm::dd::DdType DdType, typename ValueType> | 
				
			|||
            class Model; | 
				
			|||
        } | 
				
			|||
    } | 
				
			|||
     | 
				
			|||
    namespace dd { | 
				
			|||
        namespace bisimulation { | 
				
			|||
             | 
				
			|||
            template <storm::dd::DdType DdType, typename ValueType> | 
				
			|||
            class PartitionRefiner { | 
				
			|||
            public: | 
				
			|||
                PartitionRefiner(storm::models::symbolic::Model<DdType, ValueType> const& model, Partition<DdType, ValueType> const& initialStatePartition); | 
				
			|||
                 | 
				
			|||
                /*! | 
				
			|||
                 * Refines the partition.  | 
				
			|||
                 * | 
				
			|||
                 * @param mode The signature mode to use. | 
				
			|||
                 * @return False iff the partition is stable and no refinement was actually performed. | 
				
			|||
                 */ | 
				
			|||
                bool refine(bisimulation::SignatureMode const& mode = bisimulation::SignatureMode::Eager); | 
				
			|||
                 | 
				
			|||
                /*! | 
				
			|||
                 * Retrieves the current state partition in the refinement process. | 
				
			|||
                 */ | 
				
			|||
                Partition<DdType, ValueType> const& getStatePartition() const; | 
				
			|||
                 | 
				
			|||
                /*! | 
				
			|||
                 * Retrieves the status of the refinement process. | 
				
			|||
                 */ | 
				
			|||
                Status getStatus() const; | 
				
			|||
                 | 
				
			|||
            private: | 
				
			|||
                // The current status. | 
				
			|||
                Status status; | 
				
			|||
                 | 
				
			|||
                // The number of refinements that were made. | 
				
			|||
                uint64_t refinements; | 
				
			|||
                 | 
				
			|||
                // The state partition in the refinement process. Initially set to the initial partition. | 
				
			|||
                Partition<DdType, ValueType> statePartition; | 
				
			|||
                 | 
				
			|||
                // The object used to compute the signatures. | 
				
			|||
                SignatureComputer<DdType, ValueType> signatureComputer; | 
				
			|||
                 | 
				
			|||
                // The object used to refine the partition(s) based on the signatures. | 
				
			|||
                SignatureRefiner<DdType, ValueType> signatureRefiner; | 
				
			|||
                 | 
				
			|||
                // Time measurements. | 
				
			|||
                std::chrono::high_resolution_clock::duration totalSignatureTime; | 
				
			|||
                std::chrono::high_resolution_clock::duration totalRefinementTime; | 
				
			|||
            }; | 
				
			|||
             | 
				
			|||
        } | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue