mCRL2
Loading...
Searching...
No Matches
is_monotonous.h
Go to the documentation of this file.
1// Author(s): Wieger Wesselink
2// Copyright: see the accompanying file COPYING or copy at
3// https://github.com/mCRL2org/mCRL2/blob/master/COPYING
4//
5// Distributed under the Boost Software License, Version 1.0.
6// (See accompanying file LICENSE_1_0.txt or copy at
7// http://www.boost.org/LICENSE_1_0.txt)
8//
9/// \file mcrl2/modal_formula/is_monotonous.h
10/// \brief add your file description here.
11
12#ifndef MCRL2_MODAL_FORMULA_IS_MONOTONOUS_H
13#define MCRL2_MODAL_FORMULA_IS_MONOTONOUS_H
14
15#include "mcrl2/core/detail/print_utility.h"
16#include "mcrl2/modal_formula/state_formula.h"
17
18namespace mcrl2::state_formulas
19{
20
21/// \brief Returns true if the state formula is monotonous.
22/// \param f A modal formula.
23/// \param non_negated_variables Names of state variables that occur positively in the current scope.
24/// \param negated_variables Names of state variables that occur negatively in the current scope.
25/// \return True if the state formula is monotonous.
26inline
28 const std::set<core::identifier_string>& non_negated_variables,
29 const std::set<core::identifier_string>& negated_variables)
30{
31 using utilities::detail::contains;
32
33 if (is_not(f))
34 {
35 return is_monotonous(atermpp::down_cast<not_>(f).operand(), negated_variables, non_negated_variables);
36 }
37 else if (is_minus(f))
38 {
39 return is_monotonous(atermpp::down_cast<minus>(f).operand(), negated_variables, non_negated_variables);
40 }
42 {
43 return true;
44 }
45 else if (is_true(f))
46 {
47 return true;
48 }
49 else if (is_false(f))
50 {
51 return true;
52 }
53 else if (is_and(f))
54 {
55 const and_& g = atermpp::down_cast<and_>(f);
56 return is_monotonous(g.left(), non_negated_variables, negated_variables) &&
57 is_monotonous(g.right(), non_negated_variables, negated_variables);
58 }
59 else if (is_or(f))
60 {
61 const or_& g = atermpp::down_cast<or_>(f);
62 return is_monotonous(g.left(), non_negated_variables, negated_variables) &&
63 is_monotonous(g.right(), non_negated_variables, negated_variables);
64 }
65 else if (is_imp(f))
66 {
67 const imp& g = atermpp::down_cast<imp>(f);
68 return is_monotonous(g.left(), negated_variables, non_negated_variables) &&
69 is_monotonous(g.right(), non_negated_variables, negated_variables);
70 }
71 else if (is_plus(f))
72 {
73 const plus& g = atermpp::down_cast<plus>(f);
74 return is_monotonous(g.left(), non_negated_variables, negated_variables) &&
75 is_monotonous(g.right(), non_negated_variables, negated_variables);
76 }
77 else if (is_const_multiply(f))
78 {
79 const const_multiply& g = atermpp::down_cast<const_multiply>(f);
80 return is_monotonous(g.right(), non_negated_variables, negated_variables);
81 }
83 {
84 const const_multiply_alt& g = atermpp::down_cast<const_multiply_alt>(f);
85 return is_monotonous(g.left(), non_negated_variables, negated_variables);
86 }
87 else if (is_forall(f))
88 {
89 const forall& g = atermpp::down_cast<forall>(f);
90 return is_monotonous(g.body(), non_negated_variables, negated_variables);
91 }
92 else if (is_exists(f))
93 {
94 const exists& g = atermpp::down_cast<exists>(f);
95 return is_monotonous(g.body(), non_negated_variables, negated_variables);
96 }
97 else if (is_infimum(f))
98 {
99 const infimum& g = atermpp::down_cast<infimum>(f);
100 return is_monotonous(g.body(), non_negated_variables, negated_variables);
101 }
102 else if (is_supremum(f))
103 {
104 const supremum& g = atermpp::down_cast<supremum>(f);
105 return is_monotonous(g.body(), non_negated_variables, negated_variables);
106 }
107 else if (is_sum(f))
108 {
109 const sum& g = atermpp::down_cast<sum>(f);
110 return is_monotonous(g.body(), non_negated_variables, negated_variables);
111 }
112 else if (is_may(f))
113 {
114 const may& g = atermpp::down_cast<may>(f);
115 return is_monotonous(g.operand(), non_negated_variables, negated_variables);
116 }
117 else if (is_must(f))
118 {
119 const must& g = atermpp::down_cast<must>(f);
120 return is_monotonous(g.operand(), non_negated_variables, negated_variables);
121 }
122 else if (is_yaled_timed(f))
123 {
124 return true;
125 }
126 else if (is_yaled(f))
127 {
128 return true;
129 }
130 else if (is_delay_timed(f))
131 {
132 return true;
133 }
134 else if (is_delay(f))
135 {
136 return true;
137 }
138 else if (is_variable(f))
139 {
140 const variable& g = atermpp::down_cast<variable>(f);
141 return !contains(negated_variables, g.name());
142 }
143 else if (is_mu(f))
144 {
145 const mu& g = atermpp::down_cast<mu>(f);
146 std::set<core::identifier_string> non_neg = non_negated_variables;
147 non_neg.insert(g.name());
148 return is_monotonous(g.operand(), non_neg, negated_variables);
149 }
150 else if (is_nu(f))
151 {
152 const nu& g = atermpp::down_cast<nu>(f);
153 std::set<core::identifier_string> non_neg = non_negated_variables;
154 non_neg.insert(g.name());
155 return is_monotonous(g.operand(), non_neg, negated_variables);
156 }
157
158 throw mcrl2::runtime_error(std::string("is_monotonous(state_formula) error: unknown argument ") + pp(f));
159 return false;
160}
161
162/// \brief Returns true if the state formula is monotonous.
163/// \param f A modal formula
164/// \return True if the state formula is monotonous.
165inline
167{
168 std::set<core::identifier_string> non_negated_variables;
169 std::set<core::identifier_string> negated_variables;
170 return is_monotonous(f, non_negated_variables, negated_variables);
171}
172
173} // namespace mcrl2::state_formulas
174
175
176
177#endif // MCRL2_MODAL_FORMULA_IS_MONOTONOUS_H
aterm_string(const aterm_string &t) noexcept=default
aterm()
Default constructor.
Definition aterm.h:51
A unordered_map class in which aterms can be stored.
\brief The and operator for action formulas
const action_formula & left() const
const action_formula & right() const
\brief The at operator for action formulas
const data::data_expression & time_stamp() const
const action_formula & operand() const
\brief The existential quantification operator for action formulas
const data::variable_list & variables() const
const action_formula & body() const
\brief The value false for action formulas
\brief The universal quantification operator for action formulas
const action_formula & body() const
const data::variable_list & variables() const
\brief The implication operator for action formulas
const action_formula & left() const
const action_formula & right() const
\brief The multi action for action formulas
const process::action_list & actions() const
\brief The not operator for action formulas
const action_formula & operand() const
\brief The or operator for action formulas
const action_formula & right() const
const action_formula & left() const
\brief The value true for action formulas
\brief A container sort
const sort_expression & element_sort() const
sort_expression sort() const
Returns the sort of the data expression.
Definition data.cpp:107
void translate_user_notation()
Translate user notation within the equations of the data specification.
data_specification()=default
Default constructor. Generate a data specification that contains only booleans and positive numbers.
data_type_checker(const data_specification &data_spec)
make a data type checker. Throws a mcrl2::runtime_error exception if the data_specification is not we...
data_specification operator()() const
Yields a type checked data specification, provided typechecking was successful. If not successful an ...
const data_specification & typechecked_data_specification() const
Definition typecheck.h:117
Identifier generator that stores the identifiers of the context in a set. Using the operator()() and ...
\brief A sort expression
const core::identifier_string & name() const
const data_expression_list & arguments() const
\brief A data variable
Definition variable.h:25
Linear process specification.
stochastic_specification(const specification &other)
Constructor. This constructor is explicit as implicit conversions of this kind is a source of bugs.
\brief An untyped multi action or data application
\brief The alt operator for regular formulas
const regular_formula & right() const
alt(const regular_formula &left, const regular_formula &right)
\brief Constructor Z14.
const regular_formula & left() const
\brief The seq operator for regular formulas
seq(const regular_formula &left, const regular_formula &right)
\brief Constructor Z14.
const regular_formula & right() const
const regular_formula & left() const
\brief The 'trans or nil' operator for regular formulas
const regular_formula & operand() const
\brief The trans operator for regular formulas
const regular_formula & operand() const
\brief An untyped regular formula or action formula
const core::identifier_string & name() const
\brief The and operator for state formulas
const state_formula & right() const
const state_formula & left() const
\brief The multiply operator for state formulas with values
const state_formula & left() const
const_multiply_alt(const const_multiply_alt &) noexcept=default
Move semantics.
const data::data_expression & right() const
\brief The multiply operator for state formulas with values
const data::data_expression & left() const
const_multiply(const const_multiply &) noexcept=default
Move semantics.
const state_formula & right() const
\brief The timed delay operator for state formulas
const data::data_expression & time_stamp() const
\brief The delay operator for state formulas
delay()
\brief Default constructor X3.
data::data_expression operator()(const data::variable &v) const
Traverser that checks for name clashes in parameters of nested mu's/nu's and forall/exists.
void insert(const core::identifier_string &name, const state_formula &x)
data::assignment_list apply_assignments(const data::assignment_list &x)
state_formula_data_variable_name_clash_resolver(data::set_identifier_generator &generator_)
std::map< core::identifier_string, data::sort_expression_list > m_state_variables
bool is_declared(const core::identifier_string &name) const
data::sort_expression_list matching_state_variable_sorts(const core::identifier_string &name, const data::data_expression_list &arguments) const
void add_state_variable(const core::identifier_string &name, const data::variable_list &parameters, const data::sort_type_checker &sort_typechecker)
Traverser that checks for name clashes in nested mu's/nu's.
void push(const core::identifier_string &name)
Pushes name on the stack.
std::vector< core::identifier_string > m_name_stack
The stack of names.
utilities::number_postfix_generator m_generator
Generator for fresh variable names.
void pop(const core::identifier_string &name)
Pops the name of the stack.
void push(const core::identifier_string &name)
Pushes name on the stack.
\brief The existential quantification operator for state formulas
exists(const data::variable_list &variables, const state_formula &body)
\brief Constructor Z14.
const state_formula & body() const
const data::variable_list & variables() const
\brief The value false for state formulas
false_()
\brief Default constructor X3.
\brief The universal quantification operator for state formulas
const state_formula & body() const
const data::variable_list & variables() const
forall(const data::variable_list &variables, const state_formula &body)
\brief Constructor Z14.
\brief The implication operator for state formulas
const state_formula & left() const
const state_formula & right() const
\brief The infimum over a data type for state formulas
infimum(const data::variable_list &variables, const state_formula &body)
\brief Constructor Z14.
const data::variable_list & variables() const
const state_formula & body() const
\brief The may operator for state formulas
const state_formula & operand() const
const regular_formulas::regular_formula & formula() const
\brief The minus operator for state formulas
minus(const minus &) noexcept=default
Move semantics.
minus(const state_formula &operand)
\brief Constructor Z14.
const state_formula & operand() const
\brief The mu operator for state formulas
const core::identifier_string & name() const
const data::assignment_list & assignments() const
mu(const core::identifier_string &name, const data::assignment_list &assignments, const state_formula &operand)
\brief Constructor Z14.
const state_formula & operand() const
\brief The must operator for state formulas
const regular_formulas::regular_formula & formula() const
const state_formula & operand() const
\brief The not operator for state formulas
not_(const not_ &) noexcept=default
Move semantics.
const state_formula & operand() const
not_(const state_formula &operand)
\brief Constructor Z14.
\brief The nu operator for state formulas
nu(const core::identifier_string &name, const data::assignment_list &assignments, const state_formula &operand)
\brief Constructor Z14.
const core::identifier_string & name() const
const state_formula & operand() const
const data::assignment_list & assignments() const
\brief The or operator for state formulas
or_(const state_formula &left, const state_formula &right)
\brief Constructor Z14.
const state_formula & right() const
const state_formula & left() const
\brief The plus operator for state formulas with values
plus(const plus &) noexcept=default
Move semantics.
const state_formula & left() const
const state_formula & right() const
process::action_label_list m_action_labels
The action specification of the specification.
const state_formula & formula() const
Returns the formula of the state formula specification.
state_formula_specification(const state_formula &formula, const data::data_specification &data=data::data_specification(), const process::action_label_list &action_labels={})
Constructor of a state formula specification.
state_formula m_formula
The formula of the specification.
data::data_specification m_data
The data specification of the specification.
state_formula & formula()
Returns the formula of the state formula specification.
const process::action_label_list & action_labels() const
Returns the action label specification.
process::action_label_list & action_labels()
Returns the action label specification.
detail::state_variable_context m_state_variable_context
Definition typecheck.h:736
data::detail::variable_context m_variable_context
Definition typecheck.h:734
process::detail::action_context m_action_context
Definition typecheck.h:735
state_formula_type_checker(const data::data_specification &dataspec, const bool formula_is_quantitative, const ActionLabelContainer &action_labels=ActionLabelContainer(), const VariableContainer &variables=VariableContainer())
Constructor for a state_formula type checker.
Definition typecheck.h:746
state_formula typecheck_state_formula(const state_formula &x)
Definition typecheck.h:766
state_formula(const state_formula &) noexcept=default
Move semantics.
state_formula & operator=(state_formula &&) noexcept=default
state_formula(const atermpp::aterm &term)
state_formula & operator=(const state_formula &) noexcept=default
\brief The sum over a data type for state formulas
sum(const data::variable_list &variables, const state_formula &body)
\brief Constructor Z14.
const data::variable_list & variables() const
const state_formula & body() const
\brief The supremum over a data type for state formulas
const state_formula & body() const
const data::variable_list & variables() const
supremum(const data::variable_list &variables, const state_formula &body)
\brief Constructor Z14.
\brief The value true for state formulas
true_()
\brief Default constructor X3.
\brief The state formula variable
const core::identifier_string & name() const
const data::data_expression_list & arguments() const
\brief The timed yaled operator for state formulas
const data::data_expression & time_stamp() const
\brief The yaled operator for state formulas
yaled()
\brief Default constructor X3.
D_ParserTables parser_tables_mcrl2
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
Definition logger.h:393
action_formula parse_action_formula(const std::string &text)
typecheck_builder make_typecheck_builder(data::data_type_checker &data_typechecker, const data::detail::variable_context &variables, const process::detail::action_context &actions)
Definition typecheck.h:131
std::string pp(const action_formulas::exists &x, bool arg0)
bool is_at(const atermpp::aterm &x)
std::string pp(const action_formulas::imp &x, bool arg0)
std::string pp(const action_formulas::at &x, bool arg0)
std::string pp(const action_formulas::forall &x, bool arg0)
std::string pp(const action_formulas::or_ &x, bool arg0)
std::string pp(const action_formulas::action_formula &x, bool arg0)
action_formula typecheck_action_formula(const action_formula &x, const data::data_specification &dataspec, const VariableContainer &variables, const ActionLabelContainer &actions)
Definition typecheck.h:143
std::string pp(const action_formulas::true_ &x, bool arg0)
std::set< data::variable > find_all_variables(const action_formulas::action_formula &x)
action_formula parse_action_formula(const std::string &text, const data::data_specification &dataspec, const VariableContainer &variables, const ActionLabelContainer &actions)
Definition parse.h:37
bool is_or(const atermpp::aterm &x)
bool is_true(const atermpp::aterm &x)
bool is_forall(const atermpp::aterm &x)
std::string pp(const action_formulas::not_ &x, bool arg0)
bool is_false(const atermpp::aterm &x)
action_formula typecheck_action_formula(const action_formula &x, const lps::stochastic_specification &lpsspec)
Definition typecheck.h:161
bool is_not(const atermpp::aterm &x)
bool is_imp(const atermpp::aterm &x)
bool is_and(const atermpp::aterm &x)
action_formula parse_action_formula(const std::string &text, const lps::stochastic_specification &lpsspec)
Definition parse.h:50
bool is_multi_action(const atermpp::aterm &x)
std::string pp(const action_formulas::multi_action &x, bool arg0)
std::string pp(const action_formulas::false_ &x, bool arg0)
bool is_exists(const atermpp::aterm &x)
std::string pp(const action_formulas::and_ &x, bool arg0)
bool is_action_formula(const atermpp::aterm &x)
void warn_left_merge_merge(const parse_node &)
Prints a warning for each occurrence of 'x ||_ y || z' in the parse tree.
void warn_and_or(const parse_node &)
Prints a warning for each occurrence of 'x && y || z' in the parse tree.
Namespace for system defined sort bag.
Definition bag1.h:35
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
Definition bag1.h:491
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition bag1.h:470
Namespace for system defined sort bool_.
Definition bool.h:29
const basic_sort & bool_()
Constructor for sort expression Bool.
Definition bool.h:41
Namespace for system defined sort fbag.
Definition fbag1.h:34
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition fbag1.h:554
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
Definition fbag1.h:575
Namespace for system defined sort fset.
Definition fset1.h:32
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition fset1.h:486
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
Definition fset1.h:507
Namespace for system defined sort int_.
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition int1.h:999
bool is_int(const sort_expression &e)
Recogniser for sort expression Int.
Definition int1.h:54
Namespace for system defined sort list.
Definition list1.h:33
application element_at(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol ..
Definition list1.h:483
Namespace for system defined sort nat.
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition nat1.h:879
Namespace for system defined sort pos.
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition pos1.h:480
Namespace for system defined sort real_.
bool is_real(const sort_expression &e)
Recogniser for sort expression Real.
Definition real1.h:55
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition real1.h:1112
Namespace for system defined sort set_.
Definition set1.h:33
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
Definition set1.h:479
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition set1.h:458
bool is_data_expression(const atermpp::aterm &x)
Test for a data_expression expression.
data_specification merge_data_specifications(const data_specification &dataspec1, const data_specification &dataspec2)
Merges two data specifications. Throws an exception if conflicts are detected.
bool is_untyped_data_parameter(const atermpp::aterm &x)
The main namespace for the LPS library.
Definition constelm.h:18
specification remove_stochastic_operators(const stochastic_specification &spec)
Converts a stochastic specification to a specification. Throws an exception if non-empty distribution...
The main namespace for the Process library.
bool is_untyped_multi_action(const atermpp::aterm &x)
state_formula translate_reg_frms(const state_formula &state_frm)
Translate regular formulas in terms of state and action formulas.
typecheck_builder make_typecheck_builder(data::data_type_checker &data_typechecker, const data::detail::variable_context &variables, const process::detail::action_context &actions)
Definition typecheck.h:304
regular_formula parse_regular_formula(const std::string &text)
bool is_alt(const atermpp::aterm &x)
bool is_untyped_regular_formula(const atermpp::aterm &x)
regular_formula parse_regular_formula(const std::string &text, const data::data_specification &dataspec, const VariableContainer &variables, const ActionLabelContainer &actions)
Definition parse.h:68
bool is_trans(const atermpp::aterm &x)
regular_formula parse_regular_formula(const std::string &text, const lps::stochastic_specification &lpsspec)
Definition parse.h:81
regular_formula typecheck_regular_formula(const regular_formula &x, const lps::stochastic_specification &lpsspec)
Definition typecheck.h:334
std::string pp(const regular_formulas::trans &x, bool arg0)
std::string pp(const regular_formulas::alt &x, bool arg0)
bool is_trans_or_nil(const atermpp::aterm &x)
bool is_seq(const atermpp::aterm &x)
std::string pp(const regular_formulas::untyped_regular_formula &x, bool arg0)
std::string pp(const regular_formulas::seq &x, bool arg0)
std::string pp(const regular_formulas::trans_or_nil &x, bool arg0)
regular_formula typecheck_regular_formula(const regular_formula &x, const data::data_specification &dataspec, const VariableContainer &variables, const ActionLabelContainer &actions)
Definition typecheck.h:316
std::string pp(const regular_formulas::regular_formula &x, bool arg0)
state_formula_specification parse_state_formula_specification(const std::string &text, const bool formula_is_quantitative)
Parses a state formula specification from text.
state_formula normalize(const state_formula &x)
Normalizes a state formula, i.e. removes any occurrences of ! or =>.
bool is_normalized(const state_formula &x)
Checks if a state formula is normalized.
state_formula parse_state_formula(std::istream &in, lps::stochastic_specification &lpsspec, const bool formula_is_quantitative)
Parses a state formula from an input stream.
state_formula normalize(const state_formula &x, bool quantitative=false, bool negated=false)
bool is_monotonous(const state_formula &f)
Returns true if the state formula is monotonous.
state_formula parse_state_formula(const std::string &text, lps::stochastic_specification &lpsspec, const bool formula_is_quantitative)
Parses a state formula from text.
state_formula_specification parse_state_formula_specification(std::istream &in, const bool formula_is_quantitative)
Parses a state formula specification from an input stream.
state_formula_specification parse_state_formula_specification(const std::string &text, lps::stochastic_specification &lpsspec, const bool formula_is_quantitative)
Parses a state formula specification from text.
bool is_timed(const state_formula &x)
std::set< core::identifier_string > find_state_variable_names(const state_formula &x)
Returns the names of the state variables that occur in x.
state_formula_specification parse_state_formula_specification(std::istream &in, lps::stochastic_specification &lpsspec, const bool formula_is_quantitative)
Parses a state formula specification from an input stream.
state_formula_specification parse_state_formula_specification(const std::string &text)
typecheck_builder make_typecheck_builder(data::data_type_checker &data_typechecker, const data::detail::variable_context &variable_context, const process::detail::action_context &action_context, const detail::state_variable_context &state_variable_context, const bool formula_is_quantitative)
Definition typecheck.h:717
state_formula parse_state_formula(const std::string &text)
void check_data_variable_name_clashes(const state_formula &x)
Throws an exception if the formula contains name clashes in the parameters of mu/nu/exists/forall.
bool is_infimum(const atermpp::aterm &x)
std::string pp(const state_formulas::nu &x, bool arg0)
std::string pp(const state_formulas::exists &x, bool arg0)
std::string pp(const state_formulas::not_ &x, bool arg0)
bool is_and(const atermpp::aterm &x)
state_formula_specification parse_state_formula_specification(std::istream &in, const bool formula_is_quantitative, parse_state_formula_options options=parse_state_formula_options())
Parses a state formula specification from an input stream.
Definition parse.h:241
state_formula_specification parse_state_formula_specification(std::istream &in, lps::specification &lpsspec, const bool formula_is_quantitative, parse_state_formula_options options=parse_state_formula_options())
Parses a state formula specification from an input stream.
Definition parse.h:327
std::string pp(const state_formulas::supremum &x, bool arg0)
bool is_delay_timed(const atermpp::aterm &x)
state_formula resolve_state_formula_data_variable_name_clashes(const state_formula &x, const std::set< core::identifier_string > &context_ids=std::set< core::identifier_string >())
Resolves name clashes in data variables of formula x.
bool is_const_multiply(const atermpp::aterm &x)
std::ostream & operator<<(std::ostream &out, const state_formula_specification &x)
std::string pp(const state_formulas::must &x, bool arg0)
bool is_minus(const atermpp::aterm &x)
state_formula_specification parse_state_formula_specification(const std::string &text, lps::specification &lpsspec, const bool formula_is_quantitative, parse_state_formula_options options=parse_state_formula_options())
Parses a state formula specification from a string.
Definition parse.h:291
state_formula typecheck_state_formula(const state_formula &x, const lps::stochastic_specification &lpsspec, const bool formula_is_quantitative)
Type check a state formula. Throws an exception if something went wrong.
Definition typecheck.h:811
bool is_exists(const atermpp::aterm &x)
void typecheck_state_formula_specification(state_formula_specification &formspec, const lps::stochastic_specification &lpsspec, const bool formula_is_quantitative)
Typecheck the state formula specification formspec. It is assumed that the formula is not self contai...
Definition typecheck.h:843
bool is_not(const atermpp::aterm &x)
state_formula parse_state_formula(std::istream &in, lps::stochastic_specification &lpsspec, const bool formula_is_quantitative, parse_state_formula_options options=parse_state_formula_options())
Parses a state formula from an input stream.
Definition parse.h:185
std::string pp(const state_formulas::minus &x, bool arg0)
state_formula post_process_state_formula(const state_formula &formula, parse_state_formula_options options=parse_state_formula_options())
Definition parse.h:108
bool is_supremum(const atermpp::aterm &x)
state_formula parse_state_formula(const std::string &text, lps::stochastic_specification &lpsspec, const bool formula_is_quantitative, parse_state_formula_options options=parse_state_formula_options())
Parses a state formula from an input stream.
Definition parse.h:144
bool is_must(const atermpp::aterm &x)
std::set< data::variable > find_all_variables(const state_formulas::state_formula &x)
bool is_yaled(const atermpp::aterm &x)
bool has_data_variable_name_clashes(const state_formula &x)
Returns true if the formula contains parameter name clashes.
bool is_normalized(const T &x)
Checks if a state formula is normalized.
Definition normalize.h:407
std::set< data::variable > find_free_variables(const state_formulas::state_formula &x)
bool is_true(const atermpp::aterm &x)
std::string pp(const state_formulas::true_ &x, bool arg0)
state_formula_specification parse_state_formula_specification(const std::string &text, lps::stochastic_specification &lpsspec, const bool formula_is_quantitative, parse_state_formula_options options=parse_state_formula_options())
Parses a state formula specification from a string.
Definition parse.h:258
void check_state_variable_name_clashes(const state_formula &x)
Throws an exception if the formula contains name clashes.
std::string pp(const state_formulas::state_formula &x, bool arg0)
std::string pp(const state_formulas::const_multiply &x, bool arg0)
state_formula parse_state_formula(std::istream &in, lps::specification &lpsspec, const bool formula_is_quantitative, parse_state_formula_options options=parse_state_formula_options())
Parses a state formula from an input stream.
Definition parse.h:202
std::string pp(const state_formulas::delay_timed &x, bool arg0)
bool is_variable(const atermpp::aterm &x)
bool is_may(const atermpp::aterm &x)
bool is_yaled_timed(const atermpp::aterm &x)
bool is_imp(const atermpp::aterm &x)
bool is_timed(const state_formula &x)
Checks if a state formula is timed.
Definition is_timed.h:71
std::string pp(const state_formulas::imp &x, bool arg0)
state_formula translate_regular_formulas(const state_formula &x)
Translates regular formulas appearing in f into action formulas.
bool has_state_variable_name_clashes(const state_formula &x)
Returns true if the formula contains name clashes.
std::string pp(const state_formulas::mu &x, bool arg0)
bool is_monotonous(const state_formula &f)
Returns true if the state formula is monotonous.
state_formula parse_state_formula(const std::string &text, lps::specification &lpsspec, const bool formula_is_quantitative, parse_state_formula_options options=parse_state_formula_options())
Parses a state formula from an input stream.
Definition parse.h:166
bool is_sum(const atermpp::aterm &x)
state_formulas::state_formula translate_user_notation(const state_formulas::state_formula &x)
state_formulas::state_formula normalize_sorts(const state_formulas::state_formula &x, const data::sort_specification &sortspec)
void typecheck_state_formula_specification(state_formula_specification &formspec, const bool formula_is_quantitative)
Typecheck the state formula specification formspec. It is assumed that the formula is self contained,...
Definition typecheck.h:822
bool is_nu(const atermpp::aterm &x)
std::string pp(const state_formulas::delay &x, bool arg0)
state_formula typecheck_state_formula(const state_formula &x, const bool formula_is_quantitative, const data::data_specification &dataspec=data::data_specification(), const ActionLabelContainer &action_labels=ActionLabelContainer(), const VariableContainer &variables=VariableContainer())
Type check a state formula. Throws an exception if something went wrong.
Definition typecheck.h:785
std::string pp(const state_formulas::forall &x, bool arg0)
std::string pp(const state_formulas::sum &x, bool arg0)
std::string pp(const state_formulas::yaled &x, bool arg0)
bool is_delay(const atermpp::aterm &x)
std::string pp(const state_formulas::infimum &x, bool arg0)
std::string pp(const state_formulas::or_ &x, bool arg0)
std::string pp(const state_formulas::may &x, bool arg0)
bool is_false(const atermpp::aterm &x)
state_formula negate_variables(const core::identifier_string &name, bool quantitative, const state_formula &x)
Negates variable instantiations in a state formula with a given name.
bool is_plus(const atermpp::aterm &x)
state_formula_specification parse_state_formula_specification(const std::string &text, const bool formula_is_quantitative, parse_state_formula_options options=parse_state_formula_options())
Parses a state formula specification from a string.
Definition parse.h:220
state_formula resolve_state_variable_name_clashes(const state_formula &x)
Resolves name clashes in state variables of formula x.
bool is_monotonous(const state_formula &f, const std::set< core::identifier_string > &non_negated_variables, const std::set< core::identifier_string > &negated_variables)
Returns true if the state formula is monotonous.
std::string pp(const state_formulas::and_ &x, bool arg0)
std::string pp(const state_formulas::false_ &x, bool arg0)
std::string pp(const state_formulas::const_multiply_alt &x, bool arg0)
bool is_mu(const atermpp::aterm &x)
bool is_forall(const atermpp::aterm &x)
std::string pp(const state_formulas::state_formula_specification &x, bool arg0)
bool is_const_multiply_alt(const atermpp::aterm &x)
state_formula_specification parse_state_formula_specification(std::istream &in, lps::stochastic_specification &lpsspec, const bool formula_is_quantitative, parse_state_formula_options options=parse_state_formula_options())
Parses a state formula specification from an input stream.
Definition parse.h:310
std::string pp(const state_formulas::yaled_timed &x, bool arg0)
std::string pp(const state_formulas::plus &x, bool arg0)
bool is_or(const atermpp::aterm &x)
std::string pp(const state_formulas::variable &x, bool arg0)
std::set< data::sort_expression > find_sort_expressions(const state_formulas::state_formula &x)
std::set< process::action_label > find_action_labels(const state_formulas::state_formula &x)
std::set< core::identifier_string > find_identifiers(const state_formulas::state_formula &x)
Base class for action_formula_builder.
Definition builder.h:27
void apply(T &result, const data::untyped_data_parameter &x)
Definition builder.h:41
void apply(T &result, const data::data_expression &x)
Definition builder.h:32
Base class for action_formula_traverser.
Definition traverser.h:27
void apply(const data::data_expression &x)
Definition traverser.h:33
void apply(const process::untyped_multi_action &x)
Definition traverser.h:47
void apply(const data::untyped_data_parameter &x)
Definition traverser.h:40
void apply(T &result, const action_formulas::forall &x)
Definition builder.h:591
void apply(T &result, const action_formulas::not_ &x)
Definition builder.h:559
void apply(T &result, const action_formulas::at &x)
Definition builder.h:607
void apply(T &result, const action_formulas::multi_action &x)
Definition builder.h:615
void apply(T &result, const action_formulas::and_ &x)
Definition builder.h:567
void apply(T &result, const action_formulas::exists &x)
Definition builder.h:599
void apply(T &result, const action_formulas::imp &x)
Definition builder.h:583
void apply(T &result, const action_formulas::action_formula &x)
Definition builder.h:624
void apply(T &result, const action_formulas::true_ &x)
Definition builder.h:541
void apply(T &result, const action_formulas::or_ &x)
Definition builder.h:575
void apply(T &result, const action_formulas::false_ &x)
Definition builder.h:550
void apply(T &result, const action_formulas::action_formula &x)
Definition builder.h:303
void apply(T &result, const action_formulas::and_ &x)
Definition builder.h:247
void apply(T &result, const action_formulas::exists &x)
Definition builder.h:279
void apply(T &result, const action_formulas::false_ &x)
Definition builder.h:230
void apply(T &result, const action_formulas::at &x)
Definition builder.h:287
void apply(T &result, const action_formulas::or_ &x)
Definition builder.h:255
void apply(T &result, const action_formulas::multi_action &x)
Definition builder.h:295
void apply(T &result, const action_formulas::true_ &x)
Definition builder.h:221
void apply(T &result, const action_formulas::not_ &x)
Definition builder.h:239
void apply(T &result, const action_formulas::imp &x)
Definition builder.h:263
void apply(T &result, const action_formulas::forall &x)
Definition builder.h:271
void apply(T &result, const action_formulas::exists &x)
Definition builder.h:119
void apply(T &result, const action_formulas::forall &x)
Definition builder.h:111
void apply(T &result, const action_formulas::true_ &x)
Definition builder.h:61
void apply(T &result, const action_formulas::or_ &x)
Definition builder.h:95
void apply(T &result, const action_formulas::false_ &x)
Definition builder.h:70
void apply(T &result, const action_formulas::at &x)
Definition builder.h:127
void apply(T &result, const action_formulas::and_ &x)
Definition builder.h:87
void apply(T &result, const action_formulas::imp &x)
Definition builder.h:103
void apply(T &result, const action_formulas::not_ &x)
Definition builder.h:79
void apply(T &result, const action_formulas::action_formula &x)
Definition builder.h:143
void apply(T &result, const action_formulas::multi_action &x)
Definition builder.h:135
void apply(const action_formulas::action_formula &x)
Definition traverser.h:439
void apply(const action_formulas::multi_action &x)
Definition traverser.h:432
void apply(const action_formulas::forall &x)
Definition traverser.h:864
void apply(const action_formulas::false_ &x)
Definition traverser.h:826
void apply(const action_formulas::true_ &x)
Definition traverser.h:819
void apply(const action_formulas::not_ &x)
Definition traverser.h:833
void apply(const action_formulas::at &x)
Definition traverser.h:878
void apply(const action_formulas::action_formula &x)
Definition traverser.h:892
void apply(const action_formulas::multi_action &x)
Definition traverser.h:885
void apply(const action_formulas::exists &x)
Definition traverser.h:871
void apply(const action_formulas::imp &x)
Definition traverser.h:856
void apply(const action_formulas::and_ &x)
Definition traverser.h:840
void apply(const action_formulas::or_ &x)
Definition traverser.h:848
void apply(const action_formulas::multi_action &x)
Definition traverser.h:283
void apply(const action_formulas::at &x)
Definition traverser.h:275
void apply(const action_formulas::exists &x)
Definition traverser.h:268
void apply(const action_formulas::action_formula &x)
Definition traverser.h:290
void apply(const action_formulas::forall &x)
Definition traverser.h:261
void apply(const action_formulas::not_ &x)
Definition traverser.h:230
void apply(const action_formulas::false_ &x)
Definition traverser.h:223
void apply(const action_formulas::or_ &x)
Definition traverser.h:245
void apply(const action_formulas::true_ &x)
Definition traverser.h:216
void apply(const action_formulas::and_ &x)
Definition traverser.h:237
void apply(const action_formulas::imp &x)
Definition traverser.h:253
void apply(const action_formulas::forall &x)
Definition traverser.h:712
void apply(const action_formulas::or_ &x)
Definition traverser.h:696
void apply(const action_formulas::false_ &x)
Definition traverser.h:674
void apply(const action_formulas::and_ &x)
Definition traverser.h:688
void apply(const action_formulas::action_formula &x)
Definition traverser.h:743
void apply(const action_formulas::multi_action &x)
Definition traverser.h:736
void apply(const action_formulas::true_ &x)
Definition traverser.h:667
void apply(const action_formulas::imp &x)
Definition traverser.h:704
void apply(const action_formulas::not_ &x)
Definition traverser.h:681
void apply(const action_formulas::exists &x)
Definition traverser.h:720
void apply(const action_formulas::action_formula &x)
Definition traverser.h:140
void apply(const action_formulas::true_ &x)
Definition traverser.h:64
void apply(const action_formulas::or_ &x)
Definition traverser.h:93
void apply(const action_formulas::multi_action &x)
Definition traverser.h:133
void apply(const action_formulas::forall &x)
Definition traverser.h:109
void apply(const action_formulas::and_ &x)
Definition traverser.h:85
void apply(const action_formulas::false_ &x)
Definition traverser.h:71
void apply(const action_formulas::at &x)
Definition traverser.h:125
void apply(const action_formulas::not_ &x)
Definition traverser.h:78
void apply(const action_formulas::imp &x)
Definition traverser.h:101
void apply(const action_formulas::exists &x)
Definition traverser.h:117
void apply(const action_formulas::imp &x)
Definition traverser.h:552
void apply(const action_formulas::and_ &x)
Definition traverser.h:536
void apply(const action_formulas::or_ &x)
Definition traverser.h:544
void apply(const action_formulas::forall &x)
Definition traverser.h:560
void apply(const action_formulas::at &x)
Definition traverser.h:576
void apply(const action_formulas::multi_action &x)
Definition traverser.h:584
void apply(const action_formulas::true_ &x)
Definition traverser.h:515
void apply(const action_formulas::action_formula &x)
Definition traverser.h:591
void apply(const action_formulas::exists &x)
Definition traverser.h:568
void apply(const action_formulas::not_ &x)
Definition traverser.h:529
void apply(const action_formulas::false_ &x)
Definition traverser.h:522
void apply(T &result, const action_formulas::action_formula &x)
Definition builder.h:463
void apply(T &result, const action_formulas::not_ &x)
Definition builder.h:399
void apply(T &result, const action_formulas::true_ &x)
Definition builder.h:381
void apply(T &result, const action_formulas::or_ &x)
Definition builder.h:415
void apply(T &result, const action_formulas::exists &x)
Definition builder.h:439
void apply(T &result, const action_formulas::and_ &x)
Definition builder.h:407
void apply(T &result, const action_formulas::imp &x)
Definition builder.h:423
void apply(T &result, const action_formulas::at &x)
Definition builder.h:447
void apply(T &result, const action_formulas::false_ &x)
Definition builder.h:390
void apply(T &result, const action_formulas::forall &x)
Definition builder.h:431
void apply(T &result, const action_formulas::multi_action &x)
Definition builder.h:455
action_formula_actions(const core::parser &parser_)
Definition parse_impl.h:27
action_formulas::action_formula parse_ActFrm(const core::parse_node &node) const
Definition parse_impl.h:31
void apply(T &result, const process::untyped_multi_action &x)
Definition typecheck.h:66
typecheck_builder(data::data_type_checker &data_typechecker, const data::detail::variable_context &variable_context, const process::detail::action_context &action_context)
Definition typecheck.h:38
process::action typecheck_action(const core::identifier_string &name, const data::data_expression_list &parameters)
Definition typecheck.h:47
data::data_type_checker & m_data_type_checker
Definition typecheck.h:34
data::detail::variable_context m_variable_context
Definition typecheck.h:35
void apply(T &result, const action_formulas::exists &x)
Definition typecheck.h:112
const process::detail::action_context & m_action_context
Definition typecheck.h:36
void apply(T &result, const action_formulas::at &x)
Definition typecheck.h:59
void apply(T &result, const data::data_expression &x)
Definition typecheck.h:53
void apply(T &result, const action_formulas::forall &x)
Definition typecheck.h:94
expression builder that visits all sub expressions
Definition builder.h:32
expression traverser that visits all sub expressions
Definition traverser.h:29
void apply(T &result, const regular_formulas::trans &x)
Definition builder.h:845
void apply(T &result, const regular_formulas::trans_or_nil &x)
Definition builder.h:853
void apply(T &result, const regular_formulas::seq &x)
Definition builder.h:829
void apply(T &result, const regular_formulas::regular_formula &x)
Definition builder.h:869
void apply(T &result, const regular_formulas::alt &x)
Definition builder.h:837
void apply(T &result, const regular_formulas::untyped_regular_formula &x)
Definition builder.h:861
void apply(T &result, const regular_formulas::trans_or_nil &x)
Definition builder.h:1041
void apply(T &result, const regular_formulas::seq &x)
Definition builder.h:1017
void apply(T &result, const regular_formulas::regular_formula &x)
Definition builder.h:1057
void apply(T &result, const regular_formulas::untyped_regular_formula &x)
Definition builder.h:1049
void apply(T &result, const regular_formulas::trans &x)
Definition builder.h:1033
void apply(T &result, const regular_formulas::alt &x)
Definition builder.h:1025
void apply(T &result, const regular_formulas::trans &x)
Definition builder.h:751
void apply(T &result, const regular_formulas::seq &x)
Definition builder.h:735
void apply(T &result, const regular_formulas::regular_formula &x)
Definition builder.h:775
void apply(T &result, const regular_formulas::untyped_regular_formula &x)
Definition builder.h:767
void apply(T &result, const regular_formulas::alt &x)
Definition builder.h:743
void apply(T &result, const regular_formulas::trans_or_nil &x)
Definition builder.h:759
void apply(const regular_formulas::alt &x)
Definition traverser.h:1456
void apply(const regular_formulas::trans_or_nil &x)
Definition traverser.h:1471
void apply(const regular_formulas::untyped_regular_formula &x)
Definition traverser.h:1478
void apply(const regular_formulas::trans &x)
Definition traverser.h:1464
void apply(const regular_formulas::seq &x)
Definition traverser.h:1448
void apply(const regular_formulas::regular_formula &x)
Definition traverser.h:1486
void apply(const regular_formulas::trans_or_nil &x)
Definition traverser.h:1110
void apply(const regular_formulas::regular_formula &x)
Definition traverser.h:1125
void apply(const regular_formulas::seq &x)
Definition traverser.h:1087
void apply(const regular_formulas::alt &x)
Definition traverser.h:1095
void apply(const regular_formulas::untyped_regular_formula &x)
Definition traverser.h:1117
void apply(const regular_formulas::trans &x)
Definition traverser.h:1103
void apply(const regular_formulas::untyped_regular_formula &x)
Definition traverser.h:1387
void apply(const regular_formulas::regular_formula &x)
Definition traverser.h:1396
void apply(const regular_formulas::trans &x)
Definition traverser.h:1373
void apply(const regular_formulas::trans_or_nil &x)
Definition traverser.h:1380
void apply(const regular_formulas::untyped_regular_formula &x)
Definition traverser.h:1207
void apply(const regular_formulas::regular_formula &x)
Definition traverser.h:1215
void apply(const regular_formulas::trans_or_nil &x)
Definition traverser.h:1200
void apply(const regular_formulas::trans &x)
Definition traverser.h:1013
void apply(const regular_formulas::alt &x)
Definition traverser.h:1005
void apply(const regular_formulas::untyped_regular_formula &x)
Definition traverser.h:1027
void apply(const regular_formulas::trans_or_nil &x)
Definition traverser.h:1020
void apply(const regular_formulas::regular_formula &x)
Definition traverser.h:1035
void apply(const regular_formulas::seq &x)
Definition traverser.h:997
void apply(const regular_formulas::trans_or_nil &x)
Definition traverser.h:1290
void apply(const regular_formulas::regular_formula &x)
Definition traverser.h:1305
void apply(const regular_formulas::alt &x)
Definition traverser.h:1275
void apply(const regular_formulas::untyped_regular_formula &x)
Definition traverser.h:1297
void apply(const regular_formulas::seq &x)
Definition traverser.h:1267
void apply(const regular_formulas::trans &x)
Definition traverser.h:1283
void apply(T &result, const regular_formulas::untyped_regular_formula &x)
Definition builder.h:955
void apply(T &result, const regular_formulas::trans_or_nil &x)
Definition builder.h:947
void apply(T &result, const regular_formulas::seq &x)
Definition builder.h:923
void apply(T &result, const regular_formulas::trans &x)
Definition builder.h:939
void apply(T &result, const regular_formulas::alt &x)
Definition builder.h:931
void apply(T &result, const regular_formulas::regular_formula &x)
Definition builder.h:963
regular_formulas::regular_formula parse_RegFrm(const core::parse_node &node) const
Definition parse_impl.h:61
const data::detail::variable_context & m_variable_context
Definition typecheck.h:180
data::data_expression make_element_at(const data::data_expression &left, const data::data_expression &right) const
Definition typecheck.h:257
void apply(regular_formula &result, const action_formulas::action_formula &x)
Definition typecheck.h:297
data::data_expression make_plus(const data::data_expression &left, const data::data_expression &right)
Definition typecheck.h:220
void apply(T &result, const regular_formulas::untyped_regular_formula &x)
Definition typecheck.h:265
typecheck_builder(data::data_type_checker &data_typechecker, const data::detail::variable_context &variables, const process::detail::action_context &actions)
Definition typecheck.h:183
data::data_expression make_fset_union(const data::data_expression &left, const data::data_expression &right)
Definition typecheck.h:206
data::data_expression make_set_union(const data::data_expression &left, const data::data_expression &right)
Definition typecheck.h:213
data::data_expression make_fbag_union(const data::data_expression &left, const data::data_expression &right)
Definition typecheck.h:192
data::data_expression make_bag_union(const data::data_expression &left, const data::data_expression &right)
Definition typecheck.h:199
const process::detail::action_context & m_action_context
Definition typecheck.h:181
Builder class for regular_formula_builder. Used as a base class for pbes_expression_builder.
Definition builder.h:699
void apply(T &result, const data::data_expression &x)
Definition builder.h:704
void apply(T &result, const action_formulas::action_formula &x)
Definition builder.h:714
Traversal class for regular_formula_traverser. Used as a base class for pbes_expression_traverser.
Definition traverser.h:967
void apply(const action_formulas::action_formula &x)
Definition traverser.h:980
void apply(const data::data_expression &x)
Definition traverser.h:973
void apply(T &result, const state_formulas::nu &x)
Definition builder.h:1661
void apply(T &result, const state_formulas::supremum &x)
Definition builder.h:1587
void apply(T &result, const state_formulas::imp &x)
Definition builder.h:1531
void apply(T &result, const state_formulas::state_formula &x)
Definition builder.h:1686
void apply(T &result, const state_formulas::plus &x)
Definition builder.h:1539
void apply(T &result, const state_formulas::yaled &x)
Definition builder.h:1619
void apply(T &result, const state_formulas::false_ &x)
Definition builder.h:1490
void apply(T &result, const state_formulas::yaled_timed &x)
Definition builder.h:1628
void apply(T &result, const state_formulas::const_multiply &x)
Definition builder.h:1547
void apply(T &result, const state_formulas::and_ &x)
Definition builder.h:1515
void apply(T &result, const state_formulas::exists &x)
Definition builder.h:1571
void apply(T &result, const state_formulas::may &x)
Definition builder.h:1611
void apply(T &result, const state_formulas::minus &x)
Definition builder.h:1507
void apply(T &result, const state_formulas::infimum &x)
Definition builder.h:1579
void apply(T &result, const state_formulas::or_ &x)
Definition builder.h:1523
void apply(T &result, const state_formulas::sum &x)
Definition builder.h:1595
void apply(T &result, const state_formulas::mu &x)
Definition builder.h:1669
void apply(T &result, const state_formulas::must &x)
Definition builder.h:1603
void apply(T &result, const state_formulas::variable &x)
Definition builder.h:1653
void apply(T &result, const state_formulas::not_ &x)
Definition builder.h:1499
void update(state_formulas::state_formula_specification &x)
Definition builder.h:1676
void apply(T &result, const state_formulas::delay &x)
Definition builder.h:1636
void apply(T &result, const state_formulas::true_ &x)
Definition builder.h:1481
void apply(T &result, const state_formulas::const_multiply_alt &x)
Definition builder.h:1555
void apply(T &result, const state_formulas::forall &x)
Definition builder.h:1563
void apply(T &result, const state_formulas::delay_timed &x)
Definition builder.h:1645
void apply(T &result, const state_formulas::supremum &x)
Definition builder.h:1249
void apply(T &result, const state_formulas::yaled &x)
Definition builder.h:1281
void apply(T &result, const state_formulas::true_ &x)
Definition builder.h:1143
void apply(T &result, const state_formulas::const_multiply &x)
Definition builder.h:1209
void apply(T &result, const state_formulas::false_ &x)
Definition builder.h:1152
void apply(T &result, const state_formulas::const_multiply_alt &x)
Definition builder.h:1217
void apply(T &result, const state_formulas::sum &x)
Definition builder.h:1257
void apply(T &result, const state_formulas::not_ &x)
Definition builder.h:1161
void apply(T &result, const state_formulas::may &x)
Definition builder.h:1273
void apply(T &result, const state_formulas::forall &x)
Definition builder.h:1225
void apply(T &result, const state_formulas::exists &x)
Definition builder.h:1233
void apply(T &result, const state_formulas::delay_timed &x)
Definition builder.h:1307
void apply(T &result, const state_formulas::yaled_timed &x)
Definition builder.h:1290
void apply(T &result, const state_formulas::mu &x)
Definition builder.h:1331
void apply(T &result, const state_formulas::delay &x)
Definition builder.h:1298
void apply(T &result, const state_formulas::must &x)
Definition builder.h:1265
void apply(T &result, const state_formulas::infimum &x)
Definition builder.h:1241
void apply(T &result, const state_formulas::imp &x)
Definition builder.h:1193
void update(state_formulas::state_formula_specification &x)
Definition builder.h:1338
void apply(T &result, const state_formulas::state_formula &x)
Definition builder.h:1351
void apply(T &result, const state_formulas::nu &x)
Definition builder.h:1323
void apply(T &result, const state_formulas::and_ &x)
Definition builder.h:1177
void apply(T &result, const state_formulas::minus &x)
Definition builder.h:1169
void apply(T &result, const state_formulas::variable &x)
Definition builder.h:1315
void apply(T &result, const state_formulas::plus &x)
Definition builder.h:1201
void apply(T &result, const state_formulas::or_ &x)
Definition builder.h:1185
void apply(T &result, const state_formulas::exists &x)
Definition builder.h:2241
void apply(T &result, const state_formulas::yaled &x)
Definition builder.h:2289
void apply(T &result, const state_formulas::plus &x)
Definition builder.h:2209
void apply(T &result, const state_formulas::delay_timed &x)
Definition builder.h:2316
void apply(T &result, const state_formulas::must &x)
Definition builder.h:2273
void apply(T &result, const state_formulas::sum &x)
Definition builder.h:2265
void apply(T &result, const state_formulas::infimum &x)
Definition builder.h:2249
void apply(T &result, const state_formulas::const_multiply &x)
Definition builder.h:2217
void update(state_formulas::state_formula_specification &x)
Definition builder.h:2349
void apply(T &result, const state_formulas::may &x)
Definition builder.h:2281
void apply(T &result, const state_formulas::false_ &x)
Definition builder.h:2160
void apply(T &result, const state_formulas::or_ &x)
Definition builder.h:2193
void apply(T &result, const state_formulas::imp &x)
Definition builder.h:2201
void apply(T &result, const state_formulas::not_ &x)
Definition builder.h:2169
void apply(T &result, const state_formulas::variable &x)
Definition builder.h:2325
void apply(T &result, const state_formulas::forall &x)
Definition builder.h:2233
void apply(T &result, const state_formulas::delay &x)
Definition builder.h:2307
void apply(T &result, const state_formulas::yaled_timed &x)
Definition builder.h:2298
void apply(T &result, const state_formulas::supremum &x)
Definition builder.h:2257
void apply(T &result, const state_formulas::const_multiply_alt &x)
Definition builder.h:2225
void apply(T &result, const state_formulas::nu &x)
Definition builder.h:2334
void apply(T &result, const state_formulas::and_ &x)
Definition builder.h:2185
void apply(T &result, const state_formulas::minus &x)
Definition builder.h:2177
void apply(T &result, const state_formulas::mu &x)
Definition builder.h:2342
void apply(T &result, const state_formulas::true_ &x)
Definition builder.h:2151
void apply(T &result, const state_formulas::state_formula &x)
Definition builder.h:2359
void apply(const state_formulas::mu &x)
Definition traverser.h:3929
void apply(const state_formulas::state_formula &x)
Definition traverser.h:3944
void apply(const state_formulas::delay &x)
Definition traverser.h:3901
void apply(const state_formulas::variable &x)
Definition traverser.h:3915
void apply(const state_formulas::infimum &x)
Definition traverser.h:3850
void apply(const state_formulas::minus &x)
Definition traverser.h:3783
void apply(const state_formulas::false_ &x)
Definition traverser.h:3769
void apply(const state_formulas::sum &x)
Definition traverser.h:3864
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:3822
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:3908
void apply(const state_formulas::must &x)
Definition traverser.h:3871
void apply(const state_formulas::plus &x)
Definition traverser.h:3814
void apply(const state_formulas::imp &x)
Definition traverser.h:3806
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:3894
void apply(const state_formulas::nu &x)
Definition traverser.h:3922
void apply(const state_formulas::exists &x)
Definition traverser.h:3843
void apply(const state_formulas::supremum &x)
Definition traverser.h:3857
void apply(const state_formulas::true_ &x)
Definition traverser.h:3762
void apply(const state_formulas::not_ &x)
Definition traverser.h:3776
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:3829
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:3936
void apply(const state_formulas::and_ &x)
Definition traverser.h:3790
void apply(const state_formulas::or_ &x)
Definition traverser.h:3798
void apply(const state_formulas::may &x)
Definition traverser.h:3879
void apply(const state_formulas::yaled &x)
Definition traverser.h:3887
void apply(const state_formulas::forall &x)
Definition traverser.h:3836
void apply(const state_formulas::plus &x)
Definition traverser.h:1938
void apply(const state_formulas::supremum &x)
Definition traverser.h:1983
void apply(const state_formulas::and_ &x)
Definition traverser.h:1914
void apply(const state_formulas::sum &x)
Definition traverser.h:1990
void apply(const state_formulas::variable &x)
Definition traverser.h:2041
void apply(const state_formulas::not_ &x)
Definition traverser.h:1900
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:2064
void apply(const state_formulas::may &x)
Definition traverser.h:2005
void apply(const state_formulas::forall &x)
Definition traverser.h:1962
void apply(const state_formulas::or_ &x)
Definition traverser.h:1922
void apply(const state_formulas::exists &x)
Definition traverser.h:1969
void apply(const state_formulas::false_ &x)
Definition traverser.h:1893
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:2020
void apply(const state_formulas::true_ &x)
Definition traverser.h:1886
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:2034
void apply(const state_formulas::must &x)
Definition traverser.h:1997
void apply(const state_formulas::yaled &x)
Definition traverser.h:2013
void apply(const state_formulas::state_formula &x)
Definition traverser.h:2071
void apply(const state_formulas::imp &x)
Definition traverser.h:1930
void apply(const state_formulas::delay &x)
Definition traverser.h:2027
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:1954
void apply(const state_formulas::minus &x)
Definition traverser.h:1907
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:1946
void apply(const state_formulas::infimum &x)
Definition traverser.h:1976
void apply(const state_formulas::plus &x)
Definition traverser.h:3183
void apply(const state_formulas::variable &x)
Definition traverser.h:3291
void apply(const state_formulas::supremum &x)
Definition traverser.h:3231
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:3191
void apply(const state_formulas::delay &x)
Definition traverser.h:3277
void apply(const state_formulas::exists &x)
Definition traverser.h:3215
void apply(const state_formulas::yaled &x)
Definition traverser.h:3263
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:3270
void apply(const state_formulas::false_ &x)
Definition traverser.h:3138
void apply(const state_formulas::state_formula &x)
Definition traverser.h:3325
void apply(const state_formulas::and_ &x)
Definition traverser.h:3159
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:3199
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:3317
void apply(const state_formulas::minus &x)
Definition traverser.h:3152
void apply(const state_formulas::must &x)
Definition traverser.h:3247
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:3284
void apply(const state_formulas::forall &x)
Definition traverser.h:3207
void apply(const state_formulas::infimum &x)
Definition traverser.h:3223
void apply(const state_formulas::not_ &x)
Definition traverser.h:3145
void apply(const state_formulas::true_ &x)
Definition traverser.h:3131
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:3627
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:3585
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:3513
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:3599
void apply(const state_formulas::state_formula &x)
Definition traverser.h:3634
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:3520
void apply(const state_formulas::yaled &x)
Definition traverser.h:1699
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:1627
void apply(const state_formulas::variable &x)
Definition traverser.h:1727
void apply(const state_formulas::state_formula &x)
Definition traverser.h:1758
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:1720
void apply(const state_formulas::plus &x)
Definition traverser.h:1619
void apply(const state_formulas::supremum &x)
Definition traverser.h:1667
void apply(const state_formulas::and_ &x)
Definition traverser.h:1595
void apply(const state_formulas::must &x)
Definition traverser.h:1683
void apply(const state_formulas::exists &x)
Definition traverser.h:1651
void apply(const state_formulas::false_ &x)
Definition traverser.h:1574
void apply(const state_formulas::delay &x)
Definition traverser.h:1713
void apply(const state_formulas::not_ &x)
Definition traverser.h:1581
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:1635
void apply(const state_formulas::may &x)
Definition traverser.h:1691
void apply(const state_formulas::forall &x)
Definition traverser.h:1643
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:1706
void apply(const state_formulas::infimum &x)
Definition traverser.h:1659
void apply(const state_formulas::or_ &x)
Definition traverser.h:1603
void apply(const state_formulas::true_ &x)
Definition traverser.h:1567
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:1750
void apply(const state_formulas::imp &x)
Definition traverser.h:1611
void apply(const state_formulas::minus &x)
Definition traverser.h:1588
void apply(const state_formulas::sum &x)
Definition traverser.h:1675
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:2259
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:2329
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:2266
void apply(const state_formulas::state_formula &x)
Definition traverser.h:2378
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:2343
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:2371
void apply(const state_formulas::delay &x)
Definition traverser.h:2961
void apply(const state_formulas::variable &x)
Definition traverser.h:2975
void apply(const state_formulas::may &x)
Definition traverser.h:2940
void apply(const state_formulas::infimum &x)
Definition traverser.h:2912
void apply(const state_formulas::and_ &x)
Definition traverser.h:2852
void apply(const state_formulas::state_formula &x)
Definition traverser.h:3003
void apply(const state_formulas::exists &x)
Definition traverser.h:2905
void apply(const state_formulas::mu &x)
Definition traverser.h:2989
void apply(const state_formulas::false_ &x)
Definition traverser.h:2831
void apply(const state_formulas::or_ &x)
Definition traverser.h:2860
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:2884
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:2954
void apply(const state_formulas::not_ &x)
Definition traverser.h:2838
void apply(const state_formulas::true_ &x)
Definition traverser.h:2824
void apply(const state_formulas::imp &x)
Definition traverser.h:2868
void apply(const state_formulas::sum &x)
Definition traverser.h:2926
void apply(const state_formulas::plus &x)
Definition traverser.h:2876
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:2996
void apply(const state_formulas::must &x)
Definition traverser.h:2933
void apply(const state_formulas::yaled &x)
Definition traverser.h:2947
void apply(const state_formulas::forall &x)
Definition traverser.h:2898
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:2891
void apply(const state_formulas::minus &x)
Definition traverser.h:2845
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:2968
void apply(const state_formulas::nu &x)
Definition traverser.h:2982
void apply(const state_formulas::supremum &x)
Definition traverser.h:2919
void apply(const state_formulas::false_ &x)
Definition traverser.h:2513
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:2574
void apply(const state_formulas::true_ &x)
Definition traverser.h:2506
void apply(const state_formulas::and_ &x)
Definition traverser.h:2534
void apply(const state_formulas::exists &x)
Definition traverser.h:2590
void apply(const state_formulas::or_ &x)
Definition traverser.h:2542
void apply(const state_formulas::infimum &x)
Definition traverser.h:2598
void apply(const state_formulas::yaled &x)
Definition traverser.h:2638
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:2645
void apply(const state_formulas::plus &x)
Definition traverser.h:2558
void apply(const state_formulas::sum &x)
Definition traverser.h:2614
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:2659
void apply(const state_formulas::must &x)
Definition traverser.h:2622
void apply(const state_formulas::forall &x)
Definition traverser.h:2582
void apply(const state_formulas::mu &x)
Definition traverser.h:2681
void apply(const state_formulas::delay &x)
Definition traverser.h:2652
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:2689
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:2566
void apply(const state_formulas::variable &x)
Definition traverser.h:2666
void apply(const state_formulas::supremum &x)
Definition traverser.h:2606
void apply(const state_formulas::may &x)
Definition traverser.h:2630
void apply(const state_formulas::state_formula &x)
Definition traverser.h:2696
void apply(const state_formulas::nu &x)
Definition traverser.h:2673
void apply(const state_formulas::imp &x)
Definition traverser.h:2550
void apply(const state_formulas::minus &x)
Definition traverser.h:2527
void apply(const state_formulas::not_ &x)
Definition traverser.h:2520
void apply(T &result, const state_formulas::true_ &x)
Definition builder.h:1816
void apply(T &result, const state_formulas::may &x)
Definition builder.h:1946
void apply(T &result, const state_formulas::not_ &x)
Definition builder.h:1834
void apply(T &result, const state_formulas::and_ &x)
Definition builder.h:1850
void apply(T &result, const state_formulas::minus &x)
Definition builder.h:1842
void apply(T &result, const state_formulas::delay &x)
Definition builder.h:1971
void apply(T &result, const state_formulas::plus &x)
Definition builder.h:1874
void apply(T &result, const state_formulas::yaled &x)
Definition builder.h:1954
void apply(T &result, const state_formulas::exists &x)
Definition builder.h:1906
void apply(T &result, const state_formulas::variable &x)
Definition builder.h:1988
void apply(T &result, const state_formulas::sum &x)
Definition builder.h:1930
void apply(T &result, const state_formulas::forall &x)
Definition builder.h:1898
void apply(T &result, const state_formulas::infimum &x)
Definition builder.h:1914
void apply(T &result, const state_formulas::mu &x)
Definition builder.h:2004
void apply(T &result, const state_formulas::yaled_timed &x)
Definition builder.h:1963
void apply(T &result, const state_formulas::supremum &x)
Definition builder.h:1922
void apply(T &result, const state_formulas::false_ &x)
Definition builder.h:1825
void apply(T &result, const state_formulas::or_ &x)
Definition builder.h:1858
void apply(T &result, const state_formulas::delay_timed &x)
Definition builder.h:1980
void apply(T &result, const state_formulas::const_multiply &x)
Definition builder.h:1882
void apply(T &result, const state_formulas::state_formula &x)
Definition builder.h:2021
void update(state_formulas::state_formula_specification &x)
Definition builder.h:2011
void apply(T &result, const state_formulas::must &x)
Definition builder.h:1938
void apply(T &result, const state_formulas::imp &x)
Definition builder.h:1866
void apply(T &result, const state_formulas::const_multiply_alt &x)
Definition builder.h:1890
void apply(T &result, const state_formulas::nu &x)
Definition builder.h:1996
Function that determines if a state formula is time dependent.
Definition is_timed.h:25
void apply(const process::untyped_multi_action &)
Definition is_timed.h:43
void enter(const action_formulas::at &)
Definition is_timed.h:58
void apply(const data::data_expression &)
Definition is_timed.h:33
void apply(const data::untyped_data_parameter &)
Definition is_timed.h:38
untyped_state_formula_specification parse_StateFrmSpec(const core::parse_node &node) const
Definition parse_impl.h:204
state_formula_actions(const core::parser &parser_)
Definition parse_impl.h:95
state_formulas::state_formula parse_StateFrm(const core::parse_node &node) const
Definition parse_impl.h:133
Visitor that negates propositional variable instantiations with a given name.
state_variable_negator(const core::identifier_string &name, bool quantitative)
void apply(T &result, const variable &x)
Visit variable node.
state_formula apply_untyped_parameter(const core::identifier_string &name, const data::data_expression_list &arguments)
Definition typecheck.h:559
void apply(T &result, const state_formulas::mu &x)
Definition typecheck.h:634
void apply(T &result, const state_formulas::exists &x)
Definition typecheck.h:426
void apply(T &result, const state_formulas::const_multiply_alt &x)
Definition typecheck.h:700
state_formula apply_mu_nu(const MuNuFormula &x, bool is_mu)
Definition typecheck.h:596
void apply(T &result, const state_formulas::must &x)
Definition typecheck.h:536
void apply(T &result, const state_formulas::delay_timed &x)
Definition typecheck.h:546
void apply(T &result, const state_formulas::not_ &x)
Definition typecheck.h:640
void apply(T &result, const state_formulas::infimum &x)
Definition typecheck.h:451
const process::detail::action_context & m_action_context
Definition typecheck.h:354
void apply(T &result, const state_formulas::forall &x)
Definition typecheck.h:401
void apply(T &result, const state_formulas::supremum &x)
Definition typecheck.h:476
void apply(T &result, const data::untyped_data_parameter &x)
Definition typecheck.h:580
typecheck_builder(data::data_type_checker &data_typechecker, const data::detail::variable_context &variable_context, const process::detail::action_context &action_context, const detail::state_variable_context &state_variable_context, const bool formula_is_quantitative)
Definition typecheck.h:358
void apply(T &result, const state_formulas::may &x)
Definition typecheck.h:526
data::detail::variable_context m_variable_context
Definition typecheck.h:353
void apply(T &result, const state_formulas::const_multiply &x)
Definition typecheck.h:684
void apply(T &result, const state_formulas::plus &x)
Definition typecheck.h:668
void apply(T &result, const state_formulas::sum &x)
Definition typecheck.h:501
void apply(T &result, const state_formulas::nu &x)
Definition typecheck.h:628
void apply(T &result, const state_formulas::variable &x)
Definition typecheck.h:574
void apply(T &result, const state_formulas::yaled_timed &x)
Definition typecheck.h:553
data::data_type_checker & m_data_type_checker
Definition typecheck.h:352
void apply(T &result, const state_formulas::minus &x)
Definition typecheck.h:654
void apply(T &result, const data::data_expression &x)
Definition typecheck.h:372
detail::state_variable_context m_state_variable_context
Definition typecheck.h:355
data::variable_list assignment_variables(const data::assignment_list &x) const
Definition typecheck.h:585
Builder class for pbes_expressions. Used as a base class for pbes_expression_builder.
Definition builder.h:1108
void apply(T &result, const data::data_expression &x)
Definition builder.h:1113
void apply(T &result, const data::untyped_data_parameter &x)
Definition builder.h:1122
Traversal class for pbes_expressions. Used as a base class for pbes_expression_traverser.
Definition traverser.h:1537
void apply(const data::data_expression &x)
Definition traverser.h:1543
void apply(const data::untyped_data_parameter &x)
Definition traverser.h:1550