12#ifndef MCRL2_PBES_DETAIL_LPS2PBES_UTILITY_H
13#define MCRL2_PBES_DETAIL_LPS2PBES_UTILITY_H
15#include "mcrl2/data/substitutions/mutable_map_substitution.h"
16#include "mcrl2/modal_formula/state_formula.h"
17#include "mcrl2/pbes/pbes.h"
30std::vector<pbes_equation> operator+(
const std::vector<pbes_equation>& p,
const std::vector<pbes_equation>& q)
32 std::vector<pbes_equation> result(p);
33 result.insert(result.end(), q.begin(), q.end());
45std::vector<pbes_equation> operator+(
const std::vector<pbes_equation>& p,
const pbes_equation& e)
47 std::vector<pbes_equation> result(p);
58 data::variable_list result;
59 for (
const data::assignment& a: l)
61 result.push_front(a.lhs());
63 return atermpp::reverse(result);
69 data::data_expression_list result;
70 for (
const data::assignment& a: l)
72 result.push_front(a.rhs());
74 return atermpp::reverse(result);
82 const auto& g = atermpp::down_cast<state_formulas::mu>(f);
87 const auto& g = atermpp::down_cast<state_formulas::nu>(f);
101 const auto& g = atermpp::down_cast<state_formulas::mu>(f);
102 return lhs_variables(g.assignments());
106 const auto& g = atermpp::down_cast<state_formulas::nu>(f);
107 return lhs_variables(g.assignments());
120 const auto& g = atermpp::down_cast<state_formulas::mu>(f);
121 return rhs_expressions(g.assignments());
125 const auto& g = atermpp::down_cast<state_formulas::nu>(f);
126 return rhs_expressions(g.assignments());
133 std::ostringstream out;
135 for (
const pbes_equation& eqn: v)
137 out <<
"\n " << pbes_system::pp(eqn.symbol()) <<
" " << pbes_system::pp(eqn.variable()) <<
" = " << pbes_system::pp(eqn.formula());
150 data::mutable_map_substitution<> result;
151 for (
const data::variable& v: variables)
153 core::identifier_string name = id_generator(std::string(v.name()));
154 result[v] = data::variable(name, v.sort());
157 id_generator.remove_identifier(name);
const core::identifier_string & mu_name(const state_formulas::state_formula &f)
data::mutable_map_substitution make_fresh_variable_substitution(const data::variable_list &variables, data::set_identifier_generator &id_generator, bool add_to_context=true)
Generates a substitution that assigns fresh variables to the given sequence of variables....
data::data_expression_list mu_expressions(const state_formulas::state_formula &f)
Returns the data expressions corresponding to ass(f)
data::data_expression_list rhs_expressions(const data::assignment_list &l)
data::variable_list lhs_variables(const data::assignment_list &l)
std::string myprint(const std::vector< pbes_equation > &v)
data::variable_list mu_variables(const state_formulas::state_formula &f)
Returns the variables corresponding to ass(f)