#ifndef ALLOWEARLYTERMINATIONCONDITION_H #define ALLOWEARLYTERMINATIONCONDITION_H #include #include "src/storage/BitVector.h" namespace storm { namespace solver { template class TerminationCondition { public: virtual bool terminateNow(std::vector const& currentValues) const = 0; }; template class NoTerminationCondition : public TerminationCondition { public: bool terminateNow(std::vector const& currentValues) const; }; template class TerminateIfFilteredSumExceedsThreshold : public TerminationCondition { public: TerminateIfFilteredSumExceedsThreshold(storm::storage::BitVector const& filter, ValueType const& threshold, bool strict); bool terminateNow(std::vector const& currentValues) const; protected: ValueType threshold; storm::storage::BitVector filter; bool strict; }; template class TerminateIfFilteredExtremumExceedsThreshold : public TerminateIfFilteredSumExceedsThreshold{ public: TerminateIfFilteredExtremumExceedsThreshold(storm::storage::BitVector const& filter, ValueType const& threshold, bool strict, bool useMinimum); bool terminateNow(std::vector const& currentValue) const; protected: ValueType threshold; storm::storage::BitVector filter; bool useMinimum; }; } } #endif /* ALLOWEARLYTERMINATIONCONDITION_H */