3 changed files with 151 additions and 45 deletions
			
			
		| @ -1,45 +0,0 @@ | |||
| /* | |||
|  * Formulas.h | |||
|  * | |||
|  *  Created on: 06.12.2012 | |||
|  *      Author: chris | |||
|  */ | |||
| 
 | |||
| #ifndef STORM_FORMULA_FORMULAS_H_ | |||
| #define STORM_FORMULA_FORMULAS_H_ | |||
| 
 | |||
| #include "modelchecker/ForwardDeclarations.h" | |||
| 
 | |||
| #include "And.h" | |||
| #include "Ap.h" | |||
| #include "BoundedUntil.h" | |||
| #include "BoundedNaryUntil.h" | |||
| #include "Next.h" | |||
| #include "Not.h" | |||
| #include "Or.h" | |||
| #include "ProbabilisticNoBoundOperator.h" | |||
| #include "ProbabilisticBoundOperator.h" | |||
| 
 | |||
| #include "Until.h" | |||
| #include "Eventually.h" | |||
| #include "Globally.h" | |||
| #include "BoundedEventually.h" | |||
| 
 | |||
| #include "InstantaneousReward.h" | |||
| #include "CumulativeReward.h" | |||
| #include "ReachabilityReward.h" | |||
| #include "RewardBoundOperator.h" | |||
| #include "RewardNoBoundOperator.h" | |||
| #include "SteadyStateReward.h" | |||
| 
 | |||
| #include "SteadyStateNoBoundOperator.h" | |||
| #include "SteadyStateBoundOperator.h" | |||
| 
 | |||
| #include "TimeBoundedUntil.h" | |||
| #include "TimeBoundedEventually.h" | |||
| 
 | |||
| #include "AbstractFormula.h" | |||
| #include "AbstractPathFormula.h" | |||
| #include "AbstractStateFormula.h" | |||
| 
 | |||
| #endif /* STORM_FORMULA_FORMULAS_H_ */ | |||
| @ -0,0 +1,46 @@ | |||
| /* | |||
|  * Formulas.h | |||
|  * | |||
|  *  Created on: 06.12.2012 | |||
|  *      Author: chris | |||
|  */ | |||
| 
 | |||
| #ifndef STORM_FORMULA_FORMULAS_H_ | |||
| #define STORM_FORMULA_FORMULAS_H_ | |||
| 
 | |||
| #include "modelchecker/ForwardDeclarations.h" | |||
| 
 | |||
| #include "Prctl/And.h" | |||
| #include "Prctl/Ap.h" | |||
| #include "Prctl/BoundedUntil.h" | |||
| #include "Prctl/BoundedNaryUntil.h" | |||
| #include "Prctl/Next.h" | |||
| #include "Prctl/Not.h" | |||
| #include "Prctl/Or.h" | |||
| #include "Prctl/ProbabilisticNoBoundOperator.h" | |||
| #include "Prctl/ProbabilisticBoundOperator.h" | |||
| 
 | |||
| #include "Prctl/Until.h" | |||
| #include "Prctl/Eventually.h" | |||
| #include "Prctl/Globally.h" | |||
| #include "Prctl/BoundedEventually.h" | |||
| 
 | |||
| #include "Prctl/InstantaneousReward.h" | |||
| #include "Prctl/CumulativeReward.h" | |||
| #include "Prctl/ReachabilityReward.h" | |||
| #include "Prctl/RewardBoundOperator.h" | |||
| #include "Prctl/RewardNoBoundOperator.h" | |||
| #include "Prctl/SteadyStateReward.h" | |||
| 
 | |||
