Types in logic programming (MIT Press, 1992)