Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
JSONExporter.h
Go to the documentation of this file.
1#pragma once
2
10
11namespace storm {
12namespace jani {
13
15
17 public:
19 static ExportJsonType translate(storm::expressions::Expression const& expr, std::vector<storm::jani::Constant> const& constants,
20 VariableSet const& globalVariables, VariableSet const& localVariables,
21 std::unordered_set<std::string> const& auxiliaryVariables);
22
23 virtual boost::any visit(storm::expressions::IfThenElseExpression const& expression, boost::any const& data);
24 virtual boost::any visit(storm::expressions::BinaryBooleanFunctionExpression const& expression, boost::any const& data);
25 virtual boost::any visit(storm::expressions::BinaryNumericalFunctionExpression const& expression, boost::any const& data);
26 virtual boost::any visit(storm::expressions::BinaryRelationExpression const& expression, boost::any const& data);
27 virtual boost::any visit(storm::expressions::VariableExpression const& expression, boost::any const& data);
28 virtual boost::any visit(storm::expressions::UnaryBooleanFunctionExpression const& expression, boost::any const& data);
29 virtual boost::any visit(storm::expressions::UnaryNumericalFunctionExpression const& expression, boost::any const& data);
30 virtual boost::any visit(storm::expressions::BooleanLiteralExpression const& expression, boost::any const& data);
31 virtual boost::any visit(storm::expressions::IntegerLiteralExpression const& expression, boost::any const& data);
32 virtual boost::any visit(storm::expressions::RationalLiteralExpression const& expression, boost::any const& data);
33 virtual boost::any visit(storm::expressions::ValueArrayExpression const& expression, boost::any const& data);
34 virtual boost::any visit(storm::expressions::ConstructorArrayExpression const& expression, boost::any const& data);
35 virtual boost::any visit(storm::expressions::ArrayAccessExpression const& expression, boost::any const& data);
36 virtual boost::any visit(storm::expressions::FunctionCallExpression const& expression, boost::any const& data);
37 virtual boost::any visit(storm::expressions::TranscendentalNumberLiteralExpression const& expression, boost::any const& data);
38
39 private:
40 ExpressionToJson(std::vector<storm::jani::Constant> const& constants, VariableSet const& globalVariables, VariableSet const& localVariables,
41 std::unordered_set<std::string> const& auxiliaryVariables)
42 : constants(constants), globalVariables(globalVariables), localVariables(localVariables), auxiliaryVariables(auxiliaryVariables) {}
43 std::vector<storm::jani::Constant> const& constants;
44 VariableSet const& globalVariables;
45 VariableSet const& localVariables;
46 std::unordered_set<std::string> auxiliaryVariables;
47};
48
50 public:
51 static ExportJsonType translate(storm::logic::Formula const& formula, storm::jani::Model const& model, storm::jani::ModelFeatures& modelFeatures);
52 bool containsStateExitRewards() const; // Returns true iff the previously translated formula contained state exit rewards
53 virtual boost::any visit(storm::logic::AtomicExpressionFormula const& f, boost::any const& data) const;
54 virtual boost::any visit(storm::logic::AtomicLabelFormula const& f, boost::any const& data) const;
55 virtual boost::any visit(storm::logic::BinaryBooleanStateFormula const& f, boost::any const& data) const;
56 virtual boost::any visit(storm::logic::BinaryBooleanPathFormula const& f, boost::any const& data) const;
57 virtual boost::any visit(storm::logic::BooleanLiteralFormula const& f, boost::any const& data) const;
58 virtual boost::any visit(storm::logic::BoundedUntilFormula const& f, boost::any const& data) const;
59 virtual boost::any visit(storm::logic::ConditionalFormula const& f, boost::any const& data) const;
60 virtual boost::any visit(storm::logic::CumulativeRewardFormula const& f, boost::any const& data) const;
61 virtual boost::any visit(storm::logic::EventuallyFormula const& f, boost::any const& data) const;
62 virtual boost::any visit(storm::logic::TimeOperatorFormula const& f, boost::any const& data) const;
63 virtual boost::any visit(storm::logic::GameFormula const& f, boost::any const& data) const;
64 virtual boost::any visit(storm::logic::GloballyFormula const& f, boost::any const& data) const;
65 virtual boost::any visit(storm::logic::InstantaneousRewardFormula const& f, boost::any const& data) const;
66 virtual boost::any visit(storm::logic::LongRunAverageOperatorFormula const& f, boost::any const& data) const;
67 virtual boost::any visit(storm::logic::LongRunAverageRewardFormula const& f, boost::any const& data) const;
68 virtual boost::any visit(storm::logic::MultiObjectiveFormula const& f, boost::any const& data) const;
69 virtual boost::any visit(storm::logic::QuantileFormula const& f, boost::any const& data) const;
70 virtual boost::any visit(storm::logic::NextFormula const& f, boost::any const& data) const;
71 virtual boost::any visit(storm::logic::ProbabilityOperatorFormula const& f, boost::any const& data) const;
72 virtual boost::any visit(storm::logic::RewardOperatorFormula const& f, boost::any const& data) const;
73 virtual boost::any visit(storm::logic::TotalRewardFormula const& f, boost::any const& data) const;
74 virtual boost::any visit(storm::logic::UnaryBooleanStateFormula const& f, boost::any const& data) const;
75 virtual boost::any visit(storm::logic::UnaryBooleanPathFormula const& f, boost::any const& data) const;
76 virtual boost::any visit(storm::logic::UntilFormula const& f, boost::any const& data) const;
77 virtual boost::any visit(storm::logic::HOAPathFormula const& f, boost::any const& data) const;
78
79 private:
80 FormulaToJaniJson(storm::jani::Model const& model) : model(model), stateExitRewards(false) {}
81
82 ExportJsonType constructPropertyInterval(boost::optional<storm::expressions::Expression> const& lower, boost::optional<bool> const& lowerExclusive,
83 boost::optional<storm::expressions::Expression> const& upper, boost::optional<bool> const& upperExclusive) const;
84
85 ExportJsonType constructRewardAccumulation(storm::logic::RewardAccumulation const& rewardAccumulation) const;
86 ExportJsonType constructRewardAccumulation(storm::logic::RewardAccumulation const& rewardAccumulation, std::string const& rewardModelName) const;
87 ExportJsonType constructStandardRewardAccumulation(std::string const& rewardModelName) const;
88
89 storm::jani::Model const& model;
90 mutable bool stateExitRewards;
91};
92
94 public:
95 JsonExporter() = default;
96 static void toFile(storm::jani::Model const& janiModel, std::vector<storm::jani::Property> const& formulas, std::string const& filepath,
97 bool checkValid = true, bool compact = false);
98 static void toStream(storm::jani::Model const& janiModel, std::vector<storm::jani::Property> const& formulas, std::ostream& ostream,
99 bool checkValid = false, bool compact = false);
100
101 static ExportJsonType getEdgeAsJson(storm::jani::Model const& janiModel, uint64_t automatonIndex, uint64_t edgeIndex, bool commentExpressions = true);
102
103 private:
104 void convertModel(storm::jani::Model const& model, bool commentExpressions = true);
105 void convertProperties(std::vector<storm::jani::Property> const& formulas, storm::jani::Model const& model);
106 void appendVariableDeclaration(storm::jani::Variable const& variable);
107
108 ExportJsonType finalize();
109
110 ExportJsonType jsonStruct;
111 storm::jani::ModelFeatures modelFeatures;
112};
113} // namespace jani
114} // namespace storm
Represents an array of the given size, where the i'th entry is determined by the elementExpression,...
virtual boost::any visit(IfThenElseExpression const &expression, boost::any const &data)=0
Represents an array with a given list of elements.
Represents an array with a given list of elements.
virtual boost::any visit(storm::expressions::IfThenElseExpression const &expression, boost::any const &data)
static ExportJsonType translate(storm::expressions::Expression const &expr, std::vector< storm::jani::Constant > const &constants, VariableSet const &globalVariables, VariableSet const &localVariables, std::unordered_set< std::string > const &auxiliaryVariables)
static ExportJsonType translate(storm::logic::Formula const &formula, storm::jani::Model const &model, storm::jani::ModelFeatures &modelFeatures)
virtual boost::any visit(storm::logic::AtomicExpressionFormula const &f, boost::any const &data) const
static ExportJsonType getEdgeAsJson(storm::jani::Model const &janiModel, uint64_t automatonIndex, uint64_t edgeIndex, bool commentExpressions=true)
static void toFile(storm::jani::Model const &janiModel, std::vector< storm::jani::Property > const &formulas, std::string const &filepath, bool checkValid=true, bool compact=false)
static void toStream(storm::jani::Model const &janiModel, std::vector< storm::jani::Property > const &formulas, std::ostream &ostream, bool checkValid=false, bool compact=false)
storm::json< storm::RationalNumber > ExportJsonType
LabParser.cpp.
Definition cli.cpp:18
nlohmann::basic_json< std::map, std::vector, std::string, bool, int64_t, uint64_t, ValueType > json
Definition JsonForward.h:10