A first-order theory of types and polymorphism in logic programming | IEEE Conference Publication | IEEE Xplore