10#ifndef MCRL2_DATA_DETAIL_REWRITE_JITTY_JITTYC_H
11#define MCRL2_DATA_DETAIL_REWRITE_JITTY_JITTYC_H
23template <
template <
class>
class Traverser>
26 typedef Traverser<double_variable_traverser<Traverser> >
super;
36 if (!
m_seen.insert(v).second)
60 while (no_of_initial_arguments > 0)
63 const function_sort& sf = atermpp::down_cast<function_sort>(result);
64 assert(sf.
domain().
size()<=no_of_initial_arguments);
65 no_of_initial_arguments=no_of_initial_arguments-sf.
domain().
size();
81 const std::size_t arity = t.
size();
95 const std::size_t arity = t.
size();
143 const application& ta = atermpp::down_cast<application>(t);
172 const application& ta = atermpp::down_cast<application>(t);
191 const application& ta = atermpp::down_cast<application>(t);
198template <
class ARGUMENT_REWRITER>
size_type size() const
Returns the size of the term_list.
An application of a data expression to a number of arguments.
const_iterator end() const
Returns an iterator pointing past the last argument of the application.
const_iterator begin() const
Returns an iterator pointing to the first argument of the application.
const data_expression & head() const
Get the function at the head of this expression.
const sort_expression & codomain() const
const sort_expression_list & domain() const
Rewriter that operates on data expressions.
The standard sort function_update.
void rewrite_all_arguments(data_expression &result, const application &t, const ARGUMENT_REWRITER rewriter)
const data_expression * get_argument_of_higher_order_term_helper(const application &t, std::size_t &i)
std::size_t recursive_number_of_args(const data_expression &t)
const data_expression & get_nested_head_helper(const application &t)
const data_expression & get_argument_of_higher_order_term(const application &t, std::size_t i)
variable_list get_free_vars(const data_expression &a)
const data_expression replace_nested_head(const data_expression &t, const data_expression &head)
sort_expression residual_sort(const sort_expression &s, std::size_t no_of_initial_arguments)
const data_expression & get_nested_head(const data_expression &t)
bool is_where_clause(const atermpp::aterm &x)
Returns true if the term t is a where clause.
bool is_abstraction(const atermpp::aterm &x)
Returns true if the term t is an abstraction.
bool is_function_symbol(const atermpp::aterm &x)
Returns true if the term t is a function symbol.
std::set< data::variable > find_free_variables(const data::data_expression &x)
atermpp::term_list< variable > variable_list
\brief list of variables
bool is_function_sort(const atermpp::aterm &x)
Returns true if the term t is a function sort.
bool is_machine_number(const atermpp::aterm &x)
Returns true if the term t is a machine_number.
bool is_application(const atermpp::aterm &x)
Returns true if the term t is an application.
bool is_variable(const atermpp::aterm &x)
Returns true if the term t is a variable.
void make_application(atermpp::aterm &result)
Make function for an application.
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
void apply(const variable &v)
std::set< variable > m_doubles
std::set< variable > m_seen
Traverser< double_variable_traverser< Traverser > > super
const std::set< variable > & result()