Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ConditionalFormula.cpp
Go to the documentation of this file.
2#include <boost/any.hpp>
3#include <ostream>
5
8
9namespace storm {
10namespace logic {
11ConditionalFormula::ConditionalFormula(std::shared_ptr<Formula const> const& subformula, std::shared_ptr<Formula const> const& conditionFormula,
12 FormulaContext context)
13 : subformula(subformula), conditionFormula(conditionFormula), context(context) {
14 STORM_LOG_THROW(context == FormulaContext::Probability || context == FormulaContext::Reward, storm::exceptions::InvalidPropertyException,
15 "Invalid context for formula.");
16}
17
19 return *subformula;
20}
21
23 return *conditionFormula;
24}
25
27 return context;
28}
29
33
37
38boost::any ConditionalFormula::accept(FormulaVisitor const& visitor, boost::any const& data) const {
39 return visitor.visit(*this, data);
40}
41
42void ConditionalFormula::gatherAtomicExpressionFormulas(std::vector<std::shared_ptr<AtomicExpressionFormula const>>& atomicExpressionFormulas) const {
43 this->getSubformula().gatherAtomicExpressionFormulas(atomicExpressionFormulas);
44 this->getConditionFormula().gatherAtomicExpressionFormulas(atomicExpressionFormulas);
45}
46
47void ConditionalFormula::gatherAtomicLabelFormulas(std::vector<std::shared_ptr<AtomicLabelFormula const>>& atomicLabelFormulas) const {
48 this->getSubformula().gatherAtomicLabelFormulas(atomicLabelFormulas);
49 this->getConditionFormula().gatherAtomicLabelFormulas(atomicLabelFormulas);
50}
51
52void ConditionalFormula::gatherReferencedRewardModels(std::set<std::string>& referencedRewardModels) const {
53 this->getSubformula().gatherReferencedRewardModels(referencedRewardModels);
54 this->getConditionFormula().gatherReferencedRewardModels(referencedRewardModels);
55}
56
57void ConditionalFormula::gatherUsedVariables(std::set<storm::expressions::Variable>& usedVariables) const {
58 this->getSubformula().gatherUsedVariables(usedVariables);
59 this->getConditionFormula().gatherUsedVariables(usedVariables);
60}
61
63 return false;
64}
65
67 return true;
68}
69
70std::ostream& ConditionalFormula::writeToStream(std::ostream& out, bool allowParentheses) const {
71 if (allowParentheses) {
72 out << "(";
73 }
74 this->getSubformula().writeToStream(out, true);
75 out << " || ";
76 this->getConditionFormula().writeToStream(out, true);
77 if (allowParentheses) {
78 out << ")";
79 }
80 return out;
81}
82} // namespace logic
83} // namespace storm
virtual bool hasQuantitativeResult() const override
virtual bool isConditionalRewardFormula() const override
Formula const & getConditionFormula() const
virtual std::ostream & writeToStream(std::ostream &out, bool allowParentheses=false) const override
Writes the forumla to the given output stream.
ConditionalFormula(std::shared_ptr< Formula const > const &subformula, std::shared_ptr< Formula const > const &conditionFormula, FormulaContext context=FormulaContext::Probability)
Formula const & getSubformula() const
virtual void gatherAtomicLabelFormulas(std::vector< std::shared_ptr< AtomicLabelFormula const > > &atomicLabelFormulas) const override
FormulaContext const & getContext() const
virtual void gatherReferencedRewardModels(std::set< std::string > &referencedRewardModels) const override
virtual boost::any accept(FormulaVisitor const &visitor, boost::any const &data) const override
virtual void gatherUsedVariables(std::set< storm::expressions::Variable > &usedVariables) const override
virtual bool isConditionalProbabilityFormula() const override
virtual void gatherAtomicExpressionFormulas(std::vector< std::shared_ptr< AtomicExpressionFormula const > > &atomicExpressionFormulas) const override
virtual bool hasQualitativeResult() const override
virtual std::ostream & writeToStream(std::ostream &out, bool allowParentheses=false) const =0
Writes the forumla to the given output stream.
virtual void gatherReferencedRewardModels(std::set< std::string > &referencedRewardModels) const
Definition Formula.cpp:564
virtual void gatherAtomicLabelFormulas(std::vector< std::shared_ptr< AtomicLabelFormula const > > &atomicLabelFormulas) const
Definition Formula.cpp:560
virtual void gatherUsedVariables(std::set< storm::expressions::Variable > &usedVariables) const
Definition Formula.cpp:568
virtual void gatherAtomicExpressionFormulas(std::vector< std::shared_ptr< AtomicExpressionFormula const > > &atomicExpressionFormulas) const
Definition Formula.cpp:556
virtual boost::any visit(AtomicExpressionFormula const &f, boost::any const &data) const =0
#define STORM_LOG_THROW(cond, exception, message)
Definition macros.h:30
LabParser.cpp.
Definition cli.cpp:18