#ifndef STORM_STORAGE_PRISM_PROGRAM_H_ #define STORM_STORAGE_PRISM_PROGRAM_H_ #include #include #include #include #include "src/storage/expressions/Expression.h" #include "src/storage/prism/Constant.h" #include "src/storage/prism/Formula.h" #include "src/storage/prism/Label.h" #include "src/storage/prism/Module.h" #include "src/storage/prism/RewardModel.h" #include "src/storage/prism/InitialConstruct.h" #include "src/utility/OsDetection.h" namespace storm { namespace prism { class Program : public LocatedInformation { public: /*! * An enum for the different model types. */ enum class ModelType {UNDEFINED, DTMC, CTMC, MDP, CTMDP, MA}; /*! * Creates a program with the given model type, undefined constants, global variables, modules, reward * models, labels and initial states. * * @param modelType The type of the program. * @param constants The constants of the program. * @param globalBooleanVariables The global boolean variables of the program. * @param globalIntegerVariables The global integer variables of the program. * @param formulas The formulas defined in the program. * @param modules The modules of the program. * @param fixInitialConstruct A flag that indicates whether the given initial construct is to be ignored and * replaced by a new one created from the initial values of the variables. * @param initialConstruct The initial construct of the program. If the initial construct specifies "false" * as the initial condition, the default values of the variables are used to construct a legal initial * condition. * @param rewardModels The reward models of the program. * @param labels The labels defined for this program. * @param filename The filename in which the program is defined. * @param lineNumber The line number in which the program is defined. * @param checkValidity If set to true, the program is checked for validity. */ Program(ModelType modelType, std::vector const& constants, std::vector const& globalBooleanVariables, std::vector const& globalIntegerVariables, std::vector const& formulas, std::vector const& modules, std::vector const& rewardModels, bool fixInitialConstruct, storm::prism::InitialConstruct const& initialConstruct, std::vector