anchor.diff:                  S#state.tree1 /= undefined, S#state.tree2 /= undefined] ++
           []
       ).
  -
  -make_treevars() ->
  -    Powers = [8, 16, 32, 64, 128, 256, 512, 1024],
  -    Segments=oneof(Powers),
  -    Width=oneof(Powers),
  -    %NumLevels = erlang:trunc(math:log(Segments) / math:log(Width)) + 1,
  -    %MemLevels = random:uniform(NumLevels+1)-1,
  -    %MemLevels = oneof(lists:seq(0, NumLevels),
  -    MemLevels=4,
  -    {{call, erlang, '*', [Segments, Segments]}, Width, MemLevels}.
  -    %{1024*1024, 1024, 4}.
   
   start_1(S) ->
       hashtree:new({0,0}, [{segments, S#state.segments}, {width,
  
positive.code: 
  
  prop_correct() ->
      ?FORALL({Segments, Width, MemLevels}, make_treevars(),
      ?FORALL(Cmds,commands(?MODULE, #state{segments=Segments, width=Width,
                  mem_levels=MemLevels}),
          ?TRAPEXIT(
              aggregate(command_names(Cmds), 
                  begin
                          {H,S,Res} = run_commands(?MODULE,Cmds),
                          ?WHENFAIL(
                              begin
                                      io:format("History: ~p\nState: ~p\nRes: ~p\n~p\n",
                                          [H,S,Res, zip(tl(Cmds), [Y || {_, Y} <- H])]),
                                      catch hashtree:destroy(hashtree:close(S#state.tree1)),
                                      catch hashtree:destroy(hashtree:close(S#state.tree2))
                              end,
                              begin
                                      ?assertEqual(ok, Res),
                                      Unique1 = S#state.only1 -- S#state.only2,
  
negative.code: -include_lib("eqc/include/eqc_statem.hrl").
  -define(QC_OUT(P),
          eqc:on_output(fun(Str, Args) -> io:format(user, Str, Args) end, P)).
  
  -define(POWERS, [8, 16, 32, 64, 128, 256, 512, 1024]).
  
  -include_lib("eunit/include/eunit.hrl").
  
  