12#ifndef MCRL2_PBES_REPLACE_SUBTERM_H
13#define MCRL2_PBES_REPLACE_SUBTERM_H
15#include "mcrl2/pbes/builder.h"
16#include "mcrl2/pbes/detail/position_count_traverser.h"
43 if (counter.at(xpos, ypos))
45 result = atermpp::down_cast<pbes_expression>(x);
103 template <
typename T>
107 bool arrived = counter.at(xpos, ypos);
109 if (counter.y > ypos)
111 result = atermpp::down_cast<pbes_expression>(x);
119 super::apply(result, x);
176 f.apply(result, expr);
\brief The and operator for pbes expressions
\brief The existential quantification operator for pbes expressions
\brief The universal quantification operator for pbes expressions
\brief The implication operator for pbes expressions
\brief The or operator for pbes expressions
pbes_expression & operator=(const pbes_expression &) noexcept=default
pbes_expression(const pbes_expression &) noexcept=default
Move semantics.
parameterized boolean equation system
\brief A propositional variable instantiation
pbes_expression replace_subterm(const pbes_expression &expr, std::size_t x, std::size_t y, const pbes_expression &replacement)
Replace the subterm at position (x, y) with a given term.
pbes_expression find_subterm(const pbes &pbesspec, std::size_t x, std::size_t y)
pbes replace_subterm(const pbes &p, std::size_t x, std::size_t y, const pbes_expression &replacement)
Replace the subterm at position (x, y) with a given term.
utilities::detail::position_counter counter
void apply(const forall &x)
void apply(const data::data_expression &x)
void apply(const exists &x)
void apply(const propositional_variable_instantiation &x)
void apply(const and_ &x)
find_subterm_traverser(std::size_t xpos_, std::size_t ypos_)
void apply(T &result, const pbes_system::forall &x)
void apply(T &result, const pbes_system::or_ &x)
void apply(T &result, const data::data_expression &x)
pbes_expression visit(const T &x)
void apply(T &result, const pbes_system::and_ &x)
utilities::detail::position_counter counter
pbes_expression replacement
void apply(T &result, const propositional_variable_instantiation &x)
void apply(T &result, const pbes_system::exists &x)
void apply(T &result, const pbes_system::imp &x)
replace_subterm_builder(std::size_t xpos_, std::size_t ypos_, const pbes_expression &replacement_)