anchor.diff:     _Cleanup = fun(Pid) -> tcache_stop(Pid) end,
      [
       ?_assertMatch({[BAbsX],_},
  -                  tcore_eval({'if',{'?',BAbsX},46,58}, [], []))
  +                  tcore_eval({'if',{'?',BAbsX},46,58}))
      ]}.
   
   
  
positive.code:                         {'#',WheredimX}]}
            }}]},
         [{WheredimX,46}]},
        [1]},
       T1),
    %% Eval
    {setup,
     _Setup = fun() -> {ok, Pid} = tcache:start_link(100), Pid end,
     _Cleanup = fun(Pid) -> tcache_stop(Pid) end,
     [
      ?_assertMatch({47,_}, tcore_eval(T1))
     ]}.
  
  wheredim_nested_in_b_abs_does_not_cause_wrong_substitution() ->
    BAbsT0 = t0(s("F where fun F.x = (x + #.x) where dim x <- 46 end end")),
    T0 = {b_apply, BAbsT0, [1]},
    WheredimX = {dim,{[0,1,0],1},"x"},
    BAbsX = {phi,"x"},
    T1 = t1(T0),
    ?assertMatch(
       {b_apply,
        {wherevar, "F",
         [{"F",
           {b_abs, [], [BAbsX],
            {wheredim,
             {primop, _, [{'?',BAbsX},
                          {'#',WheredimX}]},
             [{WheredimX,46}]}}
          }]},
        [1]},
       T1),
    %% Eval
    {setup,
     _Setup = fun() -> {ok, Pid} = tcache:start_link(100), Pid end,
     _Cleanup = fun(Pid) -> tcache_stop(Pid) end,
     [
      ?_assertMatch({47,_}, tcore_eval(T1))
     ]}.
  
  b_abs_can_return_b_abs_and_formal_params_are_not_confused() ->
    {wherevar, "G", Vars} =
      t0(s("G
           where
             fun F.x.y = x - y
             fun G.x = F
           end")),
    T0 =
      {wherevar,
       {b_apply,
        {b_apply, "G", [1]},
        [46,3]},
       Vars},
    T1 = t1(T0),
    %% Eval
    {setup,
     _Setup = fun() -> {ok, Pid} = tcache:start_link(100), Pid end,
     _Cleanup = fun(Pid) -> tcache_stop(Pid) end,
     [
      ?_assertMatch({43,_}, tcore_eval(T1))
     ]}.
  
  b_abs_cannot_access_dims_not_in_creation_context() ->
    {wherevar, "G", [{"G", BAbsG}]} =
      t0(s("G
           where
             fun G.y = F
             where
               fun F.x = x - y
             end
           end")),
    NestedT0 = {b_apply, BAbsG, [1]},
    T0 = {b_apply, NestedT0, [46]},
    %% Eval
    {foreach,
     _Setup = fun() -> {ok, Pid} = tcache:start_link(100), Pid end,
     _Cleanup = fun(Pid) -> tcache_stop(Pid) end,
     [
      ?_assertMatch({{frozen_b_abs,[],[{phi,"x"}],{primop,_,_}},_},
                    tcore_eval(t1(NestedT0))),
      ?_assertMatch({[{phi,"y"}],_}, tcore_eval(t1(T0)))
     ]}.
  
  b_abs_can_use_argument_for_querying_creation_context() ->
  
negative.code:    _Setup = fun() -> {ok, Pid} = tcache:start_link(100), Pid end,
     _Cleanup = fun(Pid) -> tcache_stop(Pid) end,
     [
      ?_assertMatch({46,_}, tcore_eval(T1)),
      ?_assertMatch({46,_}, tcore_eval(T1, _K=[{DimT,58}], _D=[DimT]))
     ]}.
  
  b_abs_can_use_argument_for_querying_creation_context2() ->
  