/* * AbstractPathFormula.h * * Created on: 19.10.2012 * Author: Thomas Heinemann */ #ifndef STORM_FORMULA_PRCTL_ABSTRACTPATHFORMULA_H_ #define STORM_FORMULA_PRCTL_ABSTRACTPATHFORMULA_H_ #include "src/formula/Prctl/AbstractPrctlFormula.h" #include "src/modelchecker/prctl/ForwardDeclarations.h" #include #include #include namespace storm { namespace property { namespace prctl { /*! * @brief * Abstract base class for Abstract path formulas. * * @attention This class is abstract. * @note Formula classes do not have copy constructors. The parameters of the constructors are usually the subtrees, so * the syntax conflicts with copy constructors for unary operators. To produce an identical object, use the method * clone(). * * @note This class is intentionally not derived from AbstractPrctlFormula, as path formulas are not complete PRCTL formulas. */ template class AbstractPathFormula : public virtual storm::property::prctl::AbstractPrctlFormula { public: /*! * empty destructor */ virtual ~AbstractPathFormula() { // Intentionally left empty } /*! * Clones the called object. * * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones * * @note This function is not implemented in this class. * @returns a new AND-object that is identical the called object. */ virtual AbstractPathFormula* clone() const = 0; /*! * Calls the model checker to check this formula. * Needed to infer the correct type of formula class. * * @note This function should only be called in a generic check function of a model checker class. For other uses, * the methods of the model checker should be used. * * @note This function is not implemented in this class. * * @returns A vector indicating the probability that the formula holds for each state. */ virtual std::vector check(const storm::modelchecker::prctl::AbstractModelChecker& modelChecker, bool qualitative) const = 0; }; } //namespace prctl } //namespace property } //namespace storm #endif /* STORM_FORMULA_PRCTL_ABSTRACTPATHFORMULA_H_ */