Overcoming Performance Barriers: Efficient Verification Techniques for Logical Frameworks

  • Brigitte Pientka
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4079)


In recent years, logical frameworks which support formalizing language specifications together with their meta-theory have been pervasively used in small and large-scale applications, from certifying code [2] to advocating a general infrastructure for formalizing the meta-theory and semantics of programming languages [5]. In particular, the logical framework LF [9], based on the dependently typed lambda- calculus, and light-weight variants of it like LF i [17] have played a major role in these applications. While the acceptance of logical framework technology has grown and they have matured, one of the most criticized points is concerned with the run-time performance. In this tutorial we give a brief introduction to logical frameworks, describe its state-of-the art and present recent advances in addressing some of the existing performance issues.


Logic Program Logic Programming Logical Framework Automate Deduction Proof Search 
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.
    Appel, A.: Foundational proof-carrying code project. personal communicationGoogle Scholar
  2. 2.
    Appel, A.: Foundational proof-carrying code. In: Halpern, J. (ed.) Proceedings of the 16th Annual Symposium on Logic in Computer Science (LICS 2001), pp. 247–256. IEEE Computer Society Press, Los Alamitos (2001) (Invited Talk)CrossRefGoogle Scholar
  3. 3.
    Appel, A.W., Felten, E.W.: Proof-carrying authentication. In: ACM Conference on Computer and Communications Security, pp. 52–62 (1999)Google Scholar
  4. 4.
    Appel, W., Felty, A.P.: A semantic model of types and machine instructions for proof-carrying code. In: 27th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL 2000), pp. 243–253 (January 2000)Google Scholar
  5. 5.
    Aydemir, B., Bohannon, A., Fairbairn, M., Foster, J., Pierce, B., Sewell, P., Vytiniotis, D., Washburn, G., Weirich, S., Zdancewic, S.: Mechanized metatheory for the masses: The poplmark challenge (2005)Google Scholar
  6. 6.
    Bernard, A., Lee, P.: Temporal Logic for Proof-Carrying Code. In: Voronkov, A. (ed.) CADE 2002. LNCS, vol. 2392, p. 31. Springer, Heidelberg (2002)Google Scholar
  7. 7.
    Crary, K., Sarkar, S.: Foundational certified code in a metalogical framework. In: Baader, F. (ed.) CADE 2003. LNCS, vol. 2741, pp. 106–120. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  8. 8.
    Graf, P.: Substitution tree indexing. In: Hsiang, J. (ed.) RTA 1995. LNCS, vol. 914, pp. 117–131. Springer, Heidelberg (1995)Google Scholar
  9. 9.
    Harper, R., Honsell, F., Plotkin, G.: A framework for defining logics. Journal of the Association for Computing Machinery 40(1), 143–184 (1993)MATHMathSciNetGoogle Scholar
  10. 10.
    Huet, G.: A unification algorithm for typed λ-calculus. Theoretical Computer Science 1, 27–57 (1975)CrossRefMathSciNetGoogle Scholar
  11. 11.
    Michaylov, S., Pfenning, F.: An empirical study of the runtime behavior of higher-order logic programs. In: Miller, D. (ed.) Proceedings of the Workshop on the λProlog Programming Language, Philadelphia, Pennsylvania, pp. 257–271. University of Pennsylvania (July 1992) Available as Technical Report MS-CIS-92-86.Google Scholar
  12. 12.
    Miller, D.: Unification of simply typed lambda-terms as logic programming. In: Eighth International Logic Programming Conference, Paris, France, pp. 255–269. MIT Press, Cambridge (1991)Google Scholar
  13. 13.
    Nadathur, G., Miller, D.: An overview of λProlog. In: Bowen, K.A., Kowalski, R.A. (eds.) Fifth International Logic Programming Conference, Seattle, Washington, pp. 810–827. MIT Press, Cambridge (1988)Google Scholar
  14. 14.
    Nadathur, G., Mitchell, D.J.: System Description: Teyjus - A Compiler and Abstract Machine Based Implementation of λProlog. In: Ganzinger, H. (ed.) CADE 1999. LNCS, vol. 1632, pp. 287–291. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  15. 15.
    Nanevski, A., Pfenning, F., Pientka, B.: A contextual modal type theory (2005)Google Scholar
  16. 16.
    Necula, G., Rahul, S.: Oracle-based checking of untrusted software. In: 28th ACM Symposium on Principles of Programming Languages (POPL 2001), pp. 142–154 (2001)Google Scholar
  17. 17.
    Necula, G.C., Lee, P.: Efficient representation and validation of logical proofs. In: Pratt, V. (ed.) Proceedings of the 13th Annual Symposium on Logic in Computer Science (LICS 1998), Indianapolis, Indiana, pp. 93–104. IEEE Computer Society Press, Los Alamitos (1998)Google Scholar
  18. 18.
    Paulson, L.C.: Natural deduction as higher-order resolution. Journal of Logic Programming 3, 237–258 (1986)MATHCrossRefMathSciNetGoogle Scholar
  19. 19.
    Pfenning, F.: Logic programming in the LF logical framework. In: Huet, G., Plotkin, G. (eds.) Logical Frameworks, pp. 149–181. Cambridge University Press, Cambridge (1991)CrossRefGoogle Scholar
  20. 20.
    Pfenning, F.: Unification and anti-unification in the Calculus of Constructions. In: Sixth Annual IEEE Symposium on Logic in Computer Science, Amsterdam, The Netherlands, pp. 74–85 (July 1991)Google Scholar
  21. 21.
    Pfenning, F., Elliott, C.: Higher-order abstract syntax. In: Proceedings of the ACM SIGPLAN 1988 Symposium on Language Design and Implementation, Atlanta, Georgia, pp. 199–208 (June 1988)Google Scholar
  22. 22.
    Pfenning, F., Schürmann, C.: System Description: Twelf - A Meta-Logical Framework for Deductive Systems. In: Ganzinger, H. (ed.) CADE 1999. LNCS (LNAI), vol. 1632, pp. 202–206. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  23. 23.
    Pientka, B.: Higher-Order Substitution Tree Indexing. In: Palamidessi, C. (ed.) ICLP 2003. LNCS, vol. 2916, pp. 377–391. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  24. 24.
    Pientka, B.: Tabling for Higher-Order Logic Programming. In: Nieuwenhuis, R. (ed.) CADE 2005. LNCS (LNAI), vol. 3632, pp. 54–68. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  25. 25.
    Pientka, B.: Eliminating redundancy in higher-order unification: A lightweight approach. In: Furbach, U., Shankar, N. (eds.) IJCAR 2006. LNCS, vol. 4130, pp. 362–376. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  26. 26.
    Pientka, B., Pfenning, F.: Optimizing Higher-Order Pattern Unification. In: Baader, F. (ed.) CADE 2003. LNCS, vol. 2741, pp. 473–487. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  27. 27.
    Qian, Z.: Linear unification of higher-order patterns. In: Gaudel, M.-C., Jouannaud, J.-P. (eds.) CAAP 1993, FASE 1993, and TAPSOFT 1993. LNCS, vol. 668, pp. 391–405. Springer, Heidelberg (1993)Google Scholar
  28. 28.
    Ramakrishnan, I.V., Sekar, R., Voronkov, A.: Term indexing. In: Robinson, A., Voronkov, A. (eds.) Handbook of Automated Reasoning, vol. 2, pp. 1853–1962. Elsevier Science Publishers B.V., Amsterdam (2001)CrossRefGoogle Scholar
  29. 29.
    Sarkar, S., Pientka, B., Crary, K.: Small Proof Witnesses for LF. In: Gabbrielli, M., Gupta, G. (eds.) ICLP 2005. LNCS, vol. 3668, pp. 387–401. Springer, Heidelberg (2005)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Brigitte Pientka
    • 1
  1. 1.School of Computer ScienceMcGill UniversityMontrealCanada

Personalised recommendations