12#ifndef MCRL2_PRES_PRES_H
13#define MCRL2_PRES_PRES_H
30std::string
pp(
const pres& x);
39 const std::set<data::sort_expression>& declared_sorts,
40 const std::set<data::variable>& declared_global_variables,
41 const data::data_specification& data_spec
45 const std::set<data::variable>& declared_global_variables,
46 const std::set<data::variable>& occurring_global_variables,
47 const std::set<propositional_variable>& declared_variables,
48 const std::set<propositional_variable_instantiation>& occ,
49 const propositional_variable_instantiation&
init,
50 const data::data_specification& data_spec
80 std::set<propositional_variable> result;
83 result.insert(eqn.variable());
96 template <
typename Iter>
99 for (Iter i = first; i != last; ++i)
118 const std::vector<pres_equation>&
equations,
138 const std::vector<pres_equation>&
equations,
215 using namespace std::rel_ops;
217 std::set<propositional_variable> result;
220 result.insert(eqn.variable());
235 std::set<propositional_variable> result;
237 std::map<core::identifier_string, propositional_variable> declared_variables;
240 declared_variables[eqn.variable().name()] = eqn.variable();
244 result.insert(declared_variables[v.name()]);
276 const std::set<data::variable>& declared_global_variables =
global_variables();
303std::string
pp(
const pres& x);
bool is_well_typed() const
Returns true if.
const std::set< sort_expression > & context_sorts() const
Return the user defined context sorts of the current specification.
void add_context_sorts(const Container &c, typename atermpp::enable_if_container< Container >::type *=nullptr)
Adds the sorts in c to the context sorts.
void add_context_sort(const sort_expression &s)
Adds the sort s to the context sorts.
parameterized boolean equation system
propositional_variable_instantiation & initial_state()
Returns the initial state.
pres(data::data_specification const &data, const std::set< data::variable > &global_variables, const std::vector< pres_equation > &equations, propositional_variable_instantiation initial_state)
Constructor.
const data::data_specification & data() const
Returns the data specification.
const std::set< data::variable > & global_variables() const
Returns the declared free variables of the pres.
data::data_specification m_data
The data specification.
pres(data::data_specification const &data, const std::vector< pres_equation > &equations, propositional_variable_instantiation initial_state)
Constructor.
bool is_declared_in(Iter first, Iter last, const propositional_variable_instantiation &v, const data::data_specification &data_spec) const
Checks if the propositional variable instantiation v appears with the right type in the sequence of p...
void set_data(const data::data_specification &d)
Allows to set the data specification of a pres.
const propositional_variable_instantiation & initial_state() const
Returns the initial state.
pres_equation equation_type
std::set< propositional_variable > compute_declared_variables() const
Returns the predicate variables appearing in the left hand side of an equation.
std::set< propositional_variable > occurring_variables() const
Returns the set of occurring propositional variable declarations of the pres, i.e....
std::set< data::variable > m_global_variables
The set of global variables.
std::set< propositional_variable > binding_variables() const
Returns the set of binding variables of the pres. This is the set variables that occur on the left ha...
propositional_variable_instantiation m_initial_state
The initial state.
const std::vector< pres_equation > & equations() const
Returns the equations.
pres()=default
Constructor.
std::vector< pres_equation > & equations()
Returns the equations.
bool is_well_typed() const
Checks if the PRES is well typed.
std::set< propositional_variable_instantiation > occurring_variable_instantiations() const
Returns the set of occurring propositional variable instantiations of the pres. This is the set of va...
std::set< data::variable > & global_variables()
Returns the declared free variables of the pres.
std::vector< pres_equation > m_equations
The sequence of pres equations.
bool is_closed() const
True if the pres is closed.
\brief A propositional variable instantiation
const core::identifier_string & name() const
const data::data_expression_list & parameters() const
add your file description here.
MCRL2_EXPORT bool init(rewriter_interface *i, RewriterCompilingJitty *this_rewriter)
bool check_rule_PRES(const Term &t)
bool equal_sorts(const data::variable_list &v, const data::data_expression_list &w, const data::data_specification &data_spec)
Checks if the sorts of the variables/expressions in both lists are equal.
std::set< typename Container::value_type > make_set(const Container &c)
Makes a set of the given container.
const basic_sort & real_()
Constructor for sort expression Real.
void translate_user_notation(pres_system::pres &x)
bool operator==(const pres &p1, const pres &p2)
Equality operator on PRESs.
void find_free_variables(const T &x, OutputIterator o)
bool is_well_typed_equation(const pres_equation &eqn, const std::set< data::sort_expression > &declared_sorts, const std::set< data::variable > &declared_global_variables, const data::data_specification &data_spec)
void find_sort_expressions(const T &x, OutputIterator o)
void find_all_variables(const T &x, OutputIterator o)
std::string pp(const pres &x)
bool is_well_typed_pres(const std::set< data::sort_expression > &declared_sorts, const std::set< data::variable > &declared_global_variables, const std::set< data::variable > &occurring_global_variables, const std::set< propositional_variable > &declared_variables, const std::set< propositional_variable_instantiation > &occ, const propositional_variable_instantiation &init, const data::data_specification &data_spec)
void normalize_sorts(T &x, const data::sort_specification &sortspec, typename std::enable_if< !std::is_base_of< atermpp::aterm, T >::value >::type *=nullptr)
void find_function_symbols(const T &x, OutputIterator o)
atermpp::aterm pres_to_aterm(const pres &p)
Conversion to atermappl.
void complete_data_specification(pres &)
Adds all sorts that appear in the PRES p to the data specification of p.
atermpp::aterm_ostream & operator<<(atermpp::aterm_ostream &stream, const pres &pres)
Writes the pres to a stream.
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...