mCRL2
Loading...
Searching...
No Matches
add_binding.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/add_binding.h
10/// \brief add your file description here.
11
12#ifndef MCRL2_MODAL_FORMULA_ADD_BINDING_H
13#define MCRL2_MODAL_FORMULA_ADD_BINDING_H
14
15#include "mcrl2/lps/add_binding.h"
16#include "mcrl2/modal_formula/state_formula.h"
17
18namespace mcrl2
19{
20
21namespace action_formulas
22{
23
24/// \brief Maintains a multiset of bound data variables during traversal
25template <template <class> class Builder, class Derived>
27{
29 using super::enter;
30 using super::leave;
31 using super::apply;
35
36 void enter(exists const& x)
37 {
38 increase_bind_count(x.variables());
39 }
40
41 void leave(exists const& x)
42 {
43 decrease_bind_count(x.variables());
44 }
45
46 void enter(forall const& x)
47 {
48 increase_bind_count(x.variables());
49 }
50
51 void leave(forall const& x)
52 {
53 decrease_bind_count(x.variables());
54 }
55};
56
57// TODO: get rid of this code duplication
58// special handling for where clauses
59template <template <class> class Builder, class Derived>
61{
63 using super::enter;
64 using super::leave;
65 using super::apply;
69
70 void apply(const data::where_clause& x)
71 {
72 static_cast<Derived&>(*this).apply(x.declarations());
73 static_cast<Derived&>(*this).enter(x);
74 static_cast<Derived&>(*this).apply(x.body());
75 static_cast<Derived&>(*this).leave(x);
76 }
77};
78
79// special handling for where clauses
80template <template <class> class Builder, class Derived>
82{
84 using super::enter;
85 using super::leave;
86 using super::apply;
90
91 template <class T>
92 void apply(T& result, const data::where_clause& x)
93 {
94 data::assignment_expression_list declarations = static_cast<Derived&>(*this).apply(x.declarations());
95 static_cast<Derived&>(*this).enter(x);
96 result = data::where_clause(static_cast<Derived&>(*this).apply(x.body()), declarations);
97 static_cast<Derived&>(*this).leave(x);
98 }
99};
100
101} // namespace action_formulas
102
103namespace regular_formulas
104{
105
106/// \brief Maintains a multiset of bound data variables during traversal
107template <template <class> class Builder, class Derived>
109{
111 using super::enter;
112 using super::leave;
113 using super::apply;
114 using super::bound_variables;
117};
118
119// TODO: get rid of this code duplication
120// special handling for where clauses
121template <template <class> class Builder, class Derived>
123{
125 using super::enter;
126 using super::leave;
127 using super::apply;
128 using super::bound_variables;
131
132 void apply(const data::where_clause& x)
133 {
134 static_cast<Derived&>(*this).apply(x.declarations());
135 static_cast<Derived&>(*this).enter(x);
136 static_cast<Derived&>(*this).apply(x.body());
137 static_cast<Derived&>(*this).leave(x);
138 }
139};
140
141// special handling for where clauses
142template <template <class> class Builder, class Derived>
144{
146 using super::enter;
147 using super::leave;
148 using super::apply;
149 using super::bound_variables;
152
153 template <class T>
154 void apply(T& result, const data::where_clause& x)
155 {
156 data::assignment_expression_list declarations = static_cast<Derived&>(*this).apply(x.declarations());
157 static_cast<Derived&>(*this).enter(x);
158 result = data::where_clause(static_cast<Derived&>(*this).apply(x.body()), declarations);
159 static_cast<Derived&>(*this).leave(x);
160 }
161};
162
163} // namespace regular_formulas
164
165namespace state_formulas
166{
167
168/// \brief Maintains a multiset of bound data variables during traversal
169template <template <class> class Builder, class Derived>
171{
173 using super::enter;
174 using super::leave;
175 using super::apply;
176 using super::bound_variables;
179
180 void enter(exists const& x)
181 {
182 increase_bind_count(x.variables());
183 }
184
185 void leave(exists const& x)
186 {
187 decrease_bind_count(x.variables());
188 }
189
190 void enter(forall const& x)
191 {
192 increase_bind_count(x.variables());
193 }
194
195 void leave(forall const& x)
196 {
197 decrease_bind_count(x.variables());
198 }
199};
200
201// TODO: get rid of this code duplication
202// special handling for where clauses
203template <template <class> class Builder, class Derived>
205{
207 using super::enter;
208 using super::leave;
209 using super::apply;
210 using super::bound_variables;
213
214 void apply(const data::where_clause& x)
215 {
216 static_cast<Derived&>(*this).apply(x.declarations());
217 static_cast<Derived&>(*this).enter(x);
218 static_cast<Derived&>(*this).apply(x.body());
219 static_cast<Derived&>(*this).leave(x);
220 }
221};
222
223// special handling for where clauses
224template <template <class> class Builder, class Derived>
226{
228 using super::enter;
229 using super::leave;
230 using super::apply;
231 using super::bound_variables;
234
235 template <class T>
236 void apply(T& result, const data::where_clause& x)
237 {
238 data::assignment_expression_list declarations = static_cast<Derived&>(*this).apply(x.declarations());
239 static_cast<Derived&>(*this).enter(x);
240 result = data::where_clause(static_cast<Derived&>(*this).apply(x.body()), declarations);
241 static_cast<Derived&>(*this).leave(x);
242 }
243};
244
245/// \brief Maintains a multiset of bound state variables during traversal
246template <template <class> class Builder, class Derived>
248{
250 using super::enter;
251 using super::leave;
252 using super::apply;
253 using super::bound_variables;
256
257 void enter(mu const& x)
258 {
259 increase_bind_count(x.name());
260 }
261
262 void leave(mu const& x)
263 {
264 decrease_bind_count(x.name());
265 }
266
267 void enter(nu const& x)
268 {
269 increase_bind_count(x.name());
270 }
271
272 void leave(nu const& x)
273 {
274 decrease_bind_count(x.name());
275 }
276};
277
278} // namespace state_formulas
279
280} // namespace mcrl2
281
282#endif // MCRL2_MODAL_FORMULA_ADD_BINDING_H
aterm_string(const aterm_string &t) noexcept=default
aterm()
Default constructor.
Definition aterm.h:48
bool operator==(const unprotected_aterm_core &t) const
Comparison operator.
Definition aterm_core.h:83
\brief The and operator for action formulas
and_(const action_formula &left, const action_formula &right)
\brief Constructor Z14.
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
at(const action_formula &operand, const data::data_expression &time_stamp)
\brief Constructor Z14.
\brief The existential quantification operator for action formulas
const data::variable_list & variables() const
const action_formula & body() const
exists(const data::variable_list &variables, const action_formula &body)
\brief Constructor Z14.
\brief The value false for action formulas
false_()
\brief Default constructor X3.
\brief The universal quantification operator for action formulas
const action_formula & body() const
const data::variable_list & variables() const
forall(const data::variable_list &variables, const action_formula &body)
\brief Constructor Z14.
\brief The implication operator for action formulas
const action_formula & left() const
imp(const action_formula &left, const action_formula &right)
\brief Constructor Z14.
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
not_(const action_formula &operand)
\brief Constructor Z14.
const action_formula & operand() const
\brief The or operator for action formulas
or_(const action_formula &left, const action_formula &right)
\brief Constructor Z14.
const action_formula & right() const
const action_formula & left() const
\brief The value true for action formulas
true_()
\brief Default constructor X3.
parse_node_unexpected_exception(const parser &p, const parse_node &node)
Definition parse.h:78
\brief Assignment of a data expression to a variable
Definition assignment.h:91
assignment(const variable &lhs, const data_expression &rhs)
\brief Constructor Z14.
Definition assignment.h:107
\brief A container sort
const sort_expression & element_sort() const
sort_expression sort() const
Returns the sort of the data expression.
Definition data.cpp:108
void translate_user_notation()
Translate user notation within the equations of the data specification.
data_equation_vector & user_defined_equations()
data_specification()
Default constructor. Generate a data specification that contains only booleans and positive numbers.
const data_specification operator()() const
Yields a type checked data specification, provided typechecking was successful. If not successful an ...
void operator()(data_equation_vector &eqns)
Yields a type checked equation list, and sets the types in the equations right. If not successful an ...
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...
const data_specification & typechecked_data_specification() const
Definition typecheck.h:120
Identifier generator that stores the identifiers of the context in a set. Using the operator()() and ...
void add_identifier(const core::identifier_string &s) override
Adds the identifier s to the context.
\brief A sort expression
const core::identifier_string & name() const
const data_expression_list & arguments() const
\brief A data variable
Definition variable.h:28
const core::identifier_string & name() const
Definition variable.h:38
variable(const core::identifier_string &name, const sort_expression &sort)
Constructor.
Definition variable.h:62
\brief A where expression
const data_expression & body() const
const assignment_expression_list & declarations() const
logger(const log_level_t l)
Default constructor.
Definition logger.h:164
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
trans_or_nil(const regular_formula &operand)
\brief Constructor Z14.
const regular_formula & operand() const
\brief The trans operator for regular formulas
const regular_formula & operand() const
trans(const regular_formula &operand)
\brief Constructor Z14.
\brief An untyped regular formula or action formula
untyped_regular_formula(const core::identifier_string &name, const regular_formula &left, const regular_formula &right)
\brief Constructor Z14.
const core::identifier_string & name() const
Standard exception class for reporting runtime errors.
Definition exception.h:27
\brief The and operator for state formulas
const state_formula & right() const
and_(const state_formula &left, const state_formula &right)
\brief Constructor Z14.
const state_formula & left() const
\brief The multiply operator for state formulas with values
const state_formula & left() const
const_multiply_alt(const state_formula &left, const data::data_expression &right)
\brief Constructor Z14.
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_multiply(const data::data_expression &left, const state_formula &right)
\brief Constructor Z14.
const state_formula & right() const
\brief The timed delay operator for state formulas
const data::data_expression & time_stamp() const
delay_timed(const data::data_expression &time_stamp)
\brief Constructor Z14.
\brief The delay operator for state formulas
delay()
\brief Default constructor X3.
Traverser that checks for name clashes in parameters of nested mu's/nu's and forall/exists.
state_formulas::state_formula_traverser< state_formula_data_variable_name_clash_checker > super
void insert(const core::identifier_string &name, const state_formula &x)
state_formulas::data_expression_builder< state_formula_data_variable_name_clash_resolver > super
std::map< data::variable, std::vector< data::variable > > substitutions
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.
state_formulas::state_formula_traverser< state_variable_name_clash_checker > super
std::vector< core::identifier_string > m_name_stack
The stack of names.
utilities::number_postfix_generator m_generator
Generator for fresh variable names.
std::map< core::identifier_string, std::vector< core::identifier_string > > name_map
state_formulas::state_formula_builder< Derived > super
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
imp(const state_formula &left, const state_formula &right)
\brief Constructor Z14.
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
may(const regular_formulas::regular_formula &formula, const state_formula &operand)
\brief Constructor Z14.
\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
must(const regular_formulas::regular_formula &formula, const state_formula &operand)
\brief Constructor Z14.
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
plus(const state_formula &left, const state_formula &right)
\brief Constructor Z14.
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:735
data::detail::variable_context m_variable_context
Definition typecheck.h:733
process::detail::action_context m_action_context
Definition typecheck.h:734
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:745
state_formula typecheck_state_formula(const state_formula &x)
Definition typecheck.h:765
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
yaled_timed(const data::data_expression &time_stamp)
\brief Constructor Z14.
const data::data_expression & time_stamp() const
\brief The yaled operator for state formulas
yaled()
\brief Default constructor X3.
Identifier generator that generates names consisting of a prefix followed by a number....
D_ParserTables parser_tables_mcrl2
Definition dparser.cpp:20
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
Definition logger.h:391
The main namespace for the aterm++ library.
Definition algorithm.h:21
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:130
void translate_user_notation(T &x, typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value >::type *=0)
void pp(const T &t, std::ostream &out)
Prints the object t to a stream.
Definition print.h:167
void replace_variables_capture_avoiding(T &x, Substitution &sigma, data::set_identifier_generator &id_generator, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
void replace_sort_expressions(T &x, const Substitution &sigma, bool innermost, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:26
bool is_left_associative(const and_ &)
Definition print.h:44
std::set< data::variable > find_free_variables(const T &x)
Definition find.h:72
void replace_all_variables(T &x, const Substitution &sigma, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:91
bool is_at(const atermpp::aterm &x)
bool is_right_associative(const and_ &)
Definition print.h:55
std::string pp(const T &t)
Returns a string representation of the object t.
Definition print.h:175
std::string pp(const action_formulas::action_formula &x)
void replace_variables(T &x, const Substitution &sigma, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:71
T replace_free_variables(const T &x, const Substitution &sigma, const VariableContainer &bound_variables, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:152
int precedence(const action_formula &x)
Definition print.h:29
std::set< data::variable > find_all_variables(const T &x)
Definition find.h:40
void normalize_sorts(T &x, const data::sort_specification &sortspec, typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value >::type *=0)
std::string pp(const action_formulas::exists &x)
void find_free_variables_with_bound(const T &x, OutputIterator o, const VariableContainer &bound)
Definition find.h:63
void replace_variables_capture_avoiding(T &x, Substitution &sigma, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
void find_all_variables(const T &x, OutputIterator o)
Definition find.h:31
T normalize_sorts(const T &x, const data::sort_specification &sortspec, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
void find_free_variables(const T &x, OutputIterator o)
Definition find.h:52
action_formula typecheck_action_formula(const action_formula &x, const data::data_specification &dataspec, const VariableContainer &variables, const ActionLabelContainer &actions)
Definition typecheck.h:142
constexpr int precedence(const exists &)
Definition print.h:23
std::set< core::identifier_string > find_identifiers(const T &x)
Definition find.h:105
bool is_right_associative(const or_ &)
Definition print.h:54
T replace_data_expressions(const T &x, const Substitution &sigma, bool innermost, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:58
std::string pp(const action_formulas::and_ &x)
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
std::string pp(const action_formulas::at &x)
constexpr int precedence(const and_ &)
Definition print.h:26
bool is_or(const atermpp::aterm &x)
bool is_true(const atermpp::aterm &x)
bool is_forall(const atermpp::aterm &x)
bool is_left_associative(const or_ &)
Definition print.h:43
std::string pp(const action_formulas::imp &x)
bool is_false(const atermpp::aterm &x)
action_formula typecheck_action_formula(const action_formula &x, const lps::stochastic_specification &lpsspec)
Definition typecheck.h:160
bool is_left_associative(const imp &)
Definition print.h:42
bool is_not(const atermpp::aterm &x)
T replace_variables_capture_avoiding(const T &x, Substitution &sigma, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
std::set< data::sort_expression > find_sort_expressions(const T &x)
Definition find.h:126
std::string pp(const action_formulas::multi_action &x)
T replace_sort_expressions(const T &x, const Substitution &sigma, bool innermost, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:36
void replace_data_expressions(T &x, const Substitution &sigma, bool innermost, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:48
constexpr int precedence(const imp &)
Definition print.h:24
bool is_right_associative(const imp &)
Definition print.h:53
std::string pp(const action_formulas::or_ &x)
std::string pp(const action_formulas::forall &x)
void find_function_symbols(const T &x, OutputIterator o)
Definition find.h:138
bool is_imp(const atermpp::aterm &x)
bool is_and(const atermpp::aterm &x)
constexpr int precedence(const at &)
Definition print.h:27
T replace_variables(const T &x, const Substitution &sigma, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:80
T translate_user_notation(const T &x, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
constexpr int precedence(const or_ &)
Definition print.h:25
std::set< data::variable > find_free_variables_with_bound(const T &x, VariableContainer const &bound)
Definition find.h:84
T replace_all_variables(const T &x, const Substitution &sigma, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:100
std::set< data::function_symbol > find_function_symbols(const T &x)
Definition find.h:147
void replace_free_variables(T &x, const Substitution &sigma, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:113
std::string pp(const action_formulas::not_ &x)
std::string pp(const action_formulas::false_ &x)
void find_identifiers(const T &x, OutputIterator o)
Definition find.h:96
action_formula parse_action_formula(const std::string &text, const lps::stochastic_specification &lpsspec)
Definition parse.h:50
void find_sort_expressions(const T &x, OutputIterator o)
Definition find.h:117
constexpr int precedence(const not_ &)
Definition print.h:28
bool is_multi_action(const atermpp::aterm &x)
constexpr int precedence(const forall &)
Definition print.h:22
bool is_right_associative(const action_formula &x)
Definition print.h:56
T replace_free_variables(const T &x, const Substitution &sigma, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:125
T replace_variables_capture_avoiding(const T &x, Substitution &sigma, data::set_identifier_generator &id_generator, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
bool is_left_associative(const action_formula &x)
Definition print.h:45
std::string pp(const action_formulas::true_ &x)
void replace_free_variables(T &x, const Substitution &sigma, const VariableContainer &bound_variables, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:139
bool is_exists(const atermpp::aterm &x)
bool is_action_formula(const atermpp::aterm &x)
void syntax_error_fn(struct D_Parser *ap)
Custom syntax error function that prints both the line number and the column.
Definition dparser.cpp:463
D_ParseNode * ambiguity_fn(struct D_Parser *, int n, struct D_ParseNode **v)
Function for resolving parser ambiguities.
Definition dparser.cpp:332
void warn_left_merge_merge(const parse_node &)
Prints a warning for each occurrence of 'x ||_ y || z' in the parse tree.
std::string pp(const core::identifier_string &x)
Definition core.cpp:26
atermpp::aterm_string identifier_string
String type of the LPS library. Identifier strings are represented internally as ATerms.
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:38
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
Definition bag1.h:495
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition bag1.h:474
Namespace for system defined sort bool_.
Definition bool.h:32
const basic_sort & bool_()
Constructor for sort expression Bool.
Definition bool.h:44
application not_(const data_expression &arg0)
Application of function symbol !.
Definition bool.h:197
Namespace for system defined sort fbag.
Definition fbag1.h:37
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition fbag1.h:558
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
Definition fbag1.h:579
Namespace for system defined sort fset.
Definition fset1.h:35
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition fset1.h:490
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
Definition fset1.h:511
Namespace for system defined sort int_.
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition int1.h:1002
bool is_int(const sort_expression &e)
Recogniser for sort expression Int.
Definition int1.h:57
Namespace for system defined sort list.
Definition list1.h:36
application element_at(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol ..
Definition list1.h:487
Namespace for system defined sort nat.
bool is_nat(const sort_expression &e)
Recogniser for sort expression Nat.
Definition nat1.h:56
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition nat1.h:882
Namespace for system defined sort pos.
bool is_pos(const sort_expression &e)
Recogniser for sort expression Pos.
Definition pos1.h:55
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition pos1.h:483
Namespace for system defined sort real_.
application negate(const data_expression &arg0)
Application of function symbol -.
Definition real1.h:857
bool is_real(const sort_expression &e)
Recogniser for sort expression Real.
Definition real1.h:58
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition real1.h:1115
Namespace for system defined sort set_.
Definition set1.h:36
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
Definition set1.h:483
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
Definition set1.h:462
Namespace for all data library functionality.
Definition data.cpp:22
atermpp::term_list< assignment_expression > assignment_expression_list
\brief list of assignment_expressions
Definition assignment.h:50
int precedence(const data_expression &x)
Definition print.h:415
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.
atermpp::term_list< sort_expression > sort_expression_list
\brief list of sort_expressions
std::string pp(const data::data_expression_list &x)
Definition data.cpp:27
atermpp::term_list< data_expression > data_expression_list
\brief list of data_expressions
bool is_untyped_data_parameter(const atermpp::aterm &x)
atermpp::term_list< variable > variable_list
\brief list of variables
atermpp::term_list< assignment > assignment_list
\brief list of assignments
Definition assignment.h:146
std::string pp(const data::data_expression &x)
Definition data.cpp:52
@ verbose
Definition logger.h:37
The main namespace for the LPS library.
Definition constelm.h:21
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.
action_label_list merge_action_specifications(const action_label_list &actspec1, const action_label_list &actspec2)
Merges two action specifications.
atermpp::term_list< action_label > action_label_list
\brief list of action_labels
atermpp::term_list< action > action_list
\brief list of actions
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:303
regular_formula parse_regular_formula(const std::string &text)
std::set< data::variable > find_free_variables(const T &x)
Definition find.h:207
bool is_left_associative(const seq &)
Definition print.h:200
std::string pp(const regular_formulas::regular_formula &x)
bool is_alt(const atermpp::aterm &x)
bool is_untyped_regular_formula(const atermpp::aterm &x)
void replace_variables_capture_avoiding(T &x, Substitution &sigma, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
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
constexpr int precedence(const trans &)
Definition print.h:188
std::string pp(const T &t)
Returns a string representation of the object t.
Definition print.h:287
bool is_right_associative(const seq &)
Definition print.h:209
regular_formula typecheck_regular_formula(const regular_formula &x, const lps::stochastic_specification &lpsspec)
Definition typecheck.h:333
T replace_free_variables(const T &x, const Substitution &sigma, const VariableContainer &bound_variables, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:298
bool is_right_associative(const alt &)
Definition print.h:210
void replace_free_variables(T &x, const Substitution &sigma, const VariableContainer &bound_variables, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:285
void replace_data_expressions(T &x, const Substitution &sigma, bool innermost, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:194
std::string pp(const regular_formulas::seq &x)
void find_function_symbols(const T &x, OutputIterator o)
Definition find.h:273
T translate_user_notation(const T &x, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
bool is_trans_or_nil(const atermpp::aterm &x)
constexpr int precedence(const seq &)
Definition print.h:186
T replace_sort_expressions(const T &x, const Substitution &sigma, bool innermost, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:182
void find_sort_expressions(const T &x, OutputIterator o)
Definition find.h:252
T replace_variables(const T &x, const Substitution &sigma, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:226
void normalize_sorts(T &x, const data::sort_specification &sortspec, typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value >::type *=0)
void replace_sort_expressions(T &x, const Substitution &sigma, bool innermost, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:172
std::set< data::sort_expression > find_sort_expressions(const T &x)
Definition find.h:261
bool is_right_associative(const regular_formula &x)
Definition print.h:211
std::set< data::variable > find_free_variables_with_bound(const T &x, VariableContainer const &bound)
Definition find.h:219
void find_free_variables_with_bound(const T &x, OutputIterator o, const VariableContainer &bound)
Definition find.h:198
bool is_seq(const atermpp::aterm &x)
void replace_variables(T &x, const Substitution &sigma, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:217
bool is_left_associative(const alt &)
Definition print.h:201
std::string pp(const regular_formulas::alt &x)
T replace_free_variables(const T &x, const Substitution &sigma, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:271
T replace_variables_capture_avoiding(const T &x, Substitution &sigma, data::set_identifier_generator &id_generator, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
T replace_data_expressions(const T &x, const Substitution &sigma, bool innermost, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:204
std::string pp(const regular_formulas::untyped_regular_formula &x)
std::set< data::function_symbol > find_function_symbols(const T &x)
Definition find.h:282
T normalize_sorts(const T &x, const data::sort_specification &sortspec, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
T replace_all_variables(const T &x, const Substitution &sigma, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:246
constexpr int precedence(const alt &)
Definition print.h:187
int precedence(const regular_formula &x)
Definition print.h:190
std::string pp(const regular_formulas::trans_or_nil &x)
T replace_variables_capture_avoiding(const T &x, Substitution &sigma, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
void replace_free_variables(T &x, const Substitution &sigma, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:259
void translate_user_notation(T &x, typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value >::type *=0)
constexpr int precedence(const trans_or_nil &)
Definition print.h:189
void find_all_variables(const T &x, OutputIterator o)
Definition find.h:166
void pp(const T &t, std::ostream &out)
Prints the object t to a stream.
Definition print.h:279
std::set< data::variable > find_all_variables(const T &x)
Definition find.h:175
std::string pp(const regular_formulas::trans &x)
void replace_variables_capture_avoiding(T &x, Substitution &sigma, data::set_identifier_generator &id_generator, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
regular_formula typecheck_regular_formula(const regular_formula &x, const data::data_specification &dataspec, const VariableContainer &variables, const ActionLabelContainer &actions)
Definition typecheck.h:315
bool is_left_associative(const regular_formula &x)
Definition print.h:202
std::set< core::identifier_string > find_identifiers(const T &x)
Definition find.h:240
void find_identifiers(const T &x, OutputIterator o)
Definition find.h:231
void find_free_variables(const T &x, OutputIterator o)
Definition find.h:187
void replace_all_variables(T &x, const Substitution &sigma, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:237
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 normalize(const state_formula &x, bool quantitative=false, bool negated=false)
state_formula_specification parse_state_formula_specification(std::istream &in, const bool formula_is_quantitative)
Parses a state formula specification from an input stream.
bool is_monotonous(const state_formula &f)
Returns true if the state formula is monotonous.
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_specification parse_state_formula_specification(const std::string &text, const bool formula_is_quantitative)
Parses a state formula specification from text.
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(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:716
find_free_state_variables_traverser< Traverser, Binder, OutputIterator > make_find_free_state_variables_traverser(OutputIterator out)
Definition find.h:507
find_free_state_variables_traverser< Traverser, Binder, OutputIterator > make_find_free_state_variables_traverser(OutputIterator out, const VariableContainer &v)
Definition find.h:514
state_formula parse_state_formula(const std::string &text)
find_state_variables_traverser< Traverser, OutputIterator > make_find_state_variables_traverser(OutputIterator out)
Definition find.h:465
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::or_ &x)
bool is_left_associative(const const_multiply_alt &)
Definition print.h:343
T replace_free_variables(const T &x, const Substitution &sigma, const VariableContainer &bound_variables, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:444
std::string pp(const state_formulas::plus &x)
bool is_and(const atermpp::aterm &x)
std::set< process::action_label > find_action_labels(const T &x)
Returns all action labels that occur in an object.
Definition find.h:587
constexpr int precedence(const forall &)
Definition print.h:300
std::string pp(const state_formulas::yaled_timed &x)
constexpr int precedence(const exists &)
Definition print.h:301
std::string pp(const state_formulas::may &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
T replace_free_variables(const T &x, const Substitution &sigma, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:417
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
constexpr int precedence(const const_multiply &)
Definition print.h:309
constexpr int precedence(const imp &)
Definition print.h:305
bool is_delay_timed(const atermpp::aterm &x)
void normalize_sorts(T &x, const data::sort_specification &sortspec, typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value >::type *=0)
T translate_user_notation(const T &x, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
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.
std::string pp(const T &t)
Returns a string representation of the object t.
Definition print.h:686
bool is_right_associative(const const_multiply_alt &)
Definition print.h:360
std::set< data::variable > find_all_variables(const T &x)
Definition find.h:310
bool is_const_multiply(const atermpp::aterm &x)
std::string pp(const state_formulas::must &x)
bool is_minus(const atermpp::aterm &x)
bool is_right_associative(const and_ &)
Definition print.h:357
void replace_variables_capture_avoiding(T &x, Substitution &sigma, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
std::string pp(const state_formulas::not_ &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
int precedence(const state_formula &x)
Definition print.h:315
bool is_left_associative(const or_ &)
Definition print.h:339
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:810
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:842
std::string pp(const state_formulas::delay &x)
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
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_left_associative(const imp &)
Definition print.h:338
constexpr int precedence(const must &)
Definition print.h:311
constexpr int precedence(const plus &)
Definition print.h:308
bool is_supremum(const atermpp::aterm &x)
bool is_right_associative(const imp &)
Definition print.h:355
constexpr int precedence(const or_ &)
Definition print.h:306
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)
std::string pp(const state_formulas::const_multiply &x)
void find_function_symbols(const T &x, OutputIterator o)
Definition find.h:408
std::string pp(const state_formulas::exists &x)
bool has_data_variable_name_clashes(const state_formula &x)
Returns true if the formula contains parameter name clashes.
std::string pp(const state_formulas::const_multiply_alt &x)
bool is_normalized(const T &x)
Checks if a state formula is normalized.
Definition normalize.h:411
std::set< data::variable > find_free_variables(const state_formulas::state_formula &x)
void replace_free_variables(T &x, const Substitution &sigma, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:405
bool is_true(const atermpp::aterm &x)
bool is_right_associative(const const_multiply &)
Definition print.h:359
void replace_all_variables(T &x, const Substitution &sigma, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:383
bool is_left_associative(const and_ &)
Definition print.h:340
std::string pp(const state_formulas::and_ &x)
void replace_variables_capture_avoiding(T &x, Substitution &sigma, data::set_identifier_generator &id_generator, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
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::set< core::identifier_string > find_identifiers(const T &x)
Definition find.h:375
std::string pp(const state_formulas::state_formula &x)
T replace_variables_capture_avoiding(const T &x, Substitution &sigma, data::set_identifier_generator &id_generator, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
std::string pp(const state_formulas::infimum &x)
constexpr int precedence(const may &)
Definition print.h:312
std::string pp(const state_formulas::minus &x)
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::set< state_formulas::variable > find_free_state_variables(const T &x)
Returns all free state variables that occur in an object.
Definition find.h:566
std::set< state_formulas::variable > find_state_variables(const T &x)
Returns all state variables that occur in an object.
Definition find.h:545
constexpr int precedence(const infimum &)
Definition print.h:302
void find_identifiers(const T &x, OutputIterator o)
Definition find.h:366
T replace_sort_expressions(const T &x, const Substitution &sigma, bool innermost, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:328
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:60
std::string pp(const state_formulas::forall &x)
std::string pp(const state_formulas::imp &x)
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::yaled &x)
void pp(const T &t, std::ostream &out)
Prints the object t to a stream.
Definition print.h:678
std::string pp(const state_formulas::sum &x)
std::string pp(const state_formulas::state_formula_specification &x)
bool is_monotonous(const state_formula &f)
Returns true if the state formula is monotonous.
void replace_free_variables(T &x, const Substitution &sigma, const VariableContainer &bound_variables, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:431
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
void find_sort_expressions(const T &x, OutputIterator o)
Definition find.h:387
bool is_sum(const atermpp::aterm &x)
std::string pp(const state_formulas::delay_timed &x)
state_formulas::state_formula translate_user_notation(const state_formulas::state_formula &x)
constexpr int precedence(const not_ &)
Definition print.h:313
std::set< data::variable > find_free_variables(const T &x)
Definition find.h:342
std::set< data::sort_expression > find_sort_expressions(const T &x)
Definition find.h:396
state_formulas::state_formula normalize_sorts(const state_formulas::state_formula &x, const data::sort_specification &sortspec)
void replace_sort_expressions(T &x, const Substitution &sigma, bool innermost, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:318
T replace_data_expressions(const T &x, const Substitution &sigma, bool innermost, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:350
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:821
bool is_left_associative(const state_formula &x)
Definition print.h:344
std::string pp(const state_formulas::false_ &x)
void replace_state_formulas(T &x, Substitution sigma, bool innermost=true, typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value >::type *=0)
Definition replace.h:503
bool is_nu(const atermpp::aterm &x)
void find_action_labels(const T &x, OutputIterator o)
Returns all action labels that occur in an object.
Definition find.h:578
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:784
void translate_user_notation(T &x, typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value >::type *=0)
constexpr int precedence(const const_multiply_alt &)
Definition print.h:310
void replace_variables(T &x, const Substitution &sigma, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:363
constexpr int precedence(const minus &)
Definition print.h:314
bool is_delay(const atermpp::aterm &x)
std::string pp(const state_formulas::true_ &x)
std::string pp(const state_formulas::mu &x)
std::string pp(const state_formulas::supremum &x)
T replace_variables(const T &x, const Substitution &sigma, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:372
bool is_false(const atermpp::aterm &x)
bool is_left_associative(const plus &)
Definition print.h:341
T replace_state_formulas(const T &x, Substitution sigma, bool innermost=true, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:513
T replace_all_variables(const T &x, const Substitution &sigma, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:392
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
T normalize(const T &x, bool quantitative=false, bool negated=false, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
The function normalize brings (embedded) state formulas into positive normal form,...
Definition normalize.h:436
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.
constexpr int precedence(const nu &)
Definition print.h:299
bool is_left_associative(const const_multiply &)
Definition print.h:342
bool is_mu(const atermpp::aterm &x)
constexpr int precedence(const mu &)
Definition print.h:298
bool is_forall(const atermpp::aterm &x)
void find_all_variables(const T &x, OutputIterator o)
Definition find.h:301
T replace_variables_capture_avoiding(const T &x, Substitution &sigma, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
void find_state_variables(const T &x, OutputIterator o)
Returns all state variables that occur in an object.
Definition find.h:536
std::string pp(const state_formulas::nu &x)
constexpr int precedence(const supremum &)
Definition print.h:303
std::set< core::identifier_string > find_state_variable_names(const state_formula &x)
Returns the names of the state variables that occur in x.
Definition find.h:524
void find_free_state_variables(const T &x, OutputIterator o)
Returns all free state variables that occur in an object.
Definition find.h:557
bool is_const_multiply_alt(const atermpp::aterm &x)
constexpr int precedence(const sum &)
Definition print.h:304
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
bool is_right_associative(const state_formula &x)
Definition print.h:361
bool is_or(const atermpp::aterm &x)
std::set< data::variable > find_free_variables_with_bound(const T &x, VariableContainer const &bound)
Definition find.h:354
std::string pp(const state_formulas::variable &x)
void replace_data_expressions(T &x, const Substitution &sigma, bool innermost, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Definition replace.h:340
std::set< data::sort_expression > find_sort_expressions(const state_formulas::state_formula &x)
T normalize_sorts(const T &x, const data::sort_specification &sortspec, typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
std::set< data::function_symbol > find_function_symbols(const T &x)
Definition find.h:417
void normalize(T &x, bool quantitative=false, bool negated=false, typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
The function normalize brings (embedded) state formulas into positive normal form,...
Definition normalize.h:424
void find_free_variables_with_bound(const T &x, OutputIterator o, const VariableContainer &bound)
Definition find.h:333
std::set< process::action_label > find_action_labels(const state_formulas::state_formula &x)
bool is_right_associative(const plus &)
Definition print.h:358
constexpr int precedence(const and_ &)
Definition print.h:307
std::set< core::identifier_string > find_identifiers(const state_formulas::state_formula &x)
void find_free_variables(const T &x, OutputIterator o)
Definition find.h:322
bool is_right_associative(const or_ &)
Definition print.h:356
std::string read_text(std::istream &in)
Read text from a stream.
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
Base class for action_formula_builder.
Definition builder.h:27
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(T &result, const action_formulas::forall &x)
Definition builder.h:629
void apply(T &result, const action_formulas::not_ &x)
Definition builder.h:593
void apply(T &result, const action_formulas::at &x)
Definition builder.h:647
void apply(T &result, const action_formulas::multi_action &x)
Definition builder.h:656
void apply(T &result, const action_formulas::and_ &x)
Definition builder.h:602
void apply(T &result, const action_formulas::exists &x)
Definition builder.h:638
void apply(T &result, const action_formulas::imp &x)
Definition builder.h:620
void apply(T &result, const action_formulas::action_formula &x)
Definition builder.h:667
void apply(T &result, const action_formulas::true_ &x)
Definition builder.h:571
void apply(T &result, const action_formulas::or_ &x)
Definition builder.h:611
void apply(T &result, const action_formulas::false_ &x)
Definition builder.h:582
void apply(T &result, const action_formulas::action_formula &x)
Definition builder.h:319
void apply(T &result, const action_formulas::and_ &x)
Definition builder.h:256
void apply(T &result, const action_formulas::exists &x)
Definition builder.h:292
void apply(T &result, const action_formulas::false_ &x)
Definition builder.h:236
void apply(T &result, const action_formulas::at &x)
Definition builder.h:301
void apply(T &result, const action_formulas::or_ &x)
Definition builder.h:265
void apply(T &result, const action_formulas::multi_action &x)
Definition builder.h:310
void apply(T &result, const action_formulas::true_ &x)
Definition builder.h:225
void apply(T &result, const action_formulas::not_ &x)
Definition builder.h:247
void apply(T &result, const action_formulas::imp &x)
Definition builder.h:274
void apply(T &result, const action_formulas::forall &x)
Definition builder.h:283
Maintains a multiset of bound data variables during traversal.
Definition add_binding.h:27
lps::add_data_variable_binding< Builder, Derived > super
Definition add_binding.h:28
void apply(T &result, const data::where_clause &x)
Definition add_binding.h:92
add_data_variable_binding< Builder, Derived > super
Definition add_binding.h:83
add_data_variable_binding< Builder, Derived > super
Definition add_binding.h:62
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:110
void apply(T &result, const action_formulas::true_ &x)
Definition builder.h:52
void apply(T &result, const action_formulas::or_ &x)
Definition builder.h:92
void apply(T &result, const action_formulas::false_ &x)
Definition builder.h:63
void apply(T &result, const action_formulas::at &x)
Definition builder.h:128
void apply(T &result, const action_formulas::and_ &x)
Definition builder.h:83
void apply(T &result, const action_formulas::imp &x)
Definition builder.h:101
void apply(T &result, const action_formulas::not_ &x)
Definition builder.h:74
void apply(T &result, const action_formulas::action_formula &x)
Definition builder.h:146
void apply(T &result, const action_formulas::multi_action &x)
Definition builder.h:137
void apply(const action_formulas::action_formula &x)
Definition traverser.h:425
void apply(const action_formulas::multi_action &x)
Definition traverser.h:418
void apply(const action_formulas::forall &x)
Definition traverser.h:850
void apply(const action_formulas::false_ &x)
Definition traverser.h:812
void apply(const action_formulas::true_ &x)
Definition traverser.h:805
void apply(const action_formulas::not_ &x)
Definition traverser.h:819
void apply(const action_formulas::at &x)
Definition traverser.h:864
void apply(const action_formulas::action_formula &x)
Definition traverser.h:878
void apply(const action_formulas::multi_action &x)
Definition traverser.h:871
void apply(const action_formulas::exists &x)
Definition traverser.h:857
void apply(const action_formulas::imp &x)
Definition traverser.h:842
void apply(const action_formulas::and_ &x)
Definition traverser.h:826
void apply(const action_formulas::or_ &x)
Definition traverser.h:834
void apply(const action_formulas::multi_action &x)
Definition traverser.h:269
void apply(const action_formulas::at &x)
Definition traverser.h:261
void apply(const action_formulas::exists &x)
Definition traverser.h:254
void apply(const action_formulas::action_formula &x)
Definition traverser.h:276
void apply(const action_formulas::forall &x)
Definition traverser.h:247
void apply(const action_formulas::not_ &x)
Definition traverser.h:216
void apply(const action_formulas::false_ &x)
Definition traverser.h:209
void apply(const action_formulas::or_ &x)
Definition traverser.h:231
void apply(const action_formulas::true_ &x)
Definition traverser.h:202
void apply(const action_formulas::and_ &x)
Definition traverser.h:223
void apply(const action_formulas::imp &x)
Definition traverser.h:239
void apply(const action_formulas::forall &x)
Definition traverser.h:698
void apply(const action_formulas::or_ &x)
Definition traverser.h:682
void apply(const action_formulas::false_ &x)
Definition traverser.h:660
void apply(const action_formulas::and_ &x)
Definition traverser.h:674
void apply(const action_formulas::action_formula &x)
Definition traverser.h:729
void apply(const action_formulas::multi_action &x)
Definition traverser.h:722
void apply(const action_formulas::true_ &x)
Definition traverser.h:653
void apply(const action_formulas::imp &x)
Definition traverser.h:690
void apply(const action_formulas::not_ &x)
Definition traverser.h:667
void apply(const action_formulas::exists &x)
Definition traverser.h:706
void apply(const action_formulas::action_formula &x)
Definition traverser.h:126
void apply(const action_formulas::true_ &x)
Definition traverser.h:50
void apply(const action_formulas::or_ &x)
Definition traverser.h:79
void apply(const action_formulas::multi_action &x)
Definition traverser.h:119
void apply(const action_formulas::forall &x)
Definition traverser.h:95
void apply(const action_formulas::and_ &x)
Definition traverser.h:71
void apply(const action_formulas::false_ &x)
Definition traverser.h:57
void apply(const action_formulas::at &x)
Definition traverser.h:111
void apply(const action_formulas::not_ &x)
Definition traverser.h:64
void apply(const action_formulas::imp &x)
Definition traverser.h:87
void apply(const action_formulas::exists &x)
Definition traverser.h:103
void apply(const action_formulas::imp &x)
Definition traverser.h:538
void apply(const action_formulas::and_ &x)
Definition traverser.h:522
void apply(const action_formulas::or_ &x)
Definition traverser.h:530
void apply(const action_formulas::forall &x)
Definition traverser.h:546
void apply(const action_formulas::at &x)
Definition traverser.h:562
void apply(const action_formulas::multi_action &x)
Definition traverser.h:570
void apply(const action_formulas::true_ &x)
Definition traverser.h:501
void apply(const action_formulas::action_formula &x)
Definition traverser.h:577
void apply(const action_formulas::exists &x)
Definition traverser.h:554
void apply(const action_formulas::not_ &x)
Definition traverser.h:515
void apply(const action_formulas::false_ &x)
Definition traverser.h:508
void apply(T &result, const action_formulas::action_formula &x)
Definition builder.h:492
void apply(T &result, const action_formulas::not_ &x)
Definition builder.h:420
void apply(T &result, const action_formulas::true_ &x)
Definition builder.h:398
void apply(T &result, const action_formulas::or_ &x)
Definition builder.h:438
void apply(T &result, const action_formulas::exists &x)
Definition builder.h:465
void apply(T &result, const action_formulas::and_ &x)
Definition builder.h:429
void apply(T &result, const action_formulas::imp &x)
Definition builder.h:447
void apply(T &result, const action_formulas::at &x)
Definition builder.h:474
void apply(T &result, const action_formulas::false_ &x)
Definition builder.h:409
void apply(T &result, const action_formulas::forall &x)
Definition builder.h:456
void apply(T &result, const action_formulas::multi_action &x)
Definition builder.h:483
action_formula_actions(const core::parser &parser_)
Definition parse_impl.h:30
action_formulas::action_formula parse_ActFrm(const core::parse_node &node) const
Definition parse_impl.h:34
lps::detail::add_capture_avoiding_replacement< Builder, Derived, Substitution > super
add_capture_avoiding_replacement(data::detail::capture_avoiding_substitution_updater< Substitution > &sigma)
void apply(const action_formulas::exists &x)
Definition print.h:132
action_formulas::add_traverser_sort_expressions< lps::detail::printer, Derived > super
Definition print.h:70
void apply(const action_formulas::at &x)
Definition print.h:139
void apply(const action_formulas::or_ &x)
Definition print.h:111
void apply(const action_formulas::false_ &x)
Definition print.h:90
void apply(const action_formulas::forall &x)
Definition print.h:125
void apply(const action_formulas::imp &x)
Definition print.h:118
void apply(const action_formulas::not_ &x)
Definition print.h:97
void apply(const action_formulas::and_ &x)
Definition print.h:104
void apply(const action_formulas::true_ &x)
Definition print.h:83
void apply(const action_formulas::multi_action &x)
Definition print.h:148
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:111
const process::detail::action_context & m_action_context
Definition typecheck.h:36
action_formula_builder< typecheck_builder > super
Definition typecheck.h:31
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:93
expression builder that visits all sub expressions
Definition builder.h:42
core::identifier_string parse_Id(const parse_node &node) const
Definition parse.h:233
Wrapper for D_ParseNode.
Definition dparser.h:86
parse_node child(int i) const
Definition dparser.cpp:43
int child_count() const
Definition dparser.cpp:37
std::string symbol_name(const parse_node &node) const
Definition parse.h:205
const parser & m_parser
Definition parse.h:85
Wrapper for D_Parser and its corresponding D_ParserTables.
Definition dparser.h:148
parse_node parse(const std::string &text, unsigned int start_symbol_index=0, bool partial_parses=false)
Parses a string. N.B. The user is responsible for destruction of the returned value by calling destro...
Definition dparser.cpp:209
parser(D_ParserTables &tables, D_AmbiguityFn ambiguity_fn=nullptr, D_SyntaxErrorFn syntax_error_fn=nullptr, std::size_t max_error_message_count=1)
Definition dparser.cpp:174
unsigned int start_symbol_index(const std::string &name) const
Definition dparser.cpp:204
expression traverser that visits all sub expressions
Definition traverser.h:32
data::data_expression parse_DataValExpr(const core::parse_node &node) const
Definition parse_impl.h:272
data::data_expression parse_DataExpr(const core::parse_node &node) const
Definition parse_impl.h:211
bool callback_DataSpecElement(const core::parse_node &node, untyped_data_specification &result) const
Definition parse_impl.h:413
normalize_sorts_function(const sort_specification &sort_spec)
data::sort_expression parse_SortExpr(const core::parse_node &node, data::sort_expression_list *product=nullptr) const
Definition parse_impl.h:35
multi_action_actions(const core::parser &parser_)
Definition parse_impl.h:29
void apply(T &result, const regular_formulas::trans &x)
Definition builder.h:897
void apply(T &result, const regular_formulas::trans_or_nil &x)
Definition builder.h:906
void apply(T &result, const regular_formulas::seq &x)
Definition builder.h:879
void apply(T &result, const regular_formulas::regular_formula &x)
Definition builder.h:924
void apply(T &result, const regular_formulas::alt &x)
Definition builder.h:888
void apply(T &result, const regular_formulas::untyped_regular_formula &x)
Definition builder.h:915
Maintains a multiset of bound data variables during traversal.
action_formulas::add_data_variable_binding< Builder, Derived > super
void apply(T &result, const data::where_clause &x)
add_data_variable_binding< Builder, Derived > super
add_data_variable_binding< Builder, Derived > super
void apply(T &result, const regular_formulas::trans_or_nil &x)
Definition builder.h:1106
void apply(T &result, const regular_formulas::seq &x)
Definition builder.h:1079
void apply(T &result, const regular_formulas::regular_formula &x)
Definition builder.h:1124
void apply(T &result, const regular_formulas::untyped_regular_formula &x)
Definition builder.h:1115
void apply(T &result, const regular_formulas::trans &x)
Definition builder.h:1097
void apply(T &result, const regular_formulas::alt &x)
Definition builder.h:1088
void apply(T &result, const regular_formulas::trans &x)
Definition builder.h:797
void apply(T &result, const regular_formulas::seq &x)
Definition builder.h:779
void apply(T &result, const regular_formulas::regular_formula &x)
Definition builder.h:824
void apply(T &result, const regular_formulas::untyped_regular_formula &x)
Definition builder.h:815
void apply(T &result, const regular_formulas::alt &x)
Definition builder.h:788
void apply(T &result, const regular_formulas::trans_or_nil &x)
Definition builder.h:806
void apply(const regular_formulas::alt &x)
Definition traverser.h:1442
void apply(const regular_formulas::trans_or_nil &x)
Definition traverser.h:1457
void apply(const regular_formulas::untyped_regular_formula &x)
Definition traverser.h:1464
void apply(const regular_formulas::trans &x)
Definition traverser.h:1450
void apply(const regular_formulas::seq &x)
Definition traverser.h:1434
void apply(const regular_formulas::regular_formula &x)
Definition traverser.h:1472
void apply(const regular_formulas::trans_or_nil &x)
Definition traverser.h:1096
void apply(const regular_formulas::regular_formula &x)
Definition traverser.h:1111
void apply(const regular_formulas::seq &x)
Definition traverser.h:1073
void apply(const regular_formulas::alt &x)
Definition traverser.h:1081
void apply(const regular_formulas::untyped_regular_formula &x)
Definition traverser.h:1103
void apply(const regular_formulas::trans &x)
Definition traverser.h:1089
void apply(const regular_formulas::untyped_regular_formula &x)
Definition traverser.h:1373
void apply(const regular_formulas::regular_formula &x)
Definition traverser.h:1382
void apply(const regular_formulas::trans &x)
Definition traverser.h:1359
void apply(const regular_formulas::trans_or_nil &x)
Definition traverser.h:1366
void apply(const regular_formulas::untyped_regular_formula &x)
Definition traverser.h:1193
void apply(const regular_formulas::regular_formula &x)
Definition traverser.h:1201
void apply(const regular_formulas::trans_or_nil &x)
Definition traverser.h:1186
void apply(const regular_formulas::trans &x)
Definition traverser.h:999
void apply(const regular_formulas::alt &x)
Definition traverser.h:991
void apply(const regular_formulas::untyped_regular_formula &x)
Definition traverser.h:1013
void apply(const regular_formulas::trans_or_nil &x)
Definition traverser.h:1006
void apply(const regular_formulas::regular_formula &x)
Definition traverser.h:1021
void apply(const regular_formulas::seq &x)
Definition traverser.h:983
void apply(const regular_formulas::trans_or_nil &x)
Definition traverser.h:1276
void apply(const regular_formulas::regular_formula &x)
Definition traverser.h:1291
void apply(const regular_formulas::alt &x)
Definition traverser.h:1261
void apply(const regular_formulas::untyped_regular_formula &x)
Definition traverser.h:1283
void apply(const regular_formulas::seq &x)
Definition traverser.h:1253
void apply(const regular_formulas::trans &x)
Definition traverser.h:1269
void apply(T &result, const regular_formulas::untyped_regular_formula &x)
Definition builder.h:1015
void apply(T &result, const regular_formulas::trans_or_nil &x)
Definition builder.h:1006
void apply(T &result, const regular_formulas::seq &x)
Definition builder.h:979
void apply(T &result, const regular_formulas::trans &x)
Definition builder.h:997
void apply(T &result, const regular_formulas::alt &x)
Definition builder.h:988
void apply(T &result, const regular_formulas::regular_formula &x)
Definition builder.h:1024
add_capture_avoiding_replacement(data::detail::capture_avoiding_substitution_updater< Substitution > &sigma)
action_formulas::detail::add_capture_avoiding_replacement< Builder, Derived, Substitution > super
void apply(const regular_formulas::trans_or_nil &x)
Definition print.h:258
void apply(const regular_formulas::alt &x)
Definition print.h:244
void apply(const regular_formulas::trans &x)
Definition print.h:251
void apply(const regular_formulas::seq &x)
Definition print.h:237
regular_formulas::add_traverser_sort_expressions< action_formulas::detail::printer, Derived > super
Definition print.h:224
void apply(const regular_formulas::untyped_regular_formula &x)
Definition print.h:265
regular_formulas::regular_formula parse_RegFrm(const core::parse_node &node) const
Definition parse_impl.h:69
const data::detail::variable_context & m_variable_context
Definition typecheck.h:179
data::data_expression make_element_at(const data::data_expression &left, const data::data_expression &right) const
Definition typecheck.h:256
void apply(regular_formula &result, const action_formulas::action_formula &x)
Definition typecheck.h:296
data::data_expression make_plus(const data::data_expression &left, const data::data_expression &right)
Definition typecheck.h:219
void apply(T &result, const regular_formulas::untyped_regular_formula &x)
Definition typecheck.h:264
regular_formula_builder< typecheck_builder > super
Definition typecheck.h:175
typecheck_builder(data::data_type_checker &data_typechecker, const data::detail::variable_context &variables, const process::detail::action_context &actions)
Definition typecheck.h:182
data::data_expression make_fset_union(const data::data_expression &left, const data::data_expression &right)
Definition typecheck.h:205
data::data_expression make_set_union(const data::data_expression &left, const data::data_expression &right)
Definition typecheck.h:212
data::data_expression make_fbag_union(const data::data_expression &left, const data::data_expression &right)
Definition typecheck.h:191
data::data_expression make_bag_union(const data::data_expression &left, const data::data_expression &right)
Definition typecheck.h:198
const process::detail::action_context & m_action_context
Definition typecheck.h:180
Builder class for regular_formula_builder. Used as a base class for pbes_expression_builder.
Definition builder.h:743
void apply(T &result, const data::data_expression &x)
Definition builder.h:748
void apply(T &result, const action_formulas::action_formula &x)
Definition builder.h:758
Traversal class for regular_formula_traverser. Used as a base class for pbes_expression_traverser.
Definition traverser.h:953
void apply(const action_formulas::action_formula &x)
Definition traverser.h:966
void apply(const data::data_expression &x)
Definition traverser.h:959
void apply(T &result, const state_formulas::nu &x)
Definition builder.h:1775
void apply(T &result, const state_formulas::supremum &x)
Definition builder.h:1690
void apply(T &result, const state_formulas::imp &x)
Definition builder.h:1627
void apply(T &result, const state_formulas::state_formula &x)
Definition builder.h:1802
void apply(T &result, const state_formulas::plus &x)
Definition builder.h:1636
void apply(T &result, const state_formulas::yaled &x)
Definition builder.h:1726
void apply(T &result, const state_formulas::false_ &x)
Definition builder.h:1580
void apply(T &result, const state_formulas::yaled_timed &x)
Definition builder.h:1737
void apply(T &result, const state_formulas::const_multiply &x)
Definition builder.h:1645
void apply(T &result, const state_formulas::and_ &x)
Definition builder.h:1609
void apply(T &result, const state_formulas::exists &x)
Definition builder.h:1672
void apply(T &result, const state_formulas::may &x)
Definition builder.h:1717
void apply(T &result, const state_formulas::minus &x)
Definition builder.h:1600
void apply(T &result, const state_formulas::infimum &x)
Definition builder.h:1681
void apply(T &result, const state_formulas::or_ &x)
Definition builder.h:1618
void apply(T &result, const state_formulas::sum &x)
Definition builder.h:1699
void apply(T &result, const state_formulas::mu &x)
Definition builder.h:1784
void apply(T &result, const state_formulas::must &x)
Definition builder.h:1708
void apply(T &result, const state_formulas::variable &x)
Definition builder.h:1766
void apply(T &result, const state_formulas::not_ &x)
Definition builder.h:1591
void update(state_formulas::state_formula_specification &x)
Definition builder.h:1792
void apply(T &result, const state_formulas::delay &x)
Definition builder.h:1746
void apply(T &result, const state_formulas::true_ &x)
Definition builder.h:1569
void apply(T &result, const state_formulas::const_multiply_alt &x)
Definition builder.h:1654
void apply(T &result, const state_formulas::forall &x)
Definition builder.h:1663
void apply(T &result, const state_formulas::delay_timed &x)
Definition builder.h:1757
Maintains a multiset of bound data variables during traversal.
regular_formulas::add_data_variable_binding< Builder, Derived > super
add_data_variable_binding< Builder, Derived > super
void apply(T &result, const data::where_clause &x)
add_data_variable_binding< Builder, Derived > super
void apply(T &result, const state_formulas::supremum &x)
Definition builder.h:1323
void apply(T &result, const state_formulas::yaled &x)
Definition builder.h:1359
void apply(T &result, const state_formulas::true_ &x)
Definition builder.h:1202
void apply(T &result, const state_formulas::const_multiply &x)
Definition builder.h:1278
void apply(T &result, const state_formulas::false_ &x)
Definition builder.h:1213
void apply(T &result, const state_formulas::const_multiply_alt &x)
Definition builder.h:1287
void apply(T &result, const state_formulas::sum &x)
Definition builder.h:1332
void apply(T &result, const state_formulas::not_ &x)
Definition builder.h:1224
void apply(T &result, const state_formulas::may &x)
Definition builder.h:1350
void apply(T &result, const state_formulas::forall &x)
Definition builder.h:1296
void apply(T &result, const state_formulas::exists &x)
Definition builder.h:1305
void apply(T &result, const state_formulas::delay_timed &x)
Definition builder.h:1390
void apply(T &result, const state_formulas::yaled_timed &x)
Definition builder.h:1370
void apply(T &result, const state_formulas::mu &x)
Definition builder.h:1417
void apply(T &result, const state_formulas::delay &x)
Definition builder.h:1379
void apply(T &result, const state_formulas::must &x)
Definition builder.h:1341
void apply(T &result, const state_formulas::infimum &x)
Definition builder.h:1314
void apply(T &result, const state_formulas::imp &x)
Definition builder.h:1260
void update(state_formulas::state_formula_specification &x)
Definition builder.h:1425
void apply(T &result, const state_formulas::state_formula &x)
Definition builder.h:1438
void apply(T &result, const state_formulas::nu &x)
Definition builder.h:1408
void apply(T &result, const state_formulas::and_ &x)
Definition builder.h:1242
void apply(T &result, const state_formulas::minus &x)
Definition builder.h:1233
void apply(T &result, const state_formulas::variable &x)
Definition builder.h:1399
void apply(T &result, const state_formulas::plus &x)
Definition builder.h:1269
void apply(T &result, const state_formulas::or_ &x)
Definition builder.h:1251
void apply(T &result, const state_formulas::exists &x)
Definition builder.h:2400
void apply(T &result, const state_formulas::yaled &x)
Definition builder.h:2454
void apply(T &result, const state_formulas::plus &x)
Definition builder.h:2364
void apply(T &result, const state_formulas::delay_timed &x)
Definition builder.h:2487
void apply(T &result, const state_formulas::must &x)
Definition builder.h:2436
void apply(T &result, const state_formulas::sum &x)
Definition builder.h:2427
void apply(T &result, const state_formulas::infimum &x)
Definition builder.h:2409
void apply(T &result, const state_formulas::const_multiply &x)
Definition builder.h:2373
void update(state_formulas::state_formula_specification &x)
Definition builder.h:2526
void apply(T &result, const state_formulas::may &x)
Definition builder.h:2445
void apply(T &result, const state_formulas::false_ &x)
Definition builder.h:2308
void apply(T &result, const state_formulas::or_ &x)
Definition builder.h:2346
void apply(T &result, const state_formulas::imp &x)
Definition builder.h:2355
void apply(T &result, const state_formulas::not_ &x)
Definition builder.h:2319
void apply(T &result, const state_formulas::variable &x)
Definition builder.h:2498
void apply(T &result, const state_formulas::forall &x)
Definition builder.h:2391
void apply(T &result, const state_formulas::delay &x)
Definition builder.h:2476
void apply(T &result, const state_formulas::yaled_timed &x)
Definition builder.h:2465
void apply(T &result, const state_formulas::supremum &x)
Definition builder.h:2418
void apply(T &result, const state_formulas::const_multiply_alt &x)
Definition builder.h:2382
void apply(T &result, const state_formulas::nu &x)
Definition builder.h:2509
void apply(T &result, const state_formulas::and_ &x)
Definition builder.h:2337
void apply(T &result, const state_formulas::minus &x)
Definition builder.h:2328
void apply(T &result, const state_formulas::mu &x)
Definition builder.h:2518
void apply(T &result, const state_formulas::true_ &x)
Definition builder.h:2297
void apply(T &result, const state_formulas::state_formula &x)
Definition builder.h:2536
Maintains a multiset of bound state variables during traversal.
core::add_binding< Builder, Derived, core::identifier_string > super
void apply(const state_formulas::mu &x)
Definition traverser.h:3908
void apply(const state_formulas::state_formula &x)
Definition traverser.h:3923
void apply(const state_formulas::delay &x)
Definition traverser.h:3880
void apply(const state_formulas::variable &x)
Definition traverser.h:3894
void apply(const state_formulas::infimum &x)
Definition traverser.h:3829
void apply(const state_formulas::minus &x)
Definition traverser.h:3762
void apply(const state_formulas::false_ &x)
Definition traverser.h:3748
void apply(const state_formulas::sum &x)
Definition traverser.h:3843
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:3801
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:3887
void apply(const state_formulas::must &x)
Definition traverser.h:3850
void apply(const state_formulas::plus &x)
Definition traverser.h:3793
void apply(const state_formulas::imp &x)
Definition traverser.h:3785
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:3873
void apply(const state_formulas::nu &x)
Definition traverser.h:3901
void apply(const state_formulas::exists &x)
Definition traverser.h:3822
void apply(const state_formulas::supremum &x)
Definition traverser.h:3836
void apply(const state_formulas::true_ &x)
Definition traverser.h:3741
void apply(const state_formulas::not_ &x)
Definition traverser.h:3755
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:3808
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:3915
void apply(const state_formulas::and_ &x)
Definition traverser.h:3769
void apply(const state_formulas::or_ &x)
Definition traverser.h:3777
void apply(const state_formulas::may &x)
Definition traverser.h:3858
void apply(const state_formulas::yaled &x)
Definition traverser.h:3866
void apply(const state_formulas::forall &x)
Definition traverser.h:3815
void apply(const state_formulas::plus &x)
Definition traverser.h:1917
void apply(const state_formulas::supremum &x)
Definition traverser.h:1962
void apply(const state_formulas::and_ &x)
Definition traverser.h:1893
void apply(const state_formulas::sum &x)
Definition traverser.h:1969
void apply(const state_formulas::variable &x)
Definition traverser.h:2020
void apply(const state_formulas::not_ &x)
Definition traverser.h:1879
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:2043
void apply(const state_formulas::may &x)
Definition traverser.h:1984
void apply(const state_formulas::forall &x)
Definition traverser.h:1941
void apply(const state_formulas::or_ &x)
Definition traverser.h:1901
void apply(const state_formulas::exists &x)
Definition traverser.h:1948
void apply(const state_formulas::false_ &x)
Definition traverser.h:1872
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:1999
void apply(const state_formulas::true_ &x)
Definition traverser.h:1865
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:2013
void apply(const state_formulas::must &x)
Definition traverser.h:1976
void apply(const state_formulas::yaled &x)
Definition traverser.h:1992
void apply(const state_formulas::state_formula &x)
Definition traverser.h:2050
void apply(const state_formulas::imp &x)
Definition traverser.h:1909
void apply(const state_formulas::delay &x)
Definition traverser.h:2006
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:1933
void apply(const state_formulas::minus &x)
Definition traverser.h:1886
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:1925
void apply(const state_formulas::infimum &x)
Definition traverser.h:1955
void apply(const state_formulas::plus &x)
Definition traverser.h:3162
void apply(const state_formulas::variable &x)
Definition traverser.h:3270
void apply(const state_formulas::supremum &x)
Definition traverser.h:3210
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:3170
void apply(const state_formulas::delay &x)
Definition traverser.h:3256
void apply(const state_formulas::exists &x)
Definition traverser.h:3194
void apply(const state_formulas::yaled &x)
Definition traverser.h:3242
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:3249
void apply(const state_formulas::false_ &x)
Definition traverser.h:3117
void apply(const state_formulas::state_formula &x)
Definition traverser.h:3304
void apply(const state_formulas::and_ &x)
Definition traverser.h:3138
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:3178
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:3296
void apply(const state_formulas::minus &x)
Definition traverser.h:3131
void apply(const state_formulas::must &x)
Definition traverser.h:3226
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:3263
void apply(const state_formulas::forall &x)
Definition traverser.h:3186
void apply(const state_formulas::infimum &x)
Definition traverser.h:3202
void apply(const state_formulas::not_ &x)
Definition traverser.h:3124
void apply(const state_formulas::true_ &x)
Definition traverser.h:3110
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:3606
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:3564
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:3492
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:3578
void apply(const state_formulas::state_formula &x)
Definition traverser.h:3613
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:3499
void apply(const state_formulas::yaled &x)
Definition traverser.h:1678
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:1606
void apply(const state_formulas::variable &x)
Definition traverser.h:1706
void apply(const state_formulas::state_formula &x)
Definition traverser.h:1737
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:1699
void apply(const state_formulas::plus &x)
Definition traverser.h:1598
void apply(const state_formulas::supremum &x)
Definition traverser.h:1646
void apply(const state_formulas::and_ &x)
Definition traverser.h:1574
void apply(const state_formulas::must &x)
Definition traverser.h:1662
void apply(const state_formulas::exists &x)
Definition traverser.h:1630
void apply(const state_formulas::false_ &x)
Definition traverser.h:1553
void apply(const state_formulas::delay &x)
Definition traverser.h:1692
void apply(const state_formulas::not_ &x)
Definition traverser.h:1560
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:1614
void apply(const state_formulas::may &x)
Definition traverser.h:1670
void apply(const state_formulas::forall &x)
Definition traverser.h:1622
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:1685
void apply(const state_formulas::infimum &x)
Definition traverser.h:1638
void apply(const state_formulas::or_ &x)
Definition traverser.h:1582
void apply(const state_formulas::true_ &x)
Definition traverser.h:1546
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:1729
void apply(const state_formulas::imp &x)
Definition traverser.h:1590
void apply(const state_formulas::minus &x)
Definition traverser.h:1567
void apply(const state_formulas::sum &x)
Definition traverser.h:1654
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:2238
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:2308
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:2245
void apply(const state_formulas::state_formula &x)
Definition traverser.h:2357
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:2322
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:2350
void apply(const state_formulas::delay &x)
Definition traverser.h:2940
void apply(const state_formulas::variable &x)
Definition traverser.h:2954
void apply(const state_formulas::may &x)
Definition traverser.h:2919
void apply(const state_formulas::infimum &x)
Definition traverser.h:2891
void apply(const state_formulas::and_ &x)
Definition traverser.h:2831
void apply(const state_formulas::state_formula &x)
Definition traverser.h:2982
void apply(const state_formulas::exists &x)
Definition traverser.h:2884
void apply(const state_formulas::mu &x)
Definition traverser.h:2968
void apply(const state_formulas::false_ &x)
Definition traverser.h:2810
void apply(const state_formulas::or_ &x)
Definition traverser.h:2839
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:2863
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:2933
void apply(const state_formulas::not_ &x)
Definition traverser.h:2817
void apply(const state_formulas::true_ &x)
Definition traverser.h:2803
void apply(const state_formulas::imp &x)
Definition traverser.h:2847
void apply(const state_formulas::sum &x)
Definition traverser.h:2905
void apply(const state_formulas::plus &x)
Definition traverser.h:2855
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:2975
void apply(const state_formulas::must &x)
Definition traverser.h:2912
void apply(const state_formulas::yaled &x)
Definition traverser.h:2926
void apply(const state_formulas::forall &x)
Definition traverser.h:2877
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:2870
void apply(const state_formulas::minus &x)
Definition traverser.h:2824
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:2947
void apply(const state_formulas::nu &x)
Definition traverser.h:2961
void apply(const state_formulas::supremum &x)
Definition traverser.h:2898
void apply(const state_formulas::false_ &x)
Definition traverser.h:2492
void apply(const state_formulas::const_multiply_alt &x)
Definition traverser.h:2553
void apply(const state_formulas::true_ &x)
Definition traverser.h:2485
void apply(const state_formulas::and_ &x)
Definition traverser.h:2513
void apply(const state_formulas::exists &x)
Definition traverser.h:2569
void apply(const state_formulas::or_ &x)
Definition traverser.h:2521
void apply(const state_formulas::infimum &x)
Definition traverser.h:2577
void apply(const state_formulas::yaled &x)
Definition traverser.h:2617
void apply(const state_formulas::yaled_timed &x)
Definition traverser.h:2624
void apply(const state_formulas::plus &x)
Definition traverser.h:2537
void apply(const state_formulas::sum &x)
Definition traverser.h:2593
void apply(const state_formulas::delay_timed &x)
Definition traverser.h:2638
void apply(const state_formulas::must &x)
Definition traverser.h:2601
void apply(const state_formulas::forall &x)
Definition traverser.h:2561
void apply(const state_formulas::mu &x)
Definition traverser.h:2660
void apply(const state_formulas::delay &x)
Definition traverser.h:2631
void apply(const state_formulas::state_formula_specification &x)
Definition traverser.h:2668
void apply(const state_formulas::const_multiply &x)
Definition traverser.h:2545
void apply(const state_formulas::variable &x)
Definition traverser.h:2645
void apply(const state_formulas::supremum &x)
Definition traverser.h:2585
void apply(const state_formulas::may &x)
Definition traverser.h:2609
void apply(const state_formulas::state_formula &x)
Definition traverser.h:2675
void apply(const state_formulas::nu &x)
Definition traverser.h:2652
void apply(const state_formulas::imp &x)
Definition traverser.h:2529
void apply(const state_formulas::minus &x)
Definition traverser.h:2506
void apply(const state_formulas::not_ &x)
Definition traverser.h:2499
void apply(T &result, const state_formulas::true_ &x)
Definition builder.h:1933
void apply(T &result, const state_formulas::may &x)
Definition builder.h:2081
void apply(T &result, const state_formulas::not_ &x)
Definition builder.h:1955
void apply(T &result, const state_formulas::and_ &x)
Definition builder.h:1973
void apply(T &result, const state_formulas::minus &x)
Definition builder.h:1964
void apply(T &result, const state_formulas::delay &x)
Definition builder.h:2110
void apply(T &result, const state_formulas::plus &x)
Definition builder.h:2000
void apply(T &result, const state_formulas::yaled &x)
Definition builder.h:2090
void apply(T &result, const state_formulas::exists &x)
Definition builder.h:2036
void apply(T &result, const state_formulas::variable &x)
Definition builder.h:2130
void apply(T &result, const state_formulas::sum &x)
Definition builder.h:2063
void apply(T &result, const state_formulas::forall &x)
Definition builder.h:2027
void apply(T &result, const state_formulas::infimum &x)
Definition builder.h:2045
void apply(T &result, const state_formulas::mu &x)
Definition builder.h:2148
void apply(T &result, const state_formulas::yaled_timed &x)
Definition builder.h:2101
void apply(T &result, const state_formulas::supremum &x)
Definition builder.h:2054
void apply(T &result, const state_formulas::false_ &x)
Definition builder.h:1944
void apply(T &result, const state_formulas::or_ &x)
Definition builder.h:1982
void apply(T &result, const state_formulas::delay_timed &x)
Definition builder.h:2121
void apply(T &result, const state_formulas::const_multiply &x)
Definition builder.h:2009
void apply(T &result, const state_formulas::state_formula &x)
Definition builder.h:2166
void update(state_formulas::state_formula_specification &x)
Definition builder.h:2156
void apply(T &result, const state_formulas::must &x)
Definition builder.h:2072
void apply(T &result, const state_formulas::imp &x)
Definition builder.h:1991
void apply(T &result, const state_formulas::const_multiply_alt &x)
Definition builder.h:2018
void apply(T &result, const state_formulas::nu &x)
Definition builder.h:2139
add_capture_avoiding_replacement(data::detail::capture_avoiding_substitution_updater< Substitution > &sigma)
data::detail::add_capture_avoiding_replacement< Builder, Derived, Substitution > super
Binder< Traverser, find_free_state_variables_traverser< Traverser, Binder, OutputIterator > > super
Definition find.h:473
Traverser< find_state_variables_traverser< Traverser, OutputIterator > > super
Definition find.h:446
Function that determines if a state formula is time dependent.
Definition is_timed.h:26
void enter(const action_formulas::at &)
Definition is_timed.h:48
state_formula_traverser< is_timed_traverser > super
Definition is_timed.h:27
void apply(const state_formulas::delay &x)
Definition print.h:577
void apply(const state_formulas::forall &x)
Definition print.h:500
void apply(const state_formulas::infimum &x)
Definition print.h:514
void apply(const state_formulas::yaled &x)
Definition print.h:559
void apply(const state_formulas::nu &x)
Definition print.h:640
void apply(const state_formulas::mu &x)
Definition print.h:651
state_formulas::add_traverser_sort_expressions< regular_formulas::detail::printer, Derived > super
Definition print.h:378
void apply(const state_formulas::false_ &x)
Definition print.h:433
void apply(const state_formulas::const_multiply &x)
Definition print.h:482
void apply(const state_formulas::plus &x)
Definition print.h:475
void apply(const state_formulas::must &x)
Definition print.h:535
void apply(const state_formulas::supremum &x)
Definition print.h:521
void apply(const state_formulas::or_ &x)
Definition print.h:461
void apply(const state_formulas::state_formula_specification &x)
Definition print.h:662
void apply(const state_formulas::exists &x)
Definition print.h:507
void print_assignments(const data::assignment_list &assignments)
Definition print.h:616
void apply(const state_formulas::and_ &x)
Definition print.h:454
void apply(const state_formulas::variable &x)
Definition print.h:595
void apply(const state_formulas::not_ &x)
Definition print.h:440
void apply(const state_formulas::delay_timed &x)
Definition print.h:584
void apply(const data::untyped_data_parameter &x)
Definition print.h:605
void apply(const state_formulas::imp &x)
Definition print.h:468
void apply(const data::data_expression &x)
Definition print.h:408
void apply(const state_formulas::const_multiply_alt &x)
Definition print.h:491
void apply(const state_formulas::sum &x)
Definition print.h:528
void apply(const state_formulas::true_ &x)
Definition print.h:426
void apply(const state_formulas::minus &x)
Definition print.h:447
void apply(const state_formulas::yaled_timed &x)
Definition print.h:566
void apply(const state_formulas::may &x)
Definition print.h:547
untyped_state_formula_specification parse_StateFrmSpec(const core::parse_node &node) const
Definition parse_impl.h:217
state_formula make_delay(const core::parse_node &node) const
Definition parse_impl.h:112
data::assignment parse_StateVarAssignment(const core::parse_node &node) const
Definition parse_impl.h:136
state_formula_actions(const core::parser &parser_)
Definition parse_impl.h:108
bool callback_StateFrmSpec(const core::parse_node &node, untyped_state_formula_specification &result) const
Definition parse_impl.h:181
state_formulas::state_formula parse_StateFrm(const core::parse_node &node) const
Definition parse_impl.h:146
state_formula parse_FormSpec(const core::parse_node &node) const
Definition parse_impl.h:176
data::assignment_list parse_StateVarAssignmentList(const core::parse_node &node) const
Definition parse_impl.h:141
state_formula make_yaled(const core::parse_node &node) const
Definition parse_impl.h:124
state_formulas::state_formula_traverser< state_variable_name_traverser > super
Definition find.h:430
std::set< core::identifier_string > names
Definition find.h:435
void apply(const state_formulas::variable &x)
Definition find.h:437
Visitor that negates propositional variable instantiations with a given name.
state_variable_negator(const core::identifier_string &name, bool quantitative)
state_formulas::state_formula_builder< Derived > super
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:558
void apply(T &result, const state_formulas::mu &x)
Definition typecheck.h:633
void apply(T &result, const state_formulas::exists &x)
Definition typecheck.h:425
void apply(T &result, const state_formulas::const_multiply_alt &x)
Definition typecheck.h:699
state_formula apply_mu_nu(const MuNuFormula &x, bool is_mu)
Definition typecheck.h:595
void apply(T &result, const state_formulas::must &x)
Definition typecheck.h:535
void apply(T &result, const state_formulas::delay_timed &x)
Definition typecheck.h:545
void apply(T &result, const state_formulas::not_ &x)
Definition typecheck.h:639
void apply(T &result, const state_formulas::infimum &x)
Definition typecheck.h:450
const process::detail::action_context & m_action_context
Definition typecheck.h:353
void apply(T &result, const state_formulas::forall &x)
Definition typecheck.h:400
void apply(T &result, const state_formulas::supremum &x)
Definition typecheck.h:475
void apply(T &result, const data::untyped_data_parameter &x)
Definition typecheck.h:579
state_formula_builder< typecheck_builder > super
Definition typecheck.h:348
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:357
void apply(T &result, const state_formulas::may &x)
Definition typecheck.h:525
data::detail::variable_context m_variable_context
Definition typecheck.h:352
void apply(T &result, const state_formulas::const_multiply &x)
Definition typecheck.h:683
void apply(T &result, const state_formulas::plus &x)
Definition typecheck.h:667
void apply(T &result, const state_formulas::sum &x)
Definition typecheck.h:500
void apply(T &result, const state_formulas::nu &x)
Definition typecheck.h:627
void apply(T &result, const state_formulas::variable &x)
Definition typecheck.h:573
void apply(T &result, const state_formulas::yaled_timed &x)
Definition typecheck.h:552
data::data_type_checker & m_data_type_checker
Definition typecheck.h:351
void apply(T &result, const state_formulas::minus &x)
Definition typecheck.h:653
void apply(T &result, const data::data_expression &x)
Definition typecheck.h:371
detail::state_variable_context m_state_variable_context
Definition typecheck.h:354
data::variable_list assignment_variables(const data::assignment_list &x) const
Definition typecheck.h:584
Builder class for pbes_expressions. Used as a base class for pbes_expression_builder.
Definition builder.h:1176
void apply(T &result, const data::data_expression &x)
Definition builder.h:1181
Traversal class for pbes_expressions. Used as a base class for pbes_expression_traverser.
Definition traverser.h:1523
void apply(const data::data_expression &x)
Definition traverser.h:1529
std::size_t operator()(const atermpp::detail::reference_aterm< T > &t) const