12#ifndef MCRL2_DATA_REWRITERS_ONE_POINT_RULE_REWRITER_H
13#define MCRL2_DATA_REWRITERS_ONE_POINT_RULE_REWRITER_H
28template <
typename Derived>
38 return static_cast<Derived&
>(*this);
46 std::vector<variable> variables;
48 std::map<variable, std::set<data_expression> > inequalities =
find_inequalities(body);
49 if (!inequalities.empty())
57 if (remaining_variables.empty())
77 std::vector<variable> variables;
79 std::map<variable, std::set<data_expression> > equalities =
find_equalities(body);
80 if (!equalities.empty())
88 if (remaining_variables.empty())
114 core::make_apply_builder<detail::one_point_rule_rewrite_builder>().apply(result, x);
size_type size() const
Returns the size of the term_list.
const variable_list & variables() const
const data_expression & body() const
void apply(T &result, const forall &x)
data_expression_builder< Derived > super
void apply(T &result, const exists &x)
existential quantification.
universal quantification.
add your file description here.
add your file description here.
Contains term traits for data_expression.
static RewriterCompilingJitty::substitution_type & sigma(RewriterCompilingJitty *this_rewriter)
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
add your file description here.
Namespace for all data library functionality.
std::map< variable, std::set< data_expression > > find_inequalities(const data_expression &x)
std::map< variable, std::set< data_expression > > find_equalities(const data_expression &x)
std::pair< data::mutable_map_substitution<>, std::vector< data::variable > > make_one_point_rule_substitution(const std::map< data::variable, std::set< data::data_expression > > &equalities, const data::variable_list &quantifier_variables, bool find_all_assignments=true)
creates a substitution from a set of (in-)equalities for a given list of quantifier variables
void make_forall(atermpp::aterm &result, ARGUMENTS... arguments)
void one_point_rule_rewrite(T &x, typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value >::type *=0)
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 make_exists(atermpp::aterm &result, ARGUMENTS... arguments)
add your file description here.
void apply(T &result, const data::variable &x)
data_expression operator()(const data_expression &x) const