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)
155 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
186 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
233 << (1 <
end-
begin ?
"s:\n" :
":\n");
246 <<
", inconsistent pointer to state_info_entry";
283 <<
"no transitions to its own constellation.\n";
294 <<
" transition(s) to its own constellation,\n\t\tof which "
297 ?
" is inert.\n" :
" are inert.\n");
375 <<
" <- current_constln";
386 <<
"\t\t<- current_constln\n";
438 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
455 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
604 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
702 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
829 assert(0 &&
"The old block has no transitions to its own "
830 "constellation, but its inert_begin and "
831 "inert_end pointers are not set to B_to_C.begin()");
845 assert(0 &&
"The new block has no transitions to its own "
846 "constellation, but its inert_begin and "
847 "inert_end pointers are not set to B_to_C.begin()");
874 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
1012 assert(0 &&
"The old block has no transitions to its own "
1013 "constellation, but its inert_begin and "
1014 "inert_end pointers are not set to B_to_C.begin()");
1028 assert(0 &&
"The new block has no transitions to its own "
1029 "constellation, but its inert_begin and "
1030 "inert_end pointers are not set to B_to_C.begin()");
1053 #ifdef MCRL2_GJKW_PARANOID_CHECK
1072 assert(
nullptr !=
C);
1117 #ifdef MCRL2_GJKW_PARANOID_CHECK
1381 #ifdef MCRL2_GJKW_PARANOID_CHECK
1417 #ifndef MCRL2_GJKW_PARANOID_CHECK
1439
1485 <<
"isimulation partitioner created for " <<
l.
num_states()
1487 <<
" transitions [GJKW 2017]\n";
1880
1881
1924 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2075 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2111 if (
nullptr ==
RedB)
2136 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2172 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2176
2177
2193 assert(
nullptr !=
RedB);
2194 if (
nullptr !=
BlueB)
2232 for (
auto s : *
RedB)
2284 assert(
nullptr !=
BlueB);
2285 assert(
nullptr !=
RedB);
2307 for (
auto s : *
RedB)
2416 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2426 assert(
nullptr !=
SpC);
2571 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2635 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2719 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2769 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2809 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
2967 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3014 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3035
3036
3116 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3129 { assert(0 &&
"The constellation already was in R");
3168 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3185 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3200 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3205 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3211 assert(0 &&
"no new bottom states to assign work to");
3220 assert(0 &&
"no new bottom states to assign work to");
3236 #if !defined(NDEBUG) || defined(COUNT_WORK_BALANCE)
3312
3313
3327template class bisim_partitioner_gjkw<
lts_aut_t>;
3328template 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 ONLY_IF_DEBUG(...)
include something in Debug mode
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.