anchor.diff:  
   prove_atom_chars(A, L, Next, Cps, Bs, Vn, Db) ->
       %% After a suggestion by Sean Cribbs.
  -    case dderef(A, Bs) of
  +    case deref(A, Bs) of
           Atom when is_atom(Atom) ->
               AtomList = [ list_to_atom([C]) || C <- atom_to_list(Atom) ],
               unify_prove_body(L, AtomList, Next, Cps, Bs, Vn, Db);
  
positive.code:     %% Just the top level here.
      unify_prove_body(F, '.', A, 2, Next, Cps, Bs, Vn, Db);
  prove_functor({_}=Var, F0, A0, Next, Cps, Bs0, Vn0, Db) ->
      case {dderef(F0, Bs0),dderef(A0, Bs0)} of
  	{'.',2} ->				%He, he, he!
  	    Bs1 = add_binding(Var, [{Vn0}|{Vn0+1}], Bs0),
  	    prove_body(Next, Cps, Bs1, Vn0+2, Db);
  
negative.code: prove_goal({'@=<',L,R}, Next, Cps, Bs, Vn, Db) ->
      term_test_prove_body('=<', L, R, Next, Cps, Bs, Vn, Db);
  %% Term creation and decomposition.
  prove_goal({arg,I,Term,A}, Next, Cps, Bs, Vn, Db) ->
      prove_arg(deref(I, Bs), deref(Term, Bs), A, Next, Cps, Bs, Vn, Db);
  prove_goal({copy_term,T0,C}, Next, Cps, Bs, Vn0, Db) ->
      %% Use term_instance to create the copy, can ignore orddict it creates.
      {T,_Nbs,Vn1} = term_instance(dderef(T0, Bs), Vn0),
      unify_prove_body(T, C, Next, Cps, Bs, Vn1, Db);
  prove_goal({functor,T,F,A}, Next, Cps, Bs, Vn, Db) ->
      prove_functor(deref(T, Bs), F, A, Next, Cps, Bs, Vn, Db);
  prove_goal({'=..',T,L}, Next, Cps, Bs, Vn, Db) ->
      prove_univ(dderef(T, Bs), L, Next, Cps, Bs, Vn, Db);
  %% Type testing.
  