Optimizing the Runtime Processing of Types in a Higher-Order Logic Programming Language