12#ifndef MCRL2_MODAL_FORMULA_HAS_NAME_CLASHES_H
13#define MCRL2_MODAL_FORMULA_HAS_NAME_CLASHES_H
15#include "mcrl2/modal_formula/traverser.h"
38 m_name_stack.pop_back();
45 if (contains(m_name_stack, name))
47 throw mcrl2::runtime_error(
"nested propositional variable " + std::string(name) +
" clashes");
49 m_name_stack.push_back(name);
88 auto p = m_names.insert(name);
91 throw mcrl2::runtime_error(
"Data parameter " + data::pp(name) +
" in subformula " + state_formulas::pp(x) +
" clashes with a data parameter in an enclosing formula.");
102 for (
const data::assignment& a: x.assignments())
104 insert(a.lhs().name(), x);
110 for (
const data::assignment& a: x.assignments())
112 erase(a.lhs().name());
118 for (
const data::assignment& a: x.assignments())
120 insert(a.lhs().name(), x);
126 for (
const data::assignment& a: x.assignments())
128 erase(a.lhs().name());
134 for (
const data::variable& v: x.variables())
142 for (
const data::variable& v: x.variables())
150 for (
const data::variable& v: x.variables())
158 for (
const data::variable& v: x.variables())
183 catch (
const mcrl2::runtime_error&)
206 catch (
const mcrl2::runtime_error&)
aterm_string(const aterm_string &t) noexcept=default
sort_expression sort() const
Returns the sort of the data expression.
data_specification()=default
Default constructor. Generate a data specification that contains only booleans and positive numbers.
data_type_checker(const data_specification &data_spec)
make a data type checker. Throws a mcrl2::runtime_error exception if the data_specification is not we...
data_specification operator()() const
Yields a type checked data specification, provided typechecking was successful. If not successful an ...
\brief An untyped parameter
Linear process specification.
Linear process specification.
stochastic_specification(const specification &other)
Constructor. This constructor is explicit as implicit conversions of this kind is a source of bugs.
\brief An untyped multi action or data application
D_ParserTables parser_tables_mcrl2
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
void warn_left_merge_merge(const parse_node &)
Prints a warning for each occurrence of 'x ||_ y || z' in the parse tree.
void warn_and_or(const parse_node &)
Prints a warning for each occurrence of 'x && y || z' in the parse tree.
Namespace for system defined sort bool_.
const basic_sort & bool_()
Constructor for sort expression Bool.
bool is_data_expression(const atermpp::aterm &x)
Test for a data_expression expression.
data_specification merge_data_specifications(const data_specification &dataspec1, const data_specification &dataspec2)
Merges two data specifications. Throws an exception if conflicts are detected.
bool is_untyped_data_parameter(const atermpp::aterm &x)
The main namespace for the LPS library.
specification remove_stochastic_operators(const stochastic_specification &spec)
Converts a stochastic specification to a specification. Throws an exception if non-empty distribution...
The main namespace for the Process library.
bool is_untyped_multi_action(const atermpp::aterm &x)
expression builder that visits all sub expressions
expression traverser that visits all sub expressions