|
const constln_t * | mcrl2::lts::detail::bisim_gjkw::state_info_entry::constln () const |
| get constellation where the state belongs
|
|
constln_t * | mcrl2::lts::detail::bisim_gjkw::state_info_entry::constln () |
|
succ_const_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::current_constln () const |
|
succ_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::current_constln () |
|
void | mcrl2::lts::detail::bisim_gjkw::state_info_entry::set_current_constln (succ_iter_t const new_current_constln) |
|
pred_const_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::pred_begin () const |
| iterator to first incoming transition
|
|
pred_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::pred_begin () |
|
void | mcrl2::lts::detail::bisim_gjkw::state_info_entry::set_pred_begin (pred_iter_t new_in_begin) |
|
pred_const_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::pred_end () const |
| iterator past the last incoming transition
|
|
pred_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::pred_end () |
|
void | mcrl2::lts::detail::bisim_gjkw::state_info_entry::set_pred_end (pred_iter_t new_in_end) |
|
pred_const_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::noninert_pred_begin () const |
| iterator to first non-inert incoming transition
|
|
pred_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::noninert_pred_begin () |
|
pred_const_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::noninert_pred_end () const |
| iterator past the last non-inert incoming transition
|
|
pred_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::noninert_pred_end () |
|
pred_const_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::inert_pred_begin () const |
| iterator to first inert incoming transition
|
|
pred_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::inert_pred_begin () |
|
void | mcrl2::lts::detail::bisim_gjkw::state_info_entry::set_inert_pred_begin (pred_iter_t new_inert_in_begin) |
|
pred_const_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::inert_pred_end () const |
| iterator one past the last inert incoming transition
|
|
pred_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::inert_pred_end () |
|
succ_const_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::succ_begin () const |
| iterator to first outgoing transition
|
|
succ_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::succ_begin () |
|
void | mcrl2::lts::detail::bisim_gjkw::state_info_entry::set_succ_begin (succ_iter_t new_out_begin) |
|
succ_const_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::succ_end () const |
| iterator past the last outgoing transition
|
|
succ_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::succ_end () |
|
void | mcrl2::lts::detail::bisim_gjkw::state_info_entry::set_succ_end (succ_iter_t new_out_end) |
|
succ_const_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::inert_succ_begin () const |
| iterator to first inert outgoing transition
|
|
succ_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::inert_succ_begin () |
|
void | mcrl2::lts::detail::bisim_gjkw::state_info_entry::set_inert_succ_begin (succ_iter_t const new_inert_out_begin) |
|
succ_const_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::inert_succ_end () const |
| iterator past the last inert outgoing transition
|
|
succ_iter_t | mcrl2::lts::detail::bisim_gjkw::state_info_entry::inert_succ_end () |
|
void | mcrl2::lts::detail::bisim_gjkw::state_info_entry::set_inert_succ_begin_and_end (succ_iter_t new_inert_out_begin, succ_iter_t new_inert_out_end) |
|
bool | mcrl2::lts::detail::bisim_gjkw::state_info_entry::surely_has_transition_to (const constln_t *SpC) const |
|
bool | mcrl2::lts::detail::bisim_gjkw::state_info_entry::surely_has_no_transition_to (const constln_t *SpC) const |
|
std::string | mcrl2::lts::detail::bisim_gjkw::state_info_entry::debug_id_short () const |
| print a short state identification for debugging
|
|
std::string | mcrl2::lts::detail::bisim_gjkw::state_info_entry::debug_id () const |
| print a state identification for debugging
|
|
| mcrl2::lts::detail::bisim_gjkw::block_t::block_t (constln_t *const constln_, permutation_iter_t const begin_, permutation_iter_t const end_) |
| constructor
|
|
| mcrl2::lts::detail::bisim_gjkw::block_t::~block_t () |
|
void | mcrl2::lts::detail::bisim_gjkw::block_t::assign_seqnr () |
| assigns a unique sequence number
|
|
state_type | mcrl2::lts::detail::bisim_gjkw::block_t::seqnr () const |
|
static block_t * | mcrl2::lts::detail::bisim_gjkw::block_t::get_some_refinable () |
| provides an arbitrary refinable block
|
|
bool | mcrl2::lts::detail::bisim_gjkw::block_t::is_refinable () const |
| checks whether the block is refinable
|
|
bool | mcrl2::lts::detail::bisim_gjkw::block_t::make_refinable () |
| makes a block refinable (i. e. inserts it into the respective list)
|
|
void | mcrl2::lts::detail::bisim_gjkw::block_t::make_nonrefinable () |
| makes a block non-refinable (i. e. removes it from the respective list)
|
|
state_type | mcrl2::lts::detail::bisim_gjkw::block_t::size () const |
| provides the number of states in the block
|
|
state_type | mcrl2::lts::detail::bisim_gjkw::block_t::marked_bottom_size () const |
| provides the number of marked bottom states in the block
|
|
state_type | mcrl2::lts::detail::bisim_gjkw::block_t::marked_size () const |
| provides the number of marked states in the block
|
|
state_type | mcrl2::lts::detail::bisim_gjkw::block_t::unmarked_bottom_size () const |
| provides the number of unmarked bottom states in the block
|
|
bool | mcrl2::lts::detail::bisim_gjkw::block_t::operator< (const block_t &other) const |
| compares two blocks for ordering them
|
|
const constln_t * | mcrl2::lts::detail::bisim_gjkw::block_t::constln () const |
| constellation where the block belongs to
|
|
constln_t * | mcrl2::lts::detail::bisim_gjkw::block_t::constln () |
|
void | mcrl2::lts::detail::bisim_gjkw::block_t::set_constln (constln_t *new_constln) |
|
B_to_C_descriptor * | mcrl2::lts::detail::bisim_gjkw::block_t::FromRed (const constln_t *SpC) |
| read FromRed
|
|
void | mcrl2::lts::detail::bisim_gjkw::block_t::SetFromRed (B_to_C_desc_iter_t new_fromred) |
| set FromRed to an existing element in to_constln
|
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::begin () const |
| iterator to the first state in the block
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::begin () |
|
void | mcrl2::lts::detail::bisim_gjkw::block_t::set_begin (permutation_iter_t new_begin) |
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::end () const |
| iterator past the last state in the block
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::end () |
|
void | mcrl2::lts::detail::bisim_gjkw::block_t::set_end (permutation_iter_t new_end) |
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::nonbottom_begin () const |
| iterator to the first non-bottom state in the block
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::nonbottom_begin () |
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::nonbottom_end () const |
| iterator past the last non-bottom state in the block
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::nonbottom_end () |
|
void | mcrl2::lts::detail::bisim_gjkw::block_t::set_nonbottom_end (permutation_iter_t new_nonbottom_end) |
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::bottom_begin () const |
| iterator to the first bottom state in the block
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::bottom_begin () |
|
void | mcrl2::lts::detail::bisim_gjkw::block_t::set_bottom_begin (permutation_iter_t new_bottom_begin) |
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::bottom_end () const |
| iterator past the last bottom state in the block
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::bottom_end () |
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::unmarked_nonbottom_begin () const |
| iterator to the first unmarked non-bottom state in the block
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::unmarked_nonbottom_begin () |
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::unmarked_nonbottom_end () const |
| iterator past the last unmarked non-bottom state in the block
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::unmarked_nonbottom_end () |
|
void | mcrl2::lts::detail::bisim_gjkw::block_t::set_unmarked_nonbottom_end (permutation_iter_t new_unmarked_nonbottom_end) |
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::marked_nonbottom_begin () const |
| iterator to the first marked non-bottom state in the block
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::marked_nonbottom_begin () |
|
void | mcrl2::lts::detail::bisim_gjkw::block_t::set_marked_nonbottom_begin (permutation_iter_t new_marked_nonbottom_begin) |
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::marked_nonbottom_end () const |
| iterator one past the last marked non-bottom state in the block
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::marked_nonbottom_end () |
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::unmarked_bottom_begin () const |
| iterator to the first unmarked bottom state in the block
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::unmarked_bottom_begin () |
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::unmarked_bottom_end () const |
| iterator past the last unmarked bottom state in the block
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::unmarked_bottom_end () |
|
void | mcrl2::lts::detail::bisim_gjkw::block_t::set_unmarked_bottom_end (permutation_iter_t new_unmarked_bottom_end) |
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::marked_bottom_begin () const |
| iterator to the first marked bottom state in the block
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::marked_bottom_begin () |
|
void | mcrl2::lts::detail::bisim_gjkw::block_t::set_marked_bottom_begin (permutation_iter_t new_marked_bottom_begin) |
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::marked_bottom_end () const |
| iterator past the last marked bottom state in the block
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::marked_bottom_end () |
|
B_to_C_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::inert_begin () const |
| iterator to the first inert transition of the block
|
|
B_to_C_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::inert_begin () |
|
void | mcrl2::lts::detail::bisim_gjkw::block_t::set_inert_begin (B_to_C_iter_t new_inert_begin) |
|
B_to_C_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::inert_end () const |
| iterator past the last inert transition of the block
|
|
B_to_C_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::inert_end () |
|
void | mcrl2::lts::detail::bisim_gjkw::block_t::set_inert_end (B_to_C_iter_t new_inert_end) |
|
void | mcrl2::lts::detail::bisim_gjkw::block_t::set_inert_begin_and_end (B_to_C_iter_t new_inert_begin, B_to_C_iter_t new_inert_end) |
|
bool | mcrl2::lts::detail::bisim_gjkw::block_t::mark_nonbottom (state_info_ptr s) |
| mark a non-bottom state
|
|
bool | mcrl2::lts::detail::bisim_gjkw::block_t::mark (state_info_ptr s) |
| mark a state
|
|
block_t * | mcrl2::lts::detail::bisim_gjkw::block_t::split_off_blue (permutation_iter_t blue_nonbottom_end) |
| refine the block (the blue subblock is smaller)
|
|
block_t * | mcrl2::lts::detail::bisim_gjkw::block_t::split_off_red (permutation_iter_t red_nonbottom_begin) |
| refine the block (the red subblock is smaller)
|
|
std::string | mcrl2::lts::detail::bisim_gjkw::block_t::debug_id () const |
| print a block identification for debugging
|
|
static permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::block_t::permutation_begin () |
| provide an iterator to the beginning of the permutation array
|
|
| mcrl2::lts::detail::bisim_gjkw::constln_t::constln_t (state_type sort_key_, permutation_iter_t begin_, permutation_iter_t end_, B_to_C_iter_t postprocess_none) |
| constructor
|
|
| mcrl2::lts::detail::bisim_gjkw::constln_t::~constln_t () |
| destructor
|
|
static constln_t * | mcrl2::lts::detail::bisim_gjkw::constln_t::get_some_nontrivial () |
| provides an arbitrary non-trivial constellation
|
|
const constln_t * | mcrl2::lts::detail::bisim_gjkw::constln_t::get_nontrivial_next () const |
| provides the next non-trivial constellation
|
|
void | mcrl2::lts::detail::bisim_gjkw::constln_t::make_trivial () |
| makes a constellation trivial (i. e. removes it from the respective list)
|
|
void | mcrl2::lts::detail::bisim_gjkw::constln_t::make_nontrivial () |
| makes a constellation non-trivial (i. e. inserts it into the respective list)
|
|
bool | mcrl2::lts::detail::bisim_gjkw::constln_t::is_trivial () const |
| returns true iff the constellation is trivial
|
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::constln_t::begin () const |
| constant iterator to the first state in the constellation
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::constln_t::begin () |
| iterator to the first state in the constellation
|
|
void | mcrl2::lts::detail::bisim_gjkw::constln_t::set_begin (permutation_iter_t new_begin) |
| set the iterator to the first state in the constellation
|
|
permutation_const_iter_t | mcrl2::lts::detail::bisim_gjkw::constln_t::end () const |
| constant iterator past the last state in the constellation
|
|
permutation_iter_t | mcrl2::lts::detail::bisim_gjkw::constln_t::end () |
| iterator past the last state in the constellation
|
|
void | mcrl2::lts::detail::bisim_gjkw::constln_t::set_end (permutation_iter_t new_end) |
| set the iterator past the last state in the constellation
|
|
state_type | mcrl2::lts::detail::bisim_gjkw::constln_t::size () const |
| returns number of states in the constellation
|
|
bool | mcrl2::lts::detail::bisim_gjkw::constln_t::operator< (const constln_t &other) const |
| compares two constellations for ordering them
|
|
bool | mcrl2::lts::detail::bisim_gjkw::constln_t::operator> (const constln_t &other) const |
|
bool | mcrl2::lts::detail::bisim_gjkw::constln_t::operator<= (const constln_t &other) const |
|
bool | mcrl2::lts::detail::bisim_gjkw::constln_t::operator>= (const constln_t &other) const |
|
block_t * | mcrl2::lts::detail::bisim_gjkw::constln_t::split_off_small_block () |
| split off a single block from the constellation
|
|
std::string | mcrl2::lts::detail::bisim_gjkw::constln_t::debug_id () const |
| print a constellation identification for debugging
|
|
| mcrl2::lts::detail::bisim_gjkw::part_state_t::part_state_t (state_type n) |
| constructor
|
|
| mcrl2::lts::detail::bisim_gjkw::part_state_t::~part_state_t () |
| destructor
|
|
void | mcrl2::lts::detail::bisim_gjkw::part_state_t::clear () |
| deallocates constellations and blocks
|
|
state_type | mcrl2::lts::detail::bisim_gjkw::part_state_t::state_size () const |
| provide size of state space
|
|
const block_t * | mcrl2::lts::detail::bisim_gjkw::part_state_t::block (state_type s) const |
| find block of a state
|
|
void | mcrl2::lts::detail::bisim_gjkw::part_state_t::print_block (const char *message, const block_t *B, permutation_const_iter_t begin, permutation_const_iter_t end) const |
| print a slice of the partition (typically a block)
|
|
void | mcrl2::lts::detail::bisim_gjkw::part_state_t::print_part (const part_trans_t &part_tr) const |
| print the partition as a tree (per constellation and block)
|
|
void | mcrl2::lts::detail::bisim_gjkw::part_state_t::print_trans () const |
| print all transitions
|
|
succ_iter_t | mcrl2::lts::detail::bisim_gjkw::succ_entry::slice_begin_or_before_end () |
|
succ_const_iter_t | mcrl2::lts::detail::bisim_gjkw::succ_entry::slice_begin_or_before_end () const |
|
void | mcrl2::lts::detail::bisim_gjkw::succ_entry::set_slice_begin_or_before_end (succ_iter_t new_value) |
|
succ_iter_t | mcrl2::lts::detail::bisim_gjkw::succ_entry::slice_begin () |
|
succ_const_iter_t | mcrl2::lts::detail::bisim_gjkw::succ_entry::slice_begin () const |
|
static succ_iter_t | mcrl2::lts::detail::bisim_gjkw::succ_entry::slice_end (succ_iter_t this_) |
|
static succ_const_iter_t | mcrl2::lts::detail::bisim_gjkw::succ_entry::slice_end (succ_const_iter_t this_) |
|
static void | mcrl2::lts::detail::bisim_gjkw::succ_entry::slice_add_work_to_transns (succ_const_iter_t this_, enum check_complexity::counter_type ctr, unsigned max_value) |
|
std::string | mcrl2::lts::detail::bisim_gjkw::pred_entry::debug_id_short () const |
| print a short transition identification for debugging
|
|
std::string | mcrl2::lts::detail::bisim_gjkw::pred_entry::debug_id () const |
| print a transition identification for debugging
|
|
| mcrl2::lts::detail::bisim_gjkw::B_to_C_descriptor::B_to_C_descriptor (B_to_C_iter_t begin_, B_to_C_iter_t end_) |
|
const block_t * | mcrl2::lts::detail::bisim_gjkw::B_to_C_descriptor::from_block () const |
| compute the source block of the transitions in this slice
|
|
block_t * | mcrl2::lts::detail::bisim_gjkw::B_to_C_descriptor::from_block () |
|
const constln_t * | mcrl2::lts::detail::bisim_gjkw::B_to_C_descriptor::to_constln () const |
| compute the goal constellation of the transitions in this slice
|
|
constln_t * | mcrl2::lts::detail::bisim_gjkw::B_to_C_descriptor::to_constln () |
|
bool | mcrl2::lts::detail::bisim_gjkw::B_to_C_descriptor::needs_postprocessing () const |
| returns true iff the slice is marked for postprocessing
|
|
std::string | mcrl2::lts::detail::bisim_gjkw::B_to_C_descriptor::debug_id () const |
| print a B_to_C slice identification for debugging
|
|
bool | mcrl2::lts::detail::bisim_gjkw::B_to_C_descriptor::add_work_to_bottom_transns (enum check_complexity::counter_type ctr, unsigned max_value) |
|
void | mcrl2::lts::detail::bisim_gjkw::part_trans_t::swap_in (B_to_C_iter_t const pos1, B_to_C_iter_t const pos2) |
|
void | mcrl2::lts::detail::bisim_gjkw::part_trans_t::swap_out (pred_iter_t const pos1, pred_iter_t const pos2) |
|
void | mcrl2::lts::detail::bisim_gjkw::part_trans_t::swap_B_to_C (succ_iter_t const pos1, succ_iter_t const pos2) |
|
void | mcrl2::lts::detail::bisim_gjkw::part_trans_t::swap3_B_to_C (succ_iter_t const pos1, succ_iter_t const pos2, succ_iter_t const pos3) |
|
| mcrl2::lts::detail::bisim_gjkw::part_trans_t::part_trans_t (trans_type m) |
|
| mcrl2::lts::detail::bisim_gjkw::part_trans_t::~part_trans_t () |
|
void | mcrl2::lts::detail::bisim_gjkw::part_trans_t::clear () |
| clear allocated memory
|
|
trans_type | mcrl2::lts::detail::bisim_gjkw::part_trans_t::trans_size () const |
|
void | mcrl2::lts::detail::bisim_gjkw::part_trans_t::split_inert_to_C (block_t *B) |
| handle the transitions from the splitter to its own constellation
|
|
succ_iter_t | mcrl2::lts::detail::bisim_gjkw::part_trans_t::change_to_C (pred_iter_t pred_iter, ONLY_IF_DEBUG(constln_t *SpC, constln_t *NewC,) bool first_transition_of_state, bool first_transition_of_block) |
| transition target is moved to a new constellation
|
|
bool | mcrl2::lts::detail::bisim_gjkw::part_trans_t::split_s_inert_out (state_info_ptr s ONLY_IF_DEBUG(, constln_t *OldC)) |
| Split outgoing transitions of a state in the splitter.
|
|
void | mcrl2::lts::detail::bisim_gjkw::part_trans_t::make_noninert (succ_iter_t const succ_iter) |
|
void | mcrl2::lts::detail::bisim_gjkw::part_trans_t::new_blue_block_created (block_t *OldB, block_t *NewB) |
| handle B_to_C slices after a new blue block has been created
|
|
void | mcrl2::lts::detail::bisim_gjkw::part_trans_t::new_red_block_created (block_t *OldB, block_t *NewB, bool postprocessing) |
| handle B_to_C slices after a new red block has been created
|
|
B_to_C_const_iter_t | mcrl2::lts::detail::bisim_gjkw::part_trans_t::B_to_C_begin () const |
|
B_to_C_iter_t | mcrl2::lts::detail::bisim_gjkw::part_trans_t::B_to_C_end () |
|
pred_const_iter_t | mcrl2::lts::detail::bisim_gjkw::part_trans_t::pred_end () const |
|
succ_const_iter_t | mcrl2::lts::detail::bisim_gjkw::part_trans_t::succ_end () const |
|
void | mcrl2::lts::detail::bisim_gjkw::part_trans_t::assert_stability (const part_state_t &part_st) const |
| assert that the data structure is consistent and stable
|
|
| mcrl2::lts::detail::bisim_gjkw::bisim_partitioner_gjkw_initialise_helper< LTS_TYPE >::Key::Key (const label_type &f, const state_type &s) |
|
bool | mcrl2::lts::detail::bisim_gjkw::bisim_partitioner_gjkw_initialise_helper< LTS_TYPE >::Key::operator== (const Key &other) const |
|
std::size_t | mcrl2::lts::detail::bisim_gjkw::bisim_partitioner_gjkw_initialise_helper< LTS_TYPE >::KeyHasher::operator() (const Key &k) const |
|
| mcrl2::lts::detail::bisim_gjkw::bisim_partitioner_gjkw_initialise_helper< LTS_TYPE >::bisim_partitioner_gjkw_initialise_helper (LTS_TYPE &l, bool branching, bool preserve_divergence) |
| constructor of the helper class
|
|
void | mcrl2::lts::detail::bisim_gjkw::bisim_partitioner_gjkw_initialise_helper< LTS_TYPE >::init_transitions (part_state_t &part_st, part_trans_t &part_tr, bool branching, bool preserve_divergence) |
| initialise the state in part_st and the transitions in part_tr
|
|
void | mcrl2::lts::detail::bisim_gjkw::bisim_partitioner_gjkw_initialise_helper< LTS_TYPE >::replace_transition_system (const part_state_t &part_st, ONLY_IF_DEBUG(bool branching,) bool preserve_divergence) |
| Replaces the transition relation of the current LTS by the transitions of the bisimulation-reduced transition system.
|
|
state_type | mcrl2::lts::detail::bisim_gjkw::bisim_partitioner_gjkw_initialise_helper< LTS_TYPE >::get_nr_of_states () const |
| provides the number of states in the Kripke structure
|
|
trans_type | mcrl2::lts::detail::bisim_gjkw::bisim_partitioner_gjkw_initialise_helper< LTS_TYPE >::get_nr_of_transitions () const |
| provides the number of transitions in the Kripke structure
|
|
| mcrl2::lts::detail::bisim_partitioner_gjkw< LTS_TYPE >::bisim_partitioner_gjkw (LTS_TYPE &l, bool branching=false, bool preserve_divergence=false) |
|
| mcrl2::lts::detail::bisim_partitioner_gjkw< LTS_TYPE >::~bisim_partitioner_gjkw () |
|
void | mcrl2::lts::detail::bisim_partitioner_gjkw< LTS_TYPE >::replace_transition_system (bool branching, bool preserve_divergence) |
|
static state_type | mcrl2::lts::detail::bisim_partitioner_gjkw< LTS_TYPE >::num_eq_classes () |
|
state_type | mcrl2::lts::detail::bisim_partitioner_gjkw< LTS_TYPE >::get_eq_class (state_type s) const |
|
bool | mcrl2::lts::detail::bisim_partitioner_gjkw< LTS_TYPE >::in_same_class (state_type s, state_type t) const |
|
void | mcrl2::lts::detail::bisim_partitioner_gjkw< LTS_TYPE >::create_initial_partition_gjkw (bool branching, bool preserve_divergence) |
|
void | mcrl2::lts::detail::bisim_partitioner_gjkw< LTS_TYPE >::refine_partition_until_it_becomes_stable_gjkw () |
|
bisim_gjkw::block_t * | mcrl2::lts::detail::bisim_partitioner_gjkw< LTS_TYPE >::refine (bisim_gjkw::block_t *RfnB, const bisim_gjkw::constln_t *SpC, const bisim_gjkw::B_to_C_descriptor *FromRed, bool postprocessing ONLY_IF_DEBUG(, const bisim_gjkw::constln_t *NewC=nullptr)) |
| refine a block into the part that can reach SpC and the part that cannot
|
|
bisim_gjkw::block_t * | mcrl2::lts::detail::bisim_partitioner_gjkw< LTS_TYPE >::postprocess_new_bottom (bisim_gjkw::block_t *RedB) |
| Split a block with new bottom states as needed.
|
|
template<class LTS_TYPE >
refine a block into the part that can reach SpC
and the part that cannot
At the beginning of a call to refine()
, the block RfnB is sliced into these parts:
| unmarked |marked | unmarked |marked|
| non-bottom |non-bot| bottom |bottom|
The procedure will partition the block into two parts, called blue'' and
red''. The red part can reach the splitter constellation SpC
, the blue part cannot. Upon calling refine()
, it is known that all marked states are red.
If states with a strong transition to SpC
have not yet been found, the parameter FromRed
indicates all such transitions, so refine()
can easily find their sources. It is required that either some states are marked or a non-nullptr FromRed
is supplied. In the latter case, also the current constellation pointer of all unmarked bottom states is set in a way that it makes easy to check whether the state has a transition to SpC
. (Some non-bottom states may have their current constellation pointer set similarly; while this is not required, it still speeds up refine()
.)
refine()
works by starting two coroutines to find states in the parts; as soon as the first coroutine finishes, the refinement can be completed.
Refine slices these states further as follows:
refine_blue() refine_red()
shared variable local variable local variable
notblue_initialised_end visited_end visited_begin
v v v
| blue |notblue|notblue| red | blue |unknown|not blue| red |
|non-bot| > 0 |undef'd| non-bottom|bottom|bottom | bottom | bottom |
^ ^ ^
refine_blue() block.unmarked_ block.unmarked_
local variable nonbottom_end() bottom_end()
blue_nonbottom_end
- blue non-bottom: states of which it is known that they are blue
- notblue > 0: states that have an inert transition to some blue state, but for some transition it is not yet known whether they go to a red or a blue state
- notblue undefined: for no inert transition it is known whether it goes to a red or a blue state
- red non-bottom: states of which it is known that they are red
- blue bottom: states of which it is known that they are blue
- unknown bottom: states that have not yet been checked
- not blue bottom: states of which the blue coroutine has found that they are red, but the red coroutine has not yet handled them
- red bottom: states of which everybody knows that they are red
Note that the slices of red non-bottom and the red bottom states may become larger than the marked (non-)bottom states have been at the start of refine()
. Upon termination of one of the two coroutines, states whose colour has not yet been determined become known to be of the colour of the unfinished coroutine.
- Parameters
-
RfnB | the block that has to be refined |
SpC | the splitter constellation |
FromRed | the set of transitions from RfnB to SpC |
size_SpB | (only used for measuring the time complexity, and only if called from line 2.26) the size of the original splitter block SpB, to which the work on red bottom states is ascribed. |
postprocessing | true iff refine() is called during postprocessing new bottom states |
- Returns
- a pointer to the block that contains the red part of
RfnB
.
The blue coroutine finds blue states in a block, i. e. states that cannot reach the splitter. It is one of the two coroutines that together implement the fast refinement of block RfnB
into states that can reach the splitter SpC
(red states) and those that cannot (blue states).
This coroutine assumes that RfnB
is nontrivial, i. e. contains at least two states. refine()
may be called in two ways: either the initially red states are marked, or a set of transitions from RfnB
to SpC
is given. In the first case, all unmarked bottom states are blue. In the second case, however, the first thing this coroutine has to do is to decide which bottom states are blue and which ones are not. In that case, it assumes that the current_constln
pointer of bottom states is pointing to a place where a transition to SpC
could be inserted. If there is already such a transition just before or after that memory location, the bottom state is actually red; otherwise, it is blue.
After having found the blue bottom states, the coroutine proceeds to find blue non-bottom states by walking through the predecessors of the blue states. As soon as can be determined that all inert outgoing transitions of a state lead to (other) blue states, this state is also blue – with one exception: if this state has a (non-inert) transition to the splitter. If refine()
was called in the second way, one has to check the outgoing non-inert transitions to find out whether such a transition exists.
As soon as it becomes clear that the blue subblock will be larger, this coroutine is aborted. Otherwise, at the end RfnB
is actually split into its two parts, and the coroutine closes with updating the inert-ness of transitions and finding new bottom states. New bottom states will be unmarked bottom states. (It may also happen that the blue subblock is empty; in that case, RfnB
is not split.)
The coroutine implements the left-hand side of Algorithm 3 in [GJKW 2017].
The red coroutine find red states in a block, i. e. states that can reach the splitter. It is one of the two coroutines that together implement the fast refinement of block RfnB
into states that can reach the splitter (red states) and those that cannot (blue states).
This coroutine assumes that RfnB
is nontrivial, i. e. contains at least two states, and that there is at least one red state in RfnB
. The red states can be indicated in one of two ways: either some states of RfnB
are marked, or the parameter FromRed
indicates the set of transitions from RfnB
to the splitter. Exactly one of the two must be chosen: If and only if some states are marked, FromRed
should be nullptr
.
If FromRed
is not nullptr
, the coroutine first finds initially red states, i. e. states with a transition to the splitter, and marks them. Note that it may happen that some non-bottom states (or even only non-bottom states) may be initially red as well. When all initially red states are marked, it proceeds to find other red states by walking through the inert predecessors of red states. Every such predecessor is also a red state.
As soon as it becomes clear that the red subblock will be larger, this coroutine is aborted. Otherwise, at the end RfnB
is actually split into its two parts, and the coroutine closes with updating the inert-ness of transitions and finding new bottom states. New bottom states will be unmarked bottom states.
The coroutine implements the right-hand side of Algorithm 3 in [GJKW 2017].
Definition at line 2361 of file liblts_bisim_gjkw.cpp.