mCRL2
|
O(m log n)-time branching bisimulation algorithm similar to liblts_bisim_dnj.h which does not use bunches, i.e., partitions of transitions. This algorithm should be slightly faster, but in particular use less memory than liblts_bisim_dnj.h. Otherwise the functionality is exactly the same. More...
Go to the source code of this file.
Namespaces | |
namespace | mcrl2 |
A class that takes a linear process specification and checks all tau-summands of that LPS for confluence. | |
namespace | mcrl2::lts |
The main LTS namespace. | |
namespace | mcrl2::lts::detail |
A base class for the lts_dot labelled transition system. | |
namespace | mcrl2::lts::detail::bisimulation_gj |
Macros | |
#define | INIT_WITHOUT_BLC_SETS |
#define | linked_list simple_list |
#define | non_bottom_states_MultiSub non_bottom_states[3] |
#define | bottom_size(coroutine) |
#define | bottom_and_non_bottom_size(coroutine) |
#define | abort_if_bottom_size_too_large(coroutine) |
#define | abort_if_non_bottom_size_too_large_MultiSub(i) |
#define | abort_if_size_too_large(coroutine, i) |
#define | new_start_bottom_states(idx) (assert(1<=(idx)), assert((idx)<=3), new_start_bottom_states_plus_one[(idx)-1]) |
#define | new_end_bottom_states(idx) (assert(1<=(idx)), assert((idx)<=2), new_end_bottom_states_plus_one[(idx)-1]) |
#define | new_end_bottom_states_MultiSub (new_start_bottom_states_plus_one[2]) |
#define | max_below_pivot min_block |
#define | min_above_pivot max_block |
#define | PRINT_SG_PL(counter, sg_string, pl_string) (counter) << (1 == (counter) ? (sg_string) : (pl_string)) |
#define | PRINT_INT_PERCENTAGE(num, denom) (((num) * 200 + (denom)) / (denom) / 2) |
Typedefs | |
typedef std::size_t | mcrl2::lts::detail::bisimulation_gj::state_index |
typedef std::size_t | mcrl2::lts::detail::bisimulation_gj::transition_index |
typedef std::size_t | mcrl2::lts::detail::bisimulation_gj::label_index |
typedef fixed_vector< outgoing_transition_type >::iterator | mcrl2::lts::detail::bisimulation_gj::outgoing_transitions_it |
typedef fixed_vector< outgoing_transition_type >::const_iterator | mcrl2::lts::detail::bisimulation_gj::outgoing_transitions_const_it |
typedef transition_index * | mcrl2::lts::detail::bisimulation_gj::BLC_list_iterator |
typedef transition_index * | mcrl2::lts::detail::bisimulation_gj::BLC_list_iterator_or_null |
typedef const transition_index * | mcrl2::lts::detail::bisimulation_gj::BLC_list_const_iterator |
Functions | |
static constexpr transition_index | mcrl2::lts::detail::bisimulation_gj::marked (enum subblocks subblock) |
base marking value for a subblock | |
static constexpr bool | mcrl2::lts::detail::bisimulation_gj::is_in_marked_range_of (transition_index counter, enum subblocks subblock) |
checks whether a counter value is a marking for a given subblock | |
template<class CONTAINER > | |
static void | mcrl2::lts::detail::bisimulation_gj::clear (CONTAINER &c) |
template<class LTS_TYPE > | |
void | mcrl2::lts::detail::bisimulation_reduce_gj (LTS_TYPE &l, const bool branching=false, const bool preserve_divergence=false) |
nonmember functions serving as interface with the rest of mCRL2 | |
template<class LTS_TYPE > | |
bool | mcrl2::lts::detail::destructive_bisimulation_compare_gj (LTS_TYPE &l1, LTS_TYPE &l2, const bool branching=false, const bool preserve_divergence=false, const bool generate_counter_examples=false, const std::string &="", bool=false) |
Checks whether the two initial states of two LTSs are strong or (divergence-preserving) branching bisimilar. | |
template<class LTS_TYPE > | |
bool | mcrl2::lts::detail::bisimulation_compare_gj (const LTS_TYPE &l1, const LTS_TYPE &l2, const bool branching=false, const bool preserve_divergence=false) |
Checks whether the two initial states of two LTSs are strong or (divergence-preserving) branching bisimilar. | |
Variables | |
constexpr constellation_type * | mcrl2::lts::detail::bisimulation_gj::null_constellation =nullptr |
constexpr transition_index | mcrl2::lts::detail::bisimulation_gj::null_transition =-1 |
constexpr label_index | mcrl2::lts::detail::bisimulation_gj::null_action =-1 |
constexpr state_index | mcrl2::lts::detail::bisimulation_gj::null_state =-1 |
constexpr block_type * | mcrl2::lts::detail::bisimulation_gj::null_block =nullptr |
constexpr transition_index | mcrl2::lts::detail::bisimulation_gj::undefined =0 |
default counter value if the counter field of a state is not in use currently | |
constexpr transition_index | mcrl2::lts::detail::bisimulation_gj::marked_range |
the number of counter values that can be used for one subblock | |
constexpr transition_index | mcrl2::lts::detail::bisimulation_gj::marked_MultiSub =marked(MultiSub) |
counter value to indicate that a state is in the MultiSub subset | |
constexpr transition_index | mcrl2::lts::detail::bisimulation_gj::marked_HitSmall =marked_MultiSub+1 |
O(m log n)-time branching bisimulation algorithm similar to liblts_bisim_dnj.h which does not use bunches, i.e., partitions of transitions. This algorithm should be slightly faster, but in particular use less memory than liblts_bisim_dnj.h. Otherwise the functionality is exactly the same.
Definition in file liblts_bisim_gj.h.
#define abort_if_bottom_size_too_large | ( | coroutine | ) |
#define abort_if_non_bottom_size_too_large_MultiSub | ( | i | ) |
#define abort_if_size_too_large | ( | coroutine, | |
i | |||
) |
#define bottom_and_non_bottom_size | ( | coroutine | ) |
#define bottom_size | ( | coroutine | ) |
#define INIT_WITHOUT_BLC_SETS |
Definition at line 25 of file liblts_bisim_gj.h.
#define linked_list simple_list |
Definition at line 34 of file liblts_bisim_gj.h.
#define max_below_pivot min_block |
#define min_above_pivot max_block |
#define new_end_bottom_states | ( | idx | ) | (assert(1<=(idx)), assert((idx)<=2), new_end_bottom_states_plus_one[(idx)-1]) |
#define new_end_bottom_states_MultiSub (new_start_bottom_states_plus_one[2]) |
#define new_start_bottom_states | ( | idx | ) | (assert(1<=(idx)), assert((idx)<=3), new_start_bottom_states_plus_one[(idx)-1]) |
#define non_bottom_states_MultiSub non_bottom_states[3] |
#define PRINT_INT_PERCENTAGE | ( | num, | |
denom | |||
) | (((num) * 200 + (denom)) / (denom) / 2) |
#define PRINT_SG_PL | ( | counter, | |
sg_string, | |||
pl_string | |||
) | (counter) << (1 == (counter) ? (sg_string) : (pl_string)) |