12#ifndef MCRL2_MODAL_FORMULA_TYPECHECK_H
13#define MCRL2_MODAL_FORMULA_TYPECHECK_H
23namespace action_formulas
100 (*this).apply(body, x.
body());
118 (*this).apply(body, x.
body());
141template <
typename ActionLabelContainer = std::vector<state_formulas::variable>,
typename VariableContainer = std::vector<data::variable> >
144 const VariableContainer& variables,
145 const ActionLabelContainer& actions
167namespace regular_formulas
267 (*this).apply(left, x.
left());
269 (*this).apply(right, x.
right());
274 result =
make_element_at(atermpp::down_cast<data::data_expression>(left), atermpp::down_cast<data::data_expression>(right));
278 result =
make_plus(atermpp::down_cast<data::data_expression>(left), atermpp::down_cast<data::data_expression>(right));
285 result =
seq(left, right);
289 result =
alt(left, right);
314template <
typename ActionLabelContainer = std::vector<state_formulas::variable>,
typename VariableContainer = std::vector<data::variable> >
317 const VariableContainer& variables,
318 const ActionLabelContainer& actions
340namespace state_formulas
361 const bool formula_is_quantitative
413 (*this).apply(body, x.
body());
438 (*this).apply(body, x.
body());
463 (*this).apply(body, x.
body());
488 (*this).apply(body, x.
body());
513 (*this).apply(body, x.
body());
530 (*this).apply(operand, x.
operand());
540 (*this).apply(operand, x.
operand());
562 auto q1 = expected_sorts.
begin();
563 auto q2 = arguments.
begin();
564 for (; q1 != expected_sorts.
end(); ++q1, ++q2)
586 std::vector<data::variable> result;
589 result.push_back(a.lhs());
594 template <
typename MuNuFormula>
610 (*this).apply(new_operand, x.operand());
618 return mu(x.name(), new_assignments, new_operand);
622 return nu(x.name(), new_assignments, new_operand);
647 apply(result,
static_cast<not_>(x).operand());
661 apply(result,
static_cast<minus>(x).operand());
675 apply(result,
static_cast<plus>(x).left());
677 apply(rhs,
static_cast<plus>(x).right());
721 const bool formula_is_quantitative
744 template <
typename ActionLabelContainer = std::vector<state_formulas::variable>,
typename VariableContainer = std::vector<data::variable> >
746 const bool formula_is_quantitative,
747 const ActionLabelContainer& action_labels = ActionLabelContainer(),
748 const VariableContainer& variables = VariableContainer()
783template <
typename VariableContainer,
typename ActionLabelContainer>
785 const bool formula_is_quantitative,
787 const ActionLabelContainer& action_labels = ActionLabelContainer(),
788 const VariableContainer& variables = VariableContainer()
812 const bool formula_is_quantitative
Term containing a string.
size_type size() const
Returns the size of the term_list.
const_iterator end() const
Returns a const_iterator pointing to the end of the term_list.
const Term & front() const
Returns the first element of the list.
const_iterator begin() const
Returns a const_iterator pointing to the beginning of the term_list.
void push_front(const Term &el)
Inserts a new element at the beginning of the current list.
\brief Assignment of a data expression to a variable
const sort_expression & element_sort() const
sort_expression sort() const
Returns the sort of the data expression.
void translate_user_notation()
Translate user notation within the equations of the data specification.
assignment_list typecheck_assignment_list(const assignment_list &assignments, const detail::variable_context &variable_context)
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 core::identifier_string & name() const
const data_expression_list & arguments() const
const std::set< data::variable > & global_variables() const
Returns the declared free variables of the LPS.
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.
void add_context_action_labels(const ActionLabelContainer &actions, const data::sort_type_checker &sort_typechecker)
\brief An untyped multi action or data application
const data::untyped_data_parameter_list & actions() const
Standard exception class for reporting runtime errors.
data::sort_expression_list matching_state_variable_sorts(const core::identifier_string &name, const data::data_expression_list &arguments) const
void add_state_variable(const core::identifier_string &name, const data::variable_list ¶meters, const data::sort_type_checker &sort_typechecker)
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
add your file description here.
term_list< Term > reverse(const term_list< Term > &l)
Returns the list with the elements in reversed order.
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
function_symbol union_(const sort_expression &s, const sort_expression &s0, const sort_expression &s1)
const basic_sort & bool_()
Constructor for sort expression Bool.
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
function_symbol union_(const sort_expression &s)
Constructor for function symbol +.
function_symbol union_(const sort_expression &s)
Constructor for function symbol +.
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
bool is_int(const sort_expression &e)
Recogniser for sort expression Int.
function_symbol plus(const sort_expression &s0, const sort_expression &s1)
function_symbol element_at(const sort_expression &s)
Constructor for function symbol ..
bool is_nat(const sort_expression &e)
Recogniser for sort expression Nat.
function_symbol plus(const sort_expression &s0, const sort_expression &s1)
bool is_pos(const sort_expression &e)
Recogniser for sort expression Pos.
const function_symbol & plus()
Constructor for function symbol +.
function_symbol plus(const sort_expression &s0, const sort_expression &s1)
const basic_sort & real_()
Constructor for sort expression Real.
bool is_real(const sort_expression &e)
Recogniser for sort expression Real.
bool is_union_application(const atermpp::aterm &e)
Recogniser for application of +.
function_symbol union_(const sort_expression &s, const sort_expression &s0, const sort_expression &s1)
bool is_data_expression(const atermpp::aterm &x)
Test for a data_expression expression.
std::string pp(const abstraction &x)
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)
atermpp::term_list< variable > variable_list
\brief list of variables
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)
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
add your file description here.