15#ifndef MCRL2_LPS_DISJOINTNESS_CHECKER_H
16#define MCRL2_LPS_DISJOINTNESS_CHECKER_H
69 template <
typename LinearProcess>
73 bool disjoint(std::size_t n1, std::size_t n2);
106 for (
auto i = t.
begin(); i != t.
end(); ++i)
131 for (
const auto & v_action : v_actions)
135 for (
const auto & v_expression : v_expressions)
153 for (
const auto & v_assignment : v_assignments)
163template <
typename LinearProcess>
166 const auto& v_summands = a_process_equation.action_summands();
167 std::size_t v_summand_number = 1;
175 for (
const auto & v_summand : v_summands)
190 return v_used_1_changed_2 && v_used_2_changed_1 && v_changed_1_changed_2;
An abstraction expression.
const data_expression & body() const
An application of a data expression to a number of arguments.
const_iterator end() const
Returns an iterator pointing past the last argument of the application.
const_iterator begin() const
Returns an iterator pointing to the first argument of the application.
const data_expression & head() const
Get the function at the head of this expression.
\brief Assignment of a data expression to a variable
const data_expression & rhs() const
\brief A where expression
const assignment_list & assignments() const
const data_expression & body() const
LPS summand containing a multi-action.
const lps::multi_action & multi_action() const
Returns the multi-action of this summand.
const data::assignment_list & assignments() const
Returns the sequence of assignments.
void process_data_expression(std::size_t n, const data::data_expression &x)
Updates the array Disjointness_Checker::f_used_parameters_per_summand, given the expression a_express...
Disjointness_Checker(const LinearProcess &a_process_equation)
Constructor that initializes the sets Disjointness_Checker::f_used_parameters_per_summand and.
std::vector< std::set< data::variable > > f_used_parameters_per_summand
A two dimensional array, indicating which parameters a summand uses, for each of the summands.
std::vector< std::set< data::variable > > f_changed_parameters_per_summand
A two dimensional array, indicating which parameters a summand changes, for each of the summands.
void process_multi_action(std::size_t n, const multi_action &a)
Updates the array Disjointness_Checker::f_used_parameters_per_summand, given the multiaction a.
std::size_t f_number_of_summands
The number of summands of the LPS passed as argument of the constructor.
bool disjoint(std::size_t n1, std::size_t n2)
Indicates whether or not the summands with number n_1 and n_2 are disjoint.
void process_summand(std::size_t n, const action_summand &s)
Updates the arrays Disjointness_Checker::f_changed_parameters_per_summand and.
\brief A timed multi-action
bool has_time() const
Returns true if time is available.
const process::action_list & actions() const
const data::data_expression & time() const
const data::data_expression & condition() const
Returns the condition expression.
Standard exception class for reporting runtime errors.
The class linear_process.
bool is_where_clause(const atermpp::aterm &x)
Returns true if the term t is a where clause.
bool is_abstraction(const atermpp::aterm &x)
Returns true if the term t is an abstraction.
std::string pp(const abstraction &x)
bool is_function_symbol(const atermpp::aterm &x)
Returns true if the term t is a function symbol.
bool is_machine_number(const atermpp::aterm &x)
Returns true if the term t is a machine_number.
bool is_application(const atermpp::aterm &x)
Returns true if the term t is an application.
bool is_variable(const atermpp::aterm &x)
Returns true if the term t is a variable.
bool has_empty_intersection(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2)
Returns true if the sorted ranges [first1, ..., last1) and [first2, ..., last2) have an empty interse...
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...