anchor.diff:  %% Wakeup a process.
   %% If process is in `blocked` set, move to `active` set.
   wakeup(Lid, #info{active = Active, blocked = Blocked} = Info) ->
  -    case set_member(Blocked, Lid) of
  +    case sets:is_element(Lid, Blocked) of
   	true ->
               ?debug_2("Process ~p wakes up.~n", [Lid]),
  -	    NewBlocked = set_remove(Blocked, Lid),
  -	    NewActive = set_add(Active, Lid),
  +	    NewBlocked = sets:del_element(Lid, Blocked),
  +	    NewActive = sets:add_element(Lid, Active),
   	    Info#info{active = NewActive, blocked = NewBlocked};
   	false ->
   	    Info
  
positive.code:             %% Create the first LID and register it with FirstPid.
              lid:new(FirstPid, noparent),
              %% The initial `active` and `blocked` sets are empty.
              Active = set_new(),
              Blocked = set_new(),
              %% Create initial state.
              State = state:init(),
  	    %% TODO: Not especially nice (maybe refactor into driver?).
  
negative.code: %% Returns the process to be run next.
  search(#info{active = Active, state = State}) ->
      %% Remove a process from the `actives` set and run it.
      [Next|Tail] = sets:to_list(Active),
      NewActive = sets:from_list(Tail),
      %% Store all other possible successor states for later exploration.
      [state:insert(state:extend(State, Lid)) || Lid <- sets:to_list(NewActive)],
      Next.
  
  %% Block message handler.
  