| /* | |||
| #include "SteadyStateNoBoundOperator.h" | |||
| #include "SteadyStateBoundOperator.h" | |||
| 
 | |||
| #include "TimeBoundedUntil.h" | |||
| #include "TimeBoundedEventually.h" | |||
| 
 | |||
| #include "AbstractFormula.h" | |||
| #include "AbstractPathFormula.h" | |||
| #include "AbstractStateFormula.h" | |||
| */ | |||
| #endif /* STORM_FORMULA_FORMULAS_H_ */ | |||
| @ -0,0 +1,105 @@ | |||
| /* | |||
|  * Ap.h | |||
|  * | |||
|  *  Created on: 19.10.2012 | |||
|  *      Author: Thomas Heinemann | |||
|  */ | |||
| 
 | |||
| #ifndef STORM_FORMULA_PRCTL_AP_H_ | |||
| #define STORM_FORMULA_PRCTL_AP_H_ | |||
| 
 | |||
| #include "AbstractStateFormula.h" | |||
| #include "src/formula/abstract/Ap.h" | |||
| #include "src/formula/AbstractFormulaChecker.h" | |||
| #include "src/modelchecker/ForwardDeclarations.h" | |||
| 
 | |||
| namespace storm { | |||
| namespace formula { | |||
| namespace prctl { | |||
| 
 | |||
| template <class T> class Ap; | |||
| 
 | |||
| /*! | |||
|  *  @brief Interface class for model checkers that support Ap. | |||
|  * | |||
|  *  All model checkers that support the formula class Ap must inherit | |||
|  *  this pure virtual class. | |||
|  */ | |||
| template <class T> | |||
| class IApModelChecker { | |||
|     public: | |||
| 		/*! | |||
|          *  @brief Evaluates Ap formula within a model checker. | |||
|          * | |||
|          *  @param obj Formula object with subformulas. | |||
|          *  @return Result of the formula for every node. | |||
|          */ | |||
|         virtual storm::storage::BitVector* checkAp(const Ap<T>& obj) const = 0; | |||
| }; | |||
| 
 | |||
| /*! | |||
|  * @brief | |||
|  * Class for a Abstract formula tree with atomic proposition as root. | |||
|  * | |||
|  * This class represents the leaves in the formula tree. | |||
|  * | |||
|  * @see AbstractFormula | |||
|  * @see AbstractFormula | |||
|  */ | |||
| template <class T> | |||
| class Ap : public storm::formula::abstract::Ap<T>, public AbstractFormula<T> { | |||
| 
 | |||
| public: | |||
| 	/*! | |||
| 	 * Constructor | |||
| 	 * | |||
| 	 * Creates a new atomic proposition leaf, with the label Ap | |||
| 	 * | |||
| 	 * @param ap The string representing the atomic proposition | |||
| 	 */ | |||
| 	Ap(std::string ap) | |||
| 		: storm::formula::abstract::Ap<T>(ap) { | |||
| 		// Intentionally left empty | |||
| 	} | |||
| 
 | |||
| 	/*! | |||
| 	 * Destructor. | |||
| 	 * At this time, empty... | |||
| 	 */ | |||
| 	virtual ~Ap() { | |||
| 		// 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 | |||
| 	 * | |||
| 	 * @returns a new AND-object that is identical the called object. | |||
| 	 */ | |||
| 	virtual AbstractStateFormula<T>* clone() const { | |||
| 		return new Ap(getAp()); | |||
| 	} | |||
| 
 | |||
| 	/*! | |||
| 	 * 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. | |||
| 	 * | |||
| 	 * @returns A bit vector indicating all states that satisfy the formula represented by the called object. | |||
| 	 */ | |||
| 	virtual storm::storage::BitVector *check(const storm::modelchecker::AbstractModelChecker<T>& modelChecker) const { | |||
| 		return modelChecker.template as<IApModelChecker>()->checkAp(*this); | |||
| 	} | |||
| 
 | |||
| }; | |||
| 
 | |||
| } //namespace abstract | |||
| 
 | |||
| } //namespace formula | |||
| 
 | |||
| } //namespace storm | |||
| 
 | |||
| #endif /* STORM_FORMULA_PRCTL_AP_H_ */ | |||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue