23#include "mcrl2/lts/detail/liblts_bisim_gjkw.h"
24#include "mcrl2/lts/detail/coroutine.h"
25#include "mcrl2/lts/lts_aut.h"
26#include "mcrl2/lts/lts_fsm.h"
27#include "mcrl2/lts/lts_utilities.h"
72 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
105 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
142 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
173 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
220 << (1 <
end-
begin ?
"s:\n" :
":\n");
233 <<
", inconsistent pointer to state_info_entry";
270 <<
"no transitions to its own constellation.\n";
281 <<
" transition(s) to its own constellation,\n\t\tof which "
284 ?
" is inert.\n" :
" are inert.\n");
362 <<
" <- current_constln";
373 <<
"\t\t<- current_constln\n";
425 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
442 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
591 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
689 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
816 assert(0 &&
"The old block has no transitions to its own "
817 "constellation, but its inert_begin and "
818 "inert_end pointers are not set to B_to_C.begin()");
832 assert(0 &&
"The new block has no transitions to its own "
833 "constellation, but its inert_begin and "
834 "inert_end pointers are not set to B_to_C.begin()");
861 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
999 assert(0 &&
"The old block has no transitions to its own "
1000 "constellation, but its inert_begin and "
1001 "inert_end pointers are not set to B_to_C.begin()");
1015 assert(0 &&
"The new block has no transitions to its own "
1016 "constellation, but its inert_begin and "
1017 "inert_end pointers are not set to B_to_C.begin()");
1040 #ifdef MCRL2_GJKW_PARANOID_CHECK
1059 assert(
nullptr !=
C);
1104 #ifdef MCRL2_GJKW_PARANOID_CHECK
1368 #ifdef MCRL2_GJKW_PARANOID_CHECK
1404 #ifndef MCRL2_GJKW_PARANOID_CHECK
1426
1472 <<
"isimulation partitioner created for " <<
l.
num_states()
1474 <<
" transitions [GJKW 2017]\n";
1868
1869
1912 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2063 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2099 if (
nullptr ==
RedB)
2124 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2160 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2164
2165
2181 assert(
nullptr !=
RedB);
2182 if (
nullptr !=
BlueB)
2220 for (
auto s : *
RedB)
2272 assert(
nullptr !=
BlueB);
2273 assert(
nullptr !=
RedB);
2295 for (
auto s : *
RedB)
2404 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2414 assert(
nullptr !=
SpC);
2559 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2623 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2707 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2757 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2797 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2955 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3002 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3023
3024
3104 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3117 { assert(0 &&
"The constellation already was in R");
3156 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3173 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3188 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3193 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3199 assert(0 &&
"no new bottom states to assign work to");
3208 assert(0 &&
"no new bottom states to assign work to");
3224 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3300
3301
3315template class bisim_partitioner_gjkw<
lts_aut_t>;
3316template class bisim_partitioner_gjkw<
lts_fsm_t>;
#define mCRL2complexity(unit, call, info_for_debug)
Assigns work to a counter and checks for errors.
function object to compare two constln_t pointers based on their contents
#define ABORT_THIS_COROUTINE()
indicates that this coroutine gives up control to the other one
#define END_COROUTINE
Ends the definition of code for a coroutine.
#define ABORT_OTHER_COROUTINE()
indicates that the other coroutine should give up control
#define COROUTINE_FOR(location, init, condition, update)
a for loop where every iteration incurs one unit of work
#define COROUTINE_WHILE(location, condition)
a while loop where every iteration incurs one unit of work
#define COROUTINES_SECTION
begin a section with two coroutines
#define COROUTINE_DO_WHILE(location, condition)
a do { } while loop where every iteration incurs one unit of work
#define END_COROUTINES_SECTION
Close a section containing coroutines.
#define COROUTINE
Define the code for a coroutine.
#define END_COROUTINE_WHILE
ends a loop started with COROUTINE_WHILE
#define END_COROUTINE_FOR
ends a loop started with COROUTINE_FOR
#define COROUTINE_LABELS(locations)
Declare the interrupt locations for the coroutines.
#define END_COROUTINE_DO_WHILE
ends a loop started with COROUTINE_DO_WHILE
#define TERMINATE_COROUTINE_SUCCESSFULLY()
terminate the pair of coroutines successfully
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.