You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.8 KiB

  1. #ifndef STORM_MODELCHECKER_SPARSEPROPOSITIONALMODELCHECKER_H_
  2. #define STORM_MODELCHECKER_SPARSEPROPOSITIONALMODELCHECKER_H_
  3. #include "src/modelchecker/AbstractModelChecker.h"
  4. #include "src/models/sparse/Model.h"
  5. namespace storm {
  6. namespace modelchecker {
  7. template<typename ValueType>
  8. class SparsePropositionalModelChecker : public AbstractModelChecker {
  9. public:
  10. explicit SparsePropositionalModelChecker(storm::models::sparse::Model<ValueType> const& model);
  11. // The implemented methods of the AbstractModelChecker interface.
  12. virtual bool canHandle(storm::logic::Formula const& formula) const override;
  13. virtual std::unique_ptr<CheckResult> checkBooleanLiteralFormula(storm::logic::BooleanLiteralFormula const& stateFormula) override;
  14. virtual std::unique_ptr<CheckResult> checkAtomicLabelFormula(storm::logic::AtomicLabelFormula const& stateFormula) override;
  15. protected:
  16. /*!
  17. * Retrieves the model associated with this model checker instance.
  18. *
  19. * @return The model associated with this model checker instance.
  20. */
  21. virtual storm::models::sparse::Model<ValueType> const& getModel() const;
  22. /*!
  23. * Retrieves the model associated with this model checker instance as the given template parameter type.
  24. *
  25. * @return The model associated with this model checker instance.
  26. */
  27. template<typename ModelType>
  28. ModelType const& getModelAs() const;
  29. private:
  30. // The model that is to be analyzed by the model checker.
  31. storm::models::sparse::Model<ValueType> const& model;
  32. };
  33. }
  34. }
  35. #endif /* STORM_MODELCHECKER_SPARSEPROPOSITIONALMODELCHECKER_H_ */