12#ifndef MCRL2_DATA_STANDARD_H
13#define MCRL2_DATA_STANDARD_H
29const basic_sort&
bool_();
32application
and_(
const data_expression&,
const data_expression&);
33application
not_(
const data_expression&);
34bool is_bool(
const sort_expression&);
42template <
typename Derived >
43struct symbol :
public core::detail::singleton_identifier< Derived >
45 static bool is_symbol(
const core::identifier_string& e)
47 return e == core::detail::singleton_identifier< Derived >::instance();
52 return data::is_application(e) ?
is_application(atermpp::down_cast<application>(e)) : false;
62 return data::is_function_symbol(e) ?
is_function_symbol(atermpp::down_cast<function_symbol>(e)) : false;
67 return is_symbol(e.name());
71struct equal_symbol :
public symbol< equal_symbol >
73 static char const* initialise()
78struct not_equal_symbol :
public symbol< not_equal_symbol >
80 static char const* initialise()
85struct if_symbol :
public symbol< if_symbol >
87 static char const* initialise()
92struct less_symbol :
public symbol< less_symbol >
94 static char const* initialise()
99struct less_equal_symbol :
public symbol< less_equal_symbol >
101 static char const* initialise()
106struct greater_symbol :
public symbol< greater_symbol >
108 static char const* initialise()
113struct greater_equal_symbol :
public symbol< greater_equal_symbol >
115 static char const* initialise()
134template <
typename DataExpression >
137 return detail::equal_symbol::is_function_symbol(e);
154template <
typename DataExpression >
157 return detail::equal_symbol::is_application(e);
171template <
typename DataExpression >
174 return detail::not_equal_symbol::is_function_symbol(e);
191template <
typename DataExpression >
194 return detail::not_equal_symbol::is_application(e);
208template <
typename DataExpression >
211 return detail::if_symbol::is_function_symbol(e);
231template <
typename DataExpression >
234 return detail::if_symbol::is_application(e);
248template <
typename DataExpression >
251 return detail::less_symbol::is_function_symbol(e);
268template <
typename DataExpression >
271 return detail::less_symbol::is_application(e);
285template <
typename DataExpression >
288 return detail::less_equal_symbol::is_function_symbol(e);
305template <
typename DataExpression >
308 return detail::less_equal_symbol::is_application(e);
322template <
typename DataExpression >
325 return detail::greater_symbol::is_function_symbol(e);
342template <
typename DataExpression >
345 return detail::greater_symbol::is_application(e);
359template <
typename DataExpression >
362 return detail::greater_equal_symbol::is_function_symbol(e);
379template <
typename DataExpression >
382 return detail::greater_equal_symbol::is_application(e);
393 result.push_back(
if_(s));
394 result.push_back(
less(s));
424 const function_sort& fs = atermpp::down_cast<function_sort>(s);
429 std::stringstream xs;
An abstraction expression.
An application of a data expression to a number of arguments.
sort_expression sort() const
Returns the sort of the data expression.
const_iterator begin() const
\brief Binder for universal quantification
const sort_expression_list & domain() const
bool is_bool(const sort_expression &e)
Recogniser for sort expression Bool.
const basic_sort & bool_()
Constructor for sort expression Bool.
const function_symbol & and_()
Constructor for function symbol &&.
const function_symbol & false_()
Constructor for function symbol false.
const function_symbol & not_()
Constructor for function symbol !.
const function_symbol & true_()
Constructor for function symbol true.
bool is_greater_application(const DataExpression &e)
Recogniser for application of >
bool is_greater_function_symbol(const DataExpression &e)
Recogniser for function >
function_symbol less_equal(const sort_expression &s)
Constructor for function symbol <=.
function_symbol_vector standard_generate_functions_code(const sort_expression &s)
Give all standard system defined functions for sort s.
function_symbol not_equal_to(const sort_expression &s)
Constructor for function symbol !=.
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
bool is_equal_to_function_symbol(const DataExpression &e)
Recogniser for function ==.
bool is_if_application(const DataExpression &e)
Recogniser for application of if.
bool is_not_equal_to_application(const DataExpression &e)
Recogniser for application of !=.
function_symbol less(const sort_expression &s)
Constructor for function symbol <.
bool is_greater_equal_application(const DataExpression &e)
Recogniser for application of >=.
std::vector< data_equation > data_equation_vector
\brief vector of data_equations
std::vector< variable > variable_vector
\brief vector of variables
function_sort make_function_sort_(const sort_expression &dom1, const sort_expression &codomain)
Convenience constructor for function sort with domain size 1.
data_equation_vector standard_generate_equations_code(const sort_expression &s)
Give all standard system defined equations for sort s.
bool is_not_equal_to_function_symbol(const DataExpression &e)
Recogniser for function !=.
function_symbol greater_equal(const sort_expression &s)
Constructor for function symbol >=.
bool is_function_symbol(const atermpp::aterm &x)
Returns true if the term t is a function symbol.
bool is_less_function_symbol(const DataExpression &e)
Recogniser for function <.
bool is_if_function_symbol(const DataExpression &e)
Recogniser for function if.
atermpp::term_list< variable > variable_list
\brief list of variables
bool is_less_equal_function_symbol(const DataExpression &e)
Recogniser for function <=.
bool is_function_sort(const atermpp::aterm &x)
Returns true if the term t is a function sort.
bool is_greater_equal_function_symbol(const DataExpression &e)
Recogniser for function >=.
function_symbol equal_to(const sort_expression &s)
Constructor for function symbol ==.
bool is_less_application(const DataExpression &e)
Recogniser for application of <.
bool is_application(const atermpp::aterm &x)
Returns true if the term t is an application.
std::vector< function_symbol > function_symbol_vector
\brief vector of function_symbols
bool is_less_equal_application(const DataExpression &e)
Recogniser for application of <=.
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
function_symbol if_(const sort_expression &s)
Constructor for function symbol if.
bool is_equal_to_application(const DataExpression &e)
Recogniser for application of ==.
function_symbol greater(const sort_expression &s)
Constructor for function symbol >
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...