12#ifndef MCRL2_LPS_TYPECHECK_H
13#define MCRL2_LPS_TYPECHECK_H
32 template <
typename VariableContainer,
typename ActionLabelContainer>
34 const VariableContainer& variables,
35 const ActionLabelContainer& action_labels
55 std::vector<process::action> actions;
115 mCRL2log(
log::debug) <<
"type checking action rename specification finished" << std::endl;
134 return typechecker(mult_act);
148 return typechecker(mult_act);
162 return typechecker(arspec, lpsspec);
Action rename specifications.
void translate_user_notation()
Translate user notation within the equations of the data specification.
data_expression typecheck_data_expression(const data_expression &x, const sort_expression &expected_sort, const detail::variable_context &variable_context)
const data_specification & typechecked_data_specification() const
void add_context_variables(const VariableContainer &variables)
\brief An untyped parameter
const data::data_expression & condition() const
Returns the condition of the rule.
const process::process_expression & rhs() const
Returns the right hand side of the rule.
const data::variable_list & variables() const
Returns the variables of the rule.
const process::action & lhs() const
Returns the left hand side of the rule.
Read-only singly linked list of action rename rules.
const std::vector< action_rename_rule > & rules() const
Returns the action rename rules.
const data::data_specification & data() const
Returns the data action_rename_specification.
const process::action_label_list & action_labels() const
Returns the sequence of action labels.
action_rename_specification operator()(const action_rename_specification &arspec, const stochastic_specification &lpsspec)
Type check an action_rename_specification.
process::detail::action_context m_action_context
action_rename_rule typecheck_action_rename_rule(const action_rename_rule &x, const process::action_label_list &action_labels)
data::data_type_checker m_data_type_checker
action_rename_type_checker()
Default constructor for an action rename type checker.
multi_action_type_checker(const data::data_specification &dataspec=data::data_specification())
Default constructor.
multi_action operator()(const process::untyped_multi_action &x)
Type check a multi action. Throws a mcrl2::runtime_error exception if the expression is not well type...
data::detail::variable_context m_variable_context
process::detail::action_context m_action_context
data::data_type_checker m_data_type_checker
multi_action_type_checker(const data::data_specification &dataspec, const VariableContainer &variables, const ActionLabelContainer &action_labels)
\brief A timed multi-action
const process::action_label_list & action_labels() const
Returns a sequence of action labels. This sequence contains all action labels occurring in the specif...
const data::data_specification & data() const
Returns the data specification.
Linear process specification.
const core::identifier_string & name() const
const data::data_expression_list & arguments() const
const action_label & label() const
void add_context_action_labels(const ActionLabelContainer &actions, const data::sort_type_checker &sort_typechecker)
\brief A process expression
\brief An untyped multi action or data application
const data::untyped_data_parameter_list & actions() const
Standard exception class for reporting runtime errors.
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
const basic_sort & bool_()
Constructor for sort expression Bool.
data_expression normalize_sorts(const data_expression &x, const data::sort_specification &sortspec)
multi_action typecheck_multi_action(process::untyped_multi_action &mult_act, const data::data_specification &data_spec, const process::action_label_list &action_decls)
Type check a multi action Throws an exception if something went wrong.
action_rename_specification typecheck_action_rename_specification(const action_rename_specification &arspec, const lps::stochastic_specification &lpsspec)
Type checks an action rename specification.
process_expression typecheck_process_expression(const process_expression &x, const VariableContainer &variables=VariableContainer(), const data::data_specification &dataspec=data::data_specification(), const ActionLabelContainer &action_labels=ActionLabelContainer(), const ProcessIdentifierContainer &process_identifiers=ProcessIdentifierContainer(), const process_identifier *current_equation=nullptr)
Typecheck a process expression.
action typecheck_action(const core::identifier_string &name, const data::data_expression_list ¶meters, data::data_type_checker &typechecker, const data::detail::variable_context &variable_context, const detail::action_context &action_context)
std::string pp(const action_label &x)
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
add your file description here.