Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ExtractMaximalStateFormulasVisitor.h
Go to the documentation of this file.
1#pragma once
2
3#include <map>
4#include <vector>
6
7namespace storm {
8namespace logic {
9
10class ExtractMaximalStateFormulasVisitor : public CloneVisitor {
11 public:
12 typedef std::map<std::string, std::shared_ptr<Formula const>> ApToFormulaMap;
13
20 static std::shared_ptr<Formula> extract(PathFormula const& f, ApToFormulaMap& extractedFormulas);
21
22 virtual boost::any visit(BinaryBooleanPathFormula const& f, boost::any const& data) const override;
23 virtual boost::any visit(BoundedUntilFormula const& f, boost::any const& data) const override;
24 virtual boost::any visit(EventuallyFormula const& f, boost::any const& data) const override;
25 virtual boost::any visit(GloballyFormula const& f, boost::any const& data) const override;
26 virtual boost::any visit(NextFormula const& f, boost::any const& data) const override;
27 virtual boost::any visit(UnaryBooleanPathFormula const& f, boost::any const& data) const override;
28 virtual boost::any visit(UntilFormula const& f, boost::any const& data) const override;
29 virtual boost::any visit(WeakUntilFormula const& f, boost::any const& data) const override;
30 virtual boost::any visit(ReleaseFormula const& f, boost::any const& data) const override;
31
32 virtual boost::any visit(TimeOperatorFormula const& f, boost::any const& data) const override;
33 virtual boost::any visit(LongRunAverageOperatorFormula const& f, boost::any const& data) const override;
34 virtual boost::any visit(MultiObjectiveFormula const& f, boost::any const& data) const override;
35 virtual boost::any visit(ProbabilityOperatorFormula const& f, boost::any const& data) const override;
36 virtual boost::any visit(RewardOperatorFormula const& f, boost::any const& data) const override;
37
38 private:
39 ExtractMaximalStateFormulasVisitor(ApToFormulaMap& extractedFormulas);
40
41 std::shared_ptr<Formula> extract(std::shared_ptr<Formula> f) const;
42 void incrementNestingLevel() const;
43 void decrementNestingLevel() const;
44
45 ApToFormulaMap& extractedFormulas;
46 // A mapping from formula-strings to labels in order to use the same label for the equivalent formulas (as strings)
47 mutable std::map<std::string, std::string> cachedFormulas;
48 std::size_t nestingLevel;
49};
50
51} // namespace logic
52} // namespace storm
virtual boost::any visit(BinaryBooleanPathFormula const &f, boost::any const &data) const override
static std::shared_ptr< Formula > extract(PathFormula const &f, ApToFormulaMap &extractedFormulas)
Finds state subformulae in f and replaces them by atomic propositions.
std::map< std::string, std::shared_ptr< Formula const > > ApToFormulaMap