12#include "mcrl2/process/detail/alphabet_push_block.h"
13#include "mcrl2/process/parse_impl.h"
14#include "mcrl2/process/translate_user_notation.h"
15#include "mcrl2/process/remove_equations.h"
89 std::vector<process_equation>& equations = procspec.equations();
90 std::map<process_identifier, multi_action_name_set> pcrl_equation_cache;
92 for (process_equation& equation: equations)
94 id_generator.add_identifier(equation.identifier().name());
96 pcrl_equation_cache = detail::compute_pcrl_equation_cache(equations, init);
98 procspec.init() = push_block(empty_blockset, init, equations, id_generator, pcrl_equation_cache);
101 if (procspec.equations().size() < duplicate_equation_limit)
115 bool partial_parses =
false;
120 v = process::normalize_sorts(v, data_spec);
130 bool partial_parses =
false;
142 bool partial_parses =
false;
Identifier generator that stores the identifiers of the context in a set. Using the operator()() and ...
logger(const log_level_t l)
Default constructor.
\brief A multiset of action names
\brief The allow operator
\brief The block operator
\brief The bounded initialization
\brief The choice operator
\brief The communication operator
\brief A communication expression
\brief The if-then-else operator
\brief The if-then operator
\brief The left merge operator
\brief The merge operator
\brief A process equation
\brief A process expression
\brief A process identifier
\brief A process assignment
Process specification consisting of a data specification, action labels, a sequence of process equati...
process_expression & init()
Returns the initialization of the process specification.
\brief A rename expression
\brief The rename operator
\brief The sequential composition
\brief The distribution operator
\brief The synchronization operator
\brief An untyped multi action or data application
\brief An untyped process assginment
D_ParserTables parser_tables_mcrl2
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
void syntax_error_fn(struct D_Parser *ap)
Custom syntax error function that prints both the line number and the column.
D_ParseNode * ambiguity_fn(struct D_Parser *, int n, struct D_ParseNode **v)
Function for resolving parser ambiguities.
void warn_left_merge_merge(const parse_node &)
Prints a warning for each occurrence of 'x ||_ y || z' in the parse tree.
atermpp::term_list< identifier_string > identifier_string_list
\brief list of identifier_strings
void warn_and_or(const parse_node &)
Prints a warning for each occurrence of 'x && y || z' in the parse tree.
Namespace for all data library functionality.
void complete_process_specification(process_specification &x, bool alpha_reduce)
process_specification parse_process_specification_new(const std::string &text)
process_expression parse_process_expression_new(const std::string &text)
The main namespace for the Process library.
std::set< core::identifier_string > find_identifiers(const process::process_specification &x)
atermpp::term_list< process_equation > process_equation_list
\brief list of process_equations
std::string pp(const process::comm &x)
process::action normalize_sorts(const process::action &x, const data::sort_specification &sortspec)
void normalize_sorts(process::process_equation_vector &x, const data::sort_specification &sortspec)
std::set< data::variable > find_free_variables(const process::action &x)
std::string pp(const process::action_vector &x)
std::string pp(const process::untyped_multi_action &x)
std::vector< process_expression > process_expression_vector
\brief vector of process_expressions
std::set< data::sort_expression > find_sort_expressions(const process::process_specification &x)
std::string pp(const process::block &x)
process::action_label_list normalize_sorts(const process::action_label_list &x, const data::sort_specification &sortspec)
std::string pp(const process::untyped_process_assignment &x)
std::set< data::sort_expression > find_sort_expressions(const process::process_equation_vector &x)
std::string pp(const process::at &x)
std::string pp(const process::stochastic_operator &x)
void normalize_sorts(process::process_specification &x, const data::sort_specification &)
process::action_label_list parse_action_declaration(const std::string &text, const data::data_specification &data_spec)
Parses an action declaration from a string.
std::string pp(const process::process_specification &x)
std::string pp(const process::process_instance &x)
std::string pp(const process::process_equation_list &x)
std::string pp(const process::action_label_list &x)
std::string pp(const process::choice &x)
std::string pp(const process::process_instance_assignment &x)
std::set< data::sort_expression > find_sort_expressions(const process::action_label_list &x)
std::string pp(const process::rename_expression &x)
std::string pp(const process::process_identifier &x)
std::string pp(const process::action &x)
std::string pp(const process::seq &x)
void typecheck_process_specification(process_specification &proc_spec)
Type check a parsed mCRL2 process specification. Throws an exception if something went wrong.
std::vector< process_equation > process_equation_vector
\brief vector of process_equations
std::set< data::sort_expression > find_sort_expressions(const process::process_expression &x)
process::process_expression translate_user_notation(const process::process_expression &x)
std::string pp(const process::delta &x)
void translate_user_notation(process::process_specification &x)
atermpp::term_list< process_expression > process_expression_list
\brief list of process_expressions
process::action translate_user_notation(const process::action &x)
void alphabet_reduce(process_specification &procspec, std::size_t duplicate_equation_limit=(std::numeric_limits< size_t >::max)())
Applies alphabet reduction to a process specification.
std::string pp(const process::left_merge &x)
std::string pp(const process::communication_expression &x)
std::string pp(const process::hide &x)
atermpp::term_list< action_label > action_label_list
\brief list of action_labels
std::string pp(const process::process_identifier_list &x)
std::vector< action > action_vector
\brief vector of actions
std::string pp(const process::sum &x)
std::string pp(const process::allow &x)
std::string pp(const process::if_then_else &x)
std::string pp(const process::process_expression_list &x)
atermpp::term_list< action > action_list
\brief list of actions
std::string pp(const process::rename &x)
std::string pp(const process::action_name_multiset &x)
std::string pp(const process::tau &x)
std::string pp(const process::process_expression &x)
std::string pp(const process::merge &x)
std::string pp(const process::bounded_init &x)
std::string pp(const process::action_list &x)
void remove_duplicate_equations(process_specification &procspec)
Removes duplicate equations from a process specification, using a bisimulation algorithm.
atermpp::term_list< process_identifier > process_identifier_list
\brief list of process_identifiers
std::set< data::variable > find_free_variables(const process::process_specification &x)
std::set< data::variable > find_all_variables(const process::action &x)
std::vector< action_label > action_label_vector
\brief vector of action_labels
std::string pp(const process::if_then &x)
std::string pp(const process::action_label &x)
std::string pp(const process::sync &x)
std::string pp(const process::process_equation &x)
std::vector< process_identifier > process_identifier_vector
\brief vector of process_identifiers
Wrapper for D_Parser and its corresponding D_ParserTables.
parse_node parse(const std::string &text, unsigned int start_symbol_index=0, bool partial_parses=false)
Parses a string. N.B. The user is responsible for destruction of the returned value by calling destro...
parser(D_ParserTables &tables, D_AmbiguityFn ambiguity_fn=nullptr, D_SyntaxErrorFn syntax_error_fn=nullptr, std::size_t max_error_message_count=1)
unsigned int start_symbol_index(const std::string &name) const
action_actions(const core::parser &parser_)
bool callback_ActDecl(const core::parse_node &node, action_label_vector &result) const
untyped_process_specification parse_mCRL2Spec(const core::parse_node &node) const
process::process_expression parse_ProcExpr(const core::parse_node &node) const
process_actions(const core::parser &parser_)
process_specification construct_process_specification()
std::size_t operator()(const atermpp::detail::reference_aterm< T > &t) const