12#ifndef MCRL2_LPS_REPLACE_CAPTURE_AVOIDING_H
13#define MCRL2_LPS_REPLACE_CAPTURE_AVOIDING_H
25template <
template <
class>
class Builder,
class Derived,
class Substitution>
39 template <
typename ActionSummand>
42 x.summation_variables() = v;
47 apply(condition, x.condition());
49 apply(assignments, x.assignments());
51 x.condition() = condition;
53 x.assignments() = assignments;
61 sigma.remove_fresh_variable_assignments(sumvars);
73 sigma.remove_fresh_variable_assignments(sumvars);
87 sigma.remove_fresh_variable_assignments(sumvars);
90 template <
typename LinearProcess>
95 x.process_parameters() = v1;
96 update(x.action_summands());
97 update(x.deadlock_summands());
98 sigma.remove_fresh_variable_assignments(process_params);
111 template <
typename Specification>
116 x.global_variables() = std::set<data::variable>(v1.
begin(), v1.
end());
118 typename Specification::process_type process;
120 typename Specification::initial_process_type initial_process;
122 apply(process, x.process());
123 apply(action_labels, x.action_labels());
124 apply(initial_process, x.initial_process());
125 x.process() = process;
126 x.action_labels() = action_labels;
127 x.initial_process() = initial_process;
129 sigma.remove_fresh_variable_assignments(global_vars);
158 apply(aux_assignments, assignments);
159 assignments = aux_assignments;
173 apply(aux_pars, pars);
187template <
typename T,
typename Substitution>
191 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* =
nullptr
195 data::detail::apply_replace_capture_avoiding_variables_builder<lps::data_expression_builder, lps::detail::add_capture_avoiding_replacement>(sigma1).update(x);
202template <
typename T,
typename Substitution>
206 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* =
nullptr
211 data::detail::apply_replace_capture_avoiding_variables_builder<lps::data_expression_builder, lps::detail::add_capture_avoiding_replacement>(sigma1).apply(result, x);
218template <
typename T,
typename Substitution>
221 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* =
nullptr
236template <
typename T,
typename Substitution>
239 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* =
nullptr
258template <
typename Substitution>
268 data::detail::apply_replace_capture_avoiding_variables_builder<lps::data_expression_builder, lps::detail::add_capture_avoiding_replacement>(sigma1).apply(result, x, pars);
276template <
typename Substitution>
const_iterator end() const
Returns a const_iterator pointing to the end of the term_list.
const_iterator begin() const
Returns a const_iterator pointing to the beginning of the term_list.
void add_identifiers(const std::set< core::identifier_string > &ids)
Add a set of identifiers to the context.
Identifier generator that stores the identifiers of the context in a set. Using the operator()() and ...
void add_identifier(const core::identifier_string &s) override
Adds the identifier s to the context.
LPS summand containing a multi-action.
const data::assignment_list & assignments() const
Returns the sequence of assignments.
LPS summand containing a deadlock.
const lps::deadlock & deadlock() const
Returns the deadlock of this summand.
\brief A timed multi-action
multi_action(const multi_action &) noexcept=default
Move semantics.
Linear process specification.
LPS summand containing a multi-action.
const stochastic_distribution & distribution() const
Returns the distribution of this summand.
\brief A stochastic distribution
const data::variable_list & variables() const
const data::data_expression & distribution() const
Linear process specification.
const data::data_expression & condition() const
Returns the condition expression.
data::variable_list & summation_variables()
Returns the sequence of summation variables.
static RewriterCompilingJitty::substitution_type & sigma(RewriterCompilingJitty *this_rewriter)
add your file description here.
void replace_variables_capture_avoiding(T &x, Substitution &sigma, data::set_identifier_generator &id_generator, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
void find_identifiers(const T &x, OutputIterator o)
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
add your file description here.
void do_linear_process(LinearProcess &x)
void operator()(specification &x)
process::detail::add_capture_avoiding_replacement< Builder, Derived, Substitution > super
void apply(T &result, const stochastic_distribution &x, data::data_expression_list &pars)
In the code below, it is essential that the assignments are also updated. They are passed by referenc...
void update(action_summand &x)
void apply(T &result, const stochastic_distribution &x, data::assignment_list &assignments)
In the code below, it is essential that the assignments are also updated. They are passed by referenc...
void update(linear_process &x)
void do_specification(Specification &x)
void apply(T &, const stochastic_distribution &)
void do_action_summand(ActionSummand &x, const data::variable_list &v)
void update(stochastic_linear_process &x)
void update(deadlock_summand &x)
void update(stochastic_action_summand &x)
add_capture_avoiding_replacement(data::detail::capture_avoiding_substitution_updater< Substitution > &sigma)
void operator()(stochastic_specification &x)
capture_avoiding_substitution_updater< Substitution > & sigma
void apply(T &result, const process::process_instance_assignment &x)