anchor.diff:  %%% This list corresponds more or less to "E" in the various DPOR
   %%% papers (representing the execution trace).
   
  -%%% The logic of the exploration goes through `explore/1`, which is
  -%%% fairly clean: as long as there are more processes that can be
  -%%% executed and yield events, `get_next_event/1` will be returning
  -%%% `ok`, after executing one of them and doing all necessary updates
  -%%% to the state (adding new `#trace_state`s, etc).  If
  -%%% `get_next_event/1` returns `none`, we are at the end of an
  -%%% interleaving (either due to no more enabled processes or due to
  -%%% "sleep set blocking") and can do race analysis and report any
  -%%% errors found in the interleaving.  Race analysis is contained in
  -%%% `plan_more_interleavings/1`, reporting whether the current
  -%%% interleaving was buggy is contained in `log_trace/1` and resetting
  -%%% most parts to continue exploration is contained in
  -%%% `has_more_to_explore/1`.
  +%%% The logic of the exploration goes through `explore_scheduling/1`,
  +%%% which in turn calls 'explore/1'. Both functions are fairly clean:
  +%%% as long as there are more processes that can be executed and yield
  +%%% events, `get_next_event/1` will be returning `ok`, after executing
  +%%% one of them and doing all necessary updates to the state (adding
  +%%% new `#trace_state`s, etc).  If `get_next_event/1` returns `none`,
  +%%% we are at the end of an interleaving (either due to no more
  +%%% enabled processes or due to "sleep set blocking") and can do race
  +%%% analysis and report any errors found in the interleaving.  Race
  +%%% analysis is contained in `plan_more_interleavings/1`, reporting
  +%%% whether the current interleaving was buggy is contained in
  +%%% `log_trace/1` and resetting most parts to continue exploration is
  +%%% contained in `has_more_to_explore/1`.
   
   %%% Focusing on `plan_more_interleavings`, it is composed out of two
   %%% steps: first (`assign_happens_before/3`) we assign a
  
positive.code:       },
    concuerror_logger:plan(Logger),
    ?time(Logger, "Exploration start"),
    Ret = explore(InitialState),
    concuerror_callback:cleanup_processes(Processes),
    Ret.
  
  %%------------------------------------------------------------------------------
  
  explore(State) ->
    {Status, UpdatedState} =
  
negative.code:     end,
    case Status of
      ok -> explore(UpdatedState);
      none -> UpdatedState;
      {crash, Class, Reason, Stack} ->
        FatalCrashState =
          add_error(fatal, discard_last_trace_state(UpdatedState)),
  