anchor.diff:  join({binary,U1}, {binary,U2}) ->
       {binary,gcd(U1, U2)};
   join(#t_fun{}, #t_fun{}) -> #t_fun{};
  +join(#t_integer{elements={MinA,MaxA}},
  +     #t_integer{elements={MinB,MaxB}}) ->
  +    #t_integer{elements={min(MinA,MinB),max(MaxA,MaxB)}};
   join(#t_integer{}, #t_integer{}) -> t_integer();
   join(list, cons) -> list;
   join(cons, list) -> list;
  
positive.code: meet(#t_tuple{}=T1, #t_tuple{}=T2) ->
      meet_tuples(T1, T2);
  meet({binary,U1}, {binary,U2}) ->
      {binary,max(U1, U2)};
  meet(any, T) ->
      verified_type(T);
  meet(T, any) ->
  
negative.code: verified_type(#t_fun{arity=Arity}=T) when Arity =:= any; is_integer(Arity) -> T;
  verified_type(#t_integer{elements=any}=T) -> T;
  verified_type(#t_integer{elements={Min,Max}}=T)
    when is_integer(Min), is_integer(Max), Min =< Max -> T;
  verified_type(list=T) -> T;
  verified_type(map=T) -> T;
  verified_type(nil=T) -> T;
  