12#ifndef MCRL2_PROCESS_REPLACE_H
13#define MCRL2_PROCESS_REPLACE_H
25template <
typename T,
typename Substitution>
27 const Substitution&
sigma,
29 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* =
nullptr
32 data::detail::make_replace_sort_expressions_builder<process::sort_expression_builder>(
sigma, innermost).update(x);
35template <
typename T,
typename Substitution>
37 const Substitution&
sigma,
39 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* =
nullptr
43 data::detail::make_replace_sort_expressions_builder<process::sort_expression_builder>(
sigma, innermost).apply(result, x);
47template <
typename T,
typename Substitution>
49 const Substitution&
sigma,
51 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* =
nullptr
54 data::detail::make_replace_data_expressions_builder<process::data_expression_builder>(
sigma, innermost).update(x);
57template <
typename T,
typename Substitution>
59 const Substitution&
sigma,
61 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* =
nullptr
65 data::detail::make_replace_data_expressions_builder<process::data_expression_builder>(
sigma, innermost).apply(result, x);
70template <
typename T,
typename Substitution>
72 const Substitution&
sigma,
73 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* =
nullptr
76 core::make_update_apply_builder<process::data_expression_builder>(
sigma).update(x);
79template <
typename T,
typename Substitution>
81 const Substitution&
sigma,
82 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* =
nullptr
86 core::make_update_apply_builder<process::data_expression_builder>(
sigma).apply(result, x);
90template <
typename T,
typename Substitution>
92 const Substitution&
sigma,
93 typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* =
nullptr
96 core::make_update_apply_builder<process::variable_builder>(
sigma).update(x);
99template <
typename T,
typename Substitution>
101 const Substitution&
sigma,
102 typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* =
nullptr
106 core::make_update_apply_builder<process::variable_builder>(
sigma).apply(result, 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
119 data::detail::make_replace_free_variables_builder<process::data_expression_builder, process::add_data_variable_builder_binding>(
sigma).update(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
132 data::detail::make_replace_free_variables_builder<process::data_expression_builder, process::add_data_variable_builder_binding>(
sigma).apply(result, 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
146 data::detail::make_replace_free_variables_builder<process::data_expression_builder, process::add_data_variable_builder_binding>(
sigma).update(x, bound_variables);
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
160 data::detail::make_replace_free_variables_builder<process::data_expression_builder, process::add_data_variable_builder_binding>(
sigma).apply(result, x, bound_variables);
187template <
typename T,
typename Substitution>
189 const Substitution&
sigma,
190 typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value >::type* = 0
193 core::make_update_apply_builder<process::process_identifier_builder>(
sigma).update(x);
196template <
typename T,
typename Substitution>
198 const Substitution&
sigma,
199 typename std::enable_if< std::is_base_of< atermpp::aterm, T >::value >::type* =
nullptr
203 core::make_update_apply_builder<process::process_identifier_builder>(
sigma).apply(result, x);
\brief A process identifier
add your file description here.
static RewriterCompilingJitty::substitution_type & sigma(RewriterCompilingJitty *this_rewriter)
bool is_simple_substitution(const Substitution &)
Returns true if the substitution sigma satisfies the property that FV(sigma(x)) is included in {x} fo...
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)
void replace_process_identifiers(T &x, const Substitution &sigma, typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value >::type *=0)
void replace_free_variables(T &x, const Substitution &sigma, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
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)
void replace_variables(T &x, const Substitution &sigma, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
void replace_all_variables(T &x, const Substitution &sigma, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
add your file description here.
process_identifier_assignment(const process_identifier &lhs_, const process_identifier &rhs_)
process_identifier result_type
process_identifier operator()(const process_identifier &x) const
process_identifier argument_type