12#ifndef MCRL2_PBES_REWRITERS_DATA_REWRITER_H
13#define MCRL2_PBES_REWRITERS_DATA_REWRITER_H
20namespace pbes_system {
24template <
typename DataRewriter,
typename SubstitutionFunction>
31template <
typename DataRewriter,
typename SubstitutionFunction>
38template <
typename DataRewriter>
45template <
typename DataRewriter>
52template <
template <
class>
class Builder,
class Derived,
class DataRewriter,
class SubstitutionFunction =
data::no_substitution>
58 const DataRewriter&
R;
78 { atermpp::make_term_list<data::data_expression>(
80 x.parameters().begin(),
82 [this](data::data_expression& r1, const data::data_expression& arg) -> void
83 { data_rewrite(r1, arg, R, sigma); } ) ;
88template <
typename Derived,
typename DataRewriter,
typename SubstitutionFunction>
100template <
template <
class,
class,
class>
class Builder,
class DataRewriter,
class SubstitutionFunction>
101struct apply_rewriter_builder:
public Builder<apply_rewriter_builder<Builder, DataRewriter, SubstitutionFunction>, DataRewriter, SubstitutionFunction>
103 typedef Builder<apply_rewriter_builder<Builder, DataRewriter, SubstitutionFunction>, DataRewriter, SubstitutionFunction>
super;
112template <
template <
class,
class,
class>
class Builder,
class DataRewriter,
class SubstitutionFunction>
113apply_rewriter_builder<Builder, DataRewriter, SubstitutionFunction>
114make_apply_rewriter_builder(
const DataRewriter& datar, SubstitutionFunction&
sigma)
122template <
typename DataRewriter>
128 const DataRewriter&
R;
138 detail::make_apply_rewriter_builder<detail::data_rewriter_builder>(R,
sigma).apply(result, x);
142 template <
typename SubstitutionFunction>
146 detail::make_apply_rewriter_builder<detail::data_rewriter_builder>(R,
sigma).apply(result, x);
\brief A propositional variable instantiation
const core::identifier_string & name() const
static RewriterCompilingJitty::substitution_type & sigma(RewriterCompilingJitty *this_rewriter)
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
const data::data_expression data_rewrite(const data::data_expression &x, const DataRewriter &R, SubstitutionFunction &sigma)
void make_propositional_variable_instantiation(atermpp::aterm &t, const ARGUMENTS &... args)
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
add your file description here.
add your file description here.
An empty struct that is used to denote the absence of a substitution. Used for rewriters.
A rewriter that applies a data rewriter to data expressions in a term.
pbes_expression operator()(const pbes_expression &x, SubstitutionFunction &sigma) const
pbes_expression term_type
pbes_expression operator()(const pbes_expression &x) const
data::variable variable_type
data_rewriter(const DataRewriter &R_)
SubstitutionFunction & sigma
void apply(T &result, const data::data_expression &x)
add_data_rewriter(const DataRewriter &R_, SubstitutionFunction &sigma_)
void apply(T &result, const propositional_variable_instantiation &x)
apply_rewriter_builder(const DataRewriter &datar, SubstitutionFunction &sigma)
Builder< apply_rewriter_builder< Builder, DataRewriter, SubstitutionFunction >, DataRewriter, SubstitutionFunction > super
add_data_rewriter< pbes_system::pbes_expression_builder, Derived, DataRewriter, SubstitutionFunction > super
data_rewriter_builder(const DataRewriter &R, SubstitutionFunction &sigma)