15#ifndef MCRL2_DATA_NAT1_H
16#define MCRL2_DATA_NAT1_H
122 return atermpp::down_cast<function_symbol>(e) ==
c0();
154 return atermpp::down_cast<function_symbol>(e) ==
cnat();
216 return atermpp::down_cast<function_symbol>(e) ==
cpair();
314 return atermpp::down_cast<function_symbol>(e) ==
pos2nat();
376 return atermpp::down_cast<function_symbol>(e) ==
nat2pos();
433 else if (s0 ==
nat() && s1 ==
nat())
443 throw mcrl2::runtime_error(
"Cannot compute target sort for maximum with domain sorts " +
pp(s0) +
", " +
pp(s1) +
". ");
510 if (s0 ==
nat() && s1 ==
nat())
520 throw mcrl2::runtime_error(
"Cannot compute target sort for minimum with domain sorts " +
pp(s0) +
", " +
pp(s1) +
". ");
662 return atermpp::down_cast<function_symbol>(e) ==
pred();
724 return atermpp::down_cast<function_symbol>(e) ==
dub();
788 return atermpp::down_cast<function_symbol>(e) ==
dubsucc();
845 else if (s0 ==
nat() && s1 ==
nat())
855 throw mcrl2::runtime_error(
"Cannot compute target sort for plus with domain sorts " +
pp(s0) +
", " +
pp(s1) +
". ");
988 if (s0 ==
nat() && s1 ==
nat())
998 throw mcrl2::runtime_error(
"Cannot compute target sort for times with domain sorts " +
pp(s0) +
", " +
pp(s1) +
". ");
1078 return atermpp::down_cast<function_symbol>(e) ==
div();
1142 return atermpp::down_cast<function_symbol>(e) ==
mod();
1197 else if (s0 ==
nat() && s1 ==
nat())
1199 target_sort =
nat();
1203 throw mcrl2::runtime_error(
"Cannot compute target sort for exp with domain sorts " +
pp(s0) +
", " +
pp(s1) +
". ");
1283 return atermpp::down_cast<function_symbol>(e) ==
even();
1345 return atermpp::down_cast<function_symbol>(e) ==
monus();
1409 return atermpp::down_cast<function_symbol>(e) ==
swap_zero();
1473 return atermpp::down_cast<function_symbol>(e) ==
swap_zero_add();
1541 return atermpp::down_cast<function_symbol>(e) ==
swap_zero_min();
1677 return atermpp::down_cast<function_symbol>(e) ==
sqrt();
1805 return atermpp::down_cast<function_symbol>(e) ==
first();
1867 return atermpp::down_cast<function_symbol>(e) ==
last();
1929 return atermpp::down_cast<function_symbol>(e) ==
divmod();
2146 result.push_back(f);
2212 return atermpp::down_cast<application>(e)[0];
2224 return atermpp::down_cast<application>(e)[0];
2236 return atermpp::down_cast<application>(e)[1];
2248 return atermpp::down_cast<application>(e)[0];
2260 return atermpp::down_cast<application>(e)[1];
2272 return atermpp::down_cast<application>(e)[2];
2284 return atermpp::down_cast<application>(e)[3];
2337 result.push_back(
data_equation(
variable_list({vb, vc, vp, vq}),
gte_subtract_with_borrow(vb,
sort_pos::cdub(vc, vp),
sort_pos::cdub(vc, vq)),
dub(vb,
gte_subtract_with_borrow(vb, vp, vq))));
2338 result.push_back(
data_equation(
variable_list({vb, vp, vq}),
gte_subtract_with_borrow(vb,
sort_pos::cdub(
sort_bool::false_(), vp),
sort_pos::cdub(
sort_bool::true_(), vq)),
dub(
sort_bool::not_(vb),
gte_subtract_with_borrow(
sort_bool::true_(), vp, vq))));
2339 result.push_back(
data_equation(
variable_list({vb, vp, vq}),
gte_subtract_with_borrow(vb,
sort_pos::cdub(
sort_bool::true_(), vp),
sort_pos::cdub(
sort_bool::false_(), vq)),
dub(
sort_bool::not_(vb),
gte_subtract_with_borrow(
sort_bool::false_(), vp, vq))));
2366 result.push_back(
data_equation(
variable_list({vm, vp, vq}),
swap_zero_add(
cnat(vp),
c0(), vm,
cnat(vq)),
swap_zero(
cnat(vp),
plus(
swap_zero(
cnat(vp), vm),
cnat(vq)))));
2368 result.push_back(
data_equation(
variable_list({vn, vp, vq}),
swap_zero_add(
c0(),
cnat(vp),
cnat(vq), vn),
swap_zero(
cnat(vp),
plus(
cnat(vq),
swap_zero(
cnat(vp), vn)))));
2369 result.push_back(
data_equation(
variable_list({vm, vn, vp, vq}),
swap_zero_add(
cnat(vp),
cnat(vq), vm, vn),
swap_zero(
plus(
cnat(vp),
cnat(vq)),
plus(
swap_zero(
cnat(vp), vm),
swap_zero(
cnat(vq), vn)))));
2375 result.push_back(
data_equation(
variable_list({vm, vn, vp, vq}),
swap_zero_min(
cnat(vp),
cnat(vq), vm, vn),
swap_zero(
minimum(
cnat(vp),
cnat(vq)),
minimum(
swap_zero(
cnat(vp), vm),
swap_zero(
cnat(vq), vn)))));
2378 result.push_back(
data_equation(
variable_list({vm, vp, vq}),
swap_zero_monus(
cnat(vp),
c0(), vm,
cnat(vq)),
swap_zero(
cnat(vp),
monus(
swap_zero(
cnat(vp), vm),
cnat(vq)))));
2381 result.push_back(
data_equation(
variable_list({vm, vn, vp, vq}),
swap_zero_monus(
cnat(vp),
cnat(vq), vm, vn),
swap_zero(
monus(
cnat(vp),
cnat(vq)),
monus(
swap_zero(
cnat(vp), vm),
swap_zero(
cnat(vq), vn)))));
2385 result.push_back(
data_equation(
variable_list({vb, vm, vn, vp}),
sqrt_nat_aux_func(vn, vm,
sort_pos::cdub(vb, vp)),
if_(
greater(
times(
plus(
cnat(
sort_pos::cdub(vb, vp)), vm),
cnat(
sort_pos::cdub(vb, vp))), vn),
sqrt_nat_aux_func(vn, vm, vp),
plus(
cnat(
sort_pos::cdub(vb, vp)),
sqrt_nat_aux_func(
monus(vn,
times(
plus(
cnat(
sort_pos::cdub(vb, vp)), vm),
cnat(
sort_pos::cdub(vb, vp)))),
plus(vm,
cnat(
sort_pos::cdub(
sort_bool::false_(),
sort_pos::cdub(vb, vp)))), vp)))));
2386 result.push_back(
data_equation(
variable_list({vm, vn, vu, vv}),
equal_to(
cpair(vm, vn),
cpair(vu, vv)),
sort_bool::and_(
equal_to(vm, vu),
equal_to(vn, vv))));
2387 result.push_back(
data_equation(
variable_list({vm, vn, vu, vv}),
less(
cpair(vm, vn),
cpair(vu, vv)),
sort_bool::or_(
less(vm, vu),
sort_bool::and_(
equal_to(vm, vu),
less(vn, vv)))));
2388 result.push_back(
data_equation(
variable_list({vm, vn, vu, vv}),
less_equal(
cpair(vm, vn),
cpair(vu, vv)),
sort_bool::or_(
less(vm, vu),
sort_bool::and_(
equal_to(vm, vu),
less_equal(vn, vv)))));
2394 result.push_back(
data_equation(
variable_list({vb, vm, vn, vp}),
generalised_divmod(
cpair(vm, vn), vb, vp),
doubly_generalised_divmod(
dub(vb, vn), vm, vp)));
2396 result.push_back(
data_equation(
variable_list({vn, vp, vq}),
less(vp, vq),
doubly_generalised_divmod(
cnat(vp), vn, vq),
cpair(
dub(
sort_bool::false_(), vn),
cnat(vp))));
2397 result.push_back(
data_equation(
variable_list({vn, vp, vq}),
less_equal(vq, vp),
doubly_generalised_divmod(
cnat(vp), vn, vq),
cpair(
dub(
sort_bool::true_(), vn),
gte_subtract_with_borrow(
sort_bool::false_(), vp, vq))));
Term containing a string.
size_type size() const
Returns the number of arguments of this term.
An application of a data expression to a number of arguments.
sort_expression sort() const
Returns the sort of the data expression.
const core::identifier_string & name() const
const sort_expression & sort() const
Standard exception class for reporting runtime errors.
The class function symbol.
Exception classes for use in libraries and tools.
atermpp::aterm_string identifier_string
String type of the LPS library. Identifier strings are represented internally as ATerms.
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 & or_()
Constructor for function symbol ||.
const function_symbol & not_()
Constructor for function symbol !.
const function_symbol & true_()
Constructor for function symbol true.
const core::identifier_string & succ_name()
Generate identifier succ.
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
bool is_cpair_application(const atermpp::aterm &e)
Recogniser for application of @cPair.
void make_plus(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol +.
const function_symbol & generalised_divmod()
Constructor for function symbol @gdivmod.
function_symbol maximum(const sort_expression &s0, const sort_expression &s1)
const core::identifier_string & sqrt_nat_aux_func_name()
Generate identifier @sqrt_nat.
bool is_pos2nat_function_symbol(const atermpp::aterm &e)
Recogniser for function Pos2Nat.
function_symbol succ(const sort_expression &s0)
const function_symbol & monus()
Constructor for function symbol @monus.
void make_sqrt(data_expression &result, const data_expression &arg0)
Make an application of function symbol sqrt.
void make_generalised_divmod(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @gdivmod.
bool is_gte_subtract_with_borrow_function_symbol(const atermpp::aterm &e)
Recogniser for function @gtesubtb.
const function_symbol & c0()
Constructor for function symbol @c0.
bool is_swap_zero_add_application(const atermpp::aterm &e)
Recogniser for application of @swap_zero_add.
void make_dub(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @dub.
void make_div(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol div.
const core::identifier_string & maximum_name()
Generate identifier max.
void make_mod(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol mod.
bool is_swap_zero_function_symbol(const atermpp::aterm &e)
Recogniser for function @swap_zero.
bool is_cnat_application(const atermpp::aterm &e)
Recogniser for application of @cNat.
const core::identifier_string & mod_name()
Generate identifier mod.
const function_symbol & gte_subtract_with_borrow()
Constructor for function symbol @gtesubtb.
bool is_generalised_divmod_application(const atermpp::aterm &e)
Recogniser for application of @gdivmod.
bool is_div_application(const atermpp::aterm &e)
Recogniser for application of div.
void make_doubly_generalised_divmod(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @ggdivmod.
const core::identifier_string & swap_zero_min_name()
Generate identifier @swap_zero_min.
const function_symbol & divmod()
Constructor for function symbol @divmod.
bool is_pos2nat_application(const atermpp::aterm &e)
Recogniser for application of Pos2Nat.
const function_symbol & cnat()
Constructor for function symbol @cNat.
void make_pred(data_expression &result, const data_expression &arg0)
Make an application of function symbol pred.
bool is_nat2pos_application(const atermpp::aterm &e)
Recogniser for application of Nat2Pos.
bool is_mod_function_symbol(const atermpp::aterm &e)
Recogniser for function mod.
function_symbol exp(const sort_expression &s0, const sort_expression &s1)
const core::identifier_string & times_name()
Generate identifier *.
const function_symbol & dubsucc()
Constructor for function symbol @dubsucc.
const function_symbol & swap_zero_add()
Constructor for function symbol @swap_zero_add.
function_symbol_vector nat_mCRL2_usable_mappings()
Give all system defined mappings that can be used in mCRL2 specs for nat.
data_equation_vector nat_generate_equations_code()
Give all system defined equations for nat.
const function_symbol & cpair()
Constructor for function symbol @cPair.
const basic_sort & nat()
Constructor for sort expression Nat.
const core::identifier_string & nat_name()
const core::identifier_string & exp_name()
Generate identifier exp.
const function_symbol & swap_zero()
Constructor for function symbol @swap_zero.
bool is_first_function_symbol(const atermpp::aterm &e)
Recogniser for function @first.
bool is_maximum_application(const atermpp::aterm &e)
Recogniser for application of max.
void make_cpair(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @cPair.
implementation_map nat_cpp_implementable_constructors()
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
bool is_nat(const sort_expression &e)
Recogniser for sort expression Nat.
bool is_doubly_generalised_divmod_function_symbol(const atermpp::aterm &e)
Recogniser for function @ggdivmod.
bool is_plus_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
function_symbol_vector nat_generate_constructors_and_functions_code()
Give all system defined mappings and constructors for nat.
void make_nat2pos(data_expression &result, const data_expression &arg0)
Make an application of function symbol Nat2Pos.
const core::identifier_string & plus_name()
Generate identifier +.
const core::identifier_string & natpair_name()
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
bool is_succ_function_symbol(const atermpp::aterm &e)
Recogniser for function succ.
void make_maximum(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol max.
const core::identifier_string & div_name()
Generate identifier div.
const function_symbol & mod()
Constructor for function symbol mod.
void make_monus(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @monus.
const function_symbol & sqrt()
Constructor for function symbol sqrt.
void make_dubsucc(data_expression &result, const data_expression &arg0)
Make an application of function symbol @dubsucc.
const function_symbol & doubly_generalised_divmod()
Constructor for function symbol @ggdivmod.
const function_symbol & pred()
Constructor for function symbol pred.
void make_even(data_expression &result, const data_expression &arg0)
Make an application of function symbol @even.
void make_gte_subtract_with_borrow(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @gtesubtb.
bool is_sqrt_nat_aux_func_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_nat.
const function_symbol & even()
Constructor for function symbol @even.
const core::identifier_string & first_name()
Generate identifier @first.
void make_swap_zero_monus(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @swap_zero_monus.
bool is_succ_application(const atermpp::aterm &e)
Recogniser for application of succ.
bool is_dub_function_symbol(const atermpp::aterm &e)
Recogniser for function @dub.
bool is_swap_zero_application(const atermpp::aterm &e)
Recogniser for application of @swap_zero.
const core::identifier_string & even_name()
Generate identifier @even.
const core::identifier_string & swap_zero_name()
Generate identifier @swap_zero.
void make_pos2nat(data_expression &result, const data_expression &arg0)
Make an application of function symbol Pos2Nat.
bool is_minimum_application(const atermpp::aterm &e)
Recogniser for application of min.
bool is_exp_function_symbol(const atermpp::aterm &e)
Recogniser for function exp.
bool is_monus_function_symbol(const atermpp::aterm &e)
Recogniser for function @monus.
bool is_mod_application(const atermpp::aterm &e)
Recogniser for application of mod.
bool is_even_function_symbol(const atermpp::aterm &e)
Recogniser for function @even.
const core::identifier_string & pred_name()
Generate identifier pred.
bool is_exp_application(const atermpp::aterm &e)
Recogniser for application of exp.
const function_symbol & swap_zero_min()
Constructor for function symbol @swap_zero_min.
function_symbol minimum(const sort_expression &s0, const sort_expression &s1)
const function_symbol & sqrt_nat_aux_func()
Constructor for function symbol @sqrt_nat.
bool is_last_application(const atermpp::aterm &e)
Recogniser for application of @last.
void make_exp(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol exp.
const function_symbol & div()
Constructor for function symbol div.
const core::identifier_string & doubly_generalised_divmod_name()
Generate identifier @ggdivmod.
void make_succ(data_expression &result, const data_expression &arg0)
Make an application of function symbol succ.
bool is_maximum_function_symbol(const atermpp::aterm &e)
Recogniser for function max.
bool is_gte_subtract_with_borrow_application(const atermpp::aterm &e)
Recogniser for application of @gtesubtb.
bool is_swap_zero_min_application(const atermpp::aterm &e)
Recogniser for application of @swap_zero_min.
function_symbol plus(const sort_expression &s0, const sort_expression &s1)
const core::identifier_string & dubsucc_name()
Generate identifier @dubsucc.
bool is_first_application(const atermpp::aterm &e)
Recogniser for application of @first.
std::map< function_symbol, std::pair< std::function< void(data_expression &, const data_expression &)>, std::string > > implementation_map
bool is_sqrt_application(const atermpp::aterm &e)
Recogniser for application of sqrt.
const function_symbol & first()
Constructor for function symbol @first.
void make_first(data_expression &result, const data_expression &arg0)
Make an application of function symbol @first.
bool is_pred_function_symbol(const atermpp::aterm &e)
Recogniser for function pred.
bool is_generalised_divmod_function_symbol(const atermpp::aterm &e)
Recogniser for function @gdivmod.
void make_swap_zero_add(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @swap_zero_add.
const core::identifier_string & swap_zero_monus_name()
Generate identifier @swap_zero_monus.
function_symbol_vector nat_generate_functions_code()
Give all system defined mappings for nat.
bool is_cpair_function_symbol(const atermpp::aterm &e)
Recogniser for function @cPair.
bool is_divmod_function_symbol(const atermpp::aterm &e)
Recogniser for function @divmod.
const function_symbol & swap_zero_monus()
Constructor for function symbol @swap_zero_monus.
void make_times(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
bool is_c0_function_symbol(const atermpp::aterm &e)
Recogniser for function @c0.
const core::identifier_string & generalised_divmod_name()
Generate identifier @gdivmod.
const function_symbol & nat2pos()
Constructor for function symbol Nat2Pos.
const core::identifier_string & monus_name()
Generate identifier @monus.
const core::identifier_string & cpair_name()
Generate identifier @cPair.
const core::identifier_string & nat2pos_name()
Generate identifier Nat2Pos.
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
void make_divmod(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @divmod.
implementation_map nat_cpp_implementable_mappings()
Give all system defined mappings that are to be implemented in C++ code for nat.
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
const core::identifier_string & gte_subtract_with_borrow_name()
Generate identifier @gtesubtb.
const basic_sort & natpair()
Constructor for sort expression @NatPair.
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
bool is_swap_zero_monus_application(const atermpp::aterm &e)
Recogniser for application of @swap_zero_monus.
void make_swap_zero_min(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @swap_zero_min.
const core::identifier_string & dub_name()
Generate identifier @dub.
const core::identifier_string & cnat_name()
Generate identifier @cNat.
const core::identifier_string & c0_name()
Generate identifier @c0.
bool is_swap_zero_add_function_symbol(const atermpp::aterm &e)
Recogniser for function @swap_zero_add.
bool is_natpair(const sort_expression &e)
Recogniser for sort expression @NatPair.
bool is_swap_zero_monus_function_symbol(const atermpp::aterm &e)
Recogniser for function @swap_zero_monus.
const core::identifier_string & pos2nat_name()
Generate identifier Pos2Nat.
const core::identifier_string & last_name()
Generate identifier @last.
const core::identifier_string & minimum_name()
Generate identifier min.
void make_sqrt_nat_aux_func(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @sqrt_nat.
bool is_sqrt_nat_aux_func_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_nat.
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
bool is_sqrt_function_symbol(const atermpp::aterm &e)
Recogniser for function sqrt.
bool is_cnat_function_symbol(const atermpp::aterm &e)
Recogniser for function @cNat.
function_symbol_vector nat_mCRL2_usable_constructors()
Give all defined constructors which can be used in mCRL2 specs for nat.
const function_symbol & last()
Constructor for function symbol @last.
bool is_pred_application(const atermpp::aterm &e)
Recogniser for application of pred.
bool is_plus_application(const atermpp::aterm &e)
Recogniser for application of +.
void make_swap_zero(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @swap_zero.
void make_minimum(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol min.
const core::identifier_string & swap_zero_add_name()
Generate identifier @swap_zero_add.
bool is_dubsucc_function_symbol(const atermpp::aterm &e)
Recogniser for function @dubsucc.
bool is_dubsucc_application(const atermpp::aterm &e)
Recogniser for application of @dubsucc.
bool is_swap_zero_min_function_symbol(const atermpp::aterm &e)
Recogniser for function @swap_zero_min.
function_symbol_vector nat_generate_constructors_code()
Give all system defined constructors for nat.
const core::identifier_string & sqrt_name()
Generate identifier sqrt.
bool is_doubly_generalised_divmod_application(const atermpp::aterm &e)
Recogniser for application of @ggdivmod.
bool is_last_function_symbol(const atermpp::aterm &e)
Recogniser for function @last.
bool is_times_application(const atermpp::aterm &e)
Recogniser for application of *.
bool is_div_function_symbol(const atermpp::aterm &e)
Recogniser for function div.
const core::identifier_string & divmod_name()
Generate identifier @divmod.
bool is_minimum_function_symbol(const atermpp::aterm &e)
Recogniser for function min.
function_symbol times(const sort_expression &s0, const sort_expression &s1)
bool is_times_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
bool is_dub_application(const atermpp::aterm &e)
Recogniser for application of @dub.
bool is_nat2pos_function_symbol(const atermpp::aterm &e)
Recogniser for function Nat2Pos.
const function_symbol & dub()
Constructor for function symbol @dub.
void make_cnat(data_expression &result, const data_expression &arg0)
Make an application of function symbol @cNat.
const function_symbol & pos2nat()
Constructor for function symbol Pos2Nat.
void make_last(data_expression &result, const data_expression &arg0)
Make an application of function symbol @last.
bool is_monus_application(const atermpp::aterm &e)
Recogniser for application of @monus.
bool is_divmod_application(const atermpp::aterm &e)
Recogniser for application of @divmod.
const data_expression & arg4(const data_expression &e)
Function for projecting out argument. arg4 from an application.
bool is_even_application(const atermpp::aterm &e)
Recogniser for application of @even.
const function_symbol & powerlog2_pos()
Constructor for function symbol @powerlog2.
const function_symbol & c1()
Constructor for function symbol @c1.
const function_symbol & add_with_carry()
Constructor for function symbol @addc.
const function_symbol & cdub()
Constructor for function symbol @cDub.
const basic_sort & pos()
Constructor for sort expression Pos.
function_symbol less_equal(const sort_expression &s)
Constructor for function symbol <=.
function_symbol not_equal_to(const sort_expression &s)
Constructor for function symbol !=.
function_symbol less(const sort_expression &s)
Constructor for function symbol <.
std::vector< data_equation > data_equation_vector
\brief vector of data_equations
function_sort make_function_sort_(const sort_expression &dom1, const sort_expression &codomain)
Convenience constructor for function sort with domain size 1.
std::string pp(const abstraction &x)
bool is_function_symbol(const atermpp::aterm &x)
Returns true if the term t is a function symbol.
bool is_basic_sort(const atermpp::aterm &x)
Returns true if the term t is a basic sort.
atermpp::term_list< variable > variable_list
\brief list of variables
function_symbol equal_to(const sort_expression &s)
Constructor for function symbol ==.
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
function_symbol if_(const sort_expression &s)
Constructor for function symbol if.
void make_application(atermpp::aterm &result)
Make function for an application.
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...
Standard functions that are available for all sorts.