anchor.diff:  %%
   -spec fold(id(), function(), id(), store()) -> ok.
   fold(Id, Function, AccId, Store) ->
  -    BindFun = fun(_AccId, AccValue, _Variables) ->
  -            ?MODULE:bind(_AccId, AccValue, _Variables)
  -    end,
  -    ReadFun = fun(_Id, _Threshold, _Variables) ->
  -            ?MODULE:read(_Id, _Threshold, _Variables)
  -    end,
  -    fold(Id, Function, AccId, Store, BindFun, ReadFun).
  +    fold(Id, Function, AccId, Store, ?BIND, ?READ).
   
   %% @doc Map values from one lattice into another.
   %%
  
positive.code: %%
  -spec union(id(), id(), id(), store()) -> ok.
  union(Left, Right, Union, Store) ->
      BindFun = fun(_AccId, AccValue, _Variables) ->
              ?MODULE:bind(_AccId, AccValue, _Variables)
      end,
      ReadLeftFun = fun(_Left, _Threshold, _Variables) ->
              ?MODULE:read(_Left, _Threshold, _Variables)
      end,
      ReadRightFun = fun(_Right, _Threshold, _Variables) ->
              ?MODULE:read(_Right, _Threshold, _Variables)
      end,
      union(Left, Right, Union, Store, BindFun, ReadLeftFun, ReadRightFun).
  
  %% @doc Compute the cartesian product of two sets.
  %%
  
negative.code:          intersection/7,
           fold/6]).
  
  %% Definitions for the bind/read fun abstraction.
  -define(BIND, fun(_AccId, AccValue, _Variables) ->
                  ?MODULE:bind(_AccId, AccValue, _Variables)
                end).
  
  -define(READ, fun(_Id, _Threshold, _Variables) ->
                  ?MODULE:read(_Id, _Threshold, _Variables)
                end).
  
  %% Erlang 17.
  -ifdef(namespaced_types).
  -type lasp_dict() :: dict:dict().
  