15#ifndef MCRL2_PBES_TOOLS_PBESBACKELM_H
16#define MCRL2_PBES_TOOLS_PBESBACKELM_H
26namespace pbes_system {
39template <
template <
class>
class Builder>
42 typedef Builder<substitute_propositional_variables_builder<Builder> >
super;
86 if (par.
sort()!=v.sort())
96 if (std::all_of(set.begin(),
106 mCRL2log(
log::debug) <<
"No Replacement in PBES equation for " <<
name <<
":\n" << x <<
" --> " << p <<
"\n";
117 while (!substituter.
stable())
147 for(std::vector<pbes_equation>::reverse_iterator i=p.
equations().rbegin(); i!=p.
equations().rend(); i++)
152 for(std::vector<pbes_equation>::reverse_iterator j=i+1; j!=p.
equations().rend(); j++)
162 const std::string& output_filename,
169 load_pbes(p, input_filename, input_format);
172 backward_substituter.
run(p, options);
173 save_pbes(p, output_filename, output_format);
Term containing a string.
const Term & front() const
Returns the first element of the list.
void pop_front()
Removes the first element of the list.
sort_expression sort() const
Returns the sort of the data expression.
Generic substitution function.
Rewriter that operates on data expressions.
const pbes_expression & formula() const
Returns the predicate formula on the right hand side of the equation.
const propositional_variable & variable() const
Returns the pbes variable of the equation.
parameterized boolean equation system
const data::data_specification & data() const
Returns the data specification.
const std::vector< pbes_equation > & equations() const
Returns the equations.
\brief A propositional variable instantiation
const data::data_expression_list & parameters() const
const core::identifier_string & name() const
const data::variable_list & parameters() const
const core::identifier_string & name() const
static RewriterCompilingJitty::substitution_type & sigma(RewriterCompilingJitty *this_rewriter)
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
rewrite_strategy
The strategy of the rewriter.
void normalize(pbes &x)
The function normalize brings (embedded) pbes expressions into positive normal form,...
void self_substitute(pbes_equation &equation, substitute_propositional_variables_builder< pbes_system::pbes_expression_builder > &substituter)
void pbesbackelm(const std::string &input_filename, const std::string &output_filename, const utilities::file_format &input_format, const utilities::file_format &output_format, pbesbackelm_options options)
void load_pbes(pbes &pbes, std::istream &stream, utilities::file_format format, const std::string &source="")
Load a PBES from file.
void save_pbes(const pbes &pbes, std::ostream &stream, utilities::file_format format=utilities::file_format())
Save a PBES in the format specified.
void pbes_rewrite(T &x, const Rewriter &R, typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
Rewrites all embedded pbes expressions in an object x.
void find_propositional_variable_instantiations(Container const &container, OutputIterator o)
Returns all data variables that occur in a range of expressions.
void substitute(pbes_equation &into, const pbes_equation &by, substitute_propositional_variables_builder< pbes_system::pbes_expression_builder > &substituter)
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
add your file description here.
IO routines for boolean equation systems.
add your file description here.
Rewriters for pbes expressions.
A rewriter that applies a data rewriter to data expressions in a term.
data::rewrite_strategy rewrite_strategy
void run(pbes &p, pbesbackelm_options options)
A rewriter that simplifies boolean expressions and quantifiers, and rewrites data expressions.
void set_name(const core::identifier_string &s)
simplify_quantifiers_data_rewriter< data::rewriter > m_pbes_rewriter
void apply(T &result, const propositional_variable_instantiation &x)
substitute_propositional_variables_builder(simplify_quantifiers_data_rewriter< data::rewriter > &r)
Builder< substitute_propositional_variables_builder< Builder > > super
core::identifier_string name
void set_equation(const pbes_equation &eq)