12#ifndef MCRL2_PBES_REWRITERS_SIMPLIFY_REWRITER_H
13#define MCRL2_PBES_REWRITERS_SIMPLIFY_REWRITER_H
19namespace pbes_system {
23template <
template <
class>
class Builder,
class Derived>
46 result = atermpp::down_cast<not_>(result).operand();
74 if (
is_true(right) || result==right)
103 if (
is_false(right) || result==right)
130 result = atermpp::down_cast<not_>(result).operand();
175template <
typename Derived>
179template <
typename Derived,
typename DataRewriter,
typename SubstitutionFunction>
182 typedef add_data_rewriter < pbes_system::detail::simplify_builder, Derived, DataRewriter, SubstitutionFunction >
super;
199 core::make_apply_builder<detail::simplify_builder>().apply(result, x);
205 core::make_apply_builder<detail::simplify_builder>().apply(result, x);
210template <
typename DataRewriter>
216 const DataRewriter&
R;
226 detail::make_apply_rewriter_builder<pbes_system::detail::simplify_data_rewriter_builder>(
R,
sigma).apply(result,x);
230 template <
typename SubstitutionFunction>
234 detail::make_apply_rewriter_builder<pbes_system::detail::simplify_data_rewriter_builder>(
R,
sigma).apply(result, x);
238 template <
typename SubstitutionFunction>
241 detail::make_apply_rewriter_builder<pbes_system::detail::simplify_data_rewriter_builder>(
R,
sigma).apply(result, x);
\brief The and operator for pbes expressions
const pbes_expression & left() const
const pbes_expression & right() const
\brief The existential quantification operator for pbes expressions
const data::variable_list & variables() const
const pbes_expression & body() const
\brief The universal quantification operator for pbes expressions
const pbes_expression & body() const
const data::variable_list & variables() const
\brief The implication operator for pbes expressions
const pbes_expression & left() const
const pbes_expression & right() const
\brief The not operator for pbes expressions
const pbes_expression & operand() const
\brief The or operator for pbes expressions
const pbes_expression & left() const
const pbes_expression & right() const
static RewriterCompilingJitty::substitution_type & sigma(RewriterCompilingJitty *this_rewriter)
void optimized_exists(Term &result, const VariableSequence &l, const Term &p, bool remove_variables=false)
Make an existential quantification.
void optimized_forall(Term &result, const VariableSequence &l, const Term &p, bool remove_variables=false)
Make a universal quantification.
const pbes_expression & true_()
bool is_not(const atermpp::aterm &x)
void make_and_(atermpp::aterm &t, const ARGUMENTS &... args)
void make_not_(atermpp::aterm &t, const ARGUMENTS &... args)
void make_or_(atermpp::aterm &t, const ARGUMENTS &... args)
bool is_false(const pbes_expression &t)
Test for the value false.
void make_imp(atermpp::aterm &t, const ARGUMENTS &... args)
bool is_true(const pbes_expression &t)
Test for the value true.
const pbes_expression & false_()
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
add your file description here.
An empty struct that is used to denote the absence of a substitution. Used for rewriters.
SubstitutionFunction & sigma
void apply(T &result, const forall &x)
void apply(T &result, const imp &x)
void apply(T &result, const exists &x)
void apply(T &result, const or_ &x)
void apply(T &result, const not_ &x)
void apply(T &result, const and_ &x)
simplify_data_rewriter_builder(const DataRewriter &R, SubstitutionFunction &sigma)
add_data_rewriter< pbes_system::detail::simplify_builder, Derived, DataRewriter, SubstitutionFunction > super
A rewriter that simplifies boolean expressions in a term, and rewrites data expressions.
pbes_expression operator()(const pbes_expression &x) const
pbes_expression term_type
simplify_data_rewriter(const DataRewriter &R_)
data::variable variable_type
pbes_expression operator()(const pbes_expression &x, SubstitutionFunction &sigma) const
void operator()(pbes_expression &result, const pbes_expression &x, SubstitutionFunction &sigma) const
A rewriter that simplifies boolean expressions in a term.
void operator()(pbes_expression &result, const pbes_expression &x) const
pbes_expression term_type
data::variable variable_type
pbes_expression operator()(const pbes_expression &x) const