We present a type system for the programming language Erlang. The
type system supports subtyping and declaration-free recursive types,
using subtyping constraints. Our system is similar to one explored by
Aiken and Wimmers, though it sacrifices expressive power in favor of
simplicity. We cover our techniques for type inference, type
simplification, and checking when an inferred type conforms to a
user-supplied type signature, and report on early experience with our
prototype.