Include file:
#include "mcrl2/pbes/parity_game_generator.h
mcrl2::pbes_system::
parity_game_generator
¶Class for generating a BES from a PBES. This BES can be interpreted as a graph corresponding to a parity game problem. The proposition variables of the BES correspond to the vertices of the graph. An interface to the graph is provided in which the vertices correspond to integer values. The values are in the range [0, 1, …, n], i.e. there are no holes in the sequence. Each vertex is labeled with a priority value, which is the block nesting depth of the proposition variable in the BES.
mcrl2::pbes_system::parity_game_generator::
operation_type
¶Values:
- PGAME_OR
The operation type of the vertices.
mcrl2::pbes_system::parity_game_generator::
substitution_function
¶typedef for data::rewriter::substitution_type
Substitution function type used by the PBES rewriter.
mcrl2::pbes_system::parity_game_generator::
datar
¶Data rewriter.
mcrl2::pbes_system::parity_game_generator::
m_bes
¶Contains intermediate results of the BES that is being generated. m_bes[i] represents a BES equation corresponding to BES variable i. m_bes[i].first is the right hand side of the BES equation m_bes[i].second is the block nesting depth of the corresponding PBES variable.
mcrl2::pbes_system::parity_game_generator::
m_initialized
¶Mark whether initialization has been initialized. Needed to properly cope with virtual inheritance!
mcrl2::pbes_system::parity_game_generator::
m_is_min_parity_game
¶True if it is a min-parity game.
mcrl2::pbes_system::parity_game_generator::
m_max_priority
¶The maximum priority value of the game.
mcrl2::pbes_system::parity_game_generator::
m_pbes
¶The PBES that is being solved.
mcrl2::pbes_system::parity_game_generator::
m_pbes_equation_index
¶Maps propositional variables to corresponding PBES equations.
mcrl2::pbes_system::parity_game_generator::
m_pbes_expression_index
¶Maps PBES closed expressions to corresponding BES variables.
mcrl2::pbes_system::parity_game_generator::
m_priorities
¶Maps propositional variables to corresponding priorities.
mcrl2::pbes_system::parity_game_generator::
m_true_false_dependencies
¶Determines what kind of BES equations are generated for true and false.
mcrl2::pbes_system::parity_game_generator::
R
¶PBES rewriter.
add_bes_equation
(pbes_expression t, std::size_t priority)¶Adds a BES equation for a given PBES expression, if it not already exists.
Parameters:
Returns: The index of a BES equation corresponding to the given PBES expression. If no equation exists for the expression, a new one is added.
compute_equation_index_map
()¶Compute equation index map.
compute_priorities
(const std::vector<pbes_equation> &equations)¶Compute priorities of PBES propositional variables.
expand_rhs
(const pbes_expression &psi)¶initialize_generation
()¶make_substitution
(const data::variable_list &v, const data::data_expression_list &e, substitution_function &sigma) const¶Generates a substitution function for the pbesinst rewriter.
Parameters:
print_bes_equation
(std::size_t index, const std::set<std::size_t> &rhs)¶print_equation_count
(std::size_t size, std::size_t step = 1000) const¶Prints a log message for every step-th equation.
get_dependencies
(std::size_t index)¶Returns the successors of a vertex in the graph.
Parameters:
Returns: The indices of the proposition variables that appear in the right hand side of the BES equation of the given index.
get_expression_operation
(const pbes_expression &phi)¶Returns the vertex type.
Parameters:
Returns: PGAME_AND if the expression is a conjunction, PGAME_OR if it is a disjunction.
get_initial_state
()¶Returns the (rewritten) initial state.
Returns: the initial state rewritten by R
get_initial_values
()¶Returns the vertices for which a solution is requested. By default a set containing the values 0, 1 and 2 is returned, corresponding to the expressions true, false and the initial state of the PBES.
Returns: A set of indices corresponding to proposition variables of the generated BES.
get_operation
(std::size_t index)¶Returns the vertex type.
Parameters:
Returns: PGAME_AND if the corresponding BES equation is a conjunction, PGAME_OR if it is a disjunction.
get_priority
(std::size_t index)¶Returns the priority of a vertex. The priority of the first equation is 0 if it is a maximal fixpoint, and 1 if it is a minimal fixpoint.
Parameters:
Returns: The block nesting depth of the variable in the BES.
parity_game_generator
(pbes &p, bool true_false_dependencies = false, bool is_min_parity = true, data::rewriter::strategy rewrite_strategy = data::jitty)¶Constructor.
Parameters:
print_variable_mapping
()¶Prints the mapping from BES variables to the corresponding PBES expressions.
~parity_game_generator
() = default¶