Advertisement

Beluga: A Framework for Programming and Reasoning with Deductive Systems (System Description)

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

Abstract

Beluga is an environment for programming and reasoning about formal systems given by axioms and inference rules. It implements the logical framework LF for specifying and prototyping formal systems via higher-order abstract syntax. It also supports reasoning: the user implements inductive proofs about formal systems as dependently typed recursive functions. A distinctive feature of Beluga is that it not only represents binders using higher-order abstract syntax, but directly supports reasoning with contexts. Contextual objects represent hypothetical and parametric derivations, leading to compact and elegant proofs. Our test suite includes standard examples such as the Church-Rosser theorem, type uniqueness, proofs about compiler transformations, and preservation and progress for various ML-like languages. We also implemented proofs of structural properties of expressions and paths in expressions. Stating these properties requires nesting of quantifiers and implications, demonstrating the expressive power of Beluga.

Keywords

Pattern Match Recursive Function Deductive System Computation Language Contextual Object 
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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Dunfield, J., Pientka, B.: Case analysis of higher-order data. In: International Workshop on Logical Frameworks and Meta-Languages: Theory and Practice (LFMTP’08), June 2009. Electronic Notes in Theoretical Computer Science (ENTCS), vol. 228, pp. 69–84. Elsevier, Amsterdam (2009)Google Scholar
  2. 2.
    Gacek, A.: The Abella interactive theorem prover (system description). In: Armando, A., Baumgartner, P., Dowek, G. (eds.) IJCAR 2008. LNCS (LNAI), vol. 5195, pp. 154–161. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  3. 3.
    Harper, R., Honsell, F., Plotkin, G.: A framework for defining logics. Journal of the ACM 40(1), 143–184 (1993)CrossRefMathSciNetzbMATHGoogle Scholar
  4. 4.
    Miller, D.: A logic programming language with lambda-abstraction, function variables, and simple unification. Journal of Logic and Computation 1(4), 497–536 (1991)CrossRefMathSciNetzbMATHGoogle Scholar
  5. 5.
    Momigliano, A., Martin, A.J., Felty, A.P.: Two-Level Hybrid: A system for reasoning using higher-order abstract syntax. In: International Workshop on Logical Frameworks and Meta-Languages: Theory and Practice (LFMTP’07). Electronic Notes in Theoretical Computer Science (ENTCS), vol. 196, pp. 85–93. Elsevier, Amsterdam (2008)Google Scholar
  6. 6.
    Necula, G.C.: Proof-carrying code. In: 24th Annual Symposium on Principles of Programming Languages (POPL’97), January 1997, pp. 106–119. ACM Press, New York (1997)CrossRefGoogle Scholar
  7. 7.
    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
  8. 8.
    Pientka, B.: Tabled higher-order logic programming. PhD thesis, Department of Computer Science, Carnegie Mellon University, CMU-CS-03-185 (2003)Google Scholar
  9. 9.
    Pientka, B.: Verifying termination and reduction properties about higher-order logic programs. Journal of Automated Reasoning 34(2), 179–207 (2005)CrossRefMathSciNetzbMATHGoogle Scholar
  10. 10.
    Pientka, B.: A type-theoretic foundation for programming with higher-order abstract syntax and first-class substitutions. In: 35th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL’08), pp. 371–382. ACM Press, New York (2008)CrossRefGoogle Scholar
  11. 11.
    Pientka, B., Dunfield, J.: Programming with proofs and explicit contexts. In: ACM SIGPLAN Symposium on Principles and Practice of Declarative Programming (PPDP’08), July 2008, pp. 163–173. ACM Press, New York (2008)CrossRefGoogle Scholar
  12. 12.
    Poswolsky, A., Schürmann, C.: System description: Delphin—a functional programming language for deductive systems. In: International Workshop on Logical Frameworks and Meta-Languages: Theory and Practice (LFMTP’08), June 2009. Electronic Notes in Theoretical Computer Science (ENTCS), vol. 228, pp. 135–141. Elsevier, Amsterdam (2009)Google Scholar
  13. 13.
    Rohwedder, E., Pfenning, F.: Mode and termination checking for higher-order logic programs. In: Nielson, H.R. (ed.) ESOP 1996. LNCS, vol. 1058, pp. 296–310. Springer, Heidelberg (1996)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2010

Authors and Affiliations

  • Brigitte Pientka
    • 1
  • Joshua Dunfield
    • 1
  1. 1.McGill UniversityMontréalCanada

Personalised recommendations