12#ifndef MCRL2_DATA_STANDARD_UTILITY_H
13#define MCRL2_DATA_STANDARD_UTILITY_H
195template <
typename ForwardTraversalIterator >
205template <
typename ForwardTraversalIterator >
216 std::list<data_expression> clauses;
218 std::queue<data_expression> todo;
219 todo.push(condition);
221 while (!todo.empty())
234 clauses.push_front(expr);
244 std::list<data_expression> clauses;
246 std::queue<data_expression> todo;
247 todo.push(condition);
249 while (!todo.empty())
262 clauses.push_front(expr);
An application of a data expression to a number of arguments.
data_expression implies(data_expression const &p, data_expression const &q)
Returns an expression equivalent to p implies q.
data_expression join_and(ForwardTraversalIterator first, ForwardTraversalIterator last)
Returns and applied to the sequence of data expressions [first, last)
data_expression not_(data_expression const &p)
Returns an expression equivalent to not p.
data_expression equal_to(data_expression const &p, data_expression const &q)
Returns an expression equivalent to p == q.
data_expression not_equal_to(data_expression const &p, data_expression const &q)
Returns an expression equivalent to p == q.
data_expression and_(data_expression const &p, data_expression const &q)
Returns an expression equivalent to p or q.
data_expression or_(data_expression const &p, data_expression const &q)
Returns an expression equivalent to p and q.
data_expression join_or(ForwardTraversalIterator first, ForwardTraversalIterator last)
Returns or applied to the sequence of data expressions [first, last)
data_expression if_(const data_expression &cond, const data_expression &then, const data_expression &else_)
Returns an expression equivalent to if(cond,then,else_)
bool is_false_function_symbol(const atermpp::aterm &e)
Recogniser for function false.
bool is_or_application(const atermpp::aterm &e)
Recogniser for application of ||.
bool is_bool(const sort_expression &e)
Recogniser for sort expression Bool.
const basic_sort & bool_()
Constructor for sort expression Bool.
const function_symbol & implies()
Constructor for function symbol =>.
bool is_boolean_constant(data_expression const &b)
Determines whether b is a Boolean constant.
const function_symbol & and_()
Constructor for function symbol &&.
const function_symbol & false_()
Constructor for function symbol false.
bool is_and_application(const atermpp::aterm &e)
Recogniser for application of &&.
const function_symbol & or_()
Constructor for function symbol ||.
bool is_true_function_symbol(const atermpp::aterm &e)
Recogniser for function true.
const function_symbol & not_()
Constructor for function symbol !.
const function_symbol & true_()
Constructor for function symbol true.
bool is_int(const sort_expression &e)
Recogniser for sort expression Int.
bool is_nat(const sort_expression &e)
Recogniser for sort expression Nat.
bool is_pos(const sort_expression &e)
Recogniser for sort expression Pos.
bool is_real(const sort_expression &e)
Recogniser for sort expression Real.
bool is_structured_sort(const atermpp::aterm &x)
Returns true if the term t is a structured sort.
function_symbol not_equal_to(const sort_expression &s)
Constructor for function symbol !=.
bool is_system_defined(const sort_expression &s)
Returns true iff the expression represents a standard sort.
bool is_container_sort(const atermpp::aterm &x)
Returns true if the term t is a container sort.
std::list< data_expression > split_disjunction(const data_expression &condition)
Split a disjunctive expression into a set of clauses.
std::list< data_expression > split_conjunction(const data_expression &condition)
Split a disjunctive expression into a set of clauses.
function_symbol equal_to(const sort_expression &s)
Constructor for function symbol ==.
function_symbol if_(const sort_expression &s)
Constructor for function symbol if.
T join(FwdIt first, FwdIt last, BinaryOperation op, T empty_sequence_result)
Given a sequence [t1, t2, ..., tn] of elements of type T, returns op(t1, op(t2, .....
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
Generic join and split functions.