12#ifndef MCRL2_PBES_JOIN_H
13#define MCRL2_PBES_JOIN_H
19namespace pbes_system {
25template <
typename FwdIt>
35template <
typename FwdIt>
52 using namespace accessors;
53 std::set<pbes_expression> result;
55 if (split_data_expressions)
78 using namespace accessors;
79 std::set<pbes_expression> result;
81 if (split_data_expressions)
97template <
typename FwdIt>
115template <
typename FwdIt>
\brief The and operator for pbes expressions
\brief The or operator for pbes expressions
void optimized_or(Term &result, const Term &p, const Term &q)
Make a conjunction, and optimize if possible.
void optimized_and(Term &result, const Term &p, const Term &q)
Make a conjunction, and optimize if possible.
bool is_universal_or(const pbes_expression &t)
Test for a disjunction.
pbes_expression join_or(FwdIt first, FwdIt last)
Returns or applied to the sequence of pbes expressions [first, last)
std::set< pbes_expression > split_and(const pbes_expression &expr, bool split_data_expressions=false)
Splits a conjunction into a sequence of operands Given a pbes expression of the form p1 && p2 && ....
bool is_universal_and(const pbes_expression &t)
Test for a conjunction.
const pbes_expression & true_()
pbes_expression optimized_join_and(FwdIt first, FwdIt last)
Returns and applied to the sequence of pbes expressions [first, last)
pbes_expression optimized_join_or(FwdIt first, FwdIt last)
Returns or applied to the sequence of pbes expressions [first, last)
pbes_expression join_and(FwdIt first, FwdIt last)
Returns and applied to the sequence of pbes expressions [first, last)
bool is_pbes_or(const pbes_expression &t)
Returns true if the term t is an or expression.
bool is_pbes_and(const pbes_expression &t)
Returns true if the term t is an and expression.
std::set< pbes_expression > split_or(const pbes_expression &expr, bool split_data_expressions=false)
Splits a disjunction into a sequence of operands Given a pbes expression of the form p1 || p2 || ....
const pbes_expression & false_()
T join(FwdIt first, FwdIt last, BinaryOperation op, T empty_sequence_result)
Given a sequence [t1, t2, ..., tn] of elements of type T, returns op(t1, op(t2, .....
void split(const T &t, OutputIterator i, MatchFunction match, AccessorFunction1 lhs, AccessorFunction2 rhs)
Splits a binary tree T into a sequence, and writes the result to the output range given by an output ...
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
The class pbes_expression.