12#ifndef MCRL2_DATA_TRANSLATE_USER_NOTATION_H
13#define MCRL2_DATA_TRANSLATE_USER_NOTATION_H
15#include "mcrl2/data/builder.h"
16#include "mcrl2/data/standard_container_utility.h"
17#include "mcrl2/data/standard_utility.h"
25template <
typename Derived>
39 return static_cast<Derived&>(*
this);
74 const std::string& name(x.name());
75 if (is_system_defined(x.sort()) && (name.find_first_not_of(
"-/0123456789") == std::string::npos))
77 result = number(x.sort(), name);
87 void apply(T& result,
const application& x)
97 sort_expression element_sort(*function_sort(head.sort()).domain().begin());
100 data_expression_list(
109 sort_expression element_sort(*function_sort(head.sort()).domain().begin());
111 data_expression_list(
120 sort_expression element_sort(*function_sort(head.sort()).domain().begin());
122 data_expression_list(
128#ifdef MCRL2_ENABLE_MACHINENUMBERS
129 else if (head.name() == sort_nat::pos2nat_name())
133 derived().apply(n, x[0]);
134 assert(n.sort()==sort_pos::pos());
135 result=sort_nat::transform_positive_number_to_nat(n);
140 make_application(result,
An integer term stores a single std::size_t value. It carries no arguments.
aterm_string & operator=(aterm_string &&t) noexcept=default
aterm_string & operator=(const aterm_string &t) noexcept=default
aterm & operator=(const aterm &other) noexcept=default
aterm(const aterm &other) noexcept=default
This class has user-declared copy constructor so declare default copy and move operators.
A unordered_map class in which aterms can be stored.
apply_builder_arg1(const Arg1 &arg1)
apply_builder_arg2(const Arg1 &arg1, const Arg2 &arg2)
singleton_expression & operator=(singleton_expression &&)=delete
singleton_expression & operator=(const singleton_expression &)=delete
singleton_expression(singleton_expression &&)=delete
singleton_expression(const singleton_expression &)=delete
singleton_expression()=default
static const Expression & instance()
parse_node_exception(const std::string &message)
parse_node_exception(const parse_node &node, const std::string &message)
static std::string get_error_message(const parse_node &node, const std::string &user_message)
parse_node_unexpected_exception(const parser &p, const parse_node &node)
static std::string get_error_message(const parser &p, const parse_node &node)
update_apply_builder_arg1(const Function &f, const Arg1 &arg1)
void apply(T &result, const argument_type &x)
An abstraction expression.
const variable_list & variables() const
abstraction(const atermpp::aterm &term)
Constructor.
abstraction(const binder_type &binding_operator, const variable_list &variables, const data_expression &body)
Constructor.
abstraction(const abstraction &) noexcept=default
Move semantics.
abstraction(const binder_type &binding_operator, const Container &variables, const data_expression &body, typename atermpp::enable_if_container< Container, variable >::type *=nullptr)
Constructor.
abstraction & operator=(abstraction &&) noexcept=default
const data_expression & body() const
abstraction(abstraction &&) noexcept=default
abstraction()
Default constructor.
const binder_type & binding_operator() const
abstraction & operator=(const abstraction &) noexcept=default
alias()
\brief Default constructor X3.
alias(const alias &) noexcept=default
Move semantics.
alias & operator=(const alias &) noexcept=default
alias(const basic_sort &name, const sort_expression &reference)
\brief Constructor Z12.
alias(alias &&) noexcept=default
alias(const atermpp::aterm &term)
alias & operator=(alias &&) noexcept=default
const basic_sort & name() const
const sort_expression & reference() const
\brief Assignment expression
assignment_expression(assignment_expression &&) noexcept=default
assignment_expression()
\brief Default constructor X3.
assignment_expression & operator=(const assignment_expression &) noexcept=default
assignment_expression(const assignment_expression &) noexcept=default
Move semantics.
assignment_expression & operator=(assignment_expression &&) noexcept=default
assignment_expression(const atermpp::aterm &term)
\brief Assignment of a data expression to a variable
assignment(const variable &lhs, const data_expression &rhs)
\brief Constructor Z14.
const data_expression & rhs() const
assignment(const atermpp::aterm &term)
assignment(assignment &&) noexcept=default
assignment & operator=(assignment &&) noexcept=default
const variable & lhs() const
assignment & operator=(const assignment &) noexcept=default
assignment(const assignment &) noexcept=default
Move semantics.
assignment()
\brief Default constructor X3.
const data_expression & operator()(const variable &x) const
Applies the assignment to a variable.
\brief Binder for bag comprehension
bag_comprehension_binder(const atermpp::aterm &term)
bag_comprehension_binder & operator=(const bag_comprehension_binder &) noexcept=default
bag_comprehension_binder(const bag_comprehension_binder &) noexcept=default
Move semantics.
bag_comprehension_binder()
\brief Default constructor X3.
bag_comprehension_binder(bag_comprehension_binder &&) noexcept=default
bag_comprehension_binder & operator=(bag_comprehension_binder &&) noexcept=default
universal quantification.
bag_comprehension(const bag_comprehension &) noexcept=default
Move semantics.
bag_comprehension & operator=(bag_comprehension &&) noexcept=default
bag_comprehension & operator=(const bag_comprehension &) noexcept=default
bag_comprehension(const aterm &d)
bag_comprehension(bag_comprehension &&) noexcept=default
bag_comprehension(const Container &variables, const data_expression &body, typename atermpp::enable_if_container< Container, variable >::type *=nullptr)
\brief Container type for bags
bag_container(const bag_container &) noexcept=default
Move semantics.
bag_container(bag_container &&) noexcept=default
bag_container & operator=(bag_container &&) noexcept=default
bag_container()
\brief Default constructor X3.
bag_container(const atermpp::aterm &term)
bag_container & operator=(const bag_container &) noexcept=default
basic_sort(const basic_sort &) noexcept=default
Move semantics.
basic_sort()
\brief Default constructor X3.
basic_sort & operator=(const basic_sort &) noexcept=default
const core::identifier_string & name() const
basic_sort(basic_sort &&) noexcept=default
basic_sort(const core::identifier_string &name)
\brief Constructor Z14.
basic_sort(const std::string &name)
\brief Constructor Z2.
basic_sort & operator=(basic_sort &&) noexcept=default
basic_sort(const atermpp::aterm &term)
binder_type()
\brief Default constructor X3.
binder_type(binder_type &&) noexcept=default
binder_type & operator=(const binder_type &) noexcept=default
binder_type & operator=(binder_type &&) noexcept=default
binder_type(const binder_type &) noexcept=default
Move semantics.
binder_type(const atermpp::aterm &term)
container_sort()
\brief Default constructor X3.
container_sort & operator=(container_sort &&) noexcept=default
container_sort(const container_sort &) noexcept=default
Move semantics.
container_sort(const container_type &container_name, const sort_expression &element_sort)
\brief Constructor Z14.
container_sort(container_sort &&) noexcept=default
container_sort & operator=(const container_sort &) noexcept=default
const container_type & container_name() const
const sort_expression & element_sort() const
container_sort(const atermpp::aterm &term)
container_type(container_type &&) noexcept=default
container_type(const atermpp::aterm &term)
container_type & operator=(const container_type &) noexcept=default
container_type & operator=(container_type &&) noexcept=default
container_type(const container_type &) noexcept=default
Move semantics.
container_type()
\brief Default constructor X3.
data_equation(const atermpp::aterm &term)
data_equation()
\brief Default constructor X3.
const data_expression & lhs() const
const data_expression & condition() const
data_equation & operator=(data_equation &&) noexcept=default
data_equation(const Container &variables, const data_expression &lhs, const data_expression &rhs, typename atermpp::enable_if_container< Container, variable >::type *=nullptr)
Constructor.
const data_expression & rhs() const
data_equation(data_equation &&) noexcept=default
data_equation(const variable_list &variables, const data_expression &condition, const data_expression &lhs, const data_expression &rhs)
\brief Constructor Z12.
const variable_list & variables() const
data_equation & operator=(const data_equation &) noexcept=default
data_equation(const data_expression &lhs, const data_expression &rhs)
Constructor.
data_expression & operator=(const data_expression &) noexcept=default
application operator()(const data_expression &e1, const data_expression &e2, const data_expression &e3, const data_expression &e4) const
Apply a data expression to four data expressions.
application operator()(const data_expression &e1, const data_expression &e2, const data_expression &e3) const
Apply a data expression to three data expressions.
data_expression(const atermpp::aterm &term)
data_expression()
\brief Default constructor X3.
application operator()(const data_expression &e1, const data_expression &e2) const
Apply a data expression to two data expressions.
data_expression & operator=(data_expression &&) noexcept=default
sort_expression sort() const
Returns the sort of the data expression.
const_iterator end() const
application operator()(const data_expression &e) const
Apply a data expression to a data expression.
data_expression(const data_expression &) noexcept=default
Move semantics.
data_expression(data_expression &&) noexcept=default
const_iterator begin() const
bool is_default_data_expression() const
A function to efficiently determine whether a data expression is made by the default constructor.
application operator()(const data_expression &e1, const data_expression &e2, const data_expression &e3, const data_expression &e4, const data_expression &e5) const
Apply a data expression to five data expressions.
application operator()(const data_expression &e1, const data_expression &e2, const data_expression &e3, const data_expression &e4, const data_expression &e5, const data_expression &e6) const
Apply a data expression to six data expressions.
void add_normalised_mappings(Iterator begin, Iterator end) const
bool is_constructor_sort(const sort_expression &s) const
Checks whether a sort is a constructor sort.
void add_normalised_cpp_implemented_functions(const implementation_map &c) const
const function_symbol_vector & user_defined_constructors() const
Gets the constructors defined by the user, excluding those that are system defined.
void add_data_types_for_sorts() const
Puts the constructors, functions and equations in normalised form in de data type.
void add_mapping(const function_symbol &f)
Adds a mapping to this specification.
void add_equation(const data_equation &e)
Adds an equation to this specification.
void remove_constructor(const function_symbol &f)
Removes constructor from specification.
void remove_equation(const data_equation &e)
Removes equation from specification.
void translate_user_notation()
Translate user notation within the equations of the data specification.
bool equal_sorts(sort_expression const &s1, sort_expression const &s2) const
Checks whether two sort expressions represent the same sort.
void add_standard_mappings_and_equations(const sort_expression &sort, std::set< function_symbol > &mappings, std::set< data_equation > &equations, const bool skip_equations) const
implementation_map m_cpp_implemented_functions
A map that for function symbols gives how it can be implemented.
data_equation_vector m_user_defined_equations
The equations of the specification.
const implementation_map & cpp_implemented_functions() const
Gets all equations in this specification including those that are system defined.
const function_symbol_vector & user_defined_mappings() const
Gets all user defined mappings in this specification.
const std::set< data_equation > & equations() const
Gets all equations in this specification including those that are system defined.
void add_normalised_constructor(const function_symbol &f) const
Adds a constructor to this specification, and marks it as system defined.
data_specification(const basic_sort_vector &sorts, const alias_vector &aliases, const function_symbol_vector &constructors, const function_symbol_vector &user_defined_mappings, const data_equation_vector &user_defined_equations)
Constructor from its members.
void add_normalised_constructors(Iterator begin, Iterator end) const
data_equation_vector & user_defined_equations()
void remove_mapping(const function_symbol &f)
Removes mapping from specification.
const function_symbol_vector & mappings(const sort_expression &s) const
Gets all mappings of a sort including those that are system defined.
target_sort_to_function_map m_grouped_normalised_constructors
Cache normalised constructors grouped by target sort.
void insert_mappings_constructors_for_structured_sort(const structured_sort &sort, std::set< function_symbol > &constructors, std::set< function_symbol > &mappings, std::set< data_equation > &equations, const bool skip_equations) const
Adds constructors, mappings and equations for a structured sort to this specification,...
function_symbol_vector m_normalised_mappings
Set containing system defined all mappings, including the system defined ones. The types in these map...
bool is_well_typed() const
Returns true if.
void normalise_data_specification_if_required() const
function_symbol_vector m_user_defined_constructors
A mapping of sort expressions to the constructors corresponding to that sort.
const data_equation_vector & user_defined_equations() const
Gets all user defined equations.
std::set< data_equation > m_normalised_equations
Table containing all equations, including the system defined ones. The sorts in these equations are n...
void add_constructor(const function_symbol &f)
Adds a constructor to this specification.
void import_data_type_for_system_defined_sort(const sort_expression &sort) const
Adds the system defined sorts in a sequence. The second argument is used to check which sorts are add...
void add_normalised_mapping(const function_symbol &f) const
Adds a mapping to this specification, and marks it as system defined.
void get_system_defined_sorts_constructors_and_mappings(std::set< sort_expression > &sorts, std::set< function_symbol > &constructors, std::set< function_symbol > &mappings) const
This function provides a sample of all system defined sorts, constructors and mappings that contains ...
data_specification(const atermpp::aterm &t)
Constructor from an aterm.
void add_normalised_equation(const data_equation &e) const
Adds an equation to this specification, and marks it as system defined.
void find_associated_system_defined_data_types_for_a_sort(const sort_expression &sort, std::set< function_symbol > &constructors, std::set< function_symbol > &mappings, std::set< data_equation > &equations, implementation_map &cpp_implemented_functions, bool skip_equations=false) const
Adds the system defined sorts to the sets with constructors, mappings, and equations for.
bool is_certainly_finite(const sort_expression &s) const
Checks whether a sort is certainly finite.
const function_symbol_vector & constructors() const
Gets all constructors including those that are system defined.
function_symbol_vector m_user_defined_mappings
The mappings of the specification.
const function_symbol_vector & constructors(const sort_expression &s, const bool do_not_normalize=false) const
Gets all constructors of a sort including those that are system defined.
function_symbol_vector m_normalised_constructors
Set containing all constructors, including the system defined ones. The types in these constructors a...
void add_normalised_equations(Iterator begin, Iterator end) const
bool operator==(const data_specification &other) const
void data_is_not_necessarily_normalised_anymore() const
data_specification()=default
Default constructor. Generate a data specification that contains only booleans and positive numbers.
target_sort_to_function_map m_grouped_normalised_mappings
Cache normalised mappings grouped by target sort.
bool is_certainly_finite(const sort_expression_list &l) const
Checks whether all sorts are certainly finite in a sort_expression_list.
const function_symbol_vector & mappings() const
Gets all mappings in this specification including those that are system defined.
bool IsNotInferredL(sort_expression_list TypeList) const
bool TypeMatchL(const sort_expression_list &TypeList, const sort_expression_list &PosTypeList, sort_expression_list &result) const
bool UnFBag(sort_expression PosType, sort_expression &result) const
std::map< core::identifier_string, sort_expression_list > system_functions
bool MatchIf(const function_sort &type, sort_expression &result) const
bool MatchFalseFunction(const function_sort &type, sort_expression &result) const
bool MatchListOpCons(const function_sort &type, sort_expression &result) const
bool match_fset_fbag_pick(const function_sort &type, sort_expression &result) const
std::map< core::identifier_string, sort_expression_list > system_constants
bool UnifyMinType(const sort_expression &Type1, const sort_expression &Type2, sort_expression &result) const
bool MatchListOpEltAt(const function_sort &type, sort_expression &result) const
sort_expression TraverseVarConsTypeDN(const detail::variable_context &DeclaredVars, data_expression &DataTerm, sort_expression PosType, bool strictly_ambiguous=true, std::size_t nFactPars=std::string::npos, bool warn_upcasting=false, bool print_cast_error=true) const
bool EqTypesA(const sort_expression &Type1, const sort_expression &Type2) const
std::map< core::identifier_string, sort_expression_list > user_functions
bool UnifyElementSort(sort_expression &Arg1, sort_expression &Arg2, sort_expression &result) const
void operator()(data_equation_vector &eqns)
Yields a type checked equation list, and sets the types in the equations right. If not successful an ...
bool MatchListSetBagOpIn(const function_sort &type, sort_expression &result) const
bool match_fbag_cinsert(const function_sort &type, sort_expression &result) const
bool MatchSqrt(const function_sort &type, sort_expression &result) const
bool MatchBagOpBag2Set(const function_sort &type, sort_expression &result) const
void read_constructors_and_mappings(const function_symbol_vector &constructors, const function_symbol_vector &mappings, const function_symbol_vector &normalized_constructors)
bool MatchEqNeqComparison(const function_sort &type, sort_expression &result) const
void operator()(const variable &v, const detail::variable_context &context) const
Type checks a variable. Throws an mcrl2::runtime_error exception if the variable is not well typed.
void print_context() const
bool InTypesL(const sort_expression_list &Type, atermpp::term_list< sort_expression_list > Types) const
sort_expression UnwindType(const sort_expression &Type) const
bool strict_type_check(const data_expression &d) const
bool MatchBagConstructor(const function_sort &type, sort_expression &result) const
bool MatchBagOpBagCount(const function_sort &type, sort_expression &result) const
assignment_list typecheck_assignment_list(const assignment_list &assignments, const detail::variable_context &variable_context)
sort_expression ExpandNumTypesUp(sort_expression Type) const
sort_expression ExpandNumTypesDown(sort_expression Type) const
void initialise_system_defined_functions()
sort_expression_list ExpandNumTypesUpL(const sort_expression_list &type_list) const
void add_constant(const data::function_symbol &f, const std::string &msg)
bool MatchSetBagOpUnionDiffIntersect(const core::identifier_string &data_term_name, const function_sort &type, sort_expression &result) const
bool MatchListOpSnoc(const function_sort &type, sort_expression &result) const
bool UnFSet(sort_expression PosType, sort_expression &result) const
bool MatchListOpConcat(const function_sort &type, sort_expression &result) const
void add_system_function(const data::function_symbol &f)
void ErrorMsgCannotCast(sort_expression CandidateType, data_expression_list Arguments, sort_expression_list ArgumentTypes, std::string previous_reason) const
void TransformVarConsTypeData(data_specification &data_spec)
void add_system_constants_and_functions(const std::vector< data::function_symbol > &v)
sort_expression TraverseVarConsTypeD(const detail::variable_context &DeclaredVars, data_expression &DataTerm, const sort_expression &PosType, bool strictly_ambiguous=true, bool warn_upcasting=false, bool print_cast_error=true) const
bool IsTypeAllowedA(const sort_expression &Type, const sort_expression &PosType) const
data_expression typecheck_data_expression(const data_expression &x, const sort_expression &expected_sort, const detail::variable_context &variable_context)
assignment typecheck_assignment(const assignment &x, const detail::variable_context &variable_context)
bool MatchSetOpSetCompl(const function_sort &type, sort_expression &result) const
bool InTypesA(const sort_expression &Type, sort_expression_list Types) const
bool MaximumType(const sort_expression &Type1, const sort_expression &Type2, sort_expression &result) const
std::map< core::identifier_string, sort_expression > user_constants
bool was_warning_upcasting
data_type_checker(const data_specification &data_spec)
make a data type checker. Throws a mcrl2::runtime_error exception if the data_specification is not we...
bool UnList(sort_expression PosType, sort_expression &result) const
bool MatchFuncUpdate(const function_sort &type, sort_expression &result) const
void add_system_constant(const data::function_symbol &f)
bool MatchSetOpSet2Bag(const function_sort &type, sort_expression &result) const
std::pair< bool, sort_expression_list > AdjustNotInferredList(const sort_expression_list &PosTypeList, const atermpp::term_list< sort_expression_list > &TypeListList) const
bool EqTypesL(sort_expression_list Type1, sort_expression_list Type2) const
sort_expression determine_allowed_type(const data_expression &d, const sort_expression &proposed_type) const
data_specification operator()() const
Yields a type checked data specification, provided typechecking was successful. If not successful an ...
sort_expression UpCastNumericType(sort_expression NeededType, sort_expression Type, data_expression &Par, const detail::variable_context &DeclaredVars, bool strictly_ambiguous, bool warn_upcasting=false, bool print_cast_error=false) const
data_expression upcast_numeric_type(const data_expression &x, const sort_expression &expected_sort, const detail::variable_context &variable_context)
void add_function(const data::function_symbol &f, const std::string &msg, bool allow_double_decls=false)
sort_expression_list GetNotInferredList(const atermpp::term_list< sort_expression_list > &TypeListList) const
void operator()(const variable_list &l, const detail::variable_context &context) const
Type checks a variable list. Throws an mcrl2::runtime_error exception if the variables are not well t...
void read_sort(const sort_expression &SortExpr)
const data_specification & typechecked_data_specification() const
bool MatchListOpHead(const function_sort &type, sort_expression &result) const
bool match_fset_insert(const function_sort &type, sort_expression &result) const
sort_expression_list InsertType(const sort_expression_list &TypeList, const sort_expression &Type) const
bool UnArrowProd(const sort_expression_list &ArgTypes, sort_expression PosType, sort_expression &result) const
bool TypeMatchA(const sort_expression &Type_in, const sort_expression &PosType_in, sort_expression &result) const
data_expression operator()(const data_expression &data_expr, const detail::variable_context &context) const
Type check a data expression. Throws a mcrl2::runtime_error exception if the expression is not well t...
bool IsTypeAllowedL(const sort_expression_list &TypeList, const sort_expression_list &PosTypeList) const
bool MatchSetConstructor(const function_sort &type, sort_expression &result) const
data_specification type_checked_data_spec
bool MatchListOpTail(const function_sort &type, sort_expression &result) const
variable UnwindType(const variable &v) const
atermpp::term_list< T > UnwindType(const atermpp::term_list< T > &l)
void apply(T &result, const application &x)
void apply(T &result, const abstraction &x)
void apply(T &result, const function_symbol &x)
void typecheck_variable(const data_type_checker &typechecker, const variable &v) const
void add_context_variables(const VariableContainer &variables)
void add_context_variables(const VariableContainer &variables, const data_type_checker &typechecker)
std::map< core::identifier_string, sort_expression > m_variables
const std::map< core::identifier_string, sort_expression > & context() const
variable_context()=default
variable_context(const std::map< core::identifier_string, sort_expression > &variables)
\brief Binder for existential quantification
exists_binder(const exists_binder &) noexcept=default
Move semantics.
exists_binder & operator=(exists_binder &&) noexcept=default
exists_binder(exists_binder &&) noexcept=default
exists_binder & operator=(const exists_binder &) noexcept=default
exists_binder()
\brief Default constructor X3.
exists_binder(const atermpp::aterm &term)
existential quantification.
exists(const Container &variables, const data_expression &body, typename atermpp::enable_if_container< Container, variable >::type *=nullptr)
exists & operator=(exists &&) noexcept=default
exists(exists &&) noexcept=default
exists & operator=(const exists &) noexcept=default
exists(const exists &) noexcept=default
Move semantics.
\brief Container type for finite bags
fbag_container & operator=(const fbag_container &) noexcept=default
fbag_container()
\brief Default constructor X3.
fbag_container(const fbag_container &) noexcept=default
Move semantics.
fbag_container & operator=(fbag_container &&) noexcept=default
fbag_container(const atermpp::aterm &term)
fbag_container(fbag_container &&) noexcept=default
\brief Binder for universal quantification
forall_binder(const forall_binder &) noexcept=default
Move semantics.
forall_binder & operator=(forall_binder &&) noexcept=default
forall_binder(const atermpp::aterm &term)
forall_binder()
\brief Default constructor X3.
forall_binder(forall_binder &&) noexcept=default
forall_binder & operator=(const forall_binder &) noexcept=default
universal quantification.
forall(forall &&) noexcept=default
forall & operator=(const forall &) noexcept=default
forall(const Container &variables, const data_expression &body, typename atermpp::enable_if_container< Container, variable >::type *=nullptr)
forall & operator=(forall &&) noexcept=default
forall(const forall &) noexcept=default
Move semantics.
\brief Container type for finite sets
fset_container(fset_container &&) noexcept=default
fset_container(const fset_container &) noexcept=default
Move semantics.
fset_container(const atermpp::aterm &term)
fset_container()
\brief Default constructor X3.
fset_container & operator=(fset_container &&) noexcept=default
fset_container & operator=(const fset_container &) noexcept=default
const sort_expression & codomain() const
function_sort()
\brief Default constructor X3.
function_sort(const sort_expression_list &domain, const sort_expression &codomain)
\brief Constructor Z14.
function_sort & operator=(const function_sort &) noexcept=default
function_sort(const atermpp::aterm &term)
function_sort & operator=(function_sort &&) noexcept=default
function_sort(function_sort &&) noexcept=default
const sort_expression_list & domain() const
function_symbol(const core::identifier_string &name, const sort_expression &sort)
Constructor.
function_symbol(const function_symbol &) noexcept=default
Move semantics.
function_symbol & operator=(function_symbol &&) noexcept=default
function_symbol()
Default constructor.
function_symbol(function_symbol &&) noexcept=default
function_symbol(const atermpp::aterm &term)
Constructor.
const core::identifier_string & name() const
const sort_expression & sort() const
function_symbol & operator=(const function_symbol &) noexcept=default
function_symbol(const std::string &name, const sort_expression &sort)
Constructor.
Abstract base class for identifier generators. Identifier generators generate fresh names that do not...
virtual core::identifier_string operator()(const std::string &hint, bool add_to_context=true)
Returns a fresh identifier, with the given hint as prefix. The returned identifier is added to the co...
virtual ~identifier_generator()=default
Destructor.
virtual void add_identifier(const core::identifier_string &s)=0
Adds the identifier s to the context.
virtual bool has_identifier(const core::identifier_string &s) const =0
Returns true if the identifier s appears in the context.
identifier_generator()=default
Constructor.
void remove_identifiers(const std::set< core::identifier_string > &ids)
Remove a set of identifiers from the context.
virtual void remove_identifier(const core::identifier_string &s)=0
Removes the identifier s from the context.
virtual void clear_context()=0
Clears the context.
void add_identifiers(const std::set< core::identifier_string > &ids)
Add a set of identifiers to the context.
\brief Binder for lambda abstraction
lambda_binder & operator=(lambda_binder &&) noexcept=default
lambda_binder(const atermpp::aterm &term)
lambda_binder()
\brief Default constructor X3.
lambda_binder(lambda_binder &&) noexcept=default
lambda_binder & operator=(const lambda_binder &) noexcept=default
lambda_binder(const lambda_binder &) noexcept=default
Move semantics.
lambda(const Container &variables, const data_expression &body, typename atermpp::enable_if_container< Container, variable >::type *=nullptr)
lambda(const variable &variable, const data_expression &body)
lambda & operator=(const lambda &) noexcept=default
lambda()=default
Constructor.
lambda(const lambda &) noexcept=default
Move semantics.
lambda(lambda &&) noexcept=default
lambda & operator=(lambda &&) noexcept=default
\brief Container type for lists
list_container(list_container &&) noexcept=default
list_container()
\brief Default constructor X3.
list_container & operator=(list_container &&) noexcept=default
list_container & operator=(const list_container &) noexcept=default
list_container(const list_container &) noexcept=default
Move semantics.
list_container(const atermpp::aterm &term)
machine_number()
\brief Default constructor X2.
machine_number & operator=(machine_number &&) noexcept=default
machine_number & operator=(const machine_number &) noexcept=default
std::size_t value() const
machine_number(const machine_number &) noexcept=default
Move semantics.
machine_number(std::size_t value)
\brief Constructor Z13.
machine_number(machine_number &&) noexcept=default
machine_number(const atermpp::aterm &term)
Identifier generator that stores the identifiers of the context in a multiset. If an identifier occur...
bool has_identifier(const core::identifier_string &s) const override
Returns true if the identifier s appears in the context.
void remove_identifier(const core::identifier_string &s) override
Removes one occurrence of the identifier s from the context.
void add_identifier(const core::identifier_string &s) override
Adds the identifier s to the context.
void clear_context() override
Clears the context.
const std::multiset< core::identifier_string > & context() const
Returns the context.
std::multiset< core::identifier_string > m_identifiers
The context of the identifier generator.
multiset_identifier_generator()=default
Constructor.
Generic substitution function. The substitution is stored as a mapping of variables to expressions....
static constexpr bool is_identity_substitution
bool operator==(const Substitution &) const
const_iterator find(variable_type const &v) const
Returns an iterator that references the expression associated with v or is equal to m_map....
void clear()
Resets the substitution by letting every variable yield itself. Cf. clear() of a map.
std::string to_string() const
const_iterator begin() const
Returns an iterator pointing to the beginning of the sequence of assignments TODO: should become prot...
mutable_map_substitution(const AssociativeContainer &m)
mutable_map_substitution(VariableContainer const &variables, ExpressionContainer const &expressions)
mutable_map_substitution()=default
expression_type operator()(const variable_type &v) const
AssociativeContainer m_map
const_iterator end() const
Returns an iterator pointing past the end of the sequence of assignments TODO: should become protecte...
bool empty() const
Returns true if the substitution is empty.
iterator end()
Returns an iterator pointing past the end of the sequence of assignments TODO: should become protecte...
assignment operator[](variable_type const &v)
iterator find(variable_type const &v)
Returns an iterator that references the expression associated with v or is equal to m_map....
iterator begin()
Returns an iterator pointing to the beginning of the sequence of assignments TODO: should become prot...
\brief Binder for set comprehension
set_comprehension_binder(const atermpp::aterm &term)
set_comprehension_binder & operator=(set_comprehension_binder &&) noexcept=default
set_comprehension_binder & operator=(const set_comprehension_binder &) noexcept=default
set_comprehension_binder()
\brief Default constructor X3.
set_comprehension_binder(set_comprehension_binder &&) noexcept=default
set_comprehension_binder(const set_comprehension_binder &) noexcept=default
Move semantics.
universal quantification.
set_comprehension & operator=(set_comprehension &&) noexcept=default
set_comprehension(set_comprehension &&) noexcept=default
set_comprehension(const Container &variables, const data_expression &body, typename atermpp::enable_if_container< Container, variable >::type *=nullptr)
set_comprehension & operator=(const set_comprehension &) noexcept=default
set_comprehension(const aterm &d)
set_comprehension(const set_comprehension &) noexcept=default
Move semantics.
\brief Container type for sets
set_container()
\brief Default constructor X3.
set_container(const set_container &) noexcept=default
Move semantics.
set_container(set_container &&) noexcept=default
set_container & operator=(set_container &&) noexcept=default
set_container & operator=(const set_container &) noexcept=default
set_container(const atermpp::aterm &term)
Identifier generator that stores the identifiers of the context in a set. Using the operator()() and ...
const std::set< core::identifier_string > & context() const
Returns the context.
void remove_identifier(const core::identifier_string &s) override
Removes one occurrence of the identifier s from the context.
set_identifier_generator()=default
Constructor.
void clear_context() override
Clears the context.
void add_identifier(const core::identifier_string &s) override
Adds the identifier s to the context.
std::set< core::identifier_string > m_identifiers
The context of the identifier generator.
bool has_identifier(const core::identifier_string &s) const override
Returns true if the identifier s appears in the context.
sort_expression & operator=(const sort_expression &) noexcept=default
sort_expression(const sort_expression &) noexcept=default
Move semantics.
sort_expression & operator=(sort_expression &&) noexcept=default
const sort_expression & target_sort() const
Returns the target sort of this expression.
sort_expression(sort_expression &&) noexcept=default
sort_expression()
\brief Default constructor X3.
sort_expression(const atermpp::aterm &term)
std::map< sort_expression, sort_expression > m_normalised_aliases
Table containing how sorts should be mapped to normalised sorts.
const std::set< sort_expression > & context_sorts() const
Return the user defined context sorts of the current specification.
void remove_sort(const sort_expression &s)
Removes sort from the user defined sorts in the specification. Note that this does not remove aliases...
void add_system_defined_sort(const sort_expression &s)
Adds a sort to this specification, and marks it as system defined.
basic_sort_vector m_user_defined_sorts
The basic sorts and structured sorts in the specification.
bool operator==(const sort_specification &other) const
std::set< sort_expression > m_sorts_in_context
The sorts that occur are needed in this sort specification but are not explicitly defined as user def...
const std::map< sort_expression, sort_expression > & sort_alias_map() const
Gets a normalisation mapping that maps each sort to its unique normalised sort.
const std::set< sort_expression > & sorts() const
Gets the normalised sort declarations including those that are system defined. This is the set with a...
void add_context_sorts(const Container &c, typename atermpp::enable_if_container< Container >::type *=nullptr)
Adds the sorts in c to the context sorts.
const basic_sort_vector & user_defined_sorts() const
Gets all sorts defined by a user (excluding the system defined sorts).
void check_for_alias_loop(const sort_expression &s, std::set< sort_expression > sorts_already_seen, bool toplevel=true) const
bool m_normalised_data_is_up_to_date
The variable below indicates whether a surrounding data specification is up to data with respect to s...
alias_vector m_user_defined_aliases
The basic sorts and structured sorts in the specification.
void add_predefined_basic_sorts()
sort_specification()
Default constructor.
void sorts_are_not_necessarily_normalised_anymore() const
void data_is_not_necessarily_normalised_anymore() const
void add_alias(const alias &a)
Adds an alias (new name for a sort) to this specification.
void add_sort(const basic_sort &s)
Adds a sort to this specification.
void reconstruct_m_normalised_aliases() const
sort_specification(const basic_sort_vector &sorts, const alias_vector &aliases)
std::set< sort_expression > m_normalised_sorts
Set containing all the sorts, including the system defined ones.
void remove_alias(const alias &a)
Removes a user defined //alias from specification.
void add_context_sort(const sort_expression &s)
Adds the sort s to the context sorts.
void normalise_sort_specification_if_required() const
void import_system_defined_sorts(const CONTAINER &sorts)
const alias_vector & user_defined_aliases() const
Gets the user defined aliases.
bool m_normalised_sorts_are_up_to_date
This boolean indicates whether the variables m_normalised_constructors, m_mappings,...
void import_system_defined_sort(const sort_expression &sort)
Adds the system defined sorts in a sequence. The second argument is used to check which sorts are add...
void check_for_sort_alias_loop_through_function_sort(const basic_sort &end_search, const sort_expression &start_search, std::set< basic_sort > &visited, const bool observed_a_sort_constructor, const std::map< basic_sort, sort_expression > &alias_map)
sort_specification m_sort_specification
const sort_specification & get_sort_specification() const
void check_sort_list_is_declared(const sort_expression_list &SortExprList) const
sort_type_checker(const sort_specification &sort_spec, bool must_check_aliases=true)
constructs a sort expression checker.
void operator()(const sort_expression &x) const
Type check a sort expression. Throws an exception if the expression is not well typed.
void check_basic_sort_is_declared(const basic_sort &x) const
void check_for_empty_constructor_domains(const function_symbol_vector &constructors)
void check_alias_circularity(const data::basic_sort &lhs, const data::sort_expression &rhs, std::set< basic_sort > sort_already_seen, const std::map< basic_sort, sort_expression > &alias_map)
void check_sort_is_declared(const sort_expression &x) const
\brief An argument of a constructor of a structured sort
structured_sort_constructor_argument(const sort_expression &sort)
Constructor.
structured_sort_constructor_argument(const std::string &name, const sort_expression &sort)
\brief Constructor Z1.
structured_sort_constructor_argument(const atermpp::aterm &term)
structured_sort_constructor_argument(const core::identifier_string &name, const sort_expression &sort)
\brief Constructor Z12.
const core::identifier_string & name() const
structured_sort_constructor_argument(structured_sort_constructor_argument &&) noexcept=default
structured_sort_constructor_argument()
\brief Default constructor X3.
structured_sort_constructor_argument(const char(&name)[S], const sort_expression &sort)
structured_sort_constructor_argument & operator=(const structured_sort_constructor_argument &) noexcept=default
structured_sort_constructor_argument(const structured_sort_constructor_argument &) noexcept=default
Move semantics.
structured_sort_constructor_argument & operator=(structured_sort_constructor_argument &&) noexcept=default
const sort_expression & sort() const
\brief A constructor for a structured sort
function_symbol constructor_function(const sort_expression &s) const
Returns the constructor function for this constructor, assuming it is internally represented with sor...
const core::identifier_string & name() const
structured_sort_constructor(const std::string &name, const structured_sort_constructor_argument_list &arguments, typename atermpp::enable_if_container< Container, structured_sort_constructor_argument >::type *=0)
Constructor.
structured_sort_constructor & operator=(structured_sort_constructor &&) noexcept=default
structured_sort_constructor(const char(&name)[S], const Container &arguments, const char(&recogniser)[S0], typename atermpp::enable_if_container< Container, structured_sort_constructor_argument >::type *=nullptr)
structured_sort_constructor & operator=(const structured_sort_constructor &) noexcept=default
structured_sort_constructor(const core::identifier_string &name, const structured_sort_constructor_argument_list &arguments, core::identifier_string &recogniser)
\brief Constructor Z12.
structured_sort_constructor(const core::identifier_string &name, const core::identifier_string &recogniser)
Constructor.
structured_sort_constructor(const std::string &name, const std::string &recogniser)
Constructor.
function_symbol_vector projection_functions(const sort_expression &s) const
Returns the projection functions for this constructor.
structured_sort_constructor(const std::string &name)
Constructor.
structured_sort_constructor(structured_sort_constructor &&) noexcept=default
const core::identifier_string & recogniser() const
function_symbol recogniser_function(const sort_expression &s) const
Returns the function corresponding to the recogniser of this constructor, such that it is usable in t...
structured_sort_constructor(const atermpp::aterm &term)
structured_sort_constructor(const std::string &name, const Container &arguments, typename atermpp::enable_if_container< Container, structured_sort_constructor_argument >::type *=nullptr)
Constructor.
const structured_sort_constructor_argument_list & arguments() const
structured_sort_constructor()
\brief Default constructor X3.
void argument_sorts(OutIter out) const
Returns the sorts of the arguments in an output iterator.
structured_sort_constructor(const core::identifier_string &name)
Constructor.
data_equation_vector recogniser_equations() const
Generate equations for the recognisers of this sort, assuming that this sort is referred to with s.
function_symbol smaller_arguments_function(const sort_expression &s) const
structured_sort & operator=(const structured_sort &) noexcept=default
function_symbol_vector recogniser_functions(const sort_expression &s) const
function_symbol to_pos_function(const sort_expression &s) const
function_symbol_vector constructor_functions(const sort_expression &s) const
data_equation_vector comparison_equations() const
Returns the equations for the functions used to implement comparison operators on this sort....
data_equation_vector constructor_equations(const sort_expression &s) const
data_equation_vector recogniser_equations(const sort_expression &s) const
static bool has_recogniser(structured_sort_constructor const &s)
data_equation_vector projection_equations() const
Generate equations for the projection functions of this sort.
function_symbol equal_arguments_function(const sort_expression &s) const
const structured_sort_constructor_list & constructors() const
function_symbol_vector constructor_functions() const
Returns the constructor functions of this sort, such that the result can be used by the rewriter.
function_symbol_vector projection_functions() const
Returns the projection functions of this sort, such that the result can be used by the rewriter.
function_symbol_vector comparison_functions(const sort_expression &s) const
function_symbol_vector comparison_functions() const
Returns the additional functions of this sort, used to implement its comparison operators.
data_equation_vector comparison_equations(const sort_expression &s) const
structured_sort(const structured_sort_constructor_list &constructors)
\brief Constructor Z14.
function_symbol_vector recogniser_functions() const
Returns the recogniser functions of this sort, such that the result can be used by the rewriter.
function_symbol_vector projection_functions(const sort_expression &s) const
structured_sort()
\brief Default constructor X3.
structured_sort(structured_sort &&) noexcept=default
data_equation_vector projection_equations(const sort_expression &s) const
structured_sort(const atermpp::aterm &term)
structured_sort & operator=(structured_sort &&) noexcept=default
data_equation_vector constructor_equations() const
Returns the equations for ==, < and <= for this sort, such that the result can be used by the rewrite...
function_symbol smaller_equal_arguments_function(const sort_expression &s) const
\brief An untyped parameter
untyped_data_parameter(const core::identifier_string &name, const data_expression_list &arguments)
\brief Constructor Z12.
const core::identifier_string & name() const
untyped_data_parameter(const std::string &name, const data_expression_list &arguments)
\brief Constructor Z1.
const data_expression_list & arguments() const
untyped_data_parameter(const untyped_data_parameter &) noexcept=default
Move semantics.
untyped_data_parameter & operator=(untyped_data_parameter &&) noexcept=default
untyped_data_parameter & operator=(const untyped_data_parameter &) noexcept=default
untyped_data_parameter(const atermpp::aterm &term)
untyped_data_parameter(untyped_data_parameter &&) noexcept=default
untyped_data_parameter()
\brief Default constructor X3.
\brief Assignment of a data expression to a string
const core::identifier_string & lhs() const
untyped_identifier_assignment(const std::string &lhs, const data_expression &rhs)
\brief Constructor Z2.
untyped_identifier_assignment(const atermpp::aterm &term)
untyped_identifier_assignment()
\brief Default constructor X3.
const data_expression & rhs() const
untyped_identifier_assignment & operator=(untyped_identifier_assignment &&) noexcept=default
untyped_identifier_assignment & operator=(const untyped_identifier_assignment &) noexcept=default
untyped_identifier_assignment(const core::identifier_string &lhs, const data_expression &rhs)
\brief Constructor Z14.
untyped_identifier_assignment(untyped_identifier_assignment &&) noexcept=default
untyped_identifier_assignment(const untyped_identifier_assignment &) noexcept=default
Move semantics.
data_expression operator()(const untyped_identifier &x) const
Applies the assignment to a variable.
\brief An untyped identifier
untyped_identifier(const atermpp::aterm &term)
untyped_identifier(const untyped_identifier &) noexcept=default
Move semantics.
untyped_identifier(const std::string &name)
\brief Constructor Z2.
untyped_identifier & operator=(untyped_identifier &&) noexcept=default
const core::identifier_string & name() const
untyped_identifier(untyped_identifier &&) noexcept=default
untyped_identifier & operator=(const untyped_identifier &) noexcept=default
untyped_identifier()
\brief Default constructor X3.
untyped_identifier(const core::identifier_string &name)
\brief Constructor Z14.
\brief Multiple possible sorts
untyped_possible_sorts & operator=(const untyped_possible_sorts &) noexcept=default
untyped_possible_sorts & operator=(untyped_possible_sorts &&) noexcept=default
untyped_possible_sorts(const sort_expression_list &sorts)
\brief Constructor Z14.
untyped_possible_sorts(const atermpp::aterm &term)
untyped_possible_sorts(untyped_possible_sorts &&) noexcept=default
untyped_possible_sorts()
\brief Default constructor X3.
const sort_expression_list & sorts() const
\brief Binder for untyped set or bag comprehension
untyped_set_or_bag_comprehension_binder(untyped_set_or_bag_comprehension_binder &&) noexcept=default
untyped_set_or_bag_comprehension_binder(const atermpp::aterm &term)
untyped_set_or_bag_comprehension_binder()
\brief Default constructor X3.
untyped_set_or_bag_comprehension_binder(const untyped_set_or_bag_comprehension_binder &) noexcept=default
Move semantics.
untyped_set_or_bag_comprehension_binder & operator=(const untyped_set_or_bag_comprehension_binder &) noexcept=default
untyped_set_or_bag_comprehension_binder & operator=(untyped_set_or_bag_comprehension_binder &&) noexcept=default
universal quantification.
untyped_set_or_bag_comprehension & operator=(untyped_set_or_bag_comprehension &&) noexcept=default
untyped_set_or_bag_comprehension(const Container &variables, const data_expression &body, typename atermpp::enable_if_container< Container, variable >::type *=nullptr)
untyped_set_or_bag_comprehension(const aterm &d)
untyped_set_or_bag_comprehension(const untyped_set_or_bag_comprehension &) noexcept=default
Move semantics.
untyped_set_or_bag_comprehension(untyped_set_or_bag_comprehension &&) noexcept=default
untyped_set_or_bag_comprehension & operator=(const untyped_set_or_bag_comprehension &) noexcept=default
\brief Untyped sort variable
untyped_sort_variable & operator=(const untyped_sort_variable &) noexcept=default
untyped_sort_variable(const untyped_sort_variable &) noexcept=default
Move semantics.
untyped_sort_variable(const atermpp::aterm &term)
untyped_sort_variable & operator=(untyped_sort_variable &&) noexcept=default
untyped_sort_variable(untyped_sort_variable &&) noexcept=default
untyped_sort_variable(std::size_t value)
Constructor.
untyped_sort_variable(const atermpp::aterm_int &value)
\brief Constructor Z14.
untyped_sort_variable()
\brief Default constructor X3.
const atermpp::aterm_int & value() const
\brief Unknown sort expression
untyped_sort & operator=(const untyped_sort &) noexcept=default
untyped_sort(const atermpp::aterm &term)
untyped_sort(const untyped_sort &) noexcept=default
Move semantics.
untyped_sort & operator=(untyped_sort &&) noexcept=default
untyped_sort(untyped_sort &&) noexcept=default
untyped_sort()
\brief Default constructor X3.
variable(const variable &) noexcept=default
Move semantics.
variable(const std::string &name, const sort_expression &sort)
Constructor.
variable(variable &&) noexcept=default
variable()
Default constructor.
const core::identifier_string & name() const
variable & operator=(variable &&) noexcept=default
const sort_expression & sort() const
variable & operator=(const variable &) noexcept=default
variable(const core::identifier_string &name, const sort_expression &sort)
Constructor.
variable(const atermpp::aterm &term)
Constructor.
\brief A where expression
where_clause & operator=(where_clause &&) noexcept=default
const assignment_list & assignments() const
where_clause(const atermpp::aterm &term)
const data_expression & body() const
const assignment_expression_list & declarations() const
where_clause & operator=(const where_clause &) noexcept=default
where_clause()
\brief Default constructor X3.
where_clause(where_clause &&) noexcept=default
where_clause(const data_expression &body, const assignment_expression_list &declarations)
\brief Constructor Z14.
D_ParserTables parser_tables_fsm
D_ParserTables parser_tables_dot
D_ParserTables parser_tables_mcrl2
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
const aterm_string & empty_string()
Returns the empty aterm_string.
bool check_term_PREqnSpec(const Term &t)
bool check_term_MapSpec(const Term &t)
bool check_term_PBESTrue(const Term &t)
bool check_term_Seq(const Term &t)
bool check_term_DataVarIdInit(const Term &t)
bool check_rule_DataVarIdInit(const Term &t)
bool check_term_Action(const Term &t)
bool check_term_PRESOr(const Term &t)
bool check_term_SortId(const Term &t)
bool check_term_Sum(const Term &t)
bool check_term_Whr(const Term &t)
bool check_term_ActAt(const Term &t)
std::string print_map(const MapContainer &v, const std::string &message="")
Creates a string representation of a map.
bool check_rule_WhrDecl(const Term &t)
bool check_term_StateInfimum(const Term &t)
bool check_term_CommExpr(const Term &t)
bool check_rule_ActSpec(const Term &t)
bool check_term_UntypedSortUnknown(const Term &t)
bool check_term_ActFalse(const Term &t)
bool check_term_ActId(const Term &t)
bool check_term_RegTrans(const Term &t)
bool check_rule_Distribution(const Term &t)
bool check_term_LinearProcessSummand(const Term &t)
bool check_rule_Number(const Term &t)
std::string print_container(const Container &v, const std::string &begin_marker="(", const std::string &end_marker=")", const std::string &message="", bool print_index=false, bool boundary_spaces=true)
Creates a string representation of a container using the pp pretty print function.
bool check_term_StateFalse(const Term &t)
bool check_term_argument(const Term &t, CheckFunction f)
bool check_term_UntypedSortVariable(const Term &t)
bool check_rule_ActFrm(const Term &t)
bool check_term_MultAct(const Term &t)
bool check_term_Tau(const Term &t)
bool check_rule_ActId(const Term &t)
bool check_term_UntypedProcessAssignment(const Term &t)
bool check_term_StateDelayTimed(const Term &t)
bool check_term_Delta(const Term &t)
bool check_rule_PBEqn(const Term &t)
bool check_rule_Action(const Term &t)
bool check_term_PRESTrue(const Term &t)
bool check_rule_ActionRenameSpec(const Term &t)
bool check_rule_FixPoint(const Term &t)
bool check_list_argument(const Term &t, CheckFunction f, unsigned int minimum_size)
bool check_rule_DataEqn(const Term &t)
bool check_rule_LinProcSpec(const Term &t)
bool check_term_PRES(const Term &t)
bool check_rule_SortDecl(const Term &t)
bool check_rule_RenameExpr(const Term &t)
bool check_term_ActImp(const Term &t)
bool check_term_Allow(const Term &t)
bool check_term_Choice(const Term &t)
bool check_term_LinProcSpec(const Term &t)
bool check_rule_SortId(const Term &t)
bool check_term_PBESNot(const Term &t)
bool check_term_Sync(const Term &t)
bool check_rule_String(const Term &t)
bool check_term_ActMultAct(const Term &t)
bool check_term_PRESCondEq(const Term &t)
bool check_term_RegTransOrNil(const Term &t)
bool check_term_GlobVarSpec(const Term &t)
bool check_term_StateSupremum(const Term &t)
bool check_term_Mu(const Term &t)
bool check_rule_BindingOperator(const Term &t)
bool check_rule_CommExpr(const Term &t)
std::string print_list(const Container &v, const std::string &message="", bool print_index=false, bool boundary_spaces=true)
Creates a string representation of a container.
bool check_term_UntypedIdentifierAssignment(const Term &t)
bool check_term_RegNil(const Term &t)
bool check_term_DataEqn(const Term &t)
bool check_term_UntypedIdentifier(const Term &t)
bool check_term_StateMust(const Term &t)
bool check_rule_StructProj(const Term &t)
bool check_rule_ConsSpec(const Term &t)
bool check_term_ProcEqnSpec(const Term &t)
bool check_term_LMerge(const Term &t)
bool check_term_ConsSpec(const Term &t)
bool check_rule_SortConsType(const Term &t)
bool check_term_SortSet(const Term &t)
bool check_rule_SortSpec(const Term &t)
bool check_rule_PRES(const Term &t)
bool check_term_Binder(const Term &t)
bool check_term_SortArrow(const Term &t)
bool check_rule_DataExpr(const Term &t)
bool check_term_StateSum(const Term &t)
bool check_term_DataVarId(const Term &t)
bool check_term_UntypedDataParameter(const Term &t)
bool check_term_PRESConstantMultiply(const Term &t)
bool check_term_PBESForall(const Term &t)
bool check_rule_DataEqnSpec(const Term &t)
bool check_term_ActTrue(const Term &t)
bool check_rule_MultActOrDelta(const Term &t)
bool check_rule_LinearProcess(const Term &t)
bool check_term_ProcessInit(const Term &t)
bool check_term_BagComp(const Term &t)
bool check_rule_ProcVarId(const Term &t)
bool check_term_SortFBag(const Term &t)
bool check_rule_PRExpr(const Term &t)
bool check_term_StateYaled(const Term &t)
bool check_term_MultActName(const Term &t)
bool check_term_Nu(const Term &t)
bool check_term_PBESExists(const Term &t)
bool check_term_BInit(const Term &t)
bool check_term_ProcessAssignment(const Term &t)
bool check_term_Lambda(const Term &t)
bool check_term_StateMay(const Term &t)
bool check_term_PRESAnd(const Term &t)
bool check_term_StateVar(const Term &t)
bool check_term_SortRef(const Term &t)
bool check_term_PRESEqInf(const Term &t)
bool check_rule_StateFrm(const Term &t)
bool check_term_ProcSpec(const Term &t)
bool check_term_SortBag(const Term &t)
bool check_term_ProcEqn(const Term &t)
bool check_rule_MultActName(const Term &t)
bool check_term_StatePlus(const Term &t)
bool check_term_TimedMultAct(const Term &t)
bool check_term_PRESInfimum(const Term &t)
bool check_term_Rename(const Term &t)
bool check_rule_MapSpec(const Term &t)
bool check_rule_ProcEqnSpec(const Term &t)
bool check_rule_ProcEqn(const Term &t)
bool check_rule_PREqn(const Term &t)
bool check_term_StateYaledTimed(const Term &t)
bool check_term_StateImp(const Term &t)
bool check_term_StateConstantMultiply(const Term &t)
bool check_rule_DataVarId(const Term &t)
bool check_rule_UntypedIdentifierAssignment(const Term &t)
bool check_term_SortCons(const Term &t)
bool check_term_PRESSupremum(const Term &t)
bool check_term_PropVarInst(const Term &t)
bool check_term_UntypedRegFrm(const Term &t)
bool check_rule_PBES(const Term &t)
bool check_term_IfThen(const Term &t)
bool check_term_ActForall(const Term &t)
bool check_term_StateTrue(const Term &t)
bool check_term_SortSpec(const Term &t)
bool check_term_StateOr(const Term &t)
bool check_term_Forall(const Term &t)
bool check_term_UntypedSetBagComp(const Term &t)
bool check_term_LinearProcess(const Term &t)
bool check_term_PBInit(const Term &t)
bool check_rule_ProcExpr(const Term &t)
bool check_term_Comm(const Term &t)
bool check_term_StateAnd(const Term &t)
std::string print_set(const Container &v, const std::string &message="", bool print_index=false, bool boundary_spaces=true)
Creates a string representation of a container.
bool check_term_PBESOr(const Term &t)
bool check_term_StateMinus(const Term &t)
bool check_term_RenameExpr(const Term &t)
bool check_term_ActExists(const Term &t)
bool check_term_LinearProcessInit(const Term &t)
bool check_rule_SortExpr(const Term &t)
bool check_term_PREqn(const Term &t)
bool check_term_UntypedMultiAction(const Term &t)
bool check_term_PBES(const Term &t)
bool check_rule_GlobVarSpec(const Term &t)
bool check_rule_ActionRenameRuleRHS(const Term &t)
bool check_term_ActAnd(const Term &t)
bool check_rule_DataSpec(const Term &t)
bool check_term_AtTime(const Term &t)
bool check_term_ActSpec(const Term &t)
bool check_term_StateMu(const Term &t)
bool check_rule_LinearProcessSummand(const Term &t)
bool check_rule_StringOrEmpty(const Term &t)
bool check_term_StateNu(const Term &t)
bool check_term_PBEqn(const Term &t)
bool check_term_PRESSum(const Term &t)
bool check_term_ActionRenameSpec(const Term &t)
bool check_term_StateDelay(const Term &t)
bool check_rule_PBEqnSpec(const Term &t)
bool check_term_SortStruct(const Term &t)
bool check_rule_RegFrm(const Term &t)
bool check_rule_ActionRenameRules(const Term &t)
std::string print_arguments(const Container &v)
Prints a comma separated list of the elements of v. If v is empty, the empty string is returned.
bool check_term_StochasticOperator(const Term &t)
bool check_rule_ProcSpec(const Term &t)
bool check_term_PBESImp(const Term &t)
bool gsIsDataAppl(const atermpp::aterm &Term)
bool check_rule_PropVarDecl(const Term &t)
bool check_term_StateForall(const Term &t)
bool check_term_PRInit(const Term &t)
bool check_term_DataEqnSpec(const Term &t)
bool check_term_StructCons(const Term &t)
bool check_rule_ParamIdOrAction(const Term &t)
bool check_term_ProcVarId(const Term &t)
bool check_term_PRESConstantMultiplyAlt(const Term &t)
bool check_term_DataSpec(const Term &t)
bool check_term_Process(const Term &t)
bool gsIsDataAppl_no_check(const atermpp::aterm &Term)
bool check_term_ActionRenameRule(const Term &t)
bool check_rule_ActionRenameRule(const Term &t)
bool check_rule_PBExpr(const Term &t)
bool check_term_StateNot(const Term &t)
bool check_term_PRESFalse(const Term &t)
bool check_rule_UntypedMultiAction(const Term &t)
bool check_term_OpId(const Term &t)
bool check_term_Distribution(const Term &t)
bool check_term_ActNot(const Term &t)
bool check_term_PRESEqNInf(const Term &t)
bool check_term_UntypedSortsPossible(const Term &t)
bool check_rule_UntypedDataParameter(const Term &t)
bool check_term_Hide(const Term &t)
bool check_rule_PREqnSpec(const Term &t)
bool check_rule_TimedMultAct(const Term &t)
bool check_term_Merge(const Term &t)
bool check_rule_PropVarInst(const Term &t)
bool check_term_Exists(const Term &t)
void foreach_parse_node(const parse_node &x, Function f)
Calls the function f on each node in the parse tree with x as root.
bool check_term_SetComp(const Term &t)
bool check_term_ActOr(const Term &t)
bool check_term_StructProj(const Term &t)
bool check_term_PRESMinus(const Term &t)
bool check_rule_MultAct(const Term &t)
bool check_term_SortList(const Term &t)
bool check_term_PBEqnSpec(const Term &t)
bool check_rule_LinearProcessInit(const Term &t)
bool check_rule_PBInit(const Term &t)
bool check_term_IfThenElse(const Term &t)
bool check_term_PBESAnd(const Term &t)
bool check_rule_ProcInit(const Term &t)
bool check_term_PBESFalse(const Term &t)
bool check_rule_StructCons(const Term &t)
bool check_term_PRESPlus(const Term &t)
bool check_rule_OpId(const Term &t)
bool check_term_PropVarDecl(const Term &t)
bool check_term_SortFSet(const Term &t)
bool check_term_PRESCondSm(const Term &t)
bool check_term_Block(const Term &t)
bool check_term_StateExists(const Term &t)
bool check_term_ActionRenameRules(const Term &t)
bool check_term_StateConstantMultiplyAlt(const Term &t)
bool check_term_DataAppl(const Term &t)
bool check_term_RegSeq(const Term &t)
bool check_term_PRESImp(const Term &t)
bool check_term_RegAlt(const Term &t)
bool check_rule_PRInit(const Term &t)
void warn_left_merge_merge(const parse_node &)
Prints a warning for each occurrence of 'x ||_ y || z' in the parse tree.
apply_builder< Builder > make_apply_builder()
identifier_string empty_identifier_string()
Provides the empty identifier string.
update_apply_builder_arg1< Builder, Function, Arg1 > make_update_apply_builder_arg1(const Function &f)
void print_aterm(const T &)
void print_aterm(const atermpp::aterm &x)
void warn_and_or(const parse_node &)
Prints a warning for each occurrence of 'x && y || z' in the parse tree.
apply_builder_arg1< Builder, Arg1 > make_apply_builder_arg1(const Arg1 &arg1)
identifier_string parse_identifier(const std::string &text)
Parse an identifier.
update_apply_builder< Builder, Function > make_update_apply_builder(const Function &f)
bool is_user_identifier(std::string const &s)
apply_builder_arg2< Builder, Arg1, Arg2 > make_apply_builder_arg2(const Arg1 &arg1, const Arg2 &arg2)
bool is_greater(const application &x)
bool is_minus(const application &x)
data_expression parse_data_expression(const std::string &text)
bool is_equal_to(const application &x)
bool is_snoc_list(data_expression x)
bool is_in(const application &x)
bool head_matches_undefined_symbol(const data_expression &x, const core::identifier_string &s)
bool is_bag_intersection(const application &x)
data_specification parse_data_specification_new(const std::string &text)
bool is_set_difference(const application &x)
bool is_not_equal_to(const application &x)
bool is_numeric_cast(const data_expression &x)
void check_duplicate_variable_names(const data::variable_list &x, const std::string &msg)
variable_list parse_variable_declaration_list(const std::string &text)
bool is_divides(const application &x)
bool is_set_union(const application &x)
variable_list parse_variables(const std::string &text)
bool is_bag_difference(const application &x)
bool is_less_equal(const application &x)
bool is_set_intersection(const application &x)
bool is_plus(const application &x)
bool is_or(const application &x)
bool is_greater_equal(const application &x)
data_expression reconstruct_pos_mult(const data_expression &x, const std::vector< char > &result)
bool is_untyped(const data_expression &x)
bool is_one(const data_expression &x)
bool is_element_at(const application &x)
bool is_bag_join(const application &x)
data::data_expression bool_to_numeric(const data::data_expression &e, const data::sort_expression &s)
bool is_concat(const application &x)
bool is_and(const application &x)
bool look_through_numeric_casts(const data_expression &x, std::function< bool(const data_expression &)> f)
bool is_snoc(const application &x)
sort_expression parse_sort_expression(const std::string &text)
bool is_implies(const application &x)
bool is_cons_list(data_expression x)
bool is_mod(const application &x)
bool is_divmod(const application &x)
bool is_div(const application &x)
bool is_times(const application &x)
bool is_cons(const application &x)
bool is_less(const application &x)
A collection of utilities for lazy expression construction.
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_)
Namespace for system defined sort bag.
function_symbol fbag2fset(const sort_expression &s)
Constructor for function symbol @fbag2fset.
bool is_bag2set_application(const atermpp::aterm &e)
Recogniser for application of Bag2Set.
bool is_intersection_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
void make_bool2nat_function(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @Bool2Nat_.
application difference(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol -.
const core::identifier_string & fbag2fset_name()
Generate identifier @fbag2fset.
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
bool is_min_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @min_.
function_symbol bag_fbag(const sort_expression &s)
Constructor for function symbol @bagfbag.
bool is_min_function_application(const atermpp::aterm &e)
Recogniser for application of @min_.
function_symbol monus_function(const sort_expression &s)
Constructor for function symbol @monus_.
const core::identifier_string & fbag_intersect_name()
Generate identifier @fbag_inter.
void make_bag2set(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol Bag2Set.
bool is_fbag_difference_function_symbol(const atermpp::aterm &e)
Recogniser for function @fbag_diff.
bool is_fbag_join_function_symbol(const atermpp::aterm &e)
Recogniser for function @fbag_join.
void make_count(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol count.
function_symbol_vector bag_generate_functions_code(const sort_expression &s)
Give all system defined mappings for bag.
application zero_function(const sort_expression &s, const data_expression &arg0)
Application of function symbol @zero_.
const core::identifier_string & bool2nat_function_name()
Generate identifier @Bool2Nat_.
void make_one_function(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @one_.
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
bool is_difference_application(const atermpp::aterm &e)
Recogniser for application of -.
function_symbol difference(const sort_expression &s, const sort_expression &s0, const sort_expression &s1)
const core::identifier_string & set2bag_name()
Generate identifier Set2Bag.
bool is_bag_fbag_application(const atermpp::aterm &e)
Recogniser for application of @bagfbag.
application fbag2fset(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @fbag2fset.
function_symbol_vector bag_generate_constructors_and_functions_code(const sort_expression &s)
Give all system defined mappings and constructors for bag.
void make_add_function(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @add_.
data_equation_vector bag_generate_equations_code(const sort_expression &s)
Give all system defined equations for bag.
bool is_fbag_difference_application(const atermpp::aterm &e)
Recogniser for application of @fbag_diff.
bool is_bag_fbag_function_symbol(const atermpp::aterm &e)
Recogniser for function @bagfbag.
const core::identifier_string & zero_function_name()
Generate identifier @zero_.
const core::identifier_string & add_function_name()
Generate identifier @add_.
application bag2set(const sort_expression &s, const data_expression &arg0)
Application of function symbol Bag2Set.
application in(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol in.
function_symbol_vector bag_mCRL2_usable_constructors(const sort_expression &s)
Give all defined constructors which can be used in mCRL2 specs for bag.
bool is_fbag2fset_function_symbol(const atermpp::aterm &e)
Recogniser for function @fbag2fset.
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
function_symbol bag2set(const sort_expression &s)
Constructor for function symbol Bag2Set.
bool is_monus_function_application(const atermpp::aterm &e)
Recogniser for application of @monus_.
const core::identifier_string & nat2bool_function_name()
Generate identifier @Nat2Bool_.
function_symbol intersection(const sort_expression &s, const sort_expression &s0, const sort_expression &s1)
bool is_zero_function_application(const atermpp::aterm &e)
Recogniser for application of @zero_.
const core::identifier_string & fbag_difference_name()
Generate identifier @fbag_diff.
void make_monus_function(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @monus_.
bool is_count_function_symbol(const atermpp::aterm &e)
Recogniser for function count.
function_symbol count(const sort_expression &, const sort_expression &s0, const sort_expression &s1)
function_symbol add_function(const sort_expression &s)
Constructor for function symbol @add_.
bool is_nat2bool_function_application(const atermpp::aterm &e)
Recogniser for application of @Nat2Bool_.
function_symbol fbag_intersect(const sort_expression &s)
Constructor for function symbol @fbag_inter.
void make_fbag_intersect(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @fbag_inter.
bool is_union_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
void make_nat2bool_function(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @Nat2Bool_.
application bag_fbag(const sort_expression &s, const data_expression &arg0)
Application of function symbol @bagfbag.
bool is_fbag_intersect_application(const atermpp::aterm &e)
Recogniser for application of @fbag_inter.
bool is_in_application(const atermpp::aterm &e)
Recogniser for application of in.
function_symbol fbag_difference(const sort_expression &s)
Constructor for function symbol @fbag_diff.
bool is_in_function_symbol(const atermpp::aterm &e)
Recogniser for function in.
application bool2nat_function(const sort_expression &s, const data_expression &arg0)
Application of function symbol @Bool2Nat_.
bool is_bag_comprehension_function_symbol(const atermpp::aterm &e)
Recogniser for function @bagcomp.
void make_min_function(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @min_.
data_expression bag_enumeration(const sort_expression &s, data_expression_list const &range)
Application of function symbol bag_enumeration.
const core::identifier_string & min_function_name()
Generate identifier @min_.
bool is_set2bag_function_symbol(const atermpp::aterm &e)
Recogniser for function Set2Bag.
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
function_symbol_vector bag_mCRL2_usable_mappings(const sort_expression &s)
Give all system defined mappings that can be used in mCRL2 specs for bag.
bool is_nat2bool_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @Nat2Bool_.
application one_function(const sort_expression &s, const data_expression &arg0)
Application of function symbol @one_.
const core::identifier_string & monus_function_name()
Generate identifier @monus_.
const data_expression & arg4(const data_expression &e)
Function for projecting out argument. arg4 from an application.
bool is_add_function_application(const atermpp::aterm &e)
Recogniser for application of @add_.
void make_fbag2fset(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @fbag2fset.
void make_fbag_join(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @fbag_join.
function_symbol min_function(const sort_expression &s)
Constructor for function symbol @min_.
function_symbol set2bag(const sort_expression &s)
Constructor for function symbol Set2Bag.
const core::identifier_string & bag_fbag_name()
Generate identifier @bagfbag.
const core::identifier_string & bag2set_name()
Generate identifier Bag2Set.
const core::identifier_string & intersection_name()
Generate identifier *.
application nat2bool_function(const sort_expression &s, const data_expression &arg0)
Application of function symbol @Nat2Bool_.
void make_in(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol in.
application constructor(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @bag.
application fbag_intersect(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @fbag_inter.
function_symbol bag_comprehension(const sort_expression &s)
Constructor for function symbol @bagcomp.
bool is_bag2set_function_symbol(const atermpp::aterm &e)
Recogniser for function Bag2Set.
implementation_map bag_cpp_implementable_constructors(const sort_expression &)
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
bool is_bool2nat_function_application(const atermpp::aterm &e)
Recogniser for application of @Bool2Nat_.
const core::identifier_string & fbag_join_name()
Generate identifier @fbag_join.
bool is_bag_enumeration_application(const atermpp::aterm &e)
Recogniser for application of bag_enumeration.
void make_intersection(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
function_symbol fbag_join(const sort_expression &s)
Constructor for function symbol @fbag_join.
bool is_constructor_application(const atermpp::aterm &e)
Recogniser for application of @bag.
core::identifier_string const & bag_enumeration_name()
Generate identifier bag_enumeration.
bool is_zero_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @zero_.
function_symbol constructor(const sort_expression &s)
Constructor for function symbol @bag.
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
const core::identifier_string & constructor_name()
Generate identifier @bag.
bool is_bag_comprehension_application(const atermpp::aterm &e)
Recogniser for application of @bagcomp.
bool is_set2bag_application(const atermpp::aterm &e)
Recogniser for application of Set2Bag.
function_symbol in(const sort_expression &, const sort_expression &s0, const sort_expression &s1)
void make_zero_function(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @zero_.
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
void make_bag_fbag(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @bagfbag.
function_symbol bag_enumeration(const sort_expression &s)
Constructor for function symbol bag_enumeration.
function_symbol bool2nat_function(const sort_expression &s)
Constructor for function symbol @Bool2Nat_.
void make_set2bag(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol Set2Bag.
const core::identifier_string & union_name()
Generate identifier +.
bool is_fbag_intersect_function_symbol(const atermpp::aterm &e)
Recogniser for function @fbag_inter.
function_symbol union_(const sort_expression &s, const sort_expression &s0, const sort_expression &s1)
implementation_map bag_cpp_implementable_mappings(const sort_expression &)
Give all system defined mappings that are to be implemented in C++ code for bag.
bool is_intersection_application(const atermpp::aterm &e)
Recogniser for application of *.
void make_bag_comprehension(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @bagcomp.
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
data_expression bag_enumeration(const sort_expression &s, Sequence const &range, typename atermpp::enable_if_container< Sequence, data_expression >::type *=0)
Application of function symbol bag_enumeration.
void make_fbag_difference(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @fbag_diff.
const core::identifier_string & count_name()
Generate identifier count.
void make_union_(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol +.
function_symbol nat2bool_function(const sort_expression &s)
Constructor for function symbol @Nat2Bool_.
bool is_one_function_application(const atermpp::aterm &e)
Recogniser for application of @one_.
application fbag_difference(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @fbag_diff.
bool is_bag_enumeration_function_symbol(const atermpp::aterm &e)
Recogniser for function bag_enumeration.
application add_function(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @add_.
const core::identifier_string & difference_name()
Generate identifier -.
application set2bag(const sort_expression &s, const data_expression &arg0)
Application of function symbol Set2Bag.
bool is_bool2nat_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @Bool2Nat_.
bool is_bag(const sort_expression &e)
Recogniser for sort expression Bag(s)
application monus_function(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @monus_.
container_sort bag(const sort_expression &s)
Constructor for sort expression Bag(S)
bool is_difference_function_symbol(const atermpp::aterm &e)
Recogniser for function -.
bool is_fbag2fset_application(const atermpp::aterm &e)
Recogniser for application of @fbag2fset.
application intersection(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
const core::identifier_string & in_name()
Generate identifier in.
bool is_constructor_function_symbol(const atermpp::aterm &e)
Recogniser for function @bag.
const core::identifier_string & bag_comprehension_name()
Generate identifier @bagcomp.
bool is_count_application(const atermpp::aterm &e)
Recogniser for application of count.
void make_difference(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol -.
application fbag_join(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @fbag_join.
const core::identifier_string & one_function_name()
Generate identifier @one_.
bool is_add_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @add_.
void make_constructor(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @bag.
function_symbol zero_function(const sort_expression &s)
Constructor for function symbol @zero_.
bool is_one_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @one_.
application bag_comprehension(const sort_expression &s, const data_expression &arg0)
Application of function symbol @bagcomp.
function_symbol one_function(const sort_expression &s)
Constructor for function symbol @one_.
application count(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol count.
application min_function(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @min_.
function_symbol_vector bag_generate_constructors_code(const sort_expression &s)
Give all system defined constructors for bag.
bool is_fbag_join_application(const atermpp::aterm &e)
Recogniser for application of @fbag_join.
bool is_monus_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @monus_.
Namespace for system defined sort bool_.
data_equation_vector bool_generate_equations_code()
Give all system defined equations for bool_.
bool is_false_function_symbol(const atermpp::aterm &e)
Recogniser for function false.
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
function_symbol_vector bool_mCRL2_usable_mappings()
Give all system defined mappings that can be used in mCRL2 specs for bool_.
function_symbol_vector bool_mCRL2_usable_constructors()
Give all defined constructors which can be used in mCRL2 specs for bool_.
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 core::identifier_string & implies_name()
Generate identifier =>.
const basic_sort & bool_()
Constructor for sort expression Bool.
const core::identifier_string & or_name()
Generate identifier ||.
implementation_map bool_cpp_implementable_constructors()
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
const function_symbol & implies()
Constructor for function symbol =>.
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
bool is_not_function_symbol(const atermpp::aterm &e)
Recogniser for function !.
bool is_implies_application(const atermpp::aterm &e)
Recogniser for application of =>.
application not_(const data_expression &arg0)
Application of 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 &&.
application and_(const data_expression &arg0, const data_expression &arg1)
Application of function symbol &&.
function_symbol_vector bool_generate_constructors_and_functions_code()
Give all system defined mappings and constructors for bool_.
const core::identifier_string & not_name()
Generate identifier !.
application implies(const data_expression &arg0, const data_expression &arg1)
Application of function symbol =>.
function_symbol_vector bool_generate_constructors_code()
Give all system defined constructors for bool_.
implementation_map bool_cpp_implementable_mappings()
Give all system defined mappings that are to be implemented in C++ code for bool_.
application or_(const data_expression &arg0, const data_expression &arg1)
Application of function symbol ||.
const function_symbol & false_()
Constructor for function symbol false.
const core::identifier_string & bool_name()
bool is_and_function_symbol(const atermpp::aterm &e)
Recogniser for function &&.
bool is_and_application(const atermpp::aterm &e)
Recogniser for application of &&.
data_expression bool_(bool b)
Constructs expression of type Bool from an integral type.
const function_symbol & or_()
Constructor for function symbol ||.
bool is_or_function_symbol(const atermpp::aterm &e)
Recogniser for function ||.
bool is_true_function_symbol(const atermpp::aterm &e)
Recogniser for function true.
const core::identifier_string & false_name()
Generate identifier false.
const core::identifier_string & true_name()
Generate identifier true.
bool is_not_application(const atermpp::aterm &e)
Recogniser for application of !.
function_symbol_vector bool_generate_functions_code()
Give all system defined mappings for bool_.
const function_symbol & not_()
Constructor for function symbol !.
void make_not_(data_expression &result, const data_expression &arg0)
Make an application of function symbol !.
void make_and_(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol &&.
const function_symbol & true_()
Constructor for function symbol true.
bool is_implies_function_symbol(const atermpp::aterm &e)
Recogniser for function =>.
void make_or_(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol ||.
void make_implies(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol =>.
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
const core::identifier_string & and_name()
Generate identifier &&.
Namespace for system defined sort fbag.
bool is_empty_function_symbol(const atermpp::aterm &e)
Recogniser for function {:}.
void make_count(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol count.
const core::identifier_string & count_all_name()
Generate identifier #.
function_symbol_vector fbag_generate_constructors_and_functions_code(const sort_expression &s)
Give all system defined mappings and constructors for fbag.
implementation_map fbag_cpp_implementable_constructors(const sort_expression &)
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
const core::identifier_string & fset2fbag_name()
Generate identifier @fset2fbag.
application fset2fbag(const sort_expression &s, const data_expression &arg0)
Application of function symbol @fset2fbag.
container_sort fbag(const sort_expression &s)
Constructor for sort expression FBag(S)
application pick(const sort_expression &s, const data_expression &arg0)
Application of function symbol pick.
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
bool is_in_function_symbol(const atermpp::aterm &e)
Recogniser for function in.
bool is_difference_function_symbol(const atermpp::aterm &e)
Recogniser for function -.
application intersection(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
function_symbol pick(const sort_expression &s)
Constructor for function symbol pick.
const core::identifier_string & count_name()
Generate identifier count.
const core::identifier_string & cinsert_name()
Generate identifier @fbag_cinsert.
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
function_symbol intersection(const sort_expression &s)
Constructor for function symbol *.
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
function_symbol union_(const sort_expression &s)
Constructor for function symbol +.
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
bool is_cinsert_function_symbol(const atermpp::aterm &e)
Recogniser for function @fbag_cinsert.
function_symbol cons_(const sort_expression &s)
Constructor for function symbol @fbag_cons.
bool is_insert_function_symbol(const atermpp::aterm &e)
Recogniser for function @fbag_insert.
implementation_map fbag_cpp_implementable_mappings(const sort_expression &)
Give all system defined mappings that are to be implemented in C++ code for fbag.
bool is_intersection_application(const atermpp::aterm &e)
Recogniser for application of *.
function_symbol count_all(const sort_expression &s)
Constructor for function symbol #.
application fbag(const sort_expression &s, Sequence const &range, typename atermpp::enable_if_container< Sequence, data_expression >::type *=nullptr)
Constructs a finite bag expression from a range of expressions Type Sequence must be a model of the F...
void make_intersection(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
bool is_cons_function_symbol(const atermpp::aterm &e)
Recogniser for function @fbag_cons.
application in(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol in.
function_symbol insert(const sort_expression &s)
Constructor for function symbol @fbag_insert.
application fbag(const sort_expression &s, const data_expression_list &range)
Constructs a finite bag expression from a list of expressions.
application insert(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @fbag_insert.
void make_fset2fbag(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @fset2fbag.
void make_cons_(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @fbag_cons.
const core::identifier_string & cons_name()
Generate identifier @fbag_cons.
application cinsert(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @fbag_cinsert.
bool is_fset2fbag_function_symbol(const atermpp::aterm &e)
Recogniser for function @fset2fbag.
bool is_in_application(const atermpp::aterm &e)
Recogniser for application of in.
const core::identifier_string & empty_name()
Generate identifier {:}.
const core::identifier_string & difference_name()
Generate identifier -.
bool is_difference_application(const atermpp::aterm &e)
Recogniser for application of -.
bool is_count_application(const atermpp::aterm &e)
Recogniser for application of count.
bool is_cons_application(const atermpp::aterm &e)
Recogniser for application of @fbag_cons.
void make_in(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol in.
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
void make_count_all(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol #.
bool is_pick_function_symbol(const atermpp::aterm &e)
Recogniser for function pick.
bool is_count_function_symbol(const atermpp::aterm &e)
Recogniser for function count.
application count_all(const sort_expression &s, const data_expression &arg0)
Application of function symbol #.
bool is_intersection_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
application cons_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @fbag_cons.
const core::identifier_string & intersection_name()
Generate identifier *.
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
bool is_pick_application(const atermpp::aterm &e)
Recogniser for application of pick.
function_symbol in(const sort_expression &s)
Constructor for function symbol in.
function_symbol_vector fbag_generate_constructors_code(const sort_expression &s)
Give all system defined constructors for fbag.
bool is_count_all_application(const atermpp::aterm &e)
Recogniser for application of #.
function_symbol count(const sort_expression &s)
Constructor for function symbol count.
void make_union_(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol +.
bool is_fbag(const sort_expression &e)
Recogniser for sort expression FBag(s)
void make_cinsert(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @fbag_cinsert.
application difference(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol -.
function_symbol empty(const sort_expression &s)
Constructor for function symbol {:}.
void make_difference(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol -.
function_symbol cinsert(const sort_expression &s)
Constructor for function symbol @fbag_cinsert.
bool is_cinsert_application(const atermpp::aterm &e)
Recogniser for application of @fbag_cinsert.
void make_insert(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @fbag_insert.
bool is_fset2fbag_application(const atermpp::aterm &e)
Recogniser for application of @fset2fbag.
bool is_count_all_function_symbol(const atermpp::aterm &e)
Recogniser for function #.
function_symbol_vector fbag_mCRL2_usable_mappings(const sort_expression &s)
Give all system defined mappings that can be used in mCRL2 specs for fbag.
function_symbol fset2fbag(const sort_expression &s)
Constructor for function symbol @fset2fbag.
const core::identifier_string & pick_name()
Generate identifier pick.
const core::identifier_string & union_name()
Generate identifier +.
application count(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol count.
function_symbol difference(const sort_expression &s)
Constructor for function symbol -.
function_symbol_vector fbag_generate_functions_code(const sort_expression &s)
Give all system defined mappings for fbag.
bool is_insert_application(const atermpp::aterm &e)
Recogniser for application of @fbag_insert.
const core::identifier_string & insert_name()
Generate identifier @fbag_insert.
data_equation_vector fbag_generate_equations_code(const sort_expression &s)
Give all system defined equations for fbag.
bool is_union_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
void make_pick(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol pick.
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
function_symbol_vector fbag_mCRL2_usable_constructors(const sort_expression &s)
Give all defined constructors which can be used in mCRL2 specs for fbag.
const core::identifier_string & in_name()
Generate identifier in.
Namespace for system defined sort fset.
function_symbol insert(const sort_expression &s)
Constructor for function symbol @fset_insert.
bool is_fset(const sort_expression &e)
Recogniser for sort expression FSet(s)
function_symbol_vector fset_mCRL2_usable_mappings(const sort_expression &s)
Give all system defined mappings that can be used in mCRL2 specs for fset.
void make_union_(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol +.
void make_pick(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol pick.
const core::identifier_string & pick_name()
Generate identifier pick.
application count(const sort_expression &s, const data_expression &arg0)
Application of function symbol #.
bool is_empty_function_symbol(const atermpp::aterm &e)
Recogniser for function {}.
application insert(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @fset_insert.
bool is_in_application(const atermpp::aterm &e)
Recogniser for application of in.
bool is_cinsert_function_symbol(const atermpp::aterm &e)
Recogniser for function @fset_cinsert.
bool is_count_function_symbol(const atermpp::aterm &e)
Recogniser for function #.
function_symbol_vector fset_generate_constructors_and_functions_code(const sort_expression &s)
Give all system defined mappings and constructors for fset.
function_symbol cinsert(const sort_expression &s)
Constructor for function symbol @fset_cinsert.
function_symbol_vector fset_mCRL2_usable_constructors(const sort_expression &s)
Give all defined constructors which can be used in mCRL2 specs for fset.
bool is_cons_function_symbol(const atermpp::aterm &e)
Recogniser for function @fset_cons.
function_symbol_vector fset_generate_constructors_code(const sort_expression &s)
Give all system defined constructors for fset.
const core::identifier_string & empty_name()
Generate identifier {}.
application fset(const sort_expression &s, const data_expression_list &range)
Constructs a finite set expression from a list of expressions.
const core::identifier_string & intersection_name()
Generate identifier *.
application in(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol in.
bool is_insert_function_symbol(const atermpp::aterm &e)
Recogniser for function @fset_insert.
function_symbol_vector fset_generate_functions_code(const sort_expression &s)
Give all system defined mappings for fset.
application cons_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @fset_cons.
bool is_difference_function_symbol(const atermpp::aterm &e)
Recogniser for function -.
function_symbol cons_(const sort_expression &s)
Constructor for function symbol @fset_cons.
void make_intersection(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
implementation_map fset_cpp_implementable_mappings(const sort_expression &)
Give all system defined mappings that are to be implemented in C++ code for fset.
function_symbol empty(const sort_expression &s)
Constructor for function symbol {}.
const core::identifier_string & difference_name()
Generate identifier -.
bool is_union_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
void make_difference(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol -.
function_symbol intersection(const sort_expression &s)
Constructor for function symbol *.
void make_cinsert(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @fset_cinsert.
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
function_symbol difference(const sort_expression &s)
Constructor for function symbol -.
void make_insert(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @fset_insert.
bool is_intersection_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
const core::identifier_string & cinsert_name()
Generate identifier @fset_cinsert.
bool is_in_function_symbol(const atermpp::aterm &e)
Recogniser for function in.
void make_count(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol #.
bool is_pick_application(const atermpp::aterm &e)
Recogniser for application of pick.
implementation_map fset_cpp_implementable_constructors(const sort_expression &)
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
function_symbol in(const sort_expression &s)
Constructor for function symbol in.
bool is_difference_application(const atermpp::aterm &e)
Recogniser for application of -.
const core::identifier_string & count_name()
Generate identifier #.
bool is_pick_function_symbol(const atermpp::aterm &e)
Recogniser for function pick.
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
data_equation_vector fset_generate_equations_code(const sort_expression &s)
Give all system defined equations for fset.
const core::identifier_string & union_name()
Generate identifier +.
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
function_symbol pick(const sort_expression &s)
Constructor for function symbol pick.
void make_in(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol in.
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
bool is_count_application(const atermpp::aterm &e)
Recogniser for application of #.
function_symbol count(const sort_expression &s)
Constructor for function symbol #.
bool is_cons_application(const atermpp::aterm &e)
Recogniser for application of @fset_cons.
application cinsert(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @fset_cinsert.
bool is_intersection_application(const atermpp::aterm &e)
Recogniser for application of *.
application difference(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol -.
application fset(const sort_expression &s, Sequence const &range, typename atermpp::enable_if_container< Sequence, data_expression >::type *=nullptr)
Constructs a finite set expression from a range of expressions.
const core::identifier_string & insert_name()
Generate identifier @fset_insert.
void make_cons_(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @fset_cons.
container_sort fset(const sort_expression &s)
Constructor for sort expression FSet(S)
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
const core::identifier_string & cons_name()
Generate identifier @fset_cons.
application pick(const sort_expression &s, const data_expression &arg0)
Application of function symbol pick.
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
application intersection(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
function_symbol union_(const sort_expression &s)
Constructor for function symbol +.
const core::identifier_string & in_name()
Generate identifier in.
bool is_cinsert_application(const atermpp::aterm &e)
Recogniser for application of @fset_cinsert.
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
bool is_insert_application(const atermpp::aterm &e)
Recogniser for application of @fset_insert.
Namespace for system defined sort int_.
bool is_minimum_application(const atermpp::aterm &e)
Recogniser for application of min.
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
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 & cint_name()
Generate identifier @cInt.
application cint(const data_expression &arg0)
Application of function symbol @cInt.
application abs(const data_expression &arg0)
Application of function symbol abs.
application nat2int(const data_expression &arg0)
Application of function symbol Nat2Int.
application succ(const data_expression &arg0)
Application of function symbol succ.
application cneg(const data_expression &arg0)
Application of function symbol @cNeg.
bool is_minus_function_symbol(const atermpp::aterm &e)
Recogniser for function -.
bool is_maximum_application(const atermpp::aterm &e)
Recogniser for application of max.
bool is_succ_function_symbol(const atermpp::aterm &e)
Recogniser for function succ.
const core::identifier_string & abs_name()
Generate identifier abs.
bool is_minimum_function_symbol(const atermpp::aterm &e)
Recogniser for function min.
bool is_int2pos_application(const atermpp::aterm &e)
Recogniser for application of Int2Pos.
const core::identifier_string & pred_name()
Generate identifier pred.
bool is_exp_function_symbol(const atermpp::aterm &e)
Recogniser for function exp.
bool is_int2pos_function_symbol(const atermpp::aterm &e)
Recogniser for function Int2Pos.
const function_symbol & pos2int()
Constructor for function symbol Pos2Int.
const core::identifier_string & nat2int_name()
Generate identifier Nat2Int.
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
void make_minus(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol -.
application negate(const data_expression &arg0)
Application of function symbol -.
bool is_cneg_function_symbol(const atermpp::aterm &e)
Recogniser for function @cNeg.
const core::identifier_string & int2pos_name()
Generate identifier Int2Pos.
function_symbol maximum(const sort_expression &s0, const sort_expression &s1)
void make_cneg(data_expression &result, const data_expression &arg0)
Make an application of function symbol @cNeg.
application int2nat(const data_expression &arg0)
Application of function symbol Int2Nat.
function_symbol pred(const sort_expression &s0)
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
const core::identifier_string & cneg_name()
Generate identifier @cNeg.
const core::identifier_string & exp_name()
Generate identifier exp.
void make_exp(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol exp.
const core::identifier_string & minimum_name()
Generate identifier min.
bool is_mod_application(const atermpp::aterm &e)
Recogniser for application of mod.
const core::identifier_string & int_name()
bool is_mod_function_symbol(const atermpp::aterm &e)
Recogniser for function mod.
application maximum(const data_expression &arg0, const data_expression &arg1)
Application of function symbol max.
application times(const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
function_symbol_vector int_mCRL2_usable_mappings()
Give all system defined mappings that can be used in mCRL2 specs for int_.
const core::identifier_string & pos2int_name()
Generate identifier Pos2Int.
const function_symbol & int2nat()
Constructor for function symbol Int2Nat.
bool is_int(const sort_expression &e)
Recogniser for sort expression Int.
function_symbol minus(const sort_expression &s0, const sort_expression &s1)
bool is_pred_application(const atermpp::aterm &e)
Recogniser for application of pred.
const function_symbol & nat2int()
Constructor for function symbol Nat2Int.
application div(const data_expression &arg0, const data_expression &arg1)
Application of function symbol div.
bool is_times_application(const atermpp::aterm &e)
Recogniser for application of *.
const core::identifier_string & maximum_name()
Generate identifier max.
bool is_int2nat_function_symbol(const atermpp::aterm &e)
Recogniser for function Int2Nat.
bool is_cneg_application(const atermpp::aterm &e)
Recogniser for application of @cNeg.
const core::identifier_string & succ_name()
Generate identifier succ.
const function_symbol & cneg()
Constructor for function symbol @cNeg.
void make_pos2int(data_expression &result, const data_expression &arg0)
Make an application of function symbol Pos2Int.
const function_symbol & abs()
Constructor for function symbol abs.
function_symbol exp(const sort_expression &s0, const sort_expression &s1)
bool is_cint_application(const atermpp::aterm &e)
Recogniser for application of @cInt.
bool is_times_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
bool is_plus_application(const atermpp::aterm &e)
Recogniser for application of +.
const core::identifier_string & mod_name()
Generate identifier mod.
void make_plus(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol +.
data_equation_vector int_generate_equations_code()
Give all system defined equations for int_.
application minus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol -.
function_symbol plus(const sort_expression &s0, const sort_expression &s1)
application minimum(const data_expression &arg0, const data_expression &arg1)
Application of function symbol min.
const function_symbol & int2pos()
Constructor for function symbol Int2Pos.
bool is_integer_constant(const data_expression &n)
Determines whether n is an integer constant.
const core::identifier_string & plus_name()
Generate identifier +.
function_symbol_vector int_generate_constructors_and_functions_code()
Give all system defined mappings and constructors for int_.
void make_div(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol div.
bool is_negate_application(const atermpp::aterm &e)
Recogniser for application of -.
function_symbol negate(const sort_expression &s0)
bool is_div_application(const atermpp::aterm &e)
Recogniser for application of div.
void make_mod(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol mod.
bool is_pos2int_function_symbol(const atermpp::aterm &e)
Recogniser for function Pos2Int.
function_symbol_vector int_generate_constructors_code()
Give all system defined constructors for int_.
bool is_abs_application(const atermpp::aterm &e)
Recogniser for application of abs.
void make_maximum(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol max.
function_symbol_vector int_mCRL2_usable_constructors()
Give all defined constructors which can be used in mCRL2 specs for int_.
application int2pos(const data_expression &arg0)
Application of function symbol Int2Pos.
function_symbol succ(const sort_expression &s0)
void make_negate(data_expression &result, const data_expression &arg0)
Make an application of function symbol -.
const core::identifier_string & negate_name()
Generate identifier -.
bool is_cint_function_symbol(const atermpp::aterm &e)
Recogniser for function @cInt.
std::string integer_constant_as_string(const data_expression &n)
Return the string representation of an integer number.
void make_abs(data_expression &result, const data_expression &arg0)
Make an application of function symbol abs.
function_symbol_vector int_generate_functions_code()
Give all system defined mappings for int_.
data_expression int_(const std::string &n)
Constructs expression of type Int from a string.
implementation_map int_cpp_implementable_constructors()
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
bool is_exp_application(const atermpp::aterm &e)
Recogniser for application of exp.
application mod(const data_expression &arg0, const data_expression &arg1)
Application of function symbol mod.
void make_nat2int(data_expression &result, const data_expression &arg0)
Make an application of function symbol Nat2Int.
const function_symbol & cint()
Constructor for function symbol @cInt.
implementation_map int_cpp_implementable_mappings()
Give all system defined mappings that are to be implemented in C++ code for int_.
application pos2int(const data_expression &arg0)
Application of function symbol Pos2Int.
bool is_nat2int_function_symbol(const atermpp::aterm &e)
Recogniser for function Nat2Int.
bool is_int2nat_application(const atermpp::aterm &e)
Recogniser for application of Int2Nat.
const core::identifier_string & minus_name()
Generate identifier -.
data_expression int_(T t)
Constructs expression of type pos from an integral type.
function_symbol mod(const sort_expression &s0, const sort_expression &s1)
const core::identifier_string & int2nat_name()
Generate identifier Int2Nat.
const core::identifier_string & div_name()
Generate identifier div.
bool is_maximum_function_symbol(const atermpp::aterm &e)
Recogniser for function max.
application exp(const data_expression &arg0, const data_expression &arg1)
Application of function symbol exp.
bool is_div_function_symbol(const atermpp::aterm &e)
Recogniser for function div.
application pred(const data_expression &arg0)
Application of function symbol pred.
bool is_negate_function_symbol(const atermpp::aterm &e)
Recogniser for function -.
void make_int2pos(data_expression &result, const data_expression &arg0)
Make an application of function symbol Int2Pos.
function_symbol times(const sort_expression &s0, const sort_expression &s1)
bool is_plus_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
bool is_nat2int_application(const atermpp::aterm &e)
Recogniser for application of Nat2Int.
bool is_minus_application(const atermpp::aterm &e)
Recogniser for application of -.
void make_times(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
function_symbol minimum(const sort_expression &s0, const sort_expression &s1)
bool is_pred_function_symbol(const atermpp::aterm &e)
Recogniser for function pred.
function_symbol div(const sort_expression &s0, const sort_expression &s1)
void make_succ(data_expression &result, const data_expression &arg0)
Make an application of function symbol succ.
bool is_pos2int_application(const atermpp::aterm &e)
Recogniser for application of Pos2Int.
void make_pred(data_expression &result, const data_expression &arg0)
Make an application of function symbol pred.
void make_cint(data_expression &result, const data_expression &arg0)
Make an application of function symbol @cInt.
void make_int2nat(data_expression &result, const data_expression &arg0)
Make an application of function symbol Int2Nat.
bool is_abs_function_symbol(const atermpp::aterm &e)
Recogniser for function abs.
const core::identifier_string & times_name()
Generate identifier *.
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
NUMERIC_VALUE integer_constant_to_value(const data_expression &n)
Return the NUMERIC_VALUE representation of an integer number.
bool is_succ_application(const atermpp::aterm &e)
Recogniser for application of succ.
const basic_sort & int_()
Constructor for sort expression Int.
Namespace for system defined sort list.
const core::identifier_string & rtail_name()
Generate identifier rtail.
const core::identifier_string & snoc_name()
Generate identifier <|.
bool is_rhead_function_symbol(const atermpp::aterm &e)
Recogniser for function rhead.
bool is_rhead_application(const atermpp::aterm &e)
Recogniser for application of rhead.
bool is_snoc_function_symbol(const atermpp::aterm &e)
Recogniser for function <|.
bool is_count_function_symbol(const atermpp::aterm &e)
Recogniser for function #.
function_symbol_vector list_mCRL2_usable_constructors(const sort_expression &s)
Give all defined constructors which can be used in mCRL2 specs for list.
const core::identifier_string & tail_name()
Generate identifier tail.
application head(const sort_expression &s, const data_expression &arg0)
Application of function symbol head.
bool is_tail_application(const atermpp::aterm &e)
Recogniser for application of tail.
bool is_element_at_function_symbol(const atermpp::aterm &e)
Recogniser for function ..
void make_snoc(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol <|.
bool is_list_enumeration_application(const atermpp::aterm &e)
Recogniser for application of list_enumeration.
bool is_in_function_symbol(const atermpp::aterm &e)
Recogniser for function in.
const core::identifier_string & rhead_name()
Generate identifier rhead.
function_symbol_vector list_generate_functions_code(const sort_expression &s)
Give all system defined mappings for list.
const core::identifier_string & in_name()
Generate identifier in.
function_symbol in(const sort_expression &s)
Constructor for function symbol in.
bool is_rtail_function_symbol(const atermpp::aterm &e)
Recogniser for function rtail.
bool is_concat_application(const atermpp::aterm &e)
Recogniser for application of ++.
const core::identifier_string & head_name()
Generate identifier head.
application concat(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol ++.
const core::identifier_string & cons_name()
Generate identifier |>.
const core::identifier_string & concat_name()
Generate identifier ++.
function_symbol rtail(const sort_expression &s)
Constructor for function symbol rtail.
const core::identifier_string & count_name()
Generate identifier #.
void make_cons_(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol |>.
data_equation_vector list_generate_equations_code(const sort_expression &s)
Give all system defined equations for list.
void make_rhead(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol rhead.
bool is_tail_function_symbol(const atermpp::aterm &e)
Recogniser for function tail.
application rhead(const sort_expression &s, const data_expression &arg0)
Application of function symbol rhead.
function_symbol_vector list_mCRL2_usable_mappings(const sort_expression &s)
Give all system defined mappings that can be used in mCRL2 specs for list.
implementation_map list_cpp_implementable_constructors(const sort_expression &)
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
bool is_in_application(const atermpp::aterm &e)
Recogniser for application of in.
function_symbol_vector list_generate_constructors_and_functions_code(const sort_expression &s)
Give all system defined mappings and constructors for list.
application rtail(const sort_expression &s, const data_expression &arg0)
Application of function symbol rtail.
bool is_rtail_application(const atermpp::aterm &e)
Recogniser for application of rtail.
function_symbol empty(const sort_expression &s)
Constructor for function symbol [].
application tail(const sort_expression &s, const data_expression &arg0)
Application of function symbol tail.
function_symbol element_at(const sort_expression &s)
Constructor for function symbol ..
const core::identifier_string & empty_name()
Generate identifier [].
function_symbol_vector list_generate_constructors_code(const sort_expression &s)
Give all system defined constructors for list.
void make_concat(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol ++.
application cons_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol |>.
void make_in(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol in.
const core::identifier_string & element_at_name()
Generate identifier ..
function_symbol head(const sort_expression &s)
Constructor for function symbol head.
bool is_cons_application(const atermpp::aterm &e)
Recogniser for application of |>.
bool is_snoc_application(const atermpp::aterm &e)
Recogniser for application of <|.
function_symbol list_enumeration(const sort_expression &s)
Constructor for function symbol list_enumeration.
container_sort list(const sort_expression &s)
Constructor for sort expression List(S)
function_symbol snoc(const sort_expression &s)
Constructor for function symbol <|.
function_symbol count(const sort_expression &s)
Constructor for function symbol #.
bool is_element_at_application(const atermpp::aterm &e)
Recogniser for application of ..
core::identifier_string const & list_enumeration_name()
Generate identifier list_enumeration.
application list(const sort_expression &s, Sequence const &range, typename atermpp::enable_if_container< Sequence, data_expression >::type *=nullptr)
Constructs a list expression from a range of expressions.
data_expression list_enumeration(const sort_expression &s, data_expression_list const &range)
Application of function symbol list_enumeration.
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
implementation_map list_cpp_implementable_mappings(const sort_expression &)
Give all system defined mappings that are to be implemented in C++ code for list.
void make_head(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol head.
function_symbol rhead(const sort_expression &s)
Constructor for function symbol rhead.
void make_element_at(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol ..
bool is_count_application(const atermpp::aterm &e)
Recogniser for application of #.
void make_rtail(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol rtail.
bool is_head_application(const atermpp::aterm &e)
Recogniser for application of head.
void make_count(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol #.
function_symbol tail(const sort_expression &s)
Constructor for function symbol tail.
data_expression list_enumeration(const sort_expression &s, Sequence const &range, typename atermpp::enable_if_container< Sequence, data_expression >::type *=nullptr)
Application of function symbol list_enumeration.
void make_tail(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol tail.
function_symbol cons_(const sort_expression &s)
Constructor for function symbol |>.
bool is_cons_function_symbol(const atermpp::aterm &e)
Recogniser for function |>.
bool is_concat_function_symbol(const atermpp::aterm &e)
Recogniser for function ++.
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
bool is_head_function_symbol(const atermpp::aterm &e)
Recogniser for function head.
bool is_empty_function_symbol(const atermpp::aterm &e)
Recogniser for function [].
function_symbol concat(const sort_expression &s)
Constructor for function symbol ++.
bool is_list(const sort_expression &e)
Recogniser for sort expression List(s)
application count(const sort_expression &s, const data_expression &arg0)
Application of function symbol #.
application element_at(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol ..
application in(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol in.
application snoc(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol <|.
bool is_list_enumeration_function_symbol(const atermpp::aterm &e)
Recogniser for function list_enumeration.
const machine_number & four_word()
std::size_t shift_right(const data_expression &e1, const std::size_t n)
bool equals_zero_word(const std::size_t n)
std::size_t div_word(const std::size_t n1, const std::size_t n2)
std::size_t succ_word(const std::size_t n)
bool less_word(const std::size_t n1, const std::size_t n2)
std::size_t pred_word(const std::size_t n)
std::size_t add_word(const std::size_t n1, const std::size_t n2)
const machine_number & one_word()
bool equals_max_word(const std::size_t n)
std::size_t sqrt_word(const std::size_t n)
const machine_number & max_word()
bool equal_word(const std::size_t n1, const std::size_t n2)
std::size_t times_word(const std::size_t n1, const std::size_t n2)
bool add_overflow_word(const std::size_t n1, const std::size_t n2)
std::size_t monus_word(const std::size_t n1, const std::size_t n2)
bool add_with_carry_overflow_word(const std::size_t n1, const std::size_t n2)
std::size_t minus_word(const std::size_t n1, const std::size_t n2)
Performs minus modulo the largest std::size_t.
std::size_t add_with_carry_word(const std::size_t n1, const std::size_t n2)
const machine_number & three_word()
bool less_equal_word(const std::size_t n1, const std::size_t n2)
bool equals_one_word(const std::size_t n)
std::size_t mod_word(const std::size_t n1, const std::size_t n2)
const machine_number & two_word()
std::size_t times_with_carry_word(const std::size_t n1, const std::size_t n2, const std::size_t n3)
const machine_number & zero_word()
void rightmost_bit(data_expression &result, const std::size_t n)
Namespace for system defined sort machine_word.
void make_add_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @add_word.
application div_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @div_word.
void equals_max_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
void max_word_application(data_expression &result, const data_expression &a)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
void make_not_equals_zero_word(data_expression &result, const data_expression &arg0)
Make an application of function symbol @not_equals_zero_word.
bool is_equals_zero_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @equals_zero_word.
void sqrt_quadrupleword_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
bool is_zero_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @zero_word.
const function_symbol & sqrt_word()
Constructor for function symbol @sqrt_word.
const core::identifier_string & equal_word_name()
Generate identifier @equal.
bool is_mod_doubleword_function_symbol(const atermpp::aterm &e)
Recogniser for function @mod_doubleword.
const core::identifier_string & sqrt_doubleword_name()
Generate identifier @sqrt_doubleword.
bool is_add_word_application(const atermpp::aterm &e)
Recogniser for application of @add_word.
void times_with_carry_overflow_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2, const data_expression &e3)
The result of multiplying two words and adding a third divided by the maximal representable machine w...
void succ_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
application times_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @times_word.
void sqrt_tripleword_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2, const data_expression &e3)
Calculates the least significant word of the square root of base*(base*e1+e2)+e3.
bool is_equal_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @equal.
void sqrt_tripleword_overflow_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
implementation_map machine_word_cpp_implementable_mappings()
Give all system defined mappings that are to be implemented in C++ code for machine_word.
void pred_word_manual_implementation(data_expression &result, const data_expression &e)
The predecessor function on a machine numbers, that wraps around.
bool is_div_doubleword_application(const atermpp::aterm &e)
Recogniser for application of @div_doubleword.
application sqrt_tripleword_overflow(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @sqrt_tripleword_overflow.
void make_mod_doubleword(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @mod_doubleword.
bool is_div_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @div_word.
void equals_one_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
void add_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
The result of adding two words modulo the maximal representable machine word plus 1.
void make_rightmost_bit(data_expression &result, const data_expression &arg0)
Make an application of function symbol @rightmost_bit.
void two_word_manual_implementation(data_expression &result)
The machine number representing 2.
bool is_not_equals_zero_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @not_equals_zero_word.
void equals_zero_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
bool is_equals_one_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @equals_one_word.
bool is_equals_one_word_application(const atermpp::aterm &e)
Recogniser for application of @equals_one_word.
const function_symbol & add_word()
Constructor for function symbol @add_word.
const core::identifier_string & minus_word_name()
Generate identifier @minus_word.
void make_div_doubleword(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @div_doubleword.
void make_add_overflow_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @add_overflow_word.
const core::identifier_string & one_word_name()
Generate identifier @one_word.
const function_symbol & not_equal_word()
Constructor for function symbol @not_equal.
void shift_right_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
The machine word shifted one position to the right.
function_symbol_vector machine_word_mCRL2_usable_mappings()
Give all system defined mappings that can be used in mCRL2 specs for machine_word.
const function_symbol & div_double_doubleword()
Constructor for function symbol @div_double_doubleword.
void make_succ_word(data_expression &result, const data_expression &arg0)
Make an application of function symbol @succ_word.
bool is_equal_word_application(const atermpp::aterm &e)
Recogniser for application of @equal.
const core::identifier_string & sqrt_quadrupleword_overflow_name()
Generate identifier @sqrt_quadrupleword_overflow.
const core::identifier_string & less_word_name()
Generate identifier @less.
bool is_max_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @max_word.
bool is_succ_word_application(const atermpp::aterm &e)
Recogniser for application of @succ_word.
bool is_times_with_carry_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @times_with_carry_word.
void mod_doubleword_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
const core::identifier_string & rightmost_bit_name()
Generate identifier @rightmost_bit.
const core::identifier_string & div_word_name()
Generate identifier @div_word.
const core::identifier_string & sqrt_quadrupleword_name()
Generate identifier @sqrt_quadrupleword.
bool is_add_with_carry_overflow_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @add_with_carry_overflow_word.
void times_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
The result of multiplying two words modulo the maximal representable machine word plus 1.
bool is_sqrt_doubleword_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_doubleword.
void make_times_with_carry_overflow_word(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @times_with_carry_overflow_word.
bool is_greater_equal_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @greater_equal.
void make_equals_zero_word(data_expression &result, const data_expression &arg0)
Make an application of function symbol @equals_zero_word.
bool is_four_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @four_word.
bool is_not_equal_word_application(const atermpp::aterm &e)
Recogniser for application of @not_equal.
const function_symbol & div_word()
Constructor for function symbol @div_word.
void equals_zero_word_manual_implementation(data_expression &result, const data_expression &e)
Checks whether the argument is equal to 0.
void make_monus_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @monus_word.
bool is_sqrt_quadrupleword_overflow_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_quadrupleword_overflow.
bool is_mod_doubleword_application(const atermpp::aterm &e)
Recogniser for application of @mod_doubleword.
bool is_add_with_carry_overflow_word_application(const atermpp::aterm &e)
Recogniser for application of @add_with_carry_overflow_word.
void div_triple_doubleword_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2, const data_expression &e3, const data_expression &e4, const data_expression &e5)
Calculates (base*(base*e1 + e2)+e3) div (base*e4 + e5).
const function_symbol & pred_word()
Constructor for function symbol @pred_word.
const core::identifier_string & zero_word_name()
Generate identifier @zero_word.
void not_equal_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
bool is_greater_equal_word_application(const atermpp::aterm &e)
Recogniser for application of @greater_equal.
const function_symbol & equals_max_word()
Constructor for function symbol @equals_max_word.
const core::identifier_string & equals_max_word_name()
Generate identifier @equals_max_word.
const function_symbol & greater_word()
Constructor for function symbol @greater.
const core::identifier_string & equals_zero_word_name()
Generate identifier @equals_zero_word.
const core::identifier_string & greater_equal_word_name()
Generate identifier @greater_equal.
void times_overflow_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
const core::identifier_string & add_word_name()
Generate identifier @add_word.
const function_symbol & equals_one_word()
Constructor for function symbol @equals_one_word.
function_symbol_vector machine_word_generate_functions_code()
Give all system defined mappings for machine_word.
void zero_word_manual_implementation(data_expression &result)
The machine number representing 0.
const function_symbol & mod_word()
Constructor for function symbol @mod_word.
const function_symbol & div_doubleword()
Constructor for function symbol @div_doubleword.
const function_symbol & succ_word()
Constructor for function symbol @succ_word.
application div_double_doubleword(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @div_double_doubleword.
const core::identifier_string & pred_word_name()
Generate identifier @pred_word.
bool is_shift_right_application(const atermpp::aterm &e)
Recogniser for application of @shift_right.
bool is_greater_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @greater.
bool is_sqrt_doubleword_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_doubleword.
const core::identifier_string & less_equal_word_name()
Generate identifier @less_equal.
bool is_times_overflow_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @times_overflow_word.
void times_with_carry_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2, const data_expression &e3)
The result of multiplying two words and adding the third modulo the maximal representable machine wor...
bool is_div_triple_doubleword_function_symbol(const atermpp::aterm &e)
Recogniser for function @div_triple_doubleword.
bool is_div_double_doubleword_application(const atermpp::aterm &e)
Recogniser for application of @div_double_doubleword.
const function_symbol & sqrt_quadrupleword_overflow()
Constructor for function symbol @sqrt_quadrupleword_overflow.
const function_symbol & less_word()
Constructor for function symbol @less.
bool is_less_word_application(const atermpp::aterm &e)
Recogniser for application of @less.
const core::identifier_string & monus_word_name()
Generate identifier @monus_word.
bool is_div_doubleword_function_symbol(const atermpp::aterm &e)
Recogniser for function @div_doubleword.
void make_less_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @less.
application add_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @add_word.
const basic_sort & machine_word()
Constructor for sort expression @word.
bool is_two_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @two_word.
application not_equal_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @not_equal.
void make_sqrt_quadrupleword(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 @sqrt_quadrupleword.
void three_word_manual_implementation(data_expression &result)
The machine number representing 3.
const core::identifier_string & sqrt_word_name()
Generate identifier @sqrt_word.
bool is_minus_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @minus_word.
const function_symbol & add_with_carry_word()
Constructor for function symbol @add_with_carry_word.
application div_triple_doubleword(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Application of function symbol @div_triple_doubleword.
void make_greater_equal_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @greater_equal.
void times_overflow_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
The result of multiplying two words divided by the maximal representable machine word plus 1.
const function_symbol & four_word()
Constructor for function symbol @four_word.
void make_sqrt_quadrupleword_overflow(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 @sqrt_quadrupleword_overflow.
void sqrt_quadrupleword_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2, const data_expression &e3, const data_expression &e4)
Calculates the least significant word of the square root of base*(base*(base*e1+e2)+e3)+e4.
bool is_times_with_carry_overflow_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @times_with_carry_overflow_word.
const function_symbol & monus_word()
Constructor for function symbol @monus_word.
application sqrt_quadrupleword(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @sqrt_quadrupleword.
void make_add_with_carry_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @add_with_carry_word.
bool is_sqrt_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_word.
application sqrt_quadrupleword_overflow(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @sqrt_quadrupleword_overflow.
bool is_succ_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @succ_word.
void add_overflow_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
const core::identifier_string & div_triple_doubleword_name()
Generate identifier @div_triple_doubleword.
void sqrt_tripleword_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
void make_add_with_carry_overflow_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @add_with_carry_overflow_word.
function_symbol_vector machine_word_generate_constructors_code()
Give all system defined constructors for machine_word.
application monus_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @monus_word.
bool is_add_with_carry_word_application(const atermpp::aterm &e)
Recogniser for application of @add_with_carry_word.
application sqrt_word(const data_expression &arg0)
Application of function symbol @sqrt_word.
void one_word_application(data_expression &result, const data_expression &a)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
application greater_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @greater.
void mod_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
application mod_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @mod_word.
void not_equal_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
The non equality function on two machine words.
const core::identifier_string & three_word_name()
Generate identifier @three_word.
void equal_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
const core::identifier_string & mod_word_name()
Generate identifier @mod_word.
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
const core::identifier_string & sqrt_tripleword_name()
Generate identifier @sqrt_tripleword.
void make_div_double_doubleword(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 @div_double_doubleword.
void make_sqrt_tripleword_overflow(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @sqrt_tripleword_overflow.
void make_minus_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @minus_word.
const function_symbol & sqrt_tripleword_overflow()
Constructor for function symbol @sqrt_tripleword_overflow.
const core::identifier_string & mod_doubleword_name()
Generate identifier @mod_doubleword.
const function_symbol & sqrt_quadrupleword()
Constructor for function symbol @sqrt_quadrupleword.
void shift_right_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
void div_triple_doubleword_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
void less_equal_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
The less than or equal function on two machine words.
const function_symbol & equals_zero_word()
Constructor for function symbol @equals_zero_word.
const function_symbol & minus_word()
Constructor for function symbol @minus_word.
void div_double_doubleword_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
bool is_three_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @three_word.
application sqrt_tripleword(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @sqrt_tripleword.
void monus_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
bool is_sqrt_quadrupleword_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_quadrupleword.
bool is_one_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @one_word.
const data_expression & arg4(const data_expression &e)
Function for projecting out argument. arg4 from an application.
void three_word_application(data_expression &result, const data_expression &a)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
const data_expression & arg5(const data_expression &e)
Function for projecting out argument. arg5 from an application.
application equals_zero_word(const data_expression &arg0)
Application of function symbol @equals_zero_word.
bool is_sqrt_tripleword_overflow_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_tripleword_overflow.
const function_symbol & one_word()
Constructor for function symbol @one_word.
void make_times_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @times_word.
const core::identifier_string & greater_word_name()
Generate identifier @greater.
const core::identifier_string & two_word_name()
Generate identifier @two_word.
const function_symbol & max_word()
Constructor for function symbol @max_word.
bool is_monus_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @monus_word.
const function_symbol & greater_equal_word()
Constructor for function symbol @greater_equal.
bool is_pred_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @pred_word.
const function_symbol & add_with_carry_overflow_word()
Constructor for function symbol @add_with_carry_overflow_word.
const function_symbol & times_with_carry_word()
Constructor for function symbol @times_with_carry_word.
void sqrt_tripleword_overflow_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2, const data_expression &e3)
Calculates the most significant word of the square root of base*(base*e1+e2)+e3.
bool is_add_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @add_word.
void sqrt_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
const core::identifier_string & times_word_name()
Generate identifier @times_word.
void make_shift_right(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @shift_right.
void add_with_carry_overflow_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
void make_div_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @div_word.
bool is_monus_word_application(const atermpp::aterm &e)
Recogniser for application of @monus_word.
void make_greater_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @greater.
application times_with_carry_word(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @times_with_carry_word.
void sqrt_doubleword_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
The square root of base*e1+e2 rounded down.
const core::identifier_string & times_overflow_word_name()
Generate identifier @times_overflow_word.
void not_equals_zero_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
bool is_shift_right_function_symbol(const atermpp::aterm &e)
Recogniser for function @shift_right.
void make_equals_one_word(data_expression &result, const data_expression &arg0)
Make an application of function symbol @equals_one_word.
void make_less_equal_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @less_equal.
void four_word_application(data_expression &result, const data_expression &a)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
application succ_word(const data_expression &arg0)
Application of function symbol @succ_word.
const function_symbol & three_word()
Constructor for function symbol @three_word.
void greater_equal_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
The greater than or equal function on two machine words.
bool is_less_equal_word_application(const atermpp::aterm &e)
Recogniser for application of @less_equal.
void greater_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
const function_symbol & times_with_carry_overflow_word()
Constructor for function symbol @times_with_carry_overflow_word.
application equals_one_word(const data_expression &arg0)
Application of function symbol @equals_one_word.
void less_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
void make_sqrt_word(data_expression &result, const data_expression &arg0)
Make an application of function symbol @sqrt_word.
application add_overflow_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @add_overflow_word.
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
application shift_right(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @shift_right.
application times_overflow_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @times_overflow_word.
application not_equals_zero_word(const data_expression &arg0)
Application of function symbol @not_equals_zero_word.
bool is_div_word_application(const atermpp::aterm &e)
Recogniser for application of @div_word.
const core::identifier_string & add_with_carry_overflow_word_name()
Generate identifier @add_with_carry_overflow_word.
void div_double_doubleword_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2, const data_expression &e3, const data_expression &e4)
Calculates (base*e1 + e2) div (base*e3 + e4).
const function_symbol & div_triple_doubleword()
Constructor for function symbol @div_triple_doubleword.
bool is_not_equal_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @not_equal.
void make_div_triple_doubleword(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Make an application of function symbol @div_triple_doubleword.
void equals_one_word_manual_implementation(data_expression &result, const data_expression &e)
Checks whether the argument is equal to 1.
bool is_sqrt_quadrupleword_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_quadrupleword.
application minus_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @minus_word.
void make_times_overflow_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @times_overflow_word.
const function_symbol & times_overflow_word()
Constructor for function symbol @times_overflow_word.
bool is_times_with_carry_overflow_word_application(const atermpp::aterm &e)
Recogniser for application of @times_with_carry_overflow_word.
application less_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @less.
void sqrt_quadrupleword_overflow_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
void times_with_carry_overflow_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
void div_doubleword_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2, const data_expression &e3)
Calculates (base*e1 + e2) div e3.
void mod_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
Calculates e1 modulo e2.
const core::identifier_string & times_with_carry_word_name()
Generate identifier @times_with_carry_word.
const function_symbol & zero_word()
Constructor for function symbol @zero_word.
void greater_equal_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
void sqrt_quadrupleword_overflow_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2, const data_expression &e3, const data_expression &e4)
Calculates the most significant word of the square root of base*(base*(base*e1+e2)+e3)+e4.
void rightmost_bit_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
const core::identifier_string & succ_word_name()
Generate identifier @succ_word.
void times_with_carry_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
bool is_less_equal_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @less_equal.
application pred_word(const data_expression &arg0)
Application of function symbol @pred_word.
bool is_times_overflow_word_application(const atermpp::aterm &e)
Recogniser for application of @times_overflow_word.
bool is_sqrt_tripleword_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_tripleword.
void not_equals_zero_word_manual_implementation(data_expression &result, const data_expression &e)
Checks whether the argument is not equal to 0.
void less_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
The less than function on two machine words.
const core::identifier_string & not_equals_zero_word_name()
Generate identifier @not_equals_zero_word.
const core::identifier_string & add_with_carry_word_name()
Generate identifier @add_with_carry_word.
void minus_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
bool is_times_word_application(const atermpp::aterm &e)
Recogniser for application of @times_word.
bool is_not_equals_zero_word_application(const atermpp::aterm &e)
Recogniser for application of @not_equals_zero_word.
void make_pred_word(data_expression &result, const data_expression &arg0)
Make an application of function symbol @pred_word.
const core::identifier_string & add_overflow_word_name()
Generate identifier @add_overflow_word.
void make_equal_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @equal.
application times_with_carry_overflow_word(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @times_with_carry_overflow_word.
bool is_add_overflow_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @add_overflow_word.
bool is_rightmost_bit_application(const atermpp::aterm &e)
Recogniser for application of @rightmost_bit.
bool is_sqrt_quadrupleword_overflow_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_quadrupleword_overflow.
const core::identifier_string & div_doubleword_name()
Generate identifier @div_doubleword.
bool is_add_with_carry_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @add_with_carry_word.
application equal_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @equal.
void max_word_manual_implementation(data_expression &result)
The largest representable machine number.
bool is_less_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @less.
application mod_doubleword(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @mod_doubleword.
const function_symbol & not_equals_zero_word()
Constructor for function symbol @not_equals_zero_word.
const function_symbol & equal_word()
Constructor for function symbol @equal.
bool is_machine_word(const sort_expression &e)
Recogniser for sort expression @word.
const core::identifier_string & not_equal_word_name()
Generate identifier @not_equal.
const function_symbol & mod_doubleword()
Constructor for function symbol @mod_doubleword.
void add_with_carry_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
The result of adding two words plus 1 modulo the maximal representable machine word plus 1.
application sqrt_doubleword(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @sqrt_doubleword.
application greater_equal_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @greater_equal.
const function_symbol & sqrt_tripleword()
Constructor for function symbol @sqrt_tripleword.
application rightmost_bit(const data_expression &arg0)
Application of function symbol @rightmost_bit.
void make_times_with_carry_word(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @times_with_carry_word.
bool is_times_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @times_word.
void times_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
const function_symbol & rightmost_bit()
Constructor for function symbol @rightmost_bit.
void sqrt_doubleword_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
const core::identifier_string & sqrt_tripleword_overflow_name()
Generate identifier @sqrt_tripleword_overflow.
application equals_max_word(const data_expression &arg0)
Application of function symbol @equals_max_word.
application add_with_carry_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @add_with_carry_word.
bool is_pred_word_application(const atermpp::aterm &e)
Recogniser for application of @pred_word.
void one_word_manual_implementation(data_expression &result)
The machine number representing 1.
void make_sqrt_tripleword(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @sqrt_tripleword.
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
const function_symbol & less_equal_word()
Constructor for function symbol @less_equal.
void div_doubleword_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
void equal_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
The equality function on two machine words.
bool is_equals_max_word_application(const atermpp::aterm &e)
Recogniser for application of @equals_max_word.
bool is_greater_word_application(const atermpp::aterm &e)
Recogniser for application of @greater.
bool is_sqrt_word_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_word.
void four_word_manual_implementation(data_expression &result)
The machine number representing 4.
bool is_sqrt_tripleword_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_tripleword.
bool is_equals_max_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @equals_max_word.
void minus_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
The result of subtracting two words modulo the maximal representable machine word plus 1.
void succ_word_manual_implementation(data_expression &result, const data_expression &e)
The successor function on a machine numbers, that wraps around.
implementation_map machine_word_cpp_implementable_constructors()
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
void equals_max_word_manual_implementation(data_expression &result, const data_expression &e)
Checks whether the argument is equal to the largest 64 bit number.
void mod_doubleword_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2, const data_expression &e3)
Calculates (base*e1 + e2) mod e3. The result fits in one word.
bool is_add_overflow_word_application(const atermpp::aterm &e)
Recogniser for application of @add_overflow_word.
void add_with_carry_overflow_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
An indication whether an overflow occurs when e1 and e2 are added.
void pred_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
void add_overflow_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
An indication whether an overflow occurs when e1 and e2 are added.
data_equation_vector machine_word_generate_equations_code()
Give all system defined equations for machine_word.
const core::identifier_string & machine_word_name()
application less_equal_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @less_equal.
const core::identifier_string & four_word_name()
Generate identifier @four_word.
void mod_double_doubleword_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2, const data_expression &e3, const data_expression &e4)
Calculates (base*e1 + e2) mod (base*e3 + e4).
application add_with_carry_overflow_word(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @add_with_carry_overflow_word.
void sqrt_word_manual_implementation(data_expression &result, const data_expression &e)
The square root of e, rounded down to a machine word.
void div_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
const function_symbol & times_word()
Constructor for function symbol @times_word.
void zero_word_application(data_expression &result, const data_expression &a)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
bool is_equals_zero_word_application(const atermpp::aterm &e)
Recogniser for application of @equals_zero_word.
void add_with_carry_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
const core::identifier_string & shift_right_name()
Generate identifier @shift_right.
const core::identifier_string & div_double_doubleword_name()
Generate identifier @div_double_doubleword.
const core::identifier_string & max_word_name()
Generate identifier @max_word.
const core::identifier_string & equals_one_word_name()
Generate identifier @equals_one_word.
bool is_minus_word_application(const atermpp::aterm &e)
Recogniser for application of @minus_word.
function_symbol_vector machine_word_generate_constructors_and_functions_code()
Give all system defined mappings and constructors for machine_word.
bool is_div_double_doubleword_function_symbol(const atermpp::aterm &e)
Recogniser for function @div_double_doubleword.
function_symbol_vector machine_word_mCRL2_usable_constructors()
Give all defined constructors which can be used in mCRL2 specs for machine_word.
bool is_rightmost_bit_function_symbol(const atermpp::aterm &e)
Recogniser for function @rightmost_bit.
void rightmost_bit_manual_implementation(data_expression &result, const data_expression &e)
The right most bit of a machine number.
void two_word_application(data_expression &result, const data_expression &a)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
void greater_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
The greater than function on two machine words.
bool is_mod_word_application(const atermpp::aterm &e)
Recogniser for application of @mod_word.
bool is_sqrt_tripleword_overflow_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_tripleword_overflow.
void make_sqrt_doubleword(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @sqrt_doubleword.
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
const function_symbol & sqrt_doubleword()
Constructor for function symbol @sqrt_doubleword.
const core::identifier_string & times_with_carry_overflow_word_name()
Generate identifier @times_with_carry_overflow_word.
void div_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
Calculates the division of the first word by the second.
void make_equals_max_word(data_expression &result, const data_expression &arg0)
Make an application of function symbol @equals_max_word.
bool is_times_with_carry_word_application(const atermpp::aterm &e)
Recogniser for application of @times_with_carry_word.
void make_mod_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @mod_word.
void less_equal_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
bool is_mod_word_function_symbol(const atermpp::aterm &e)
Recogniser for function @mod_word.
void add_word_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
bool is_div_triple_doubleword_application(const atermpp::aterm &e)
Recogniser for application of @div_triple_doubleword.
application div_doubleword(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @div_doubleword.
const function_symbol & shift_right()
Constructor for function symbol @shift_right.
const function_symbol & two_word()
Constructor for function symbol @two_word.
void monus_word_manual_implementation(data_expression &result, const data_expression &e1, const data_expression &e2)
The result of subtracting two words. If the result is negative 0 is returned.
const function_symbol & add_overflow_word()
Constructor for function symbol @add_overflow_word.
void make_not_equal_word(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @not_equal.
Namespace for system defined sort nat.
bool is_sqrt_pair_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_pair.
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.
application cpair(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @cPair.
bool is_cpair_application(const atermpp::aterm &e)
Recogniser for application of @cPair.
bool is_monus_whr_application(const atermpp::aterm &e)
Recogniser for application of @monus_whr.
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.
void make_sqrt_whr2(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Make an application of function symbol @sqrt_whr2.
bool is_natpred_function_symbol(const atermpp::aterm &e)
Recogniser for function @natpred.
void make_sqrt_whr1(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 @sqrt_whr1.
function_symbol maximum(const sort_expression &s0, const sort_expression &s1)
const core::identifier_string & sqrt_pair_name()
Generate identifier @sqrt_pair.
const core::identifier_string & sqrt_nat_aux_func_name()
Generate identifier @sqrt_nat.
const core::identifier_string & sqrt_pair_whr5_name()
Generate identifier @sqrt_pair_whr5.
const data_expression & arg5(const data_expression &e)
Function for projecting out argument. arg5 from an application.
void make_div_whr2(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Make an application of function symbol @div_whr2.
void make_sqrt_pair_whr1(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 @sqrt_pair_whr1.
bool is_pos2nat_function_symbol(const atermpp::aterm &e)
Recogniser for function Pos2Nat.
const core::identifier_string & most_significant_digit_nat_name()
Generate identifier @most_significant_digitNat.
bool is_sqrt_pair_whr5_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_pair_whr5.
const core::identifier_string & natnatpair_name()
function_symbol succ(const sort_expression &s0)
application divmod_aux_whr6(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Application of function symbol @divmod_aux_whr6.
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.
const function_symbol & pred_whr()
Constructor for function symbol @pred_whr.
bool is_gte_subtract_with_borrow_function_symbol(const atermpp::aterm &e)
Recogniser for function @gtesubtb.
application divmod_aux(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @divmod_aux.
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_times_overflow(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @times_overflow.
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.
application divmod_aux_whr3(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Application of function symbol @divmod_aux_whr3.
bool is_sqrt_pair_whr6_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_pair_whr6.
bool is_equals_zero_function_symbol(const atermpp::aterm &e)
Recogniser for function @equals_zero.
void make_div_bold_whr(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4, const data_expression &arg5)
Make an application of function symbol @div_bold_whr.
bool is_sqrt_whr1_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_whr1.
function_symbol times_ordered(const sort_expression &s0, const sort_expression &s1)
application nnpair(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @nnPair.
const core::identifier_string & mod_whr1_name()
Generate identifier @mod_whr1.
application sqrt_nat_aux_func(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @sqrt_nat.
bool is_sqrt_pair_whr3_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_pair_whr3.
const core::identifier_string & divmod_aux_whr5_name()
Generate identifier @divmod_aux_whr5.
application exp_aux4n(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @exp_aux4n.
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.
application generalised_divmod(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @gdivmod.
const core::identifier_string & equals_one_name()
Generate identifier @equals_one.
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 & divmod_aux_whr3()
Constructor for function symbol @divmod_aux_whr3.
const function_symbol & gte_subtract_with_borrow()
Constructor for function symbol @gtesubtb.
function_symbol concat_digit(const sort_expression &s0, const sort_expression &s1)
const core::identifier_string & exp_auxfalsen_name()
Generate identifier @exp_auxfalsen.
bool is_times_overflow_application(const atermpp::aterm &e)
Recogniser for application of @times_overflow.
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.
bool is_equals_zero_application(const atermpp::aterm &e)
Recogniser for application of @equals_zero.
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.
application sqrt_pair_whr3(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @sqrt_pair_whr3.
const function_symbol & divmod()
Constructor for function symbol @divmod.
bool is_pos2nat_application(const atermpp::aterm &e)
Recogniser for application of Pos2Nat.
bool is_sqrt_pair_whr2_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_pair_whr2.
const function_symbol & cnat()
Constructor for function symbol @cNat.
application add_with_carry(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @add_with_carry.
application exp_auxtruen(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @exp_auxtruen.
application dubsucc(const data_expression &arg0)
Application of function symbol @dubsucc.
void make_pred(data_expression &result, const data_expression &arg0)
Make an application of function symbol pred.
application exp_aux3p(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @exp_aux3p.
void make_times_ordered(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @times_ordered.
const core::identifier_string & sqrt_pair_whr1_name()
Generate identifier @sqrt_pair_whr1.
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 & exp_auxfalsep_name()
Generate identifier @exp_auxfalsep.
application divmod_aux_whr5(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @divmod_aux_whr5.
application minimum(const data_expression &arg0, const data_expression &arg1)
Application of function symbol min.
bool is_exp_auxfalsen_application(const atermpp::aterm &e)
Recogniser for application of @exp_auxfalsen.
application sqrt_pair_whr2(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Application of function symbol @sqrt_pair_whr2.
bool is_nnpair_function_symbol(const atermpp::aterm &e)
Recogniser for function @nnPair.
const core::identifier_string & times_name()
Generate identifier *.
const function_symbol & div_whr1()
Constructor for function symbol @div_whr1.
bool is_divmod_aux_whr6_function_symbol(const atermpp::aterm &e)
Recogniser for function @divmod_aux_whr6.
const function_symbol & dubsucc()
Constructor for function symbol @dubsucc.
void make_monus_whr(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Make an application of function symbol @monus_whr.
bool is_divmod_aux_whr2_application(const atermpp::aterm &e)
Recogniser for application of @divmod_aux_whr2.
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.
bool is_sqrt_pair_whr4_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_pair_whr4.
const function_symbol & cpair()
Constructor for function symbol @cPair.
const basic_sort & nat()
Constructor for sort expression Nat.
const function_symbol & exp_auxtruep()
Constructor for function symbol @exp_auxtruep.
void make_exp_auxtruep(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @exp_auxtruep.
const core::identifier_string & nat_name()
bool is_sqrt_pair_whr2_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_pair_whr2.
application exp(const data_expression &arg0, const data_expression &arg1)
Application of function symbol exp.
application concat_digit(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @concat_digit.
const core::identifier_string & equals_zero_name()
Generate identifier @equals_zero.
bool is_exp_auxfalsep_application(const atermpp::aterm &e)
Recogniser for application of @exp_auxfalsep.
const core::identifier_string & exp_name()
Generate identifier exp.
bool is_divmod_aux_whr4_function_symbol(const atermpp::aterm &e)
Recogniser for function @divmod_aux_whr4.
const function_symbol & swap_zero()
Constructor for function symbol @swap_zero.
const function_symbol & sqrt_pair_whr3()
Constructor for function symbol @sqrt_pair_whr3.
application swap_zero(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @swap_zero.
bool is_concat_digit_function_symbol(const atermpp::aterm &e)
Recogniser for function @concat_digit.
bool is_times_overflow_function_symbol(const atermpp::aterm &e)
Recogniser for function @times_overflow.
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...
application exp_auxfalsep(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @exp_auxfalsep.
bool is_nat(const sort_expression &e)
Recogniser for sort expression Nat.
bool is_pred_whr_application(const atermpp::aterm &e)
Recogniser for application of @pred_whr.
const core::identifier_string & auxiliary_plus_nat_name()
Generate identifier @plus_nat.
bool is_nnpair_application(const atermpp::aterm &e)
Recogniser for application of @nnPair.
void make_equals_zero(data_expression &result, const data_expression &arg0)
Make an application of function symbol @equals_zero.
const core::identifier_string & div_bold_name()
Generate identifier @div_bold.
application exp_aux4p(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @exp_aux4p.
application sqrt_pair_whr5(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Application of function symbol @sqrt_pair_whr5.
const core::identifier_string & exp_aux3n_name()
Generate identifier @exp_aux3n.
bool is_doubly_generalised_divmod_function_symbol(const atermpp::aterm &e)
Recogniser for function @ggdivmod.
void make_pred_whr(data_expression &result, const data_expression &arg0)
Make an application of function symbol @pred_whr.
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.
std::string natural_constant_as_string(const data_expression &n_in)
Return the string representation of a natural number.
application sqrt(const data_expression &arg0)
Application of function symbol sqrt.
application pos2nat(const data_expression &arg0)
Application of function symbol Pos2Nat.
const core::identifier_string & exp_aux4p_name()
Generate identifier @exp_aux4p.
void make_nat2pos(data_expression &result, const data_expression &arg0)
Make an application of function symbol Nat2Pos.
void make_succ_nat(data_expression &result, const data_expression &arg0)
Make an application of function symbol @succ_nat.
void make_divmod_aux_whr6(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Make an application of function symbol @divmod_aux_whr6.
bool is_mod_whr1_function_symbol(const atermpp::aterm &e)
Recogniser for function @mod_whr1.
application first(const data_expression &arg0)
Application of function symbol @first.
const function_symbol & div2()
Constructor for function symbol @div2.
void make_divmod_aux_whr1(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 @divmod_aux_whr1.
const core::identifier_string & plus_name()
Generate identifier +.
const core::identifier_string & natpair_name()
const function_symbol & div_whr2()
Constructor for function symbol @div_whr2.
const function_symbol & not_equals_zero()
Constructor for function symbol @not_equals_zero.
const function_symbol & sqrt_pair()
Constructor for function symbol @sqrt_pair.
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.
bool is_divmod_aux_whr1_application(const atermpp::aterm &e)
Recogniser for application of @divmod_aux_whr1.
const function_symbol & mod_whr1()
Constructor for function symbol @mod_whr1.
application monus_whr(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Application of function symbol @monus_whr.
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 & exp_aux3n()
Constructor for function symbol @exp_aux3n.
application succ_nat(const data_expression &arg0)
Application of function symbol @succ_nat.
const function_symbol & sqrt()
Constructor for function symbol sqrt.
void make_nnpair(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @nnPair.
application equals_zero(const data_expression &arg0)
Application of function symbol @equals_zero.
void make_dubsucc(data_expression &result, const data_expression &arg0)
Make an application of function symbol @dubsucc.
application even(const data_expression &arg0)
Application of function symbol @even.
bool is_add_with_carry_application(const atermpp::aterm &e)
Recogniser for application of @add_with_carry.
bool is_sqrt_whr1_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_whr1.
const function_symbol & doubly_generalised_divmod()
Constructor for function symbol @ggdivmod.
const function_symbol & exp_auxfalsen()
Constructor for function symbol @exp_auxfalsen.
bool is_divmod_aux_whr2_function_symbol(const atermpp::aterm &e)
Recogniser for function @divmod_aux_whr2.
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 & div_bold_whr_name()
Generate identifier @div_bold_whr.
const core::identifier_string & divmod_aux_name()
Generate identifier @divmod_aux.
void make_is_odd(data_expression &result, const data_expression &arg0)
Make an application of function symbol @is_odd.
const function_symbol & exp_auxtruen()
Constructor for function symbol @exp_auxtruen.
application times_ordered(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @times_ordered.
const function_symbol & sqrt_pair_whr2()
Constructor for function symbol @sqrt_pair_whr2.
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.
application not_equals_zero(const data_expression &arg0)
Application of function symbol @not_equals_zero.
const function_symbol & exp_auxfalsep()
Constructor for function symbol @exp_auxfalsep.
const core::identifier_string & sqrt_whr2_name()
Generate identifier @sqrt_whr2.
bool is_sqrt_pair_whr5_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_pair_whr5.
bool is_dub_function_symbol(const atermpp::aterm &e)
Recogniser for function @dub.
application cnat(const data_expression &arg0)
Application of function symbol @cNat.
bool is_div_bold_whr_application(const atermpp::aterm &e)
Recogniser for application of @div_bold_whr.
void make_exp_auxfalsen(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @exp_auxfalsen.
const function_symbol & natpred()
Constructor for function symbol @natpred.
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_div_whr1_function_symbol(const atermpp::aterm &e)
Recogniser for function @div_whr1.
application sqrt_pair_whr4(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4, const data_expression &arg5)
Application of function symbol @sqrt_pair_whr4.
bool is_is_odd_function_symbol(const atermpp::aterm &e)
Recogniser for function @is_odd.
bool is_exp_function_symbol(const atermpp::aterm &e)
Recogniser for function exp.
bool is_div_bold_application(const atermpp::aterm &e)
Recogniser for application of @div_bold.
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.
const core::identifier_string & divmod_aux_whr1_name()
Generate identifier @divmod_aux_whr1.
void make_divmod_aux_whr4(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 @divmod_aux_whr4.
void make_exp_aux4n(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 @exp_aux4n.
void make_divmod_aux_whr5(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 @divmod_aux_whr5.
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.
void make_div_bold(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @div_bold.
const function_symbol & swap_zero_min()
Constructor for function symbol @swap_zero_min.
application msd(const data_expression &arg0)
Application of function symbol @msd.
void make_sqrt_pair_whr4(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4, const data_expression &arg5)
Make an application of function symbol @sqrt_pair_whr4.
function_symbol minimum(const sort_expression &s0, const sort_expression &s1)
bool is_div2_function_symbol(const atermpp::aterm &e)
Recogniser for function @div2.
application div_whr1(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @div_whr1.
const core::identifier_string & divmod_aux_whr2_name()
Generate identifier @divmod_aux_whr2.
bool is_msd_function_symbol(const atermpp::aterm &e)
Recogniser for function @msd.
void make_exp_aux4p(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 @exp_aux4p.
const function_symbol & divmod_aux_whr6()
Constructor for function symbol @divmod_aux_whr6.
void make_most_significant_digit_nat(data_expression &result, const data_expression &arg0)
Make an application of function symbol @most_significant_digitNat.
const function_symbol & sqrt_nat_aux_func()
Constructor for function symbol @sqrt_nat.
const data_expression & arg6(const data_expression &e)
Function for projecting out argument. arg6 from an application.
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 core::identifier_string & not_equals_zero_name()
Generate identifier @not_equals_zero.
bool is_not_equals_zero_function_symbol(const atermpp::aterm &e)
Recogniser for function @not_equals_zero.
bool is_sqrt_whr2_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_whr2.
void make_exp_aux3n(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @exp_aux3n.
const core::identifier_string & divmod_aux_whr6_name()
Generate identifier @divmod_aux_whr6.
bool is_exp_auxfalsen_function_symbol(const atermpp::aterm &e)
Recogniser for function @exp_auxfalsen.
application sqrt_whr1(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @sqrt_whr1.
const function_symbol & div()
Constructor for function symbol div.
application last(const data_expression &arg0)
Application of function symbol @last.
bool is_sqrt_pair_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_pair.
const function_symbol & divmod_aux_whr5()
Constructor for function symbol @divmod_aux_whr5.
bool is_div_bold_whr_function_symbol(const atermpp::aterm &e)
Recogniser for function @div_bold_whr.
const function_symbol & is_odd()
Constructor for function symbol @is_odd.
const core::identifier_string & doubly_generalised_divmod_name()
Generate identifier @ggdivmod.
bool is_add_with_carry_function_symbol(const atermpp::aterm &e)
Recogniser for function @add_with_carry.
void make_succ(data_expression &result, const data_expression &arg0)
Make an application of function symbol succ.
const core::identifier_string & exp_aux3p_name()
Generate identifier @exp_aux3p.
application divmod_aux_whr1(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @divmod_aux_whr1.
const function_symbol & nnpair()
Constructor for function symbol @nnPair.
application sqrt_whr2(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Application of function symbol @sqrt_whr2.
const core::identifier_string & sqrt_pair_whr6_name()
Generate identifier @sqrt_pair_whr6.
bool is_maximum_function_symbol(const atermpp::aterm &e)
Recogniser for function max.
bool is_msd_application(const atermpp::aterm &e)
Recogniser for application of @msd.
bool is_gte_subtract_with_borrow_application(const atermpp::aterm &e)
Recogniser for application of @gtesubtb.
application sqrt_pair_whr1(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @sqrt_pair_whr1.
bool is_swap_zero_min_application(const atermpp::aterm &e)
Recogniser for application of @swap_zero_min.
bool is_succ_nat_function_symbol(const atermpp::aterm &e)
Recogniser for function @succ_nat.
function_symbol plus(const sort_expression &s0, const sort_expression &s1)
const core::identifier_string & dubsucc_name()
Generate identifier @dubsucc.
const basic_sort & natnatpair()
Constructor for sort expression @NatNatPair.
bool is_first_application(const atermpp::aterm &e)
Recogniser for application of @first.
void make_auxiliary_plus_nat(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @plus_nat.
bool is_equals_one_application(const atermpp::aterm &e)
Recogniser for application of @equals_one.
void make_divmod_aux(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @divmod_aux.
bool is_exp_aux4n_function_symbol(const atermpp::aterm &e)
Recogniser for function @exp_aux4n.
function_symbol add_with_carry(const sort_expression &s0, const sort_expression &s1)
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.
const core::identifier_string & exp_auxtruen_name()
Generate identifier @exp_auxtruen.
bool is_auxiliary_plus_nat_function_symbol(const atermpp::aterm &e)
Recogniser for function @plus_nat.
const function_symbol & msd()
Constructor for function symbol @msd.
application is_odd(const data_expression &arg0)
Application of function symbol @is_odd.
const function_symbol & sqrt_whr1()
Constructor for function symbol @sqrt_whr1.
void make_exp_auxtruen(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @exp_auxtruen.
bool is_pred_function_symbol(const atermpp::aterm &e)
Recogniser for function pred.
application div_whr2(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Application of function symbol @div_whr2.
const function_symbol & exp_aux4p()
Constructor for function symbol @exp_aux4p.
const core::identifier_string & msd_name()
Generate identifier @msd.
const function_symbol & exp_aux3p()
Constructor for function symbol @exp_aux3p.
void make_sqrt_pair_whr3(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @sqrt_pair_whr3.
const core::identifier_string & div2_name()
Generate identifier @div2.
bool is_times_ordered_application(const atermpp::aterm &e)
Recogniser for application of @times_ordered.
bool is_generalised_divmod_function_symbol(const atermpp::aterm &e)
Recogniser for function @gdivmod.
application swap_zero_add(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @swap_zero_add.
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 & nnpair_name()
Generate identifier @nnPair.
bool is_mod_whr1_application(const atermpp::aterm &e)
Recogniser for application of @mod_whr1.
const core::identifier_string & swap_zero_monus_name()
Generate identifier @swap_zero_monus.
bool is_exp_aux4n_application(const atermpp::aterm &e)
Recogniser for application of @exp_aux4n.
const core::identifier_string & div_whr2_name()
Generate identifier @div_whr2.
application gte_subtract_with_borrow(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @gtesubtb.
function_symbol_vector nat_generate_functions_code()
Give all system defined mappings for nat.
bool is_div_bold_function_symbol(const atermpp::aterm &e)
Recogniser for function @div_bold.
bool is_cpair_function_symbol(const atermpp::aterm &e)
Recogniser for function @cPair.
application div(const data_expression &arg0, const data_expression &arg1)
Application of function symbol div.
bool is_div_whr1_application(const atermpp::aterm &e)
Recogniser for application of @div_whr1.
const core::identifier_string & sqrt_whr1_name()
Generate identifier @sqrt_whr1.
bool is_exp_auxfalsep_function_symbol(const atermpp::aterm &e)
Recogniser for function @exp_auxfalsep.
bool is_divmod_function_symbol(const atermpp::aterm &e)
Recogniser for function @divmod.
bool is_exp_aux3n_application(const atermpp::aterm &e)
Recogniser for application of @exp_aux3n.
const core::identifier_string & times_overflow_name()
Generate identifier @times_overflow.
bool is_sqrt_pair_whr6_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_pair_whr6.
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 *.
const function_symbol & succ_nat()
Constructor for function symbol @succ_nat.
void make_exp_aux3p(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @exp_aux3p.
application swap_zero_min(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @swap_zero_min.
const function_symbol & div_bold_whr()
Constructor for function symbol @div_bold_whr.
const core::identifier_string & divmod_aux_whr4_name()
Generate identifier @divmod_aux_whr4.
bool is_c0_function_symbol(const atermpp::aterm &e)
Recogniser for function @c0.
application most_significant_digit_nat(const data_expression &arg0)
Application of function symbol @most_significant_digitNat.
const core::identifier_string & generalised_divmod_name()
Generate identifier @gdivmod.
application doubly_generalised_divmod(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @ggdivmod.
const function_symbol & nat2pos()
Constructor for function symbol Nat2Pos.
const core::identifier_string & monus_name()
Generate identifier @monus.
bool is_sqrt_whr2_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_whr2.
const core::identifier_string & sqrt_pair_whr4_name()
Generate identifier @sqrt_pair_whr4.
application monus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @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.
application dub(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @dub.
implementation_map nat_cpp_implementable_mappings()
Give all system defined mappings that are to be implemented in C++ code for nat.
application exp_aux3n(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @exp_aux3n.
bool is_sqrt_pair_whr4_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_pair_whr4.
const function_symbol & most_significant_digit_nat()
Constructor for function symbol @most_significant_digitNat.
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 function_symbol & exp_aux4n()
Constructor for function symbol @exp_aux4n.
application pred(const data_expression &arg0)
Application of function symbol pred.
bool is_divmod_aux_function_symbol(const atermpp::aterm &e)
Recogniser for function @divmod_aux.
application succ(const data_expression &arg0)
Application of function symbol succ.
bool is_divmod_aux_whr4_application(const atermpp::aterm &e)
Recogniser for application of @divmod_aux_whr4.
const function_symbol & sqrt_whr2()
Constructor for function symbol @sqrt_whr2.
bool is_sqrt_pair_whr3_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_pair_whr3.
const core::identifier_string & sqrt_pair_whr2_name()
Generate identifier @sqrt_pair_whr2.
bool is_divmod_aux_whr5_application(const atermpp::aterm &e)
Recogniser for application of @divmod_aux_whr5.
const core::identifier_string & sqrt_pair_whr3_name()
Generate identifier @sqrt_pair_whr3.
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.
bool is_divmod_aux_whr3_function_symbol(const atermpp::aterm &e)
Recogniser for function @divmod_aux_whr3.
void make_div_whr1(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 @div_whr1.
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 function_symbol & divmod_aux_whr1()
Constructor for function symbol @divmod_aux_whr1.
const core::identifier_string & cnat_name()
Generate identifier @cNat.
const function_symbol & sqrt_pair_whr1()
Constructor for function symbol @sqrt_pair_whr1.
application auxiliary_plus_nat(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @plus_nat.
void make_exp_auxfalsep(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @exp_auxfalsep.
const core::identifier_string & c0_name()
Generate identifier @c0.
application natpred(const data_expression &arg0)
Application of function symbol @natpred.
bool is_times_ordered_function_symbol(const atermpp::aterm &e)
Recogniser for function @times_ordered.
bool is_exp_auxtruep_function_symbol(const atermpp::aterm &e)
Recogniser for function @exp_auxtruep.
void make_concat_digit(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @concat_digit.
const function_symbol & monus_whr()
Constructor for function symbol @monus_whr.
application sqrt_pair(const data_expression &arg0)
Application of function symbol @sqrt_pair.
application divmod(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @divmod.
const function_symbol & div_bold()
Constructor for function symbol @div_bold.
bool is_swap_zero_add_function_symbol(const atermpp::aterm &e)
Recogniser for function @swap_zero_add.
bool is_exp_aux4p_application(const atermpp::aterm &e)
Recogniser for application of @exp_aux4p.
bool is_not_equals_zero_application(const atermpp::aterm &e)
Recogniser for application of @not_equals_zero.
application divmod_aux_whr2(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Application of function symbol @divmod_aux_whr2.
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.
bool is_exp_auxtruen_function_symbol(const atermpp::aterm &e)
Recogniser for function @exp_auxtruen.
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.
application exp_auxtruep(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @exp_auxtruep.
bool is_auxiliary_plus_nat_application(const atermpp::aterm &e)
Recogniser for application of @plus_nat.
application div2(const data_expression &arg0)
Application of function symbol @div2.
bool is_most_significant_digit_nat_function_symbol(const atermpp::aterm &e)
Recogniser for function @most_significant_digitNat.
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.
application divmod_aux_whr4(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @divmod_aux_whr4.
application div_bold(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @div_bold.
bool is_sqrt_nat_aux_func_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_nat.
bool is_concat_digit_application(const atermpp::aterm &e)
Recogniser for application of @concat_digit.
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
const core::identifier_string & add_with_carry_name()
Generate identifier @add_with_carry.
void make_sqrt_pair_whr6(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @sqrt_pair_whr6.
bool is_sqrt_function_symbol(const atermpp::aterm &e)
Recogniser for function sqrt.
bool is_divmod_aux_whr6_application(const atermpp::aterm &e)
Recogniser for application of @divmod_aux_whr6.
function_symbol times_overflow(const sort_expression &s0, const sort_expression &s1, const sort_expression &s2)
const core::identifier_string & divmod_aux_whr3_name()
Generate identifier @divmod_aux_whr3.
bool is_sqrt_pair_whr1_function_symbol(const atermpp::aterm &e)
Recogniser for function @sqrt_pair_whr1.
application mod(const data_expression &arg0, const data_expression &arg1)
Application of function symbol mod.
const function_symbol & sqrt_pair_whr5()
Constructor for function symbol @sqrt_pair_whr5.
bool is_div_whr2_function_symbol(const atermpp::aterm &e)
Recogniser for function @div_whr2.
bool is_cnat_function_symbol(const atermpp::aterm &e)
Recogniser for function @cNat.
const function_symbol & equals_zero()
Constructor for function symbol @equals_zero.
NUMERIC_TYPE natural_constant_to_value(const data_expression &n)
Return the NUMERIC_VALUE representation of a natural number.
bool is_divmod_aux_whr5_function_symbol(const atermpp::aterm &e)
Recogniser for function @divmod_aux_whr5.
void make_add_with_carry(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @add_with_carry.
function_symbol_vector nat_mCRL2_usable_constructors()
Give all defined constructors which can be used in mCRL2 specs for nat.
application exp_auxfalsen(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @exp_auxfalsen.
const function_symbol & last()
Constructor for function symbol @last.
bool is_exp_aux3p_application(const atermpp::aterm &e)
Recogniser for application of @exp_aux3p.
const core::identifier_string & exp_auxtruep_name()
Generate identifier @exp_auxtruep.
bool is_natpred_application(const atermpp::aterm &e)
Recogniser for application of @natpred.
bool is_pred_application(const atermpp::aterm &e)
Recogniser for application of pred.
void make_sqrt_pair_whr2(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Make an application of function symbol @sqrt_pair_whr2.
const core::identifier_string & is_odd_name()
Generate identifier @is_odd.
const core::identifier_string & exp_aux4n_name()
Generate identifier @exp_aux4n.
const function_symbol & auxiliary_plus_nat()
Constructor for function symbol @plus_nat.
bool is_plus_application(const atermpp::aterm &e)
Recogniser for application of +.
bool is_divmod_aux_whr1_function_symbol(const atermpp::aterm &e)
Recogniser for function @divmod_aux_whr1.
application maximum(const data_expression &arg0, const data_expression &arg1)
Application of function symbol max.
data_expression nat(T t)
Constructs expression of type pos from an integral type.
void make_swap_zero(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @swap_zero.
bool is_divmod_aux_application(const atermpp::aterm &e)
Recogniser for application of @divmod_aux.
void make_minimum(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol min.
bool is_exp_aux3n_function_symbol(const atermpp::aterm &e)
Recogniser for function @exp_aux3n.
const core::identifier_string & swap_zero_add_name()
Generate identifier @swap_zero_add.
application sqrt_pair_whr6(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @sqrt_pair_whr6.
bool is_dubsucc_function_symbol(const atermpp::aterm &e)
Recogniser for function @dubsucc.
const function_symbol & divmod_aux_whr2()
Constructor for function symbol @divmod_aux_whr2.
application div_bold_whr(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4, const data_expression &arg5)
Application of function symbol @div_bold_whr.
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
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.
void make_not_equals_zero(data_expression &result, const data_expression &arg0)
Make an application of function symbol @not_equals_zero.
function_symbol_vector nat_generate_constructors_code()
Give all system defined constructors for nat.
bool is_equals_one_function_symbol(const atermpp::aterm &e)
Recogniser for function @equals_one.
bool is_sqrt_pair_whr1_application(const atermpp::aterm &e)
Recogniser for application of @sqrt_pair_whr1.
const core::identifier_string & sqrt_name()
Generate identifier sqrt.
const function_symbol & divmod_aux()
Constructor for function symbol @divmod_aux.
void make_sqrt_pair(data_expression &result, const data_expression &arg0)
Make an application of function symbol @sqrt_pair.
const function_symbol & sqrt_pair_whr4()
Constructor for function symbol @sqrt_pair_whr4.
bool is_doubly_generalised_divmod_application(const atermpp::aterm &e)
Recogniser for application of @ggdivmod.
application equals_one(const data_expression &arg0)
Application of function symbol @equals_one.
bool is_last_function_symbol(const atermpp::aterm &e)
Recogniser for function @last.
application times(const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
const core::identifier_string & div_whr1_name()
Generate identifier @div_whr1.
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.
bool is_exp_auxtruen_application(const atermpp::aterm &e)
Recogniser for application of @exp_auxtruen.
bool is_is_odd_application(const atermpp::aterm &e)
Recogniser for application of @is_odd.
const core::identifier_string & divmod_name()
Generate identifier @divmod.
const core::identifier_string & monus_whr_name()
Generate identifier @monus_whr.
const core::identifier_string & times_ordered_name()
Generate identifier @times_ordered.
bool is_exp_aux4p_function_symbol(const atermpp::aterm &e)
Recogniser for function @exp_aux4p.
bool is_minimum_function_symbol(const atermpp::aterm &e)
Recogniser for function min.
bool is_exp_aux3p_function_symbol(const atermpp::aterm &e)
Recogniser for function @exp_aux3p.
application mod_whr1(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @mod_whr1.
const core::identifier_string & pred_whr_name()
Generate identifier @pred_whr.
bool is_div_whr2_application(const atermpp::aterm &e)
Recogniser for application of @div_whr2.
function_symbol times(const sort_expression &s0, const sort_expression &s1)
bool is_times_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
void make_equals_one(data_expression &result, const data_expression &arg0)
Make an application of function symbol @equals_one.
void make_natpred(data_expression &result, const data_expression &arg0)
Make an application of function symbol @natpred.
bool is_pred_whr_function_symbol(const atermpp::aterm &e)
Recogniser for function @pred_whr.
void make_div2(data_expression &result, const data_expression &arg0)
Make an application of function symbol @div2.
application pred_whr(const data_expression &arg0)
Application of function symbol @pred_whr.
void make_divmod_aux_whr2(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Make an application of function symbol @divmod_aux_whr2.
bool is_succ_nat_application(const atermpp::aterm &e)
Recogniser for application of @succ_nat.
data_expression nat(const std::string &n)
Constructs expression of type Nat from a string.
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.
void make_mod_whr1(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 @mod_whr1.
function_symbol equals_one(const sort_expression &s0)
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 core::identifier_string & succ_nat_name()
Generate identifier @succ_nat.
application swap_zero_monus(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @swap_zero_monus.
bool is_monus_whr_function_symbol(const atermpp::aterm &e)
Recogniser for function @monus_whr.
bool is_natnatpair(const sort_expression &e)
Recogniser for sort expression @NatNatPair.
const function_symbol & divmod_aux_whr4()
Constructor for function symbol @divmod_aux_whr4.
const function_symbol & sqrt_pair_whr6()
Constructor for function symbol @sqrt_pair_whr6.
void make_divmod_aux_whr3(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Make an application of function symbol @divmod_aux_whr3.
bool is_div2_application(const atermpp::aterm &e)
Recogniser for application of @div2.
const core::identifier_string & natpred_name()
Generate identifier @natpred.
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.
application nat2pos(const data_expression &arg0)
Application of function symbol Nat2Pos.
const core::identifier_string & concat_digit_name()
Generate identifier @concat_digit.
bool is_natural_constant(const data_expression &n)
Determines whether n is a natural constant.
bool is_most_significant_digit_nat_application(const atermpp::aterm &e)
Recogniser for application of @most_significant_digitNat.
application times_overflow(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @times_overflow.
void make_msd(data_expression &result, const data_expression &arg0)
Make an application of function symbol @msd.
bool is_monus_application(const atermpp::aterm &e)
Recogniser for application of @monus.
bool is_divmod_aux_whr3_application(const atermpp::aterm &e)
Recogniser for application of @divmod_aux_whr3.
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.
void make_sqrt_pair_whr5(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3, const data_expression &arg4)
Make an application of function symbol @sqrt_pair_whr5.
bool is_exp_auxtruep_application(const atermpp::aterm &e)
Recogniser for application of @exp_auxtruep.
Namespace for system defined sort pos.
const core::identifier_string & equals_one_name()
Generate identifier @equals_one.
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.
const core::identifier_string & concat_digit_name()
Generate identifier @concat_digit.
bool is_add_with_carry_function_symbol(const atermpp::aterm &e)
Recogniser for function @addc.
void make_equals_one(data_expression &result, const data_expression &arg0)
Make an application of function symbol @equals_one.
const function_symbol & times_overflow()
Constructor for function symbol @times_overflow.
std::string positive_constant_as_string(const data_expression &n_in)
Return the string representation of a positive number.
bool is_auxiliary_plus_pos_application(const atermpp::aterm &e)
Recogniser for application of @plus_pos.
const function_symbol & equals_one()
Constructor for function symbol @equals_one.
application minimum(const data_expression &arg0, const data_expression &arg1)
Application of function symbol min.
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
void make_most_significant_digit(data_expression &result, const data_expression &arg0)
Make an application of function symbol @most_significant_digit.
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 *.
const function_symbol & times_ordered()
Constructor for function symbol @times_ordered.
data_expression pos(const T t)
Constructs expression of type Bool from an integral type Type T is an unsigned integral type.
application equals_one(const data_expression &arg0)
Application of function symbol @equals_one.
bool is_times_overflow_function_symbol(const atermpp::aterm &e)
Recogniser for function @times_overflow.
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.
const core::identifier_string & times_whr_mult_overflow_name()
Generate identifier @times_whr_mult_overflow.
bool is_times_ordered_function_symbol(const atermpp::aterm &e)
Recogniser for function @times_ordered.
implementation_map pos_cpp_implementable_mappings()
Give all system defined mappings that are to be implemented in C++ code for pos.
application succ(const data_expression &arg0)
Application of function symbol succ.
void make_auxiliary_plus_pos(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @plus_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_positive_constant(const data_expression &n)
Determines whether n is a positive constant.
application times_whr_mult_overflow(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @times_whr_mult_overflow.
bool is_pos(const sort_expression &e)
Recogniser for sort expression Pos.
bool is_times_ordered_application(const atermpp::aterm &e)
Recogniser for application of @times_ordered.
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
bool is_succpos_application(const atermpp::aterm &e)
Recogniser for application of @succ_pos.
application add_with_carry(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @add_with_carry.
const function_symbol & auxiliary_plus_pos()
Constructor for function symbol @plus_pos.
const function_symbol & c1()
Constructor for function symbol @c1.
void make_times_whr_mult_overflow(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @times_whr_mult_overflow.
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.
application times(const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
bool is_cdub_application(const atermpp::aterm &e)
Recogniser for application of @cDub.
bool is_times_whr_mult_overflow_function_symbol(const atermpp::aterm &e)
Recogniser for function @times_whr_mult_overflow.
const core::identifier_string & times_overflow_name()
Generate identifier @times_overflow.
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.
void make_times_overflow(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @times_overflow.
bool is_times_whr_mult_overflow_application(const atermpp::aterm &e)
Recogniser for application of @times_whr_mult_overflow.
const function_symbol & pos_predecessor()
Constructor for function symbol @pospred.
bool is_auxiliary_plus_pos_function_symbol(const atermpp::aterm &e)
Recogniser for function @plus_pos.
data_expression pos(const std::string &n)
Constructs expression of type Pos from a string.
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 +.
void make_add_with_carry(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @add_with_carry.
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 *.
bool is_most_significant_digit_function_symbol(const atermpp::aterm &e)
Recogniser for function @most_significant_digit.
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 +.
const function_symbol & succpos()
Constructor for function symbol @succ_pos.
bool is_minimum_function_symbol(const atermpp::aterm &e)
Recogniser for function min.
const core::identifier_string & times_ordered_name()
Generate identifier @times_ordered.
const function_symbol & cdub()
Constructor for function symbol @cDub.
const function_symbol & times_whr_mult_overflow()
Constructor for function symbol @times_whr_mult_overflow.
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
application add_with_carry(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @addc.
implementation_map pos_cpp_implementable_constructors()
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
application powerlog2_pos(const data_expression &arg0)
Application of function symbol @powerlog2.
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
application succpos(const data_expression &arg0)
Application of function symbol @succ_pos.
bool is_times_application(const atermpp::aterm &e)
Recogniser for application of *.
application times_overflow(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @times_overflow.
const function_symbol & concat_digit()
Constructor for function symbol @concat_digit.
bool is_most_significant_digit_application(const atermpp::aterm &e)
Recogniser for application of @most_significant_digit.
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.
void make_succpos(data_expression &result, const data_expression &arg0)
Make an application of function symbol @succ_pos.
const function_symbol & times()
Constructor for function symbol *.
bool is_succpos_function_symbol(const atermpp::aterm &e)
Recogniser for function @succ_pos.
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 +.
bool is_concat_digit_application(const atermpp::aterm &e)
Recogniser for application of @concat_digit.
const core::identifier_string & auxiliary_plus_pos_name()
Generate identifier @plus_pos.
bool is_times_overflow_application(const atermpp::aterm &e)
Recogniser for application of @times_overflow.
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.
application pos_predecessor(const data_expression &arg0)
Application of function symbol @pospred.
const function_symbol & most_significant_digit()
Constructor for function symbol @most_significant_digit.
bool is_powerlog2_pos_function_symbol(const atermpp::aterm &e)
Recogniser for function @powerlog2.
application cdub(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @cDub.
bool is_succ_application(const atermpp::aterm &e)
Recogniser for application of succ.
void make_times_ordered(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @times_ordered.
application maximum(const data_expression &arg0, const data_expression &arg1)
Application of function symbol max.
bool is_equals_one_application(const atermpp::aterm &e)
Recogniser for application of @equals_one.
const basic_sort & pos()
Constructor for sort expression Pos.
const core::identifier_string & maximum_name()
Generate identifier max.
const core::identifier_string & pos_name()
application times_ordered(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @times_ordered.
application concat_digit(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @concat_digit.
const function_symbol & minimum()
Constructor for function symbol min.
NUMERIC_TYPE positive_constant_to_value(const data_expression &n)
Returns the NUMERIC_TYPE representation of a positive number.
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_concat_digit_function_symbol(const atermpp::aterm &e)
Recogniser for function @concat_digit.
application auxiliary_plus_pos(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @plus_pos.
bool is_maximum_application(const atermpp::aterm &e)
Recogniser for application of max.
bool is_equals_one_function_symbol(const atermpp::aterm &e)
Recogniser for function @equals_one.
const core::identifier_string & succpos_name()
Generate identifier @succ_pos.
application most_significant_digit(const data_expression &arg0)
Application of function symbol @most_significant_digit.
bool is_pos_predecessor_application(const atermpp::aterm &e)
Recogniser for application of @pospred.
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.
void make_concat_digit(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @concat_digit.
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.
const core::identifier_string & most_significant_digit_name()
Generate identifier @most_significant_digit.
void make_pos_predecessor(data_expression &result, const data_expression &arg0)
Make an application of function symbol @pospred.
Namespace for system defined sort real_.
function_symbol minimum(const sort_expression &s0, const sort_expression &s1)
void make_abs(data_expression &result, const data_expression &arg0)
Make an application of function symbol abs.
function_symbol plus(const sort_expression &s0, const sort_expression &s1)
bool is_real2int_function_symbol(const atermpp::aterm &e)
Recogniser for function Real2Int.
data_expression real_(T numerator, T denominator)
Constructs expression of type Real from an integral type.
application exp(const data_expression &arg0, const data_expression &arg1)
Application of function symbol exp.
void make_minus(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol -.
const function_symbol & creal()
Constructor for function symbol @cReal.
void make_reduce_fraction(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @redfrac.
const core::identifier_string & maximum_name()
Generate identifier max.
void make_negate(data_expression &result, const data_expression &arg0)
Make an application of function symbol -.
const core::identifier_string & minus_name()
Generate identifier -.
bool is_succ_function_symbol(const atermpp::aterm &e)
Recogniser for function succ.
application reduce_fraction_helper(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @redfrachlp.
const core::identifier_string & real_name()
const function_symbol & pos2real()
Constructor for function symbol Pos2Real.
const core::identifier_string & reduce_fraction_where_name()
Generate identifier @redfracwhr.
const function_symbol & round()
Constructor for function symbol round.
bool is_plus_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
function_symbol times(const sort_expression &s0, const sort_expression &s1)
application divides(const data_expression &arg0, const data_expression &arg1)
Application of function symbol /.
bool is_abs_application(const atermpp::aterm &e)
Recogniser for application of abs.
function_symbol divides(const sort_expression &s0, const sort_expression &s1)
const core::identifier_string & int2real_name()
Generate identifier Int2Real.
data_expression real_(T t)
Constructs expression of type Real from an integral type.
const function_symbol & real2nat()
Constructor for function symbol Real2Nat.
bool is_divides_function_symbol(const atermpp::aterm &e)
Recogniser for function /.
const core::identifier_string & creal_name()
Generate identifier @cReal.
void make_succ(data_expression &result, const data_expression &arg0)
Make an application of function symbol succ.
bool is_exp_application(const atermpp::aterm &e)
Recogniser for application of exp.
application real2nat(const data_expression &arg0)
Application of function symbol Real2Nat.
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
bool is_int2real_application(const atermpp::aterm &e)
Recogniser for application of Int2Real.
const function_symbol & ceil()
Constructor for function symbol ceil.
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
bool is_plus_application(const atermpp::aterm &e)
Recogniser for application of +.
bool is_divides_application(const atermpp::aterm &e)
Recogniser for application of /.
bool is_reduce_fraction_function_symbol(const atermpp::aterm &e)
Recogniser for function @redfrac.
bool is_maximum_function_symbol(const atermpp::aterm &e)
Recogniser for function max.
void make_exp(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol exp.
const core::identifier_string & divides_name()
Generate identifier /.
bool is_real2int_application(const atermpp::aterm &e)
Recogniser for application of Real2Int.
const core::identifier_string & ceil_name()
Generate identifier ceil.
bool is_creal_function_symbol(const atermpp::aterm &e)
Recogniser for function @cReal.
void make_real2nat(data_expression &result, const data_expression &arg0)
Make an application of function symbol Real2Nat.
bool is_minus_function_symbol(const atermpp::aterm &e)
Recogniser for function -.
application creal(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @cReal.
bool is_reduce_fraction_where_application(const atermpp::aterm &e)
Recogniser for application of @redfracwhr.
function_symbol succ(const sort_expression &s0)
application negate(const data_expression &arg0)
Application of function symbol -.
bool is_floor_function_symbol(const atermpp::aterm &e)
Recogniser for function floor.
void make_int2real(data_expression &result, const data_expression &arg0)
Make an application of function symbol Int2Real.
void make_divides(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol /.
const core::identifier_string & floor_name()
Generate identifier floor.
const core::identifier_string & times_name()
Generate identifier *.
bool is_abs_function_symbol(const atermpp::aterm &e)
Recogniser for function abs.
bool is_ceil_application(const atermpp::aterm &e)
Recogniser for application of ceil.
application succ(const data_expression &arg0)
Application of function symbol succ.
const function_symbol & real2int()
Constructor for function symbol Real2Int.
bool is_maximum_application(const atermpp::aterm &e)
Recogniser for application of max.
application nat2real(const data_expression &arg0)
Application of function symbol Nat2Real.
const function_symbol & reduce_fraction()
Constructor for function symbol @redfrac.
bool is_creal_application(const atermpp::aterm &e)
Recogniser for application of @cReal.
bool is_pred_application(const atermpp::aterm &e)
Recogniser for application of pred.
const core::identifier_string & negate_name()
Generate identifier -.
void make_reduce_fraction_helper(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @redfrachlp.
void make_pos2real(data_expression &result, const data_expression &arg0)
Make an application of function symbol Pos2Real.
function_symbol pred(const sort_expression &s0)
bool is_round_function_symbol(const atermpp::aterm &e)
Recogniser for function round.
const core::identifier_string & succ_name()
Generate identifier succ.
const function_symbol & reduce_fraction_helper()
Constructor for function symbol @redfrachlp.
const core::identifier_string & abs_name()
Generate identifier abs.
data_equation_vector real_generate_equations_code()
Give all system defined equations for real_.
bool is_times_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
const core::identifier_string & round_name()
Generate identifier round.
bool is_negate_function_symbol(const atermpp::aterm &e)
Recogniser for function -.
application int2real(const data_expression &arg0)
Application of function symbol Int2Real.
function_symbol minus(const sort_expression &s0, const sort_expression &s1)
const basic_sort & real_()
Constructor for sort expression Real.
bool is_minimum_function_symbol(const atermpp::aterm &e)
Recogniser for function min.
const function_symbol & floor()
Constructor for function symbol floor.
void make_minimum(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol min.
void make_times(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
const core::identifier_string & reduce_fraction_helper_name()
Generate identifier @redfrachlp.
function_symbol_vector real_mCRL2_usable_constructors()
Give all defined constructors which can be used in mCRL2 specs for real_.
bool is_real2pos_function_symbol(const atermpp::aterm &e)
Recogniser for function Real2Pos.
void make_real2int(data_expression &result, const data_expression &arg0)
Make an application of function symbol Real2Int.
function_symbol_vector real_generate_constructors_code()
Give all system defined constructors for real_.
void make_nat2real(data_expression &result, const data_expression &arg0)
Make an application of function symbol Nat2Real.
void make_maximum(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol max.
bool is_floor_application(const atermpp::aterm &e)
Recogniser for application of floor.
application reduce_fraction_where(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @redfracwhr.
bool is_real(const sort_expression &e)
Recogniser for sort expression Real.
const function_symbol & reduce_fraction_where()
Constructor for function symbol @redfracwhr.
application plus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
implementation_map real_cpp_implementable_mappings()
Give all system defined mappings that are to be implemented in C++ code for real_.
application times(const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
bool is_ceil_function_symbol(const atermpp::aterm &e)
Recogniser for function ceil.
data_expression real_(const std::string &numerator, const std::string &denominator)
Constructs expression of type Real from two number strings.
application real2int(const data_expression &arg0)
Application of function symbol Real2Int.
const core::identifier_string & pred_name()
Generate identifier pred.
const function_symbol & nat2real()
Constructor for function symbol Nat2Real.
const core::identifier_string & minimum_name()
Generate identifier min.
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
bool is_succ_application(const atermpp::aterm &e)
Recogniser for application of succ.
application pos2real(const data_expression &arg0)
Application of function symbol Pos2Real.
void make_round(data_expression &result, const data_expression &arg0)
Make an application of function symbol round.
bool is_pos2real_function_symbol(const atermpp::aterm &e)
Recogniser for function Pos2Real.
function_symbol_vector real_mCRL2_usable_mappings()
Give all system defined mappings that can be used in mCRL2 specs for real_.
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
const core::identifier_string & plus_name()
Generate identifier +.
function_symbol abs(const sort_expression &s0)
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
bool is_times_application(const atermpp::aterm &e)
Recogniser for application of *.
void make_ceil(data_expression &result, const data_expression &arg0)
Make an application of function symbol ceil.
const core::identifier_string & reduce_fraction_name()
Generate identifier @redfrac.
function_symbol negate(const sort_expression &s0)
application minus(const data_expression &arg0, const data_expression &arg1)
Application of function symbol -.
application abs(const data_expression &arg0)
Application of function symbol abs.
bool is_real2pos_application(const atermpp::aterm &e)
Recogniser for application of Real2Pos.
bool is_reduce_fraction_application(const atermpp::aterm &e)
Recogniser for application of @redfrac.
bool is_int2real_function_symbol(const atermpp::aterm &e)
Recogniser for function Int2Real.
bool is_negate_application(const atermpp::aterm &e)
Recogniser for application of -.
bool is_reduce_fraction_helper_function_symbol(const atermpp::aterm &e)
Recogniser for function @redfrachlp.
bool is_minimum_application(const atermpp::aterm &e)
Recogniser for application of min.
bool is_minus_application(const atermpp::aterm &e)
Recogniser for application of -.
const core::identifier_string & pos2real_name()
Generate identifier Pos2Real.
bool is_round_application(const atermpp::aterm &e)
Recogniser for application of round.
application reduce_fraction(const data_expression &arg0, const data_expression &arg1)
Application of function symbol @redfrac.
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
const core::identifier_string & exp_name()
Generate identifier exp.
application maximum(const data_expression &arg0, const data_expression &arg1)
Application of function symbol max.
bool is_real2nat_function_symbol(const atermpp::aterm &e)
Recogniser for function Real2Nat.
const core::identifier_string & real2nat_name()
Generate identifier Real2Nat.
const core::identifier_string & real2int_name()
Generate identifier Real2Int.
const function_symbol & int2real()
Constructor for function symbol Int2Real.
bool is_pred_function_symbol(const atermpp::aterm &e)
Recogniser for function pred.
const core::identifier_string & nat2real_name()
Generate identifier Nat2Real.
function_symbol exp(const sort_expression &s0, const sort_expression &s1)
application real2pos(const data_expression &arg0)
Application of function symbol Real2Pos.
void make_pred(data_expression &result, const data_expression &arg0)
Make an application of function symbol pred.
bool is_real2nat_application(const atermpp::aterm &e)
Recogniser for application of Real2Nat.
bool is_pos2real_application(const atermpp::aterm &e)
Recogniser for application of Pos2Real.
application floor(const data_expression &arg0)
Application of function symbol floor.
application minimum(const data_expression &arg0, const data_expression &arg1)
Application of function symbol min.
void make_plus(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol +.
bool is_reduce_fraction_helper_application(const atermpp::aterm &e)
Recogniser for application of @redfrachlp.
void make_floor(data_expression &result, const data_expression &arg0)
Make an application of function symbol floor.
const function_symbol & real2pos()
Constructor for function symbol Real2Pos.
implementation_map real_cpp_implementable_constructors()
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
function_symbol maximum(const sort_expression &s0, const sort_expression &s1)
function_symbol_vector real_generate_functions_code()
Give all system defined mappings for real_.
void make_reduce_fraction_where(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @redfracwhr.
function_symbol_vector real_generate_constructors_and_functions_code()
Give all system defined mappings and constructors for real_.
const core::identifier_string & real2pos_name()
Generate identifier Real2Pos.
data_expression real_(const std::string &n)
Constructs expression of type Real from a string.
void make_real2pos(data_expression &result, const data_expression &arg0)
Make an application of function symbol Real2Pos.
application round(const data_expression &arg0)
Application of function symbol round.
bool is_exp_function_symbol(const atermpp::aterm &e)
Recogniser for function exp.
application pred(const data_expression &arg0)
Application of function symbol pred.
void make_creal(data_expression &result, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @cReal.
application ceil(const data_expression &arg0)
Application of function symbol ceil.
bool is_reduce_fraction_where_function_symbol(const atermpp::aterm &e)
Recogniser for function @redfracwhr.
bool is_nat2real_function_symbol(const atermpp::aterm &e)
Recogniser for function Nat2Real.
bool is_nat2real_application(const atermpp::aterm &e)
Recogniser for application of Nat2Real.
Namespace for system defined sort set_.
const core::identifier_string & fset_intersection_name()
Generate identifier @fset_inter.
void make_in(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol in.
function_symbol true_function(const sort_expression &s)
Constructor for function symbol @true_.
const core::identifier_string & or_function_name()
Generate identifier @or_.
bool is_set_comprehension_application(const atermpp::aterm &e)
Recogniser for application of @setcomp.
const core::identifier_string & constructor_name()
Generate identifier @set.
implementation_map set_cpp_implementable_mappings(const sort_expression &)
Give all system defined mappings that are to be implemented in C++ code for set_.
application fset_intersection(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @fset_inter.
bool is_false_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @false_.
bool is_difference_function_symbol(const atermpp::aterm &e)
Recogniser for function -.
bool is_not_function_application(const atermpp::aterm &e)
Recogniser for application of @not_.
bool is_and_function_application(const atermpp::aterm &e)
Recogniser for application of @and_.
void make_or_function(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @or_.
function_symbol_vector set_generate_constructors_and_functions_code(const sort_expression &s)
Give all system defined mappings and constructors for set_.
application or_function(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @or_.
data_expression set_enumeration(const sort_expression &s, Sequence const &range, typename atermpp::enable_if_container< Sequence, data_expression >::type *=0)
Application of function symbol set_enumeration.
bool is_fset_intersection_function_symbol(const atermpp::aterm &e)
Recogniser for function @fset_inter.
bool is_set(const sort_expression &e)
Recogniser for sort expression Set(s)
function_symbol or_function(const sort_expression &s)
Constructor for function symbol @or_.
void make_complement(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol !.
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
core::identifier_string const & set_enumeration_name()
Generate identifier set_enumeration.
const core::identifier_string & false_function_name()
Generate identifier @false_.
bool is_in_function_symbol(const atermpp::aterm &e)
Recogniser for function in.
const data_expression & arg4(const data_expression &e)
Function for projecting out argument. arg4 from an application.
bool is_true_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @true_.
bool is_complement_application(const atermpp::aterm &e)
Recogniser for application of !.
bool is_or_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @or_.
function_symbol fset_intersection(const sort_expression &s)
Constructor for function symbol @fset_inter.
const core::identifier_string & set_comprehension_name()
Generate identifier @setcomp.
void make_fset_union(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @fset_union.
bool is_fset_union_application(const atermpp::aterm &e)
Recogniser for application of @fset_union.
bool is_false_function_application(const atermpp::aterm &e)
Recogniser for application of @false_.
const data_expression & left(const data_expression &e)
Function for projecting out argument. left from an application.
bool is_not_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @not_.
function_symbol and_function(const sort_expression &s)
Constructor for function symbol @and_.
bool is_set_comprehension_function_symbol(const atermpp::aterm &e)
Recogniser for function @setcomp.
bool is_in_application(const atermpp::aterm &e)
Recogniser for application of in.
function_symbol set_enumeration(const sort_expression &s)
Constructor for function symbol set_enumeration.
const core::identifier_string & not_function_name()
Generate identifier @not_.
application not_function(const sort_expression &s, const data_expression &arg0)
Application of function symbol @not_.
const core::identifier_string & in_name()
Generate identifier in.
function_symbol_vector set_generate_constructors_code(const sort_expression &s)
Give all system defined constructors for set_.
bool is_fset_intersection_application(const atermpp::aterm &e)
Recogniser for application of @fset_inter.
data_expression set_enumeration(const sort_expression &s, data_expression_list const &range)
Application of function symbol set_enumeration.
bool is_difference_application(const atermpp::aterm &e)
Recogniser for application of -.
function_symbol not_function(const sort_expression &s)
Constructor for function symbol @not_.
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
application union_(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol +.
bool is_constructor_application(const atermpp::aterm &e)
Recogniser for application of @set.
const core::identifier_string & fset_union_name()
Generate identifier @fset_union.
bool is_set_fset_application(const atermpp::aterm &e)
Recogniser for application of @setfset.
void make_intersection(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol *.
application difference(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol -.
application complement(const sort_expression &s, const data_expression &arg0)
Application of function symbol !.
const core::identifier_string & complement_name()
Generate identifier !.
function_symbol intersection(const sort_expression &s, const sort_expression &s0, const sort_expression &s1)
application set_fset(const sort_expression &s, const data_expression &arg0)
Application of function symbol @setfset.
const core::identifier_string & and_function_name()
Generate identifier @and_.
application intersection(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol *.
bool is_fset_union_function_symbol(const atermpp::aterm &e)
Recogniser for function @fset_union.
const data_expression & arg2(const data_expression &e)
Function for projecting out argument. arg2 from an application.
function_symbol fset_union(const sort_expression &s)
Constructor for function symbol @fset_union.
void make_and_function(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @and_.
container_sort set_(const sort_expression &s)
Constructor for sort expression Set(S)
bool is_set_fset_function_symbol(const atermpp::aterm &e)
Recogniser for function @setfset.
application set_comprehension(const sort_expression &s, const data_expression &arg0)
Application of function symbol @setcomp.
const core::identifier_string & intersection_name()
Generate identifier *.
bool is_set_enumeration_application(const atermpp::aterm &e)
Recogniser for application of set_enumeration.
void make_fset_intersection(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Make an application of function symbol @fset_inter.
function_symbol constructor(const sort_expression &s)
Constructor for function symbol @set.
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
const data_expression & right(const data_expression &e)
Function for projecting out argument. right from an application.
function_symbol false_function(const sort_expression &s)
Constructor for function symbol @false_.
void make_constructor(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol @set.
const core::identifier_string & set_fset_name()
Generate identifier @setfset.
const core::identifier_string & union_name()
Generate identifier +.
bool is_complement_function_symbol(const atermpp::aterm &e)
Recogniser for function !.
function_symbol in(const sort_expression &, const sort_expression &s0, const sort_expression &s1)
function_symbol union_(const sort_expression &s, const sort_expression &s0, const sort_expression &s1)
bool is_constructor_function_symbol(const atermpp::aterm &e)
Recogniser for function @set.
function_symbol_vector set_generate_functions_code(const sort_expression &s)
Give all system defined mappings for set_.
application fset_union(const sort_expression &s, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2, const data_expression &arg3)
Application of function symbol @fset_union.
function_symbol_vector set_mCRL2_usable_constructors(const sort_expression &s)
Give all defined constructors which can be used in mCRL2 specs for set_.
const core::identifier_string & difference_name()
Generate identifier -.
void make_set_comprehension(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @setcomp.
bool is_set_enumeration_function_symbol(const atermpp::aterm &e)
Recogniser for function set_enumeration.
application true_function(const sort_expression &s, const data_expression &arg0)
Application of function symbol @true_.
void make_not_function(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @not_.
bool is_or_function_application(const atermpp::aterm &e)
Recogniser for application of @or_.
const core::identifier_string & true_function_name()
Generate identifier @true_.
void make_false_function(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @false_.
void make_true_function(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @true_.
application false_function(const sort_expression &s, const data_expression &arg0)
Application of function symbol @false_.
function_symbol difference(const sort_expression &s, const sort_expression &s0, const sort_expression &s1)
bool is_union_function_symbol(const atermpp::aterm &e)
Recogniser for function +.
function_symbol complement(const sort_expression &s)
Constructor for function symbol !.
bool is_true_function_application(const atermpp::aterm &e)
Recogniser for application of @true_.
function_symbol set_fset(const sort_expression &s)
Constructor for function symbol @setfset.
void make_difference(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol -.
implementation_map set_cpp_implementable_constructors(const sort_expression &)
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
void make_union_(data_expression &result, const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Make an application of function symbol +.
function_symbol set_comprehension(const sort_expression &s)
Constructor for function symbol @setcomp.
application in(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol in.
bool is_intersection_application(const atermpp::aterm &e)
Recogniser for application of *.
data_equation_vector set_generate_equations_code(const sort_expression &s)
Give all system defined equations for set_.
application and_function(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @and_.
function_symbol_vector set_mCRL2_usable_mappings(const sort_expression &s)
Give all system defined mappings that can be used in mCRL2 specs for set_.
bool is_and_function_function_symbol(const atermpp::aterm &e)
Recogniser for function @and_.
void make_set_fset(data_expression &result, const sort_expression &s, const data_expression &arg0)
Make an application of function symbol @setfset.
bool is_intersection_function_symbol(const atermpp::aterm &e)
Recogniser for function *.
application constructor(const sort_expression &s, const data_expression &arg0, const data_expression &arg1)
Application of function symbol @set.
const data_expression & arg1(const data_expression &e)
Function for projecting out argument. arg1 from an application.
std::string pp(const data::structured_sort_constructor_argument &x, bool arg0)
void make_set_comprehension(atermpp::aterm &result, ARGUMENTS... arguments)
std::set< data::variable > find_free_variables(const T &x)
void swap(fset_container &t1, fset_container &t2) noexcept
\brief swap overload
void make_data_expression(data_expression &result)
bool is_convertible(const sort_expression &s1, const sort_expression &s2)
Returns true if and only if s1 == s2, or if s1 is a less specific numeric type than s2.
void make_function_symbol(atermpp::aterm &t, const ARGUMENTS &... args)
data::data_equation normalize_sorts(const data::data_equation &x, const data::sort_specification &sortspec)
constexpr std::size_t undefined_index()
Returns an index that corresponds to 'undefined'.
void swap(assignment &t1, assignment &t2) noexcept
\brief swap overload
bool is_greater_application(const DataExpression &e)
Recogniser for application of >
void normalize_sorts(data::data_equation_vector &x, const data::sort_specification &sortspec)
void swap(function_sort &t1, function_sort &t2) noexcept
\brief swap overload
bool is_greater_function_symbol(const DataExpression &e)
Recogniser for function >
int precedence(const application &x)
void swap(container_sort &t1, container_sort &t2) noexcept
\brief swap overload
void if_always_else_manual_implementation(data_expression &result, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
The data expression of an application of the function symbol @if_always_else.
const data::data_expression & undefined_real()
Returns a data expression of type Real that corresponds to 'undefined'.
void typecheck_sort_expression(const sort_expression &sort_expr, const data_specification &data_spec)
Type check a sort expression. Throws an exception if something went wrong.
void swap(untyped_identifier_assignment &t1, untyped_identifier_assignment &t2) noexcept
\brief swap overload
bool is_if_always_else_function_symbol(const atermpp::aterm &e)
Recogniser for function @if_always_else.
bool is_structured_sort(const atermpp::aterm &x)
Returns true if the term t is a structured sort.
data::data_equation_list normalize_sorts(const data::data_equation_list &x, const data::sort_specification &sortspec)
constexpr int precedence(const forall &)
std::string pp(const data::exists &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const untyped_sort_variable &x)
bool is_data_equation(const atermpp::aterm &t)
Recognizer function.
std::set< data::data_expression > find_data_expressions(const T &x)
Returns all data expressions that occur in an object.
std::ostream & operator<<(std::ostream &out, const untyped_data_parameter &x)
std::string pp(const data::untyped_identifier_assignment &x, bool arg0)
application function_update(const sort_expression &s, const sort_expression &t, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @func_update.
data_equation_vector find_equations(const data_specification &specification, const data_expression &d)
Gets all equations with a data expression as head on one of its sides.
void find_identifiers(const T &x, OutputIterator o)
std::set< data::function_symbol > find_function_symbols(const T &x)
function_symbol_vector function_update_mCRL2_usable_mappings(const sort_expression &s, const sort_expression &t)
Give all system defined mappings that can be used in mCRL2 specs for function_update.
std::ostream & operator<<(std::ostream &out, const bag_comprehension_binder &x)
void swap(structured_sort_constructor &t1, structured_sort_constructor &t2) noexcept
\brief swap overload
variable_list free_variables(const data_expression &x)
bool is_is_not_a_function_update_application(const atermpp::aterm &e)
Recogniser for application of @is_not_an_update.
function_symbol less_equal(const sort_expression &s)
Constructor for function symbol <=.
std::set< data::sort_expression > find_sort_expressions(const T &x)
void make_bag_comprehension(atermpp::aterm &result, ARGUMENTS... arguments)
void swap(exists &t1, exists &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const set_comprehension_binder &x)
bool is_set_container(const atermpp::aterm &x)
constexpr int precedence(const bag_comprehension &)
std::ostream & operator<<(std::ostream &out, const container_sort &x)
int precedence(const data_expression &x)
void swap(untyped_sort &t1, untyped_sort &t2) noexcept
\brief swap overload
data_expression number(const sort_expression &s, const std::string &n)
Construct numeric expression from a string representing a number in decimal notation.
std::ostream & operator<<(std::ostream &out, const basic_sort &x)
function_symbol_vector standard_generate_functions_code(const sort_expression &s)
Give all standard system defined functions for sort s.
void swap(structured_sort_constructor_argument &t1, structured_sort_constructor_argument &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const machine_number &x)
void find_free_variables_with_bound(const T &x, OutputIterator o, const VariableContainer &bound)
void make_machine_number(atermpp::aterm &t, size_t n)
std::set< data::variable > find_all_variables(const data::data_expression_list &x)
bool is_data_expression(const atermpp::aterm &x)
Test for a data_expression expression.
std::string pp(const data::list_container &x, bool arg0)
void swap(untyped_identifier &t1, untyped_identifier &t2) noexcept
\brief swap overload
bool is_application_no_check(const atermpp::aterm &x)
Returns true if the term t is an application, but it does not check whether an application symbol of ...
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.
void make_where_clause(atermpp::aterm &t, const ARGUMENTS &... args)
void make_untyped_data_parameter(atermpp::aterm &t, const ARGUMENTS &... args)
bool is_equal_to_function_symbol(const DataExpression &e)
Recogniser for function ==.
function_symbol_vector function_update_mCRL2_usable_constructors()
Give all defined constructors which can be used in mCRL2 specs for function_update.
data_expression_list make_data_expression_list(Container const &r, typename atermpp::enable_if_container< Container, data_expression >::type *=nullptr)
Converts an container with data expressions to data_expression_list.
std::set< data::sort_expression > find_sort_expressions(const data::data_expression &x)
function_symbol find_mapping(data_specification const &data, std::string const &s)
Finds a mapping in a data specification.
void swap(set_comprehension_binder &t1, set_comprehension_binder &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const container_type &x)
const data::variable & undefined_variable()
Returns a data variable that corresponds to 'undefined'.
void swap(structured_sort &t1, structured_sort &t2) noexcept
\brief swap overload
data::data_equation translate_user_notation(const data::data_equation &x)
std::ostream & operator<<(std::ostream &out, const list_container &x)
std::ostream & operator<<(std::ostream &out, const structured_sort_constructor &x)
std::ostream & operator<<(std::ostream &out, const untyped_set_or_bag_comprehension_binder &x)
bool is_application(const data_expression &t)
Returns true if the term t is an application.
bool is_list_container(const atermpp::aterm &x)
bool is_if_application(const DataExpression &e)
Recogniser for application of if.
void make_basic_sort(atermpp::aterm &t, const ARGUMENTS &... args)
void make_function_update_stable(data_expression &result, const sort_expression &s, const sort_expression &t, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @func_update_stable.
bool search_data_expression(Container const &container, const data_expression &s)
Returns true if the term has a given data expression as subterm.
std::set< data::variable > find_all_variables(const T &x)
void swap(untyped_sort_variable &t1, untyped_sort_variable &t2) noexcept
\brief swap overload
function_sort make_function_sort_(const sort_expression &dom1, const sort_expression &dom2, const sort_expression &dom3, const sort_expression &dom4, const sort_expression &codomain)
Convenience constructor for function sort with domain size 4.
implementation_map function_update_cpp_implementable_mappings(const sort_expression &s, const sort_expression &t)
Give all system defined mappings that are to be implemented in C++ code for function_update.
void swap(fbag_container &t1, fbag_container &t2) noexcept
\brief swap overload
bool is_not_equal_to_application(const DataExpression &e)
Recogniser for application of !=.
void swap(basic_sort &t1, basic_sort &t2) noexcept
\brief swap overload
std::string pp(const data::container_type &x, bool arg0)
std::set< data::variable > find_all_variables(const data::data_expression &x)
void find_all_variables(const T &x, OutputIterator o)
function_symbol if_always_else(const sort_expression &s, const sort_expression &t)
Constructor for function symbol @if_always_else.
void swap(list_container &t1, list_container &t2) noexcept
\brief swap overload
void swap(exists_binder &t1, exists_binder &t2) noexcept
\brief swap overload
function_symbol less(const sort_expression &s)
Constructor for function symbol <.
void make_function_update(data_expression &result, const sort_expression &s, const sort_expression &t, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @func_update.
void swap(assignment_expression &t1, assignment_expression &t2) noexcept
\brief swap overload
void make_untyped_set_or_bag_comprehension(atermpp::aterm &result, ARGUMENTS... arguments)
bool is_where_clause(const atermpp::aterm &x)
Returns true if the term t is a where clause.
constexpr int precedence(const set_comprehension &)
std::string pp(const data::set_container &x, bool arg0)
const core::identifier_string & function_update_name()
Generate identifier @func_update.
bool is_untyped_possible_sorts(const atermpp::aterm &x)
Returns true if the term t is an expression for multiple possible sorts.
bool is_untyped_sort(const atermpp::aterm &x)
Returns true if the term t is the unknown sort.
application less_equal(const data_expression &arg0, const data_expression &arg1)
Application of function symbol <=.
const data_expression & find_rhs(const variable &v, const ASSIGNMENT_CONTAINER &c)
Returns the right hand sides of an assignment list.
std::string pp(const structured_sort_constructor_vector &x)
constexpr int precedence(const where_clause &)
void if_always_else_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
std::ostream & operator<<(std::ostream &out, const fset_container &x)
void swap(where_clause &t1, where_clause &t2) noexcept
\brief swap overload
bool search_free_variable(const T &x, const variable &v)
Returns true if the term has a given free variable as subterm.
bool is_greater_equal_application(const DataExpression &e)
Recogniser for application of >=.
std::string pp(const data::untyped_set_or_bag_comprehension_binder &x, bool arg0)
application less(const data_expression &arg0, const data_expression &arg1)
Application of function symbol <.
std::ostream & operator<<(std::ostream &out, const untyped_possible_sorts &x)
data::data_expression translate_user_notation(const data::data_expression &x)
std::string pp(const data::sort_expression_vector &x, bool arg0)
function_symbol_vector function_update_generate_constructors_and_functions_code(const sort_expression &s, const sort_expression &t)
Give all system defined mappings and constructors for function_update.
std::string pp(const data::untyped_sort &x, bool arg0)
void typecheck_data_specification(data_specification &data_spec)
Type check a parsed mCRL2 data specification. Throws an exception if something went wrong.
std::string pp(const data::data_equation &x, bool arg0)
bool is_if_always_else_application(const atermpp::aterm &e)
Recogniser for application of @if_always_else.
std::set< core::identifier_string > find_identifiers(const data_specification &specification)
std::string pp(const data::forall &x, bool arg0)
void swap(set_container &t1, set_container &t2) noexcept
\brief swap overload
bool is_abstraction(const atermpp::aterm &x)
Returns true if the term t is an abstraction.
void make_variable(atermpp::aterm &t, const ARGUMENTS &... args)
std::string pp(const data::assignment_list &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const assignment_expression &x)
data_expression typecheck_data_expression(const data_expression &x, const VariableContainer &variables, const data_specification &dataspec=data_specification())
Type check a data expression. Throws an exception if something went wrong.
std::string pp(const data::untyped_identifier &x, bool arg0)
application not_equal_to(const data_expression &arg0, const data_expression &arg1)
Application of function symbol !=.
std::string pp(const data::function_symbol_list &x, bool arg0)
constexpr int precedence(const exists &)
std::ostream & operator<<(std::ostream &out, const untyped_sort &x)
function_symbol_vector function_update_generate_constructors_code()
Give all system defined constructors for function_update.
function_sort make_function_sort_(const sort_expression &dom1, const sort_expression &codomain)
Convenience constructor for function sort with domain size 1.
void swap(container_type &t1, container_type &t2) noexcept
\brief swap overload
application if_(const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol if.
std::ostream & operator<<(std::ostream &out, const forall &x)
bool is_untyped_identifier(const atermpp::aterm &x)
Returns true if the term t is an identifier.
data_equation_vector standard_generate_equations_code(const sort_expression &s)
Give all standard system defined equations for sort s.
bool is_left_associative(const data_expression &x)
void swap(bag_container &t1, bag_container &t2) noexcept
\brief swap overload
std::string pp(const data::lambda_binder &x, bool arg0)
void make_untyped_identifier(atermpp::aterm &t, const ARGUMENTS &... args)
data_expression typecheck_data_expression(const data_expression &x, const data_specification &dataspec=data_specification())
Type check a data expression. Throws an exception if something went wrong.
void find_function_symbols(const T &x, OutputIterator o)
void make_assignment(atermpp::aterm &t, const ARGUMENTS &... args)
bool is_simple_substitution(const mutable_map_substitution< AssociativeContainer > &sigma)
std::ostream & operator<<(std::ostream &out, const untyped_identifier_assignment &x)
const core::identifier_string & if_always_else_name()
Generate identifier @if_always_else.
void swap(untyped_set_or_bag_comprehension_binder &t1, untyped_set_or_bag_comprehension_binder &t2) noexcept
\brief swap overload
std::string pp(const structured_sort_constructor_list &x)
void make_untyped_identifier_assignment(atermpp::aterm &t, const ARGUMENTS &... args)
void swap(bag_comprehension_binder &t1, bag_comprehension_binder &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const exists &x)
bool is_set_comprehension_binder(const atermpp::aterm &x)
std::ostream & operator<<(std::ostream &out, const alias &x)
void swap(forall_binder &t1, forall_binder &t2) noexcept
\brief swap overload
void swap(data_equation &t1, data_equation &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const lambda &x)
void find_free_variables(const T &x, OutputIterator o)
std::ostream & operator<<(std::ostream &out, const forall_binder &x)
bool is_exists_binder(const atermpp::aterm &x)
std::set< data::variable > find_all_variables(const data::function_symbol &x)
std::vector< data::variable > find_free_variables_in_order(const T &x)
std::string pp(const data::application &x, bool arg0)
bool is_not_equal_to_function_symbol(const DataExpression &e)
Recogniser for function !=.
void make_structured_sort_constructor_argument(atermpp::aterm &t, const ARGUMENTS &... args)
void swap(lambda &t1, lambda &t2) noexcept
\brief swap overload
function_symbol find_constructor(data_specification const &data, std::string const &s)
Finds a constructor in a data specification.
std::string pp(const data::function_sort &x, bool arg0)
void swap(untyped_data_parameter &t1, untyped_data_parameter &t2) noexcept
\brief swap overload
void make_alias(atermpp::aterm &t, const ARGUMENTS &... args)
std::string pp(const data::abstraction &x, bool arg0)
const core::identifier_string & is_not_a_function_update_name()
Generate identifier @is_not_an_update.
std::string pp(const data::bag_comprehension_binder &x, bool arg0)
bool is_simple_substitution(const data::variable &lhs, const data::data_expression &rhs)
Returns true if FV(rhs) is included in {lhs}.
void make_lambda(atermpp::aterm &result, ARGUMENTS... arguments)
application function_update_stable(const sort_expression &s, const sort_expression &t, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @func_update_stable.
function_symbol greater_equal(const sort_expression &s)
Constructor for function symbol >=.
std::ostream & operator<<(std::ostream &out, const structured_sort &x)
std::ostream & operator<<(std::ostream &out, const set_container &x)
std::string pp(const data::set_comprehension_binder &x, bool arg0)
bool is_assignment_expression(const atermpp::aterm &x)
std::string pp(const data::assignment &x, bool arg0)
bool search_sort_expression(Container const &container, const sort_expression &s)
Returns true if the term has a given sort expression as subterm.
std::string pp(const data::structured_sort &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const bag_container &x)
std::string pp(const data::basic_sort &x, bool arg0)
bool is_structured_sort_constructor_argument(const atermpp::aterm &x)
std::ostream & operator<<(std::ostream &out, const exists_binder &x)
bool is_function_update_function_symbol(const atermpp::aterm &e)
Recogniser for function @func_update.
void swap(bag_comprehension &t1, bag_comprehension &t2) noexcept
\brief swap overload
void is_not_a_function_update_application(data_expression &result, const data_expression &a1)
Application of a function that is user defined instead of by rewrite rules. It does not have sort par...
std::ostream & operator<<(std::ostream &out, const assignment &x)
application is_not_a_function_update(const sort_expression &s, const sort_expression &t, const data_expression &arg0)
Application of function symbol @is_not_an_update.
void make_if_always_else(data_expression &result, const sort_expression &s, const sort_expression &t, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Make an application of function symbol @if_always_else.
bool is_system_defined(const sort_expression &s)
Returns true iff the expression represents a standard sort.
std::string pp(const data::exists_binder &x, bool arg0)
void swap(forall &t1, forall &t2) noexcept
\brief swap overload
bool is_function_update_stable_function_symbol(const atermpp::aterm &e)
Recogniser for function @func_update_stable.
sort_expression find_sort(data_specification const &data, std::string const &s)
Finds a sort in a data specification.
bool is_right_associative(const data_expression &x)
void swap(binder_type &t1, binder_type &t2) noexcept
\brief swap overload
std::string pp(const data::bag_comprehension &x, bool arg0)
void make_forall(atermpp::aterm &result, ARGUMENTS... arguments)
data_expression typecheck_untyped_data_parameter(data_type_checker &typechecker, const core::identifier_string &name, const data_expression_list ¶meters, const data::sort_expression &expected_sort, const detail::variable_context &variable_context)
bool is_structured_sort_constructor(const atermpp::aterm &x)
std::ostream & operator<<(std::ostream &out, const lambda_binder &x)
bool is_container_sort(const atermpp::aterm &x)
Returns true if the term t is a container sort.
variable_list left_hand_sides(const assignment_list &x)
Returns the left hand sides of an assignment list.
bool is_lambda_binder(const atermpp::aterm &x)
bool is_forall(const atermpp::aterm &x)
Returns true if the term t is a universal quantification.
std::string pp(const data::variable &x, bool arg0)
bool is_function_symbol(const atermpp::aterm &x)
Returns true if the term t is a function symbol.
void swap(set_comprehension &t1, set_comprehension &t2) noexcept
\brief swap overload
std::set< data::variable > find_all_variables(const data::machine_number &x)
bool is_fset_container(const atermpp::aterm &x)
bool is_less_function_symbol(const DataExpression &e)
Recogniser for function <.
std::ostream & operator<<(std::ostream &out, const data_equation &x)
std::ostream & operator<<(std::ostream &out, const bag_comprehension &x)
std::set< core::identifier_string > find_identifiers(const T &x)
bool is_basic_sort(const atermpp::aterm &x)
Returns true if the term t is a basic sort.
bool is_untyped_sort_variable(const atermpp::aterm &x)
std::string pp(const T &x, bool precendence_aware=true)
Returns a string representation of the object x.
std::ostream & operator<<(std::ostream &out, const structured_sort_constructor_argument &x)
function_sort make_function_sort_(const sort_expression &dom1, const sort_expression &dom2, const sort_expression &dom3, const sort_expression &dom4, const sort_expression &dom5, const sort_expression &dom6, const sort_expression &codomain)
Convenience constructor for function sort with domain size 6.
data_equation_vector function_update_generate_equations_code(const sort_expression &s, const sort_expression &t)
Give all system defined equations for function_update.
bool is_untyped_set_or_bag_comprehension_binder(const atermpp::aterm &x)
std::string pp(const data::where_clause &x, bool arg0)
std::set< data::sort_expression > find_sort_expressions(const data::data_equation &x)
std::ostream & operator<<(std::ostream &out, const function_sort &x)
bool is_function_update_stable_application(const atermpp::aterm &e)
Recogniser for application of @func_update_stable.
std::set< data::function_symbol > find_function_symbols(const data::data_equation &x)
application if_always_else(const sort_expression &s, const sort_expression &t, const data_expression &arg0, const data_expression &arg1, const data_expression &arg2)
Application of function symbol @if_always_else.
std::string pp(const data::bag_container &x, bool arg0)
void swap(function_symbol &t1, function_symbol &t2) noexcept
\brief swap overload
std::string pp(const data::alias &x, bool arg0)
bool is_if_function_symbol(const DataExpression &e)
Recogniser for function if.
std::ostream & operator<<(std::ostream &out, const fbag_container &x)
std::set< data::variable > find_free_variables(const data::data_expression &x)
application greater(const data_expression &arg0, const data_expression &arg1)
Application of function symbol >
void make_abstraction(atermpp::aterm &result, ARGUMENTS... arguments)
void swap(sort_expression &t1, sort_expression &t2) noexcept
\brief swap overload
std::set< data::variable > find_all_variables(const data::variable_list &x)
bool is_untyped_set_or_bag_comprehension(const atermpp::aterm &x)
Returns true if the term t is a set/bag comprehension.
void swap(abstraction &t1, abstraction &t2) noexcept
\brief swap overload
bool is_untyped_data_parameter(const atermpp::aterm &x)
void swap(alias &t1, alias &t2) noexcept
\brief swap overload
bool is_assignment(const atermpp::aterm &x)
std::string pp(const data::structured_sort_constructor &x, bool arg0)
std::set< data::sort_expression > find_sort_expressions(const data::sort_expression &x)
std::string pp(const data::data_specification &x, bool arg0)
std::string pp(const data::data_equation_list &x, bool arg0)
constexpr int precedence(const lambda &)
bool is_simple_substitution(const Substitution &)
Returns true if the substitution sigma satisfies the property that FV(sigma(x)) is included in {x} fo...
void find_data_expressions(const T &x, OutputIterator o)
Returns all data expressions that occur in an object.
std::string pp(const data::fset_container &x, bool arg0)
function_sort make_function_sort_(const sort_expression &dom1, const sort_expression &dom2, const sort_expression &dom3, const sort_expression &codomain)
Convenience constructor for function sort with domain size 3.
std::string pp(const data::sort_expression &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const binder_type &x)
std::string pp(const data::untyped_set_or_bag_comprehension &x, bool arg0)
void is_not_a_function_update_manual_implementation(data_expression &result, const data_expression &arg0)
The data expression of an application of the function symbol @is_not_an_update.
std::pair< basic_sort_vector, alias_vector > parse_sort_specification(const std::string &text)
void swap(lambda_binder &t1, lambda_binder &t2) noexcept
\brief swap overload
data::sort_expression normalize_sorts(const data::sort_expression &x, const data::sort_specification &sortspec)
bool is_exists(const atermpp::aterm &x)
Returns true if the term t is an existential quantification.
std::set< core::identifier_string > function_and_mapping_identifiers(const data_specification &dataspec)
Returns the names of functions and mappings that occur in a data specification.
std::string pp(const data::variable_list &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const data_expression &x)
application greater_equal(const data_expression &arg0, const data_expression &arg1)
Application of function symbol >=.
void find_sort_expressions(const T &x, OutputIterator o)
bool is_less_equal_function_symbol(const DataExpression &e)
Recogniser for function <=.
void make_data_equation(atermpp::aterm &t, const ARGUMENTS &... args)
bool is_function_sort(const atermpp::aterm &x)
Returns true if the term t is a function sort.
bool is_data_specification(const atermpp::aterm &x)
Test for a data specification expression.
bool is_greater_equal_function_symbol(const DataExpression &e)
Recogniser for function >=.
assignment_vector make_assignment_vector(VariableSequence const &variables, ExpressionSequence const &expressions)
Constructs an assignment_list by pairwise combining a variable and expression.
std::set< data::variable > find_free_variables(const data::data_expression_list &x)
void swap(untyped_set_or_bag_comprehension &t1, untyped_set_or_bag_comprehension &t2) noexcept
\brief swap overload
std::ostream & operator<<(std::ostream &out, const untyped_identifier &x)
implementation_map function_update_cpp_implementable_constructors()
Give all system defined constructors which have an implementation in C++ and not in rewrite rules for...
std::string pp(const machine_number_list &x, bool precedence_aware=true)
std::string pp(const data::data_expression &x, bool arg0)
std::string pp(const data::lambda &x, bool arg0)
bool is_bag_comprehension(const atermpp::aterm &x)
Returns true if the term t is a bag comprehension.
std::string pp(const data::fbag_container &x, bool arg0)
bool is_set_comprehension(const atermpp::aterm &x)
Returns true if the term t is a set comprehension.
std::ostream & operator<<(std::ostream &out, const function_symbol &x)
std::string max_machine_number_string()
A string representation indicating the maximal machine number + 1.
std::ostream & operator<<(std::ostream &out, const where_clause &x)
bool is_bag_container(const atermpp::aterm &x)
std::string pp(const data::structured_sort_constructor_list &x, bool arg0)
bool is_machine_number(const atermpp::aterm &x)
Returns true if the term t is a machine_number.
function_symbol equal_to(const sort_expression &s)
Constructor for function symbol ==.
std::string pp(const data::container_sort &x, bool arg0)
data::variable_list normalize_sorts(const data::variable_list &x, const data::sort_specification &sortspec)
const data_expression_list & variable_list_to_data_expression_list(const variable_list &l)
Transform a variable_list into a data_expression_list.
function_symbol function_update_stable(const sort_expression &s, const sort_expression &t)
Constructor for function symbol @func_update_stable.
bool is_function_update_application(const atermpp::aterm &e)
Recogniser for application of @func_update.
data::data_expression normalize_sorts(const data::data_expression &x, const data::sort_specification &sortspec)
std::ostream & operator<<(std::ostream &out, const variable &x)
data_expression_list right_hand_sides(const assignment_list &x)
Returns the right hand sides of an assignment list.
void make_is_not_a_function_update(data_expression &result, const sort_expression &s, const sort_expression &t, const data_expression &arg0)
Make an application of function symbol @is_not_an_update.
function_sort make_function_sort_(const sort_expression &dom1, const sort_expression &dom2, const sort_expression &codomain)
Convenience constructor for function sort with domain size 2.
std::string pp(const data::untyped_sort_variable &x, bool arg0)
std::string pp(const data::untyped_data_parameter &x, bool arg0)
std::string pp(const data::binder_type &x, bool arg0)
application equal_to(const data_expression &arg0, const data_expression &arg1)
Application of function symbol ==.
bool is_fbag_container(const atermpp::aterm &x)
bool is_lambda(const atermpp::aterm &x)
Returns true if the term t is a lambda abstraction.
const data::variable & undefined_real_variable()
Returns a data variable that corresponds to 'undefined'.
mutable_map_substitution< MapContainer > make_mutable_map_substitution(const VariableContainer &vc, const ExpressionContainer &ec)
Utility function for creating a mutable_map_substitution.
bool is_untyped_identifier_assignment(const atermpp::aterm &x)
function_symbol_vector function_update_generate_functions_code(const sort_expression &s, const sort_expression &t)
Give all system defined mappings for function_update.
bool is_alias(const atermpp::aterm &x)
bool is_is_not_a_function_update_function_symbol(const atermpp::aterm &e)
Recogniser for function @is_not_an_update.
std::set< data::variable > find_all_variables(const data::variable &x)
void make_exists(atermpp::aterm &result, ARGUMENTS... arguments)
function_symbol function_update(const sort_expression &s, const sort_expression &t)
Constructor for function symbol @func_update.
bool is_constant(const data_expression &x)
bool is_forall_binder(const atermpp::aterm &x)
const core::identifier_string & function_update_stable_name()
Generate identifier @func_update_stable.
bool search_variable(const T &x, const variable &v)
Returns true if the term has a given variable as subterm.
assignment_list make_assignment_list(const VariableSequence &variables, const ExpressionSequence &expressions)
Converts an iterator range to data_expression_list.
bool is_less_application(const DataExpression &e)
Recogniser for application of <.
void make_structured_sort(atermpp::aterm &t, const ARGUMENTS &... args)
std::set< core::identifier_string > find_identifiers(const data::variable_list &x)
std::ostream & operator<<(std::ostream &out, const sort_expression &x)
bool search_variable(const data::data_expression &x, const data::variable &v)
const data::data_expression & undefined_data_expression()
Returns a data expression that corresponds to 'undefined'.
const data::sort_expression & undefined_sort_expression()
Returns a sort expression that corresponds to 'undefined'.
variable_list order_variables_to_optimise_enumeration(const variable_list &l, const data_specification &data_spec)
Order the variables in a variable list such that enumeration over these variables becomes more effici...
data_specification operator+(data_specification spec1, const data_specification &spec2)
Merges two data specifications into one.
std::ostream & operator<<(std::ostream &out, const data_specification &x)
void make_container_sort(atermpp::aterm &t, const ARGUMENTS &... args)
void make_function_sort(atermpp::aterm &t, const ARGUMENTS &... args)
function_sort make_function_sort_(const sort_expression &dom1, const sort_expression &dom2, const sort_expression &dom3, const sort_expression &dom4, const sort_expression &dom5, const sort_expression &codomain)
Convenience constructor for function sort with domain size 5.
std::string pp(const data::sort_expression_list &x, bool arg0)
void make_structured_sort_constructor(atermpp::aterm &t, const ARGUMENTS &... args)
std::string pp(const data::forall_binder &x, bool arg0)
const data_expression & arg3(const data_expression &e)
Function for projecting out argument. arg3 from an application.
void make_untyped_possible_sorts(atermpp::aterm &t, const ARGUMENTS &... args)
std::string pp(const data::untyped_possible_sorts &x, bool arg0)
bool is_application(const atermpp::aterm &x)
Returns true if the term t is an application.
void swap(machine_number &t1, machine_number &t2) noexcept
\brief swap overload
std::string pp(const data::function_symbol &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const set_comprehension &x)
std::set< data::variable > substitution_variables(const mutable_map_substitution<> &sigma)
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.
bool is_bag_comprehension_binder(const atermpp::aterm &x)
std::set< data::variable > find_free_variables_with_bound(const T &x, VariableContainer const &bound)
function_symbol if_(const sort_expression &s)
Constructor for function symbol if.
std::ostream & operator<<(std::ostream &out, const untyped_set_or_bag_comprehension &x)
function_symbol is_not_a_function_update(const sort_expression &s, const sort_expression &t)
Constructor for function symbol @is_not_an_update.
std::string pp(const data::machine_number &x, bool arg0)
bool is_equal_to_application(const DataExpression &e)
Recogniser for application of ==.
void swap(data_expression &t1, data_expression &t2) noexcept
\brief swap overload
void swap(variable &t1, variable &t2) noexcept
\brief swap overload
std::string pp(const data::assignment_expression &x, bool arg0)
bool is_variable(const atermpp::aterm &x)
Returns true if the term t is a variable.
void swap(untyped_possible_sorts &t1, untyped_possible_sorts &t2) noexcept
\brief swap overload
bool is_sort_expression(const atermpp::aterm &x)
Test for a sort_expression expression.
std::string pp(const data::set_comprehension &x, bool arg0)
std::ostream & operator<<(std::ostream &out, const abstraction &x)
void make_untyped_sort_variable(atermpp::aterm &t, const ARGUMENTS &... args)
std::string pp(const data::data_expression_list &x, bool arg0)
function_symbol greater(const sort_expression &s)
Constructor for function symbol >
expression builder that visits all sub expressions
core::identifier_string parse_Id(const parse_node &node) const
atermpp::term_list< T > parse_list(const parse_node &node, const std::string &type, const Function &f) const
default_parser_actions(const parser &parser_)
std::vector< T > parse_vector(const parse_node &node, const std::string &type, const Function &f) const
core::identifier_string_list parse_IdList(const parse_node &node) const
core::identifier_string parse_Number(const parse_node &node) const
static const atermpp::aterm DataVarIdInit
static const atermpp::aterm SortFSet
static const atermpp::aterm DataVarId
static const atermpp::aterm BindingOperator
static const atermpp::aterm SortArrow
static const atermpp::aterm UntypedSetBagComp
static const atermpp::aterm Lambda
static const atermpp::aterm SortExpr
static const atermpp::aterm SortConsType
static const atermpp::aterm SortId
static const atermpp::aterm UntypedSortsPossible
static const atermpp::aterm Binder
static const atermpp::aterm UntypedSortVariable
static const atermpp::aterm DataEqn
static const atermpp::aterm SortRef
static const atermpp::aterm DataExpr
static const atermpp::aterm UntypedSortUnknown
static const atermpp::aterm SortSet
static const atermpp::aterm Exists
static const atermpp::aterm SortCons
static const atermpp::aterm SortBag
static const atermpp::aterm OpId
static const atermpp::aterm StructProj
static const atermpp::aterm Whr
static const atermpp::aterm UntypedIdentifierAssignment
static const atermpp::aterm SortStruct
static const atermpp::aterm SetComp
static const atermpp::aterm StructCons
static const atermpp::aterm BagComp
static const atermpp::aterm UntypedIdentifier
static const atermpp::aterm SortFBag
static const atermpp::aterm SortList
static const atermpp::aterm WhrDecl
static const atermpp::aterm Forall
static const atermpp::aterm UntypedDataParameter
void operator()(const parse_node &x)
const parser_table & table
find_and_or(const parser_table &table_)
void operator()(const parse_node &x)
const parser_table & table
find_left_merge_merge(const parser_table &table_)
Checks if a node is the binary operation '&&'.
is_and_node(const parser_table &table_)
Checks if a node is of type 'x && (y || z)'.
const parser_table & table
is_and_or_node(const parser_table &table_)
bool operator()(const parse_node &x)
Checks if a node is the binary operation op.
bool operator()(const parse_node &x)
const parser_table & table
is_binary_operator_node(const parser_table &table_, const std::string &op_)
Checks if a node is of type 'x ||_ (y || z)'.
const parser_table & table
is_left_merge_merge(const parser_table &table_)
bool operator()(const parse_node &x)
Checks if a node is the left merge operation '||_'.
is_left_merge_node(const parser_table &table_)
Checks if a node is the merge operation '||'.
is_merge_node(const parser_table &table_)
Checks if a node is the binary operation '||'.
is_or_node(const parser_table &table_)
bool operator()(const parse_node &node) const
collector(const parser_table &table_, const std::string &type_, Container &container_, const Function &f_)
const parser_table & table
set_collector(const parser_table &table_, const std::string &type_, SetContainer &container_, const Function &f_)
bool operator()(const parse_node &node) const
const parser_table & table
visitor(const parser_table &table_, const std::string &type_, const Function &f_)
const parser_table & table
bool operator()(const parse_node &node) const
std::string symbol_name(const parse_node &node) const
parser_actions(const parser &parser_)
void traverse(const parse_node &node, const Function &f) const
set_collector< SetContainer, Function > make_set_collector(const parser_table &table, const std::string &type, SetContainer &container, const Function &f) const
visitor< Function > make_visitor(const parser_table &table, const std::string &type, const Function &f) const
collector< Container, Function > make_collector(const parser_table &table, const std::string &type, Container &container, const Function &f) const
void apply(T &result, const argument_type &x)
update_apply_builder(const Function &f)
void apply(T &result, const data::bag_comprehension &x)
void apply(T &result, const data::machine_number &x)
void apply(T &result, const data::untyped_identifier_assignment &x)
void apply(T &result, const data::assignment_expression &x)
void apply(T &result, const data::untyped_set_or_bag_comprehension &x)
void apply(T &result, const data::untyped_identifier &x)
void apply(T &result, const data::data_equation &x)
void apply(T &result, const data::function_symbol &x)
void apply(T &result, const data::assignment &x)
void apply(T &result, const data::abstraction &x)
void apply(T &result, const data::forall &x)
void apply(T &result, const data::untyped_data_parameter &x)
void apply(T &result, const data::exists &x)
void apply(T &result, const data::where_clause &x)
void apply(T &result, const data::application &x)
void apply(T &result, const data::variable &x)
void apply(T &result, const data::data_expression &x)
void apply(T &result, const data::set_comprehension &x)
void apply(T &result, const data::lambda &x)
Maintains a multiset of bound data variables during traversal.
void decrease_bind_count(const assignment_list &assignments)
void leave(const data::exists &x)
void enter(const data::forall &x)
void leave(const data::forall &x)
void leave(const data::data_equation &x)
void enter(const data::set_comprehension &x)
void enter(const data::data_equation &x)
void leave(const data::set_comprehension &x)
void enter(const data::exists &x)
void leave(const data::bag_comprehension &x)
void enter(const data::lambda &x)
void leave(const data::untyped_set_or_bag_comprehension &x)
void increase_bind_count(const assignment_list &assignments)
void enter(const data::bag_comprehension &x)
void leave(const data::lambda &x)
void enter(const data::untyped_set_or_bag_comprehension &x)
void enter(const data::where_clause &x)
void leave(const data::where_clause &x)
void apply(T &result, const data::where_clause &x)
void apply(const data::where_clause &x)
void apply(T &result, const data::assignment &x)
void apply(T &result, const data::set_comprehension &x)
void apply(T &result, const data::structured_sort_constructor_argument &x)
void apply(T &result, const data::container_sort &x)
void apply(T &result, const data::alias &x)
void apply(T &result, const data::exists &x)
void apply(T &result, const data::machine_number &x)
void apply(T &result, const data::function_symbol &x)
void apply(T &result, const data::untyped_possible_sorts &x)
void apply(T &result, const data::forall &x)
void apply(T &result, const data::basic_sort &x)
void apply(T &result, const data::data_equation &x)
void apply(T &result, const data::untyped_sort &x)
void apply(T &result, const data::abstraction &x)
void apply(T &result, const data::application &x)
void apply(T &result, const data::variable &x)
void apply(T &result, const data::structured_sort &x)
void apply(T &result, const data::untyped_identifier_assignment &x)
void apply(T &result, const data::untyped_data_parameter &x)
void apply(T &result, const data::function_sort &x)
void apply(T &result, const data::untyped_identifier &x)
void apply(T &result, const data::structured_sort_constructor &x)
void apply(T &result, const data::lambda &x)
void apply(T &result, const data::untyped_set_or_bag_comprehension &x)
void apply(T &result, const data::where_clause &x)
void apply(T &result, const data::assignment_expression &x)
void apply(T &result, const data::data_expression &x)
void apply(T &result, const data::sort_expression &x)
void apply(T &result, const data::untyped_sort_variable &x)
void apply(T &result, const data::bag_comprehension &x)
void apply(const data::function_symbol &x)
void apply(const data::set_comprehension &x)
void apply(const data::untyped_identifier &x)
void apply(const data::untyped_set_or_bag_comprehension &x)
void apply(const data::application &x)
void apply(const data::forall &x)
void apply(const data::data_equation &x)
void apply(const data::exists &x)
void apply(const data::lambda &x)
void apply(const data::machine_number &x)
void apply(const data::untyped_identifier_assignment &x)
void apply(const data::data_expression &x)
void apply(const data::where_clause &x)
void apply(const data::bag_comprehension &x)
void apply(const data::abstraction &x)
void apply(const data::assignment_expression &x)
void apply(const data::variable &x)
void apply(const data::assignment &x)
void apply(const data::untyped_data_parameter &x)
void apply(const data::untyped_possible_sorts &x)
void apply(const data::forall &x)
void apply(const data::structured_sort_constructor_argument &x)
void apply(const data::application &x)
void apply(const data::untyped_sort_variable &x)
void apply(const data::basic_sort &x)
void apply(const data::bag_comprehension &x)
void apply(const data::assignment_expression &x)
void apply(const data::untyped_sort &x)
void apply(const data::assignment &x)
void apply(const data::exists &x)
void apply(const data::untyped_set_or_bag_comprehension &x)
void apply(const data::untyped_data_parameter &x)
void apply(const data::structured_sort &x)
void apply(const data::function_sort &x)
void apply(const data::data_equation &x)
void apply(const data::container_sort &x)
void apply(const data::machine_number &x)
void apply(const data::alias &x)
void apply(const data::abstraction &x)
void apply(const data::structured_sort_constructor &x)
void apply(const data::variable &x)
void apply(const data::function_symbol &x)
void apply(const data::untyped_identifier &x)
void apply(const data::data_expression &x)
void apply(const data::set_comprehension &x)
void apply(const data::untyped_identifier_assignment &x)
void apply(const data::sort_expression &x)
void apply(const data::where_clause &x)
void apply(const data::lambda &x)
void apply(const data::untyped_identifier_assignment &x)
void apply(const data::assignment &x)
void apply(const data::sort_expression &x)
void apply(const data::where_clause &x)
void apply(const data::data_expression &x)
void apply(const data::alias &x)
void apply(const data::lambda &x)
void apply(const data::basic_sort &x)
void apply(const data::variable &x)
void apply(const data::untyped_possible_sorts &x)
void apply(const data::untyped_identifier &x)
void apply(const data::untyped_sort_variable &x)
void apply(const data::untyped_set_or_bag_comprehension &x)
void apply(const data::forall &x)
void apply(const data::application &x)
void apply(const data::structured_sort_constructor_argument &x)
void apply(const data::structured_sort_constructor &x)
void apply(const data::untyped_sort &x)
void apply(const data::machine_number &x)
void apply(const data::function_sort &x)
void apply(const data::container_sort &x)
void apply(const data::set_comprehension &x)
void apply(const data::data_equation &x)
void apply(const data::structured_sort &x)
void apply(const data::assignment_expression &x)
void apply(const data::bag_comprehension &x)
void apply(const data::exists &x)
void apply(const data::abstraction &x)
void apply(const data::untyped_data_parameter &x)
void apply(const data::function_symbol &x)
void apply(const data::untyped_set_or_bag_comprehension &x)
void apply(const data::untyped_identifier_assignment &x)
void apply(const data::untyped_data_parameter &x)
void apply(const data::data_expression &x)
void apply(const data::bag_comprehension &x)
void apply(const data::data_equation &x)
void apply(const data::where_clause &x)
void apply(const data::set_comprehension &x)
void apply(const data::exists &x)
void apply(const data::untyped_identifier &x)
void apply(const data::variable &x)
void apply(const data::abstraction &x)
void apply(const data::forall &x)
void apply(const data::assignment_expression &x)
void apply(const data::assignment &x)
void apply(const data::application &x)
void apply(const data::function_symbol &x)
void apply(const data::lambda &x)
void apply(const data::machine_number &x)
void apply(T &result, const data::abstraction &x)
void apply(T &result, const data::application &x)
void apply(T &result, const data::untyped_data_parameter &x)
void apply(T &result, const data::untyped_identifier &x)
void apply(T &result, const data::data_expression &x)
void apply(T &result, const data::assignment_expression &x)
void apply(T &result, const data::where_clause &x)
void apply(T &result, const data::forall &x)
void apply(T &result, const data::function_symbol &x)
void apply(T &result, const data::exists &x)
void apply(T &result, const data::lambda &x)
void apply(T &result, const data::variable &x)
void apply(T &result, const data::assignment &x)
void apply(T &result, const data::untyped_identifier_assignment &x)
void apply(T &result, const data::untyped_set_or_bag_comprehension &x)
void apply(T &result, const data::set_comprehension &x)
void apply(T &result, const data::bag_comprehension &x)
void apply(T &result, const data::machine_number &x)
void apply(T &result, const data::data_equation &x)
Tests if a term is a sort, and if it is equal to s.
bool operator()(const atermpp::aterm &t) const
compare_sort(sort_expression s_)
bool operator()(Term2 t) const
Function call operator.
compare_term(const Term &t)
Function object that determines if a term is equal to a given data variable.
compare_variable(const variable &v)
data_expression make_untyped_set_or_bag_comprehension(const variable &v, const data_expression &x) const
data::variable_list parse_VarsDeclList(const core::parse_node &node) const
data::data_expression_list parse_DataExprList(const core::parse_node &node) const
data_expression make_list_enumeration(const data_expression_list &x) const
data_expression make_function_update(const data_expression &x, const data_expression &y, const data_expression &z) const
data_expression make_set_enumeration(const data_expression_list &x) const
data::sort_expression_list get_sorts(const ExpressionContainer &x) const
data_expression_actions(const core::parser &parser_)
bool callback_VarsDecl(const core::parse_node &node, variable_vector &result) const
data::variable parse_VarDecl(const core::parse_node &node) const
data::untyped_identifier_assignment parse_Assignment(const core::parse_node &node) const
data::data_expression parse_DataValExpr(const core::parse_node &node) const
data::data_expression_list parse_BagEnumEltList(const core::parse_node &node) const
data::untyped_identifier_assignment_list parse_AssignmentList(const core::parse_node &node) const
data_expression make_bag_enumeration(const data_expression_list &x) const
data::data_expression parse_DataExprUnit(const core::parse_node &node) const
data::data_expression parse_DataExpr(const core::parse_node &node) const
bool callback_IdsDecl(const core::parse_node &node, function_symbol_vector &result) const
data::variable_list parse_GlobVarSpec(const core::parse_node &node) const
data_specification_actions(const core::parser &parser_)
data::function_symbol_vector parse_MapSpec(const core::parse_node &node) const
data::data_equation_vector parse_EqnDeclList(const core::parse_node &node, const variable_list &variables) const
data::variable_list parse_VarSpec(const core::parse_node &node) const
std::vector< atermpp::aterm > parse_SortDeclList(const core::parse_node &node) const
untyped_data_specification parse_DataSpec(const core::parse_node &node) const
bool callback_SortDecl(const core::parse_node &node, std::vector< atermpp::aterm > &result) const
data::data_equation_vector parse_EqnSpec(const core::parse_node &node) const
data::function_symbol_vector parse_IdsDeclList(const core::parse_node &node) const
bool callback_DataSpecElement(const core::parse_node &node, untyped_data_specification &result) const
bool callback_EqnDecl(const core::parse_node &node, const variable_list &variables, data_equation_vector &result) const
std::vector< atermpp::aterm > parse_SortSpec(const core::parse_node &node) const
data::function_symbol_vector parse_ConsSpec(const core::parse_node &node) const
bool operator()(const function_symbol &c) const
Function call operator.
function_symbol_has_name(std::string const &name)
void apply(const data::structured_sort_constructor &)
void apply(const data::untyped_possible_sorts &)
void apply(const data::structured_sort_constructor_argument &)
void apply(const data::untyped_set_or_bag_comprehension &)
void apply(const data::untyped_identifier_assignment &)
void apply(const data::untyped_sort &)
void apply(const data::untyped_identifier &)
normalize_sorts_function(const sort_specification &sort_spec)
sort_expression operator()(const sort_expression &e) const
Normalise sorts.
const std::map< sort_expression, sort_expression > & m_normalised_aliases
sort_expression operator()(const T &t) const
void print_condition(const T &x, const std::string &arrow=" -> ")
void apply(const data::untyped_set_or_bag_comprehension_binder &x)
void apply(const data::untyped_sort_variable &x)
void apply(const data::application &x)
bool is_cons_list(data_expression x) const
void apply(const machine_number &x)
void print_container(const Container &container, int container_precedence=-1, const std::string &separator=", ", const std::string &open_bracket="(", const std::string &close_bracket=")")
void apply(const data::untyped_identifier &x)
void print_sort_list(const Container &container, const std::string &opener="(", const std::string &closer=")", const std::string &separator=", ")
void print_fset_default(const data_expression &x)
void apply(const data::bag_comprehension_binder &x)
void apply(const data::set_container &x)
void apply(const data::set_comprehension_binder &x)
void print_set_enumeration(const application &x)
void print_binary_data_operation(const application &x, const std::string &op)
void print_cons_list(data_expression x)
void print_sort_declarations(const AliasContainer &aliases, const SortContainer &sorts, const std::string &opener="(", const std::string &closer=")", const std::string &separator=", ")
void update_mappings(const data_equation &eqn, std::vector< variable > &variables, std::map< core::identifier_string, variable > &variable_map, std::set< core::identifier_string > &function_symbol_names)
bool is_fbag_cons_list(data_expression x)
Returns true if x is a list composed of cons, insert and cinsert applications.
void print_assignments(const Container &container, bool print_lhs=true, const std::string &opener="", const std::string &closer="", const std::string &separator=", ", const std::string &assignment_symbol=" = ")
void apply(const data::list_container &x)
void apply(const data::exists &x)
void apply(const data::fbag_container &x)
void apply(const data::function_sort &x)
void print_fset_lambda(const data_expression &x)
core::identifier_string generate_identifier(const std::string &prefix, const data_expression &context) const
void apply(const data::data_equation &x)
void apply(const data::alias &x)
void print_sorted_declarations(const Container &container, bool print_sorts=true, bool join_sorts=true, bool maximally_shared=false, const std::string &opener="(", const std::string &closer=")", const std::string &separator=", ", SortAccessor get_sort=get_sort_default())
void apply(const data::where_clause &x)
void apply(const data::data_specification &x)
bool is_fbag_zero(const data_expression &x)
void apply(const data::structured_sort &x)
void apply(const data::untyped_identifier_assignment &x)
void print_equations(const Container &equations, const data_specification &data_spec, const std::string &opener="(", const std::string &closer=")", const std::string &separator=", ")
bool is_fset_false(const data_expression &x)
bool is_abstraction_application(const application &x) const
void apply(const data::lambda_binder &x)
void apply(const data::structured_sort_constructor_argument &x)
void apply(const data::variable &x)
void apply(const data::container_type &x)
bool is_fbag_one(const data_expression &x)
void apply(const data::basic_sort &x)
bool is_snoc_list(data_expression x) const
void print_fbag_one(const data_expression &x)
bool is_fbag_lambda(const data_expression &x)
void print_abstraction(const Abstraction &x, const std::string &op)
void apply(const data::function_symbol &x)
void apply(const data::exists_binder &x)
void apply(const data::fset_container &x)
bool has_conflict(const data_equation &eqn, const std::map< core::identifier_string, variable > &variable_map)
bool is_numeric_expression(const application &x)
bool is_infix_operation(const application &x) const
void print_fbag_lambda(const data_expression &x)
void apply(const data::untyped_data_parameter &x)
void apply(const data::abstraction &x)
void apply(const data::untyped_sort &x)
void apply(const data::container_sort &x)
void apply(const data::assignment &x)
void print_fbag_zero(const data_expression &x)
bool is_fset_lambda(const data_expression &x)
void print_snoc_list(data_expression x)
void print_fset_false(const data_expression &x)
void print_fbag_cons_list(data_expression x)
bool is_standard_sort(const sort_expression &x)
void apply(const data::untyped_possible_sorts &x)
void print_unary_data_operation(const application &x, const std::string &op)
bool is_fset_cons_list(data_expression x)
void print_setbag_comprehension(const abstraction &x)
void print_fset_cons_list(data_expression x)
void print_bag_enumeration(const application &x)
void print_variables(const Container &container, bool print_sorts=true, bool join_sorts=true, bool maximally_shared=false, const std::string &opener="(", const std::string &closer=")", const std::string &separator=", ")
void apply(const data::bag_container &x)
void print_function_application(const application &x)
void print_fbag_default(const data_expression &x)
Iter find_conflicting_equation(Iter first, Iter last, std::vector< variable > &variables)
Searches in the range of equations [first, last) for the first equation that conflicts with one of th...
void print_variable(const Variable &x, bool print_sort=false)
void apply(const data::variable_list &x)
void apply(const std::pair< data_expression, data_expression > &x)
void print_binary_data_operation(const application &x, const data_expression &x1, const data_expression &x2, const std::string &op)
void print_list_enumeration(const application &x)
void apply(const data::structured_sort_constructor &x)
void apply(const data::forall &x)
void apply(const data::forall_binder &x)
void apply(const data::lambda &x)
void print_fset_set_operation(const data_expression &x, const std::string &op)
void print_fset_true(const data_expression &x)
bool is_fset_true(const data_expression &x)
data::structured_sort_constructor parse_ConstrDecl(const core::parse_node &node) const
data::sort_expression parse_SortExpr(const core::parse_node &node, data::sort_expression_list *product=nullptr) const
data::structured_sort_constructor_list parse_ConstrDeclList(const core::parse_node &node) const
data::sort_expression_list parse_SortProduct(const core::parse_node &node) const
data::sort_expression_list parse_SortExpr_as_SortProduct(const core::parse_node &node) const
data::structured_sort_constructor_argument_list parse_ProjDeclList(const core::parse_node &node) const
sort_expression_actions(const core::parser &parser_)
data::structured_sort_constructor_argument parse_ProjDecl(const core::parse_node &node) const
bool operator()(const sort_expression &s) const
Function call operator.
sort_has_name(std::string const &name)
Function object that returns the sort of a data expression.
sort_expression operator()(const Expression &e) const
Function call operator.
data_expression operator()(const data_expression &x) const
Function object that returns the name of a data variable.
core::identifier_string operator()(const variable &v) const
Function call operator.
Wrapper class for internal storage and substitution updates using operator()
assignment(typename AssociativeContainer::key_type v, AssociativeContainer &m)
Constructor.
assignment & operator=(AssignableToExpression const &e)
AssociativeContainer::key_type m_variable
AssociativeContainer & m_map
Prints the object x to a stream.
void operator()(const T &x, std::ostream &out, bool precendence_aware)
sort_expression operator()(structured_sort_constructor_argument const &s) const
std::vector< basic_sort > basic_sorts
void add_mapping(const function_symbol &x)
data_specification construct_data_specification() const
std::vector< function_symbol > constructors
void add_alias(const alias &x)
void add_sort(const basic_sort &x)
std::vector< function_symbol > mappings
std::vector< data_equation > equations
void add_constructor(const function_symbol &x)
std::vector< alias > aliases
void add_equation(const data_equation &x)
std::size_t operator()(const mcrl2::data::container_type &v) const
std::size_t operator()(const mcrl2::data::data_expression &v) const
std::size_t operator()(const mcrl2::data::function_sort &v) const
std::size_t operator()(const mcrl2::data::sort_expression &x) const
std::size_t operator()(const mcrl2::data::variable &v) const