#ifndef STORM_LOGIC_BOUNDEDUNTILFORMULA_H_ #define STORM_LOGIC_BOUNDEDUNTILFORMULA_H_ #include #include "src/logic/BinaryPathFormula.h" namespace storm { namespace logic { class BoundedUntilFormula : public BinaryPathFormula { public: BoundedUntilFormula(std::shared_ptr const& leftSubformula, std::shared_ptr const& rightSubformula, double lowerBound, double upperBound); BoundedUntilFormula(std::shared_ptr const& leftSubformula, std::shared_ptr const& rightSubformula, uint_fast64_t upperBound); BoundedUntilFormula(std::shared_ptr const& leftSubformula, std::shared_ptr const& rightSubformula, boost::variant> const& bounds); virtual bool isBoundedUntilFormula() const override; virtual bool containsBoundedUntilFormula() const override; bool hasDiscreteTimeBound() const; std::pair const& getIntervalBounds() const; uint_fast64_t getDiscreteTimeBound() const; virtual bool isPctlPathFormula() const override; virtual bool isCslPathFormula() const override; virtual std::ostream& writeToStream(std::ostream& out) const override; virtual std::shared_ptr substitute(std::map const& substitution) const override; private: boost::variant> bounds; }; } } #endif /* STORM_LOGIC_BOUNDEDUNTILFORMULA_H_ */