12#ifndef MCRL2_PBES_PBES_GAUSS_ELIMINATION_H
13#define MCRL2_PBES_PBES_GAUSS_ELIMINATION_H
15#include "mcrl2/pbes/gauss_elimination_algorithm.h"
16#include "mcrl2/pbes/rewriters/enumerate_quantifiers_rewriter.h"
36 expression_type
substitute(
const expression_type& t,
const variable_type& X,
const expression_type& phi)
45 return core::term_traits<expression_type>::true_();
52 return core::term_traits<expression_type>::false_();
75 return pbes_system::pp(eq.symbol()) +
" " + pbes_system::pp(eq.variable()) +
" = " + pbes_system::pp(eq.formula());
81template <
typename Rewriter>
108template <
typename Rewriter>
127 algorithm.run(p.equations().begin(), p.equations().end(), pbes_equation_solver<enumerate_quantifiers_rewriter>(pbesr));
129 if (tr::is_false(p.equations().front().formula()))
133 else if (tr::is_true(p.equations().front().formula()))
Rewriter that operates on data expressions.
static fixpoint_symbol nu()
Returns the nu symbol.
bool is_nu() const
Returns true if the symbol is nu.
static fixpoint_symbol mu()
Returns the mu symbol.
Algorithm class for the Gauss elimination algorithm for solving systems of (P)BES equations.
const fixpoint_symbol & symbol() const
Returns the fixpoint symbol of the equation.
propositional_variable & variable()
Returns the pbes variable of the equation.
pbes_expression & formula()
Returns the predicate formula on the right hand side of the equation.
parameterized boolean equation system
Substitution function for propositional variables.
propositional_variable_substitution(const propositional_variable &X, const pbes_expression &phi)
Constructor. Initializes the substitution with the assignment X := phi.
\brief A propositional variable declaration
int gauss_elimination(pbes &p)
Solves a PBES equation system using Gauss elimination.
pbes_equation_solver< Rewriter > make_pbes_equation_solver(const Rewriter &rewriter)
Utility function for creating a pbes_equation_solver.
An attempt for improving the efficiency.
enumerate_quantifiers_rewriter(const data::rewriter &R, const data::data_specification &dataspec, const enumerate_quantifiers_mode enum_mode=expand_infinite_sorts_and_use_data_rewriter)
const Rewriter & m_rewriter
pbes_equation_solver(const Rewriter &rewriter)
void operator()(pbes_equation &e)
Solves the equation e.
pbes_expression sigma(const pbes_equation &e)
Returns true if e.symbol() == nu(), else false.
Traits class for pbes expressions.
static std::string print(const equation_type &eq)
Pretty print an equation without generating a newline after the equal sign.
static expression_type true_()
Returns the value true.
static symbol_type nu()
Returns the fixpoint symbol nu.
static symbol_type mu()
Returns the fixpoint symbol mu.
static expression_type false_()
Returns the value false.
static expression_type substitute(const expression_type &t, const variable_type &X, const expression_type &phi)
Applies the substitution X := phi to the PBES expression t.