high level interface for type inference;
is_minus_one provided in S.Arith