anchor.diff:      eval_is(Is, From, Bs, St);
   eval_is([#b_set{op={succeeded,guard},dst=Dst,args=[Var]}], _From, Bs, _St) ->
       case Bs of
  -        #{Var:=failed} ->
  -            bind_var(Dst, #b_literal{val=false}, Bs);
           #{Var:=#b_literal{}} ->
               bind_var(Dst, #b_literal{val=true}, Bs);
           #{} ->
  
positive.code:                 maybe -> none
              end
      end.
  
  eval_boolean({{'not',is_boolean},Var}, {bif,'not'}, [Var]) ->
      failed;
  eval_boolean({{'not',is_boolean},Var}, {bif,Op}, Args)
    when Op =:= 'and'; Op =:= 'or' ->
      case member(Var, Args) of
          true -> failed;
          false -> none
      end;
  eval_boolean(_, _, _) ->
      none.
  
  %% will_succeed(PrevCondition, Condition) -> yes | no | maybe
  %%  PrevCondition is a condition known to be true. This function
  
negative.code: eval_rel_op(Bif, Args, #st{rel_op=Prev}) ->
      case normalize_op(Bif, Args) of
          none ->
              none;
          RelOp ->
              case will_succeed(Prev, RelOp) of
                  yes -> #b_literal{val=true};
  