15#ifndef MCRL2_DATA_POS1_H
16#define MCRL2_DATA_POS1_H
92 return atermpp::down_cast<function_symbol>(e) ==
c1();
124 return atermpp::down_cast<function_symbol>(e) ==
cdub();
220 return atermpp::down_cast<function_symbol>(e) ==
maximum();
284 return atermpp::down_cast<function_symbol>(e) ==
minimum();
348 return atermpp::down_cast<function_symbol>(e) ==
succ();
472 return atermpp::down_cast<function_symbol>(e) ==
plus();
536 return atermpp::down_cast<function_symbol>(e) ==
add_with_carry();
602 return atermpp::down_cast<function_symbol>(e) ==
times();
666 return atermpp::down_cast<function_symbol>(e) ==
powerlog2_pos();
767 return atermpp::down_cast<application>(e)[0];
779 return atermpp::down_cast<application>(e)[1];
791 return atermpp::down_cast<application>(e)[0];
803 return atermpp::down_cast<application>(e)[0];
815 return atermpp::down_cast<application>(e)[1];
827 return atermpp::down_cast<application>(e)[2];
854 result.push_back(
data_equation(
variable_list({vb, vc, vp, vq}),
less(
cdub(vb, vp),
cdub(vc, vq)),
if_(
sort_bool::implies(vc, vb),
less(vp, vq),
less_equal(vp, vq))));
860 result.push_back(
data_equation(
variable_list({vb, vc, vp, vq}),
less_equal(
cdub(vb, vp),
cdub(vc, vq)),
if_(
sort_bool::implies(vb, vc),
less_equal(vp, vq),
less(vp, vq))));
878 result.push_back(
data_equation(
variable_list({vb, vc, vp, vq}),
add_with_carry(vb,
cdub(vc, vp),
cdub(vc, vq)),
cdub(vb,
add_with_carry(vc, vp, vq))));
879 result.push_back(
data_equation(
variable_list({vb, vp, vq}),
add_with_carry(vb,
cdub(
sort_bool::false_(), vp),
cdub(
sort_bool::true_(), vq)),
cdub(
sort_bool::not_(vb),
add_with_carry(vb, vp, vq))));
880 result.push_back(
data_equation(
variable_list({vb, vp, vq}),
add_with_carry(vb,
cdub(
sort_bool::true_(), vp),
cdub(
sort_bool::false_(), vq)),
cdub(
sort_bool::not_(vb),
add_with_carry(vb, vp, vq))));
885 result.push_back(
data_equation(
variable_list({vp, vq}),
times(
cdub(
sort_bool::true_(), vp),
cdub(
sort_bool::true_(), vq)),
cdub(
sort_bool::true_(),
add_with_carry(
sort_bool::false_(), vp,
add_with_carry(
sort_bool::false_(), vq,
cdub(
sort_bool::false_(),
times(vp, vq)))))));
Term containing a string.
An application of a data expression to a number of arguments.
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 & implies()
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.
void make_powerlog2_pos(data_expression &result, const data_expression &arg0)
Make an application of function symbol @powerlog2.
bool is_pos_predecessor_function_symbol(const atermpp::aterm &e)
Recogniser for function @pospred.
bool is_add_with_carry_function_symbol(const atermpp::aterm &e)
Recogniser for function @addc.
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
void make_add_with_carry(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @addc.
void make_times(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
bool is_cdub_function_symbol(const atermpp::aterm &e)
Recogniser for function @cDub.
bool is_maximum_function_symbol(const atermpp::aterm &e)
Recogniser for function max.
implementation_map pos_cpp_implementable_mappings()
Give all system defined mappings that are to be implemented in C++ code for pos.
void make_maximum(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol max.
const function_symbol & powerlog2_pos()
Constructor for function symbol @powerlog2.
bool is_pos(const sort_expression &e)
Recogniser for sort expression Pos.
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
const function_symbol & c1()
Constructor for function symbol @c1.
void make_succ(data_expression &result, const data_expression &arg0)
Make an application of function symbol succ.
const function_symbol & add_with_carry()
Constructor for function symbol @addc.
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
bool is_cdub_application(const atermpp::aterm &e)
Recogniser for application of @cDub.
void make_minimum(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol min.
function_symbol_vector pos_generate_functions_code()
Give all system defined mappings for pos.
const function_symbol & pos_predecessor()
Constructor for function symbol @pospred.
const core::identifier_string & cdub_name()
Generate identifier @cDub.
const core::identifier_string & c1_name()
Generate identifier @c1.
const function_symbol & plus()
Constructor for function symbol +.
bool is_add_with_carry_application(const atermpp::aterm &e)
Recogniser for application of @addc.
const function_symbol & maximum()
Constructor for function symbol max.
const core::identifier_string & powerlog2_pos_name()
Generate identifier @powerlog2.
bool is_powerlog2_pos_application(const atermpp::aterm &e)
Recogniser for application of @powerlog2.
const core::identifier_string & times_name()
Generate identifier *.
function_symbol_vector pos_mCRL2_usable_constructors()
Give all defined constructors which can be used in mCRL2 specs for pos.
bool is_c1_function_symbol(const atermpp::aterm &e)
Recogniser for function @c1.
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
const core::identifier_string & plus_name()
Generate identifier +.
bool is_minimum_function_symbol(const atermpp::aterm &e)
Recogniser for function min.
const function_symbol & cdub()
Constructor for function symbol @cDub.
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
implementation_map pos_cpp_implementable_constructors()
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
bool is_times_application(const atermpp::aterm &e)
Recogniser for application of *.
bool is_times_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
void make_plus(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol +.
const core::identifier_string & add_with_carry_name()
Generate identifier @addc.
const function_symbol & times()
Constructor for function symbol *.
bool is_succ_function_symbol(const atermpp::aterm &e)
Recogniser for function succ.
bool is_plus_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
const core::identifier_string & minimum_name()
Generate identifier min.
bool is_minimum_application(const atermpp::aterm &e)
Recogniser for application of min.
data_equation_vector pos_generate_equations_code()
Give all system defined equations for pos.
bool is_powerlog2_pos_function_symbol(const atermpp::aterm &e)
Recogniser for function @powerlog2.
bool is_succ_application(const atermpp::aterm &e)
Recogniser for application of succ.
const basic_sort & pos()
Constructor for sort expression Pos.
const core::identifier_string & maximum_name()
Generate identifier max.
const core::identifier_string & pos_name()
const function_symbol & minimum()
Constructor for function symbol min.
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
function_symbol_vector pos_generate_constructors_and_functions_code()
Give all system defined mappings and constructors for pos.
function_symbol_vector pos_generate_constructors_code()
Give all system defined constructors for pos.
bool is_maximum_application(const atermpp::aterm &e)
Recogniser for application of max.
bool is_pos_predecessor_application(const atermpp::aterm &e)
Recogniser for application of @pospred.
std::map< function_symbol, std::pair< std::function< void(data_expression &, const data_expression &)>, std::string > > implementation_map
bool is_plus_application(const atermpp::aterm &e)
Recogniser for application of +.
const function_symbol & succ()
Constructor for function symbol succ.
void make_cdub(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @cDub.
const core::identifier_string & pos_predecessor_name()
Generate identifier @pospred.
function_symbol_vector pos_mCRL2_usable_mappings()
Give all system defined mappings that can be used in mCRL2 specs for pos.
const core::identifier_string & succ_name()
Generate identifier succ.
void make_pos_predecessor(data_expression &result, const data_expression &arg0)
Make an application of function symbol @pospred.
function_symbol less_equal(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.
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.
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.