#pragma once #include #include #include "storm/storage/dd/DdType.h" #include "storm/abstraction/MenuGame.h" #include "storm/abstraction/RefinementCommand.h" #include "storm/storage/expressions/Expression.h" namespace storm { namespace abstraction { template class AbstractionInformation; template class MenuGameAbstractor { public: /// Retrieves the abstraction. virtual MenuGame abstract() = 0; /// Retrieves information about the abstraction. virtual AbstractionInformation const& getAbstractionInformation() const = 0; virtual storm::expressions::Expression const& getGuard(uint64_t player1Choice) const = 0; virtual std::pair getPlayer1ChoiceRange() const = 0; virtual std::map getVariableUpdates(uint64_t player1Choice, uint64_t auxiliaryChoice) const = 0; virtual storm::expressions::Expression getInitialExpression() const = 0; /// Methods to refine the abstraction. virtual void refine(RefinementCommand const& command) = 0; /// Exports a representation of the current abstraction state in the dot format. virtual void exportToDot(std::string const& filename, storm::dd::Bdd const& highlightStates, storm::dd::Bdd const& filter) const = 0; }; } }