14#ifndef MCRL2_LPS_REWRITERS_ONE_POINT_CONDITION_REWRITE_H
15#define MCRL2_LPS_REWRITERS_ONE_POINT_CONDITION_REWRITE_H
35 const auto& v_i = expr;
42 const auto& vleft = atermpp::down_cast<data::variable>(left);
43 result[vleft] = right;
47 const auto& vright = atermpp::down_cast<data::variable>(right);
48 result[vright] = left;
54 const auto& v = atermpp::down_cast<data::variable>(v_i);
62 const auto& v = atermpp::down_cast<data::variable>(narg);
70template <
typename DataRewriter>
79 const DataRewriter&
R;
89 std::map<data::variable, data::data_expression> assignments;
91 for (
const auto& [k,v]: assignments)
164template <
typename T,
typename DataRewriter>
165void one_point_condition_rewrite(T& x,
const DataRewriter& R,
typename std::enable_if<!std::is_base_of<atermpp::aterm, T>::value>::type* =
nullptr)
174template <
typename T,
typename DataRewriter>
175T
one_point_condition_rewrite(
const T& x,
const DataRewriter& R,
typename std::enable_if<std::is_base_of<atermpp::aterm, T>::value>::type* =
nullptr)
Generic substitution function. The substitution is stored as a mapping of variables to expressions....
void clear()
Resets the substitution by letting every variable yield itself. Cf. clear() of a map.
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.
LPS summand containing a deadlock.
const lps::deadlock & deadlock() const
Returns the deadlock of this summand.
\brief A timed multi-action
LPS summand containing a multi-action.
const stochastic_distribution & distribution() const
Returns the distribution of this summand.
\brief A stochastic distribution
const data::data_expression & condition() const
Returns the condition expression.
Join and split functions for data expressions.
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
add your file description here.
add your file description here.
add your file description here.
std::string print_map(const MapContainer &v, const std::string &message="")
Creates a string representation of a map.
const data_expression & arg(const data_expression &e)
Function for projecting out argument. arg from an application.
bool is_bool(const sort_expression &e)
Recogniser for sort expression Bool.
const function_symbol & false_()
Constructor for function symbol false.
bool is_not_application(const atermpp::aterm &e)
Recogniser for application of !.
const function_symbol & true_()
Constructor for function symbol true.
const data_expression & binary_right1(const data_expression &x)
const data_expression & binary_left1(const data_expression &x)
bool is_constant(const data_expression &x)
bool is_equal_to_application(const DataExpression &e)
Recogniser for application of ==.
std::set< data_expression > split_and(const data_expression &expr)
Splits a conjunction into a sequence of operands Given a data expression of the form p1 && p2 && ....
bool is_variable(const atermpp::aterm &x)
Returns true if the term t is a variable.
void find_equality_conjuncts(const data::data_expression &x, std::map< data::variable, data::data_expression > &result)
void one_point_condition_rewrite(T &x, const DataRewriter &R, typename std::enable_if<!std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Applies the one point condition rewriter to all embedded data expressions in an object x.
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
void apply(T &result, const lps::multi_action &x)
void update(lps::deadlock &x)
void apply(T &result, const data::data_expression &x)
void update(lps::deadlock_summand &x)
lps::data_expression_builder< one_point_condition_rewrite_builder< DataRewriter > > super
one_point_condition_rewrite_builder(const DataRewriter &R_)
void calculate_substitutions(const data::data_expression &x)
void reset_substitutions()
void update(lps::stochastic_action_summand &x)
data::mutable_map_substitution sigma
void update(lps::action_summand &x)