anchor.diff:       {where, "N0",
         [
          {var, "N0",
  -        {'if', eq({'#',TimeD}, 0),
  +        {'if', tprimop:eq({'#',TimeD}, 0),
            "N1",
            {'@', "N0",
  -          {t, [{TimeD, minus({'#',TimeD}, 1)}]}}}},
  +          {t, [{TimeD, tprimop:minus({'#',TimeD}, 1)}]}}}},
          {var, "N1",
  -        {'if', eq({'#', SpaceD}, 0),
  +        {'if', tprimop:eq({'#', SpaceD}, 0),
            1,
  -         times({'@', "N1",
  -                {t, [{SpaceD, minus({'#',SpaceD}, 1)}]}},
  -               2)
  +         tprimop:times({'@', "N1",
  +                        {t, [{SpaceD, tprimop:minus({'#',SpaceD}, 1)}]}},
  +                       2)
           }},
          {dim, "t", 10},
          {dim, "s", 10}
  
positive.code: 
  %% Internals
  
  eq (A, B) ->
    {primop, fun erlang:'=='/2, [A, B]}.
  tand (A, B) ->
    {primop, fun erlang:'and'/2, [A, B]}.
  lte (A, B) ->
    {primop, fun erlang:'=<'/2, [A, B]}.
  gte (A, B) ->
    {primop, fun erlang:'>='/2, [A, B]}.
  plus (A, B) ->
    {primop, fun erlang:'+'/2, [A,B]}.
  times (A, B) ->
    {primop, fun erlang:'*'/2, [A,B]}.
  minus (A, B) ->
    {primop, fun erlang:'-'/2, [A, B]}.
  
  %% End of Module.
  
negative.code:             dim s <- 3
          end"),
    ?assertEqual(
       {where, tprimop:plus({'#',{dim,"t"}},
                            {'#',{dim,"s"}}),
        [{dim,"t",2},
         {dim,"s",3}]},
       Tree).
  