A Realizability Interpretation for Intersection and Union Types

  • Daniel J. Dougherty
  • Ugo de’Liguoro
  • Luigi LiquoriEmail author
  • Claude Stolze
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10017)


Proof-functional logical connectives allow reasoning about the structure of logical proofs, in this way giving to the latter the status of first-class objects. This is in contrast to classical truth-functional connectives where the meaning of a compound formula is dependent only on the truth value of its subformulas.

In this paper we present a typed lambda calculus, enriched with strong products, strong sums, and a related proof-functional logic. This calculus, directly derived from a typed calculus previously defined by two of the current authors, has been proved isomorphic to the well-known Barbanera-Dezani-Ciancaglini-de’Liguoro type assignment system. We present a logic \(\mathcal{L}^{\cap \cup }\) featuring two proof-functional connectives, namely strong conjunction and strong disjunction. We prove the typed calculus to be isomorphic to the logic \(\mathcal{L}^{\cap \cup }\) and we give a realizability semantics using Mints’ realizers [Min89] and a completeness theorem. A prototype implementation is also described.


Intersection Type Union Type Intuitionistic Logic Logical Framework Proof Assistant 
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.



We are grateful to the anonymous reviewers for their useful remarks.


  1. [AB91]
    Alessi, F., Barbanera, F.: Strong conjunction and intersection types. In: Tarlecki, A. (ed.) MFCS 1991. LNCS, vol. 520, pp. 64–73. Springer, Heidelberg (1991). doi: 10.1007/3-540-54345-7_49 CrossRefGoogle Scholar
  2. [Agd16]
    The Agda Programming Language (2016). Accessed 2 Sept 2016
  3. [Bar84]
    Barendregt, H.: The Lambda Calculus: Its Syntax and Semantics, vol. 103 of Studies in Logic and the Foundations of Mathematics. revised edition (1984)Google Scholar
  4. [BCDC83]
    Barendregt, H., Coppo, M., Dezani-Ciancaglini, M.: A filter lambda model and the completeness of type assignment. J. Symbolic Logic 48(4), 931–940 (1983)MathSciNetCrossRefzbMATHGoogle Scholar
  5. [BDCd95]
    Barbanera, F., Dezani-Ciancaglini, M., de’Liguoro, U.: Intersection and union types: syntax and semantics. Inf. Comput. 119(2), 202–230 (1995)MathSciNetCrossRefzbMATHGoogle Scholar
  6. [BM94]
    Barbanera, F., Martini, S.: Proof-functional connectives and realizability. Arch. Math. Logic 33, 189–211 (1994)MathSciNetCrossRefzbMATHGoogle Scholar
  7. [CDC80]
    Coppo, M., Dezani-Ciancaglini, M.: An extension of the basic functionality theory for the \(\lambda \)-calculus. Notre Dame J. Formal Logic 21(4), 685–693 (1980)MathSciNetCrossRefzbMATHGoogle Scholar
  8. [CF93]
    Coppo, M., Ferrari, A.: Type inference, abstract interpretation and strictness analysis. Theoret. Comput. Sci. 121(1), 113–143 (1993)MathSciNetCrossRefzbMATHGoogle Scholar
  9. [CLV01]
    Capitani, B., Loreti, M., Venneri, B.: Hyperformulae, parallel deductions and intersection types. Electr. Notes Theor. Comput. Sci. 50(2), 180–198 (2001)CrossRefzbMATHGoogle Scholar
  10. [Coq16]
    The Coq Proof Assistant (2016). Accessed 2 Sept 2016
  11. [DCGV97]
    Dezani-Ciancaglini, M., Ghilezan, S., Venneri, B.: The relevance of intersection and union types. Notre Dame J. Formal Logic 38(2), 246–269 (1997)MathSciNetCrossRefzbMATHGoogle Scholar
  12. [DL10]
    Dougherty, D.J., Liquori, L.: Logic and computation in a lambda calculus with intersection and union types. In: Clarke, E.M., Voronkov, A. (eds.) LPAR 2010. LNCS (LNAI), vol. 6355, pp. 173–191. Springer, Heidelberg (2010). doi: 10.1007/978-3-642-17511-4_11 CrossRefGoogle Scholar
  13. [Dun12]
    Dunfield, J.: Elaborating intersection and union types. In: Proceedings of the 17th ACM SIGPLAN International Conference on Functional Programming, ICFP 2012, pp. 17–28. ACM (2012)Google Scholar
  14. [Epi16]
    The Epigram Programming Language (2016). Accessed 2 Sept 2016
  15. [HHP93]
    Harper, R., Honsell, F., Plotkin, G.: A framework for defining logics. J. ACM 40(1), 143–184 (1993)MathSciNetCrossRefzbMATHGoogle Scholar
  16. [Idr16]
    The Idris Programming Language (2016). Accessed 2 Sept 2016
  17. [Isa16]
    The Isabelle Proof Assistant (2016). Accessed 2 Sept 2016
  18. [LE85]
    Lopez-Escobar, E.G.K.: Proof functional connectives. In: Prisco, C.A. (ed.) Methods in Mathematical Logic. LNM, vol. 1130, pp. 208–221. Springer, Heidelberg (1985). doi: 10.1007/BFb0075313 CrossRefGoogle Scholar
  19. [LR07]
    Liquori, L., Della Rocca, S.R.: Intersection typed system à la Church. Inf. Comput. 9(205), 1371–1386 (2007)CrossRefzbMATHGoogle Scholar
  20. [Min89]
    Mints, G.: The completeness of provable realizability. Notre Dame J. Formal Logic 30(3), 420–441 (1989)MathSciNetCrossRefzbMATHGoogle Scholar
  21. [MPS86]
    MacQueen, D., Plotkin, G., Sethi, R.: An ideal model for recursive polymorphic types. Inf. Control 71, 95–130 (1986)MathSciNetCrossRefzbMATHGoogle Scholar
  22. [MR72]
    Meyer, R.K., Routley, R.: Algebraic analysis of entailment I. Logique et Anal. 15, 407–428 (1972)MathSciNetzbMATHGoogle Scholar
  23. [Pie02]
    Pierce, B.C.: Types and Programming Languages. MIT Press, Cambridge (2002)zbMATHGoogle Scholar
  24. [Pot80]
    Pottinger, G.: A type assignment for the strongly normalizable \(\lambda \)-terms. In: To Curry, H.B. (ed.) Essays on Combinatory Logic, Lambda Calculus and Formalism, pp. 561–577. Academic Press (1980)Google Scholar
  25. [Pra71]
    Prawitz, D.: Ideas and results in proof theory. In: Proceedings of the Second Scandinavian Logic Symposium, North-Holland (1971)Google Scholar
  26. [PT94]
    Pierce, B.C., Turner, D.N.: Simple type-theoretic foundations for object-oriented programming. J. Funct. Programm. 4(2), 207–247 (1994)CrossRefzbMATHGoogle Scholar
  27. [Rey96]
    Reynolds, J.C.: Design of the programming language Forsythe. Algol-like Languages. Progress in Theoretical Computer Science, pp. 173–233. Birkhäuser, Boston (1997)CrossRefGoogle Scholar
  28. [Rey98]
    Reynolds, J.C.: Theories of Programming Languages. Cambridge University Press, New York (1998)Google Scholar
  29. [Ron02]
    Della Rocca, S.R.: Intersection typed lambda-calculus. Electr. Notes. Theor. Comput. Sci. 70(1), 163–181 (2003)Google Scholar
  30. [WDMT02]
    Wells, J.B., Dimock, A., Muller, R., Turbak, F.: A calculus with polymorphic and polyvariant flow types. J. Funct. Program. 12(3), 183–227 (2002)MathSciNetCrossRefzbMATHGoogle Scholar
  31. [WH02]
    Wells, J.B., Haack, C.: Branching types. In: Métayer, D. (ed.) ESOP 2002. LNCS, vol. 2305, pp. 115–132. Springer, Heidelberg (2002). doi: 10.1007/3-540-45927-8_9 CrossRefGoogle Scholar

Copyright information

© Springer International Publishing AG 2016

Authors and Affiliations

  • Daniel J. Dougherty
    • 1
  • Ugo de’Liguoro
    • 2
  • Luigi Liquori
    • 3
    Email author
  • Claude Stolze
    • 4
  1. 1.Worcester Polytechnic InstituteWorcesterUSA
  2. 2.Università di TorinoTorinoItaly
  3. 3.INRIA Sophia Antipolis-MéditerranéeValbonneFrance
  4. 4.ENS Rennes and UPMCBruzFrance

Personalised recommendations