HOL2P - A System of Classical Higher Order Logic with Second Order Polymorphism

  • Norbert Völker
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4732)


This paper introduces the logical system HOL2P that extends classical higher order logic (HOL) with type operator variables and universal types. HOL2P has explicit term operations for type abstraction and type application. The formation of type application terms t [T] is restricted to small types T that do not contain any universal types. This constraint ensures the existence of a set-theoretic model and thus consistency.

The expressiveness of HOL2P allows category-theoretic concepts such as natural transformations and initial algebras to be applied at the level of polymorphic HOL functions. The parameterisation of terms with type operators adds genericity to theorems. Type variable quantification can also be expressed.

A prototype of HOL2P has been implemented on top of HOL-Light. Type inference is semi-automatic, and some type annotations are necessary. Reasoning is supported by appropriate tactics. The implementation has been used to check some sample derivations.


Type Variable Inference Rule Natural Transformation Type Inference High Order Logic 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Backhouse, R., Jansson, P., Jeuring, J., Meertens, L.: Generic programming - an introduction. In: Swierstra, S.D., Oliveira, J.N. (eds.) AFP 1998. LNCS, vol. 1608, Springer, Heidelberg (1999)CrossRefGoogle Scholar
  2. 2.
    Bird, R.S., de Moor, O.: Algebra of Programming. Prentice-Hall, Englewood Cliffs (1997)zbMATHGoogle Scholar
  3. 3.
    Coquand, T.: A new paradox in type theory. In: Prawitz, D., Skyrms, B., Westerståhl, D. (eds.) Proceedings 9th Int. Congress of Logic, Methodology and Philosophy of Science, pp. 555–570. North-Holland, Amsterdam (1994)Google Scholar
  4. 4.
    Girard, J.-Y., Lafont, Y., Taylor, P.: Proofs and Types. Cambridge Tracts in Theoretical Computer Science, vol. 7. Cambridge University Press, Cambridge (1989)zbMATHGoogle Scholar
  5. 5.
    Glimming, J.: Logic and Automation for Algebra of Programming. PhD thesis, MSc Thesis, University of Oxford (2001)Google Scholar
  6. 6.
    Gordon, M., Wadsworth, C.P., Milner, R.: Edinburgh LCF. LNCS, vol. 78. Springer, Heidelberg (1979)zbMATHGoogle Scholar
  7. 7.
    Gordon, M.J.C., Melham, T.F.: Introduction to HOL. Cambridge University Press, Cambridge (1993)zbMATHGoogle Scholar
  8. 8.
    Gordon, M.J.C., Pitts, A.: The HOL Logic and System. In: Bowen, J. (ed.) Towards Verified Systems. Real-Time Safety Critical Systems Series, vol. 2, Elsevier, Amsterdam (1994)Google Scholar
  9. 9.
    Harrison, J.: The HOL Light System Reference – Version 2.20 (2006),
  10. 10.
    Harrison, J.: Towards self-verification in HOL-Light. In: Furbach, U., Shankar, N. (eds.) IJCAR 2006. LNCS (LNAI), vol. 4130, Springer, Heidelberg (2006)CrossRefGoogle Scholar
  11. 11.
    Hu, Z., Iwasaki, H., Takeichi, M.: Deriving structural hylomorphisms from recursive definitions. In: ICFP, pp. 73–82 (1996)Google Scholar
  12. 12.
    Jones, S.P., Vytiniotis, D., Weirich, S., Shields, M.: Practical type inference for arbitrary-rank types. Journal of Functional Programming 17(1) (2007)Google Scholar
  13. 13.
    Mac Lane, S.: Categories for the Working Mathematician. Springer, Heidelberg (1971)zbMATHGoogle Scholar
  14. 14.
    Melham, T.F.: The HOL logic extended with quantification over type variables. Formal Methods in System Design 3(1–2), 7–24 (1994)Google Scholar
  15. 15.
    Nipkow, T., Paulson, L.C., Wenzel, M.: Isabelle/HOL. LNCS, vol. 2283. Springer, Heidelberg (2002)zbMATHGoogle Scholar
  16. 16.
    Pierce, B.C.: Types and Programming Languages. MIT Press, Cambridge (2002)Google Scholar
  17. 17.
    The Coq Development Team. The Coq Proof Assistant Reference Manual – Version V8.0 (2004),
  18. 18.
    Völker, N.: HOL2P Prototype Implementation (2007),
  19. 19.
    Vytiniotis, D., Weirich, S., Jones, S.P.: Boxy types: inference for higher-rank types and impredicativity. ACM SIGPLAN Notices 41(9), 251–262 (2006)CrossRefGoogle Scholar
  20. 20.
    Wadler, P.: Theorems for free? In: Functional Programming Languages and Computer Architecture, Springer, Heidelberg (1989)Google Scholar
  21. 21.
    Wadler, P.: The essence of functional programming. In: POPL, pp. 1–14 (1992)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2007

Authors and Affiliations

  • Norbert Völker
    • 1
  1. 1.University of EssexEngland

Personalised recommendations