mCRL2
Loading...
Searching...
No Matches
replace.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/replace.h
10/// \brief add your file description here.
11
12#ifndef MCRL2_MODAL_FORMULA_REPLACE_H
13#define MCRL2_MODAL_FORMULA_REPLACE_H
14
15#include "mcrl2/lps/replace.h"
16#include "mcrl2/modal_formula/replace_capture_avoiding.h"
17
18namespace mcrl2
19{
20
21namespace action_formulas
22{
23
24//--- start generated action_formulas replace code ---//
25template <typename T, typename Substitution>
27 const Substitution& sigma,
28 bool innermost,
29 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
30 )
31{
32 data::detail::make_replace_sort_expressions_builder<action_formulas::sort_expression_builder>(sigma, innermost).update(x);
33}
34
35template <typename T, typename Substitution>
37 const Substitution& sigma,
38 bool innermost,
39 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
40 )
41{
42 T result;
43 data::detail::make_replace_sort_expressions_builder<action_formulas::sort_expression_builder>(sigma, innermost).apply(result, x);
44 return result;
45}
46
47template <typename T, typename Substitution>
49 const Substitution& sigma,
50 bool innermost,
51 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
52 )
53{
54 data::detail::make_replace_data_expressions_builder<action_formulas::data_expression_builder>(sigma, innermost).update(x);
55}
56
57template <typename T, typename Substitution>
59 const Substitution& sigma,
60 bool innermost,
61 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
62 )
63{
64 T result;
65 data::detail::make_replace_data_expressions_builder<action_formulas::data_expression_builder>(sigma, innermost).apply(result, x);
66 return result;
67}
68
69
70template <typename T, typename Substitution>
72 const Substitution& sigma,
73 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
74 )
75{
76 core::make_update_apply_builder<action_formulas::data_expression_builder>(sigma).update(x);
77}
78
79template <typename T, typename Substitution>
80T replace_variables(const T& x,
81 const Substitution& sigma,
82 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
83 )
84{
85 T result;
86 core::make_update_apply_builder<action_formulas::data_expression_builder>(sigma).apply(result, x);
87 return result;
88}
89
90template <typename T, typename Substitution>
92 const Substitution& sigma,
93 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
94 )
95{
96 core::make_update_apply_builder<action_formulas::variable_builder>(sigma).update(x);
97}
98
99template <typename T, typename Substitution>
101 const Substitution& sigma,
102 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
103 )
104{
105 T result;
106 core::make_update_apply_builder<action_formulas::variable_builder>(sigma).apply(result, x);
107 return result;
108}
109
110/// \\brief Applies the substitution sigma to x.
111/// \\pre { The substitution sigma must have the property that FV(sigma(x)) is included in {x} for all variables x. }
112template <typename T, typename Substitution>
114 const Substitution& sigma,
115 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
116 )
117{
118 assert(data::is_simple_substitution(sigma));
119 data::detail::make_replace_free_variables_builder<action_formulas::data_expression_builder, action_formulas::add_data_variable_builder_binding>(sigma).update(x);
120}
121
122/// \\brief Applies the substitution sigma to x.
123/// \\pre { The substitution sigma must have the property that FV(sigma(x)) is included in {x} for all variables x. }
124template <typename T, typename Substitution>
126 const Substitution& sigma,
127 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
128 )
129{
130 assert(data::is_simple_substitution(sigma));
131 T result;
132 data::detail::make_replace_free_variables_builder<action_formulas::data_expression_builder, action_formulas::add_data_variable_builder_binding>(sigma).apply(result, x);
133 return result;
134}
135
136/// \\brief Applies the substitution sigma to x, where the elements of bound_variables are treated as bound variables.
137/// \\pre { The substitution sigma must have the property that FV(sigma(x)) is included in {x} for all variables x. }
138template <typename T, typename Substitution, typename VariableContainer>
140 const Substitution& sigma,
141 const VariableContainer& bound_variables,
142 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
143 )
144{
145 assert(data::is_simple_substitution(sigma));
146 data::detail::make_replace_free_variables_builder<action_formulas::data_expression_builder, action_formulas::add_data_variable_builder_binding>(sigma).update(x, bound_variables);
147}
148
149/// \\brief Applies the substitution sigma to x, where the elements of bound_variables are treated as bound variables.
150/// \\pre { The substitution sigma must have the property that FV(sigma(x)) is included in {x} for all variables x. }
151template <typename T, typename Substitution, typename VariableContainer>
153 const Substitution& sigma,
154 const VariableContainer& bound_variables,
155 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
156 )
157{
158 assert(data::is_simple_substitution(sigma));
159 T result;
160 data::detail::make_replace_free_variables_builder<action_formulas::data_expression_builder, action_formulas::add_data_variable_builder_binding>(sigma).apply(result, x, bound_variables);
161 return result;
162}
163//--- end generated action_formulas replace code ---//
164
165} // namespace action_formulas
166
167namespace regular_formulas
168{
169
170//--- start generated regular_formulas replace code ---//
171template <typename T, typename Substitution>
173 const Substitution& sigma,
174 bool innermost,
175 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
176 )
177{
178 data::detail::make_replace_sort_expressions_builder<regular_formulas::sort_expression_builder>(sigma, innermost).update(x);
179}
180
181template <typename T, typename Substitution>
183 const Substitution& sigma,
184 bool innermost,
185 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
186 )
187{
188 T result;
189 data::detail::make_replace_sort_expressions_builder<regular_formulas::sort_expression_builder>(sigma, innermost).apply(result, x);
190 return result;
191}
192
193template <typename T, typename Substitution>
195 const Substitution& sigma,
196 bool innermost,
197 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
198 )
199{
200 data::detail::make_replace_data_expressions_builder<regular_formulas::data_expression_builder>(sigma, innermost).update(x);
201}
202
203template <typename T, typename Substitution>
205 const Substitution& sigma,
206 bool innermost,
207 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
208 )
209{
210 T result;
211 data::detail::make_replace_data_expressions_builder<regular_formulas::data_expression_builder>(sigma, innermost).apply(result, x);
212 return result;
213}
214
215
216template <typename T, typename Substitution>
218 const Substitution& sigma,
219 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
220 )
221{
222 core::make_update_apply_builder<regular_formulas::data_expression_builder>(sigma).update(x);
223}
224
225template <typename T, typename Substitution>
226T replace_variables(const T& x,
227 const Substitution& sigma,
228 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
229 )
230{
231 T result;
232 core::make_update_apply_builder<regular_formulas::data_expression_builder>(sigma).apply(result, x);
233 return result;
234}
235
236template <typename T, typename Substitution>
238 const Substitution& sigma,
239 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
240 )
241{
242 core::make_update_apply_builder<regular_formulas::variable_builder>(sigma).update(x);
243}
244
245template <typename T, typename Substitution>
247 const Substitution& sigma,
248 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
249 )
250{
251 T result;
252 core::make_update_apply_builder<regular_formulas::variable_builder>(sigma).apply(result, x);
253 return result;
254}
255
256/// \\brief Applies the substitution sigma to x.
257/// \\pre { The substitution sigma must have the property that FV(sigma(x)) is included in {x} for all variables x. }
258template <typename T, typename Substitution>
260 const Substitution& sigma,
261 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
262 )
263{
264 assert(data::is_simple_substitution(sigma));
265 data::detail::make_replace_free_variables_builder<regular_formulas::data_expression_builder, regular_formulas::add_data_variable_builder_binding>(sigma).update(x);
266}
267
268/// \\brief Applies the substitution sigma to x.
269/// \\pre { The substitution sigma must have the property that FV(sigma(x)) is included in {x} for all variables x. }
270template <typename T, typename Substitution>
272 const Substitution& sigma,
273 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
274 )
275{
276 assert(data::is_simple_substitution(sigma));
277 T result;
278 data::detail::make_replace_free_variables_builder<regular_formulas::data_expression_builder, regular_formulas::add_data_variable_builder_binding>(sigma).apply(result, x);
279 return result;
280}
281
282/// \\brief Applies the substitution sigma to x, where the elements of bound_variables are treated as bound variables.
283/// \\pre { The substitution sigma must have the property that FV(sigma(x)) is included in {x} for all variables x. }
284template <typename T, typename Substitution, typename VariableContainer>
286 const Substitution& sigma,
287 const VariableContainer& bound_variables,
288 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
289 )
290{
291 assert(data::is_simple_substitution(sigma));
292 data::detail::make_replace_free_variables_builder<regular_formulas::data_expression_builder, regular_formulas::add_data_variable_builder_binding>(sigma).update(x, bound_variables);
293}
294
295/// \\brief Applies the substitution sigma to x, where the elements of bound_variables are treated as bound variables.
296/// \\pre { The substitution sigma must have the property that FV(sigma(x)) is included in {x} for all variables x. }
297template <typename T, typename Substitution, typename VariableContainer>
299 const Substitution& sigma,
300 const VariableContainer& bound_variables,
301 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
302 )
303{
304 assert(data::is_simple_substitution(sigma));
305 T result;
306 data::detail::make_replace_free_variables_builder<regular_formulas::data_expression_builder, regular_formulas::add_data_variable_builder_binding>(sigma).apply(result, x, bound_variables);
307 return result;
308}
309//--- end generated regular_formulas replace code ---//
310
311} // namespace regular_formulas
312
313namespace state_formulas
314{
315
316//--- start generated state_formulas replace code ---//
317template <typename T, typename Substitution>
319 const Substitution& sigma,
320 bool innermost,
321 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
322 )
323{
324 data::detail::make_replace_sort_expressions_builder<state_formulas::sort_expression_builder>(sigma, innermost).update(x);
325}
326
327template <typename T, typename Substitution>
329 const Substitution& sigma,
330 bool innermost,
331 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
332 )
333{
334 T result;
335 data::detail::make_replace_sort_expressions_builder<state_formulas::sort_expression_builder>(sigma, innermost).apply(result, x);
336 return result;
337}
338
339template <typename T, typename Substitution>
341 const Substitution& sigma,
342 bool innermost,
343 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
344 )
345{
346 data::detail::make_replace_data_expressions_builder<state_formulas::data_expression_builder>(sigma, innermost).update(x);
347}
348
349template <typename T, typename Substitution>
351 const Substitution& sigma,
352 bool innermost,
353 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
354 )
355{
356 T result;
357 data::detail::make_replace_data_expressions_builder<state_formulas::data_expression_builder>(sigma, innermost).apply(result, x);
358 return result;
359}
360
361
362template <typename T, typename Substitution>
364 const Substitution& sigma,
365 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
366 )
367{
368 core::make_update_apply_builder<state_formulas::data_expression_builder>(sigma).update(x);
369}
370
371template <typename T, typename Substitution>
372T replace_variables(const T& x,
373 const Substitution& sigma,
374 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
375 )
376{
377 T result;
378 core::make_update_apply_builder<state_formulas::data_expression_builder>(sigma).apply(result, x);
379 return result;
380}
381
382template <typename T, typename Substitution>
384 const Substitution& sigma,
385 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
386 )
387{
388 core::make_update_apply_builder<state_formulas::variable_builder>(sigma).update(x);
389}
390
391template <typename T, typename Substitution>
393 const Substitution& sigma,
394 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
395 )
396{
397 T result;
398 core::make_update_apply_builder<state_formulas::variable_builder>(sigma).apply(result, x);
399 return result;
400}
401
402/// \\brief Applies the substitution sigma to x.
403/// \\pre { The substitution sigma must have the property that FV(sigma(x)) is included in {x} for all variables x. }
404template <typename T, typename Substitution>
406 const Substitution& sigma,
407 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
408 )
409{
410 assert(data::is_simple_substitution(sigma));
411 data::detail::make_replace_free_variables_builder<state_formulas::data_expression_builder, state_formulas::add_data_variable_builder_binding>(sigma).update(x);
412}
413
414/// \\brief Applies the substitution sigma to x.
415/// \\pre { The substitution sigma must have the property that FV(sigma(x)) is included in {x} for all variables x. }
416template <typename T, typename Substitution>
418 const Substitution& sigma,
419 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
420 )
421{
422 assert(data::is_simple_substitution(sigma));
423 T result;
424 data::detail::make_replace_free_variables_builder<state_formulas::data_expression_builder, state_formulas::add_data_variable_builder_binding>(sigma).apply(result, x);
425 return result;
426}
427
428/// \\brief Applies the substitution sigma to x, where the elements of bound_variables are treated as bound variables.
429/// \\pre { The substitution sigma must have the property that FV(sigma(x)) is included in {x} for all variables x. }
430template <typename T, typename Substitution, typename VariableContainer>
432 const Substitution& sigma,
433 const VariableContainer& bound_variables,
434 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
435 )
436{
437 assert(data::is_simple_substitution(sigma));
438 data::detail::make_replace_free_variables_builder<state_formulas::data_expression_builder, state_formulas::add_data_variable_builder_binding>(sigma).update(x, bound_variables);
439}
440
441/// \\brief Applies the substitution sigma to x, where the elements of bound_variables are treated as bound variables.
442/// \\pre { The substitution sigma must have the property that FV(sigma(x)) is included in {x} for all variables x. }
443template <typename T, typename Substitution, typename VariableContainer>
445 const Substitution& sigma,
446 const VariableContainer& bound_variables,
447 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* = nullptr
448 )
449{
450 assert(data::is_simple_substitution(sigma));
451 T result;
452 data::detail::make_replace_free_variables_builder<state_formulas::data_expression_builder, state_formulas::add_data_variable_builder_binding>(sigma).apply(result, x, bound_variables);
453 return result;
454}
455//--- end generated state_formulas replace code ---//
456
457namespace detail
458{
459
460/// \cond INTERNAL_DOCS
461template <template <class> class Builder, class Substitution>
462struct substitute_state_formulas_builder: public Builder<substitute_state_formulas_builder<Builder, Substitution> >
463{
464 typedef Builder<substitute_state_formulas_builder<Builder, Substitution> > super;
465 using super::enter;
466 using super::leave;
467 using super::update;
468 using super::apply;
469
470 Substitution sigma;
471 bool innermost;
472
473 substitute_state_formulas_builder(Substitution sigma_, bool innermost_)
474 : sigma(sigma_),
475 innermost(innermost_)
476 {}
477
478 template <class T>
479 void apply(T& result, const state_formula& x)
480 {
481 if (innermost)
482 {
484 super::apply(y, x);
485 result = sigma(y);
486 return;
487 }
488 result = sigma(x);
489 }
490};
491
492template <template <class> class Builder, class Substitution>
493substitute_state_formulas_builder<Builder, Substitution>
494make_replace_state_formulas_builder(Substitution sigma, bool innermost)
495{
496 return substitute_state_formulas_builder<Builder, Substitution>(sigma, innermost);
497}
498/// \endcond
499
500} // namespace detail
501
502template <typename T, typename Substitution>
504 Substitution sigma,
505 bool innermost = true,
506 typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value>::type* = 0
507 )
508{
509 state_formulas::detail::make_replace_state_formulas_builder<state_formulas::state_formula_builder>(sigma, innermost).update(x);
510}
511
512template <typename T, typename Substitution>
514 Substitution sigma,
515 bool innermost = true,
516 typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value>::type* = nullptr
517 )
518{
519 T result;
520 state_formulas::detail::make_replace_state_formulas_builder<state_formulas::state_formula_builder>(sigma, innermost).apply(result, x);
521 return result;
522}
523
524} // namespace state_formulas
525
526} // namespace mcrl2
527
528#endif // MCRL2_MODAL_FORMULA_REPLACE_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 ...
\brief A sort expression
const core::identifier_string & name() const
const data_expression_list & arguments() const
\brief A data variable
Definition variable.h:28
variable(const core::identifier_string &name, const sort_expression &sort)
Constructor.
Definition variable.h:62
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_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
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
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)
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)
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
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)
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)
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
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
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)
action_formula parse_action_formula(const std::string &text, const lps::stochastic_specification &lpsspec)
Definition parse.h:50
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
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:465
D_ParseNode * ambiguity_fn(struct D_Parser *, int n, struct D_ParseNode **v)
Function for resolving parser ambiguities.
Definition dparser.cpp:334
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
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)
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)
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)
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
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
bool is_right_associative(const regular_formula &x)
Definition print.h:211
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_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)
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)
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 pp(const T &t, std::ostream &out)
Prints the object t to a stream.
Definition print.h:279
std::string pp(const regular_formulas::trans &x)
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
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
state_formula parse_state_formula(const std::string &text)
void check_data_variable_name_clashes(const state_formula &x)
Throws an exception if the formula contains name clashes in the parameters of mu/nu/exists/forall.
bool is_infimum(const atermpp::aterm &x)
std::string pp(const state_formulas::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)
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
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
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)
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)
state_formula_specification parse_state_formula_specification(const std::string &text, lps::stochastic_specification &lpsspec, const bool formula_is_quantitative, parse_state_formula_options options=parse_state_formula_options())
Parses a state formula specification from a string.
Definition parse.h:258
void check_state_variable_name_clashes(const state_formula &x)
Throws an exception if the formula contains name clashes.
std::string pp(const state_formulas::state_formula &x)
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
constexpr int precedence(const infimum &)
Definition print.h:302
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
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
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)
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)
std::string pp(const state_formulas::nu &x)
constexpr int precedence(const supremum &)
Definition print.h:303
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::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)
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
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)
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
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
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:211
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:206
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
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
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
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
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
Function that determines if a state formula is time dependent.
Definition is_timed.h:26
action_label_traverser< is_timed_traverser > super
Definition is_timed.h:27
void enter(const action_formulas::at &)
Definition is_timed.h:48
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
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