[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/1481848.1481856acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
research-article

Verified programming in Guru

Published: 20 January 2009 Publication History

Abstract

Operational Type Theory (OpTT) is a type theory allowing possibly diverging programs while retaining decidability of type checking and a consistent logic. This is done by distinguishing proofs and (program) terms, as well as formulas and types. The theory features propositional equality on type-free terms, which facilitates reasoning about dependently typed programs. OpTT has been implemented in the Guru verified programming language, which includes a type- and proof-checker, and a compiler to efficient C code. In addition to the core OpTT, Guru implements a number of extensions, including ones for verification of programs using mutable state and input/output. This paper gives an introduction to verified programming in Guru.

References

[1]
A. Appel. Foundational Proof-Carrying Code. In 16th Annual IEEE Symposium on Logic in Computer Science, 2001.
[2]
E. Barendsen and S. Smetsers. Conventional and Uniqueness Typing in Graph Rewrite Systems. In Proc. 13th Conference on Foundations of Software Technology and Theoretical Computer Science, pages 41--51. Springer-Verlag, 1993.
[3]
C. Barrett and C. Tinelli. CVC3. In W. Damm and H. Hermanns, editors, Proceedings of the 19th International Conference on Computer Aided Verification (CAV '07), pages 298--302. Springer-Verlag, 2007.
[4]
C. Chen and H. Xi. Combining Programming with Theorem Proving. In Proceedings of the 10th International Conference on Functional Programming (ICFP05), Tallinn, Estonia, September 2005.
[5]
R. Harper, F. Honsell, and G. Plotkin. A Framework for Defining Logics. Journal of the Association for Computing Machinery, 40 (1): 143--184, January 1993.
[6]
Matthew Hertz and Emery D. Berger. Quantifying the Performance of Garbage Collection vs. Explicit Memory Management. In Proc. 20th Annual ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications, pages 313--326. ACM, 2005.
[7]
M. Hofmann and T. Streicher. The groupoid interpretation of type theory. In G. Sambin, editor, Twenty-five years of constructive type theory, pages 83--111. Oxford: Clarendon Press, 1998.
[8]
D. Lee, K. Crary, and R. Harper. Towards a Mechanized Metatheory of Standard ML. In Proc. 34th ACM Symposium on Principles of Programming Languages, pages 173--184. ACM Press, 2007.
[9]
D. Licata and R. Harper. A Formulation of Dependent ML with Explicit Equality Proofs. Technical Report CMU-CS-05-178, Carnegie Mellon University School of Computer Science, December 2005.
[10]
C. McBride and J. McKinna. The View from the Left. Journal of Functional Programming, 14 (1), 2004.
[11]
M. Moskal. Rocket-Fast Proof Checking for SMT Solvers. In C. Ramakrishnan and J. Rehof, editors, Tools and Algorithms for the Construction and Analysis of Systems, 2008.
[12]
A. Nanevski and G. Morrisett. Dependent Type Theory of Stateful Higher-Order Functions. Technical Report TR-24-05, Harvard University, 2005.
[13]
G. Necula. Proof-Carrying Code. In 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 106--119, January 1997.
[14]
U. Norell. Towards a Practical Programming Language Based on Dependent Type Theory. PhD thesis, Chalmers University of Technology, 2007.
[15]
E Pasalic, J. Siek, W. Taha, and S. Fogarty. Concoqtion: Indexed Types Now! In G. Ramalingam and E. Visser, editors, ACM SIGPLAN 2007 Workshop on Partial Evaluation and Program Manipulation, 2007.
[16]
A. Petcher. Deciding Joinability Modulo Ground Equations in Operational Type Theory. Master's thesis, Washington University in Saint Louis, May 2008. Available from http://cl.cse.wustl.edu.
[17]
F. Pfenning and C. Schürmann. System Description: Twelf -- A Meta-Logical Framework for Deductive Systems. In 16th International Conference on Automated Deduction, 1999.
[18]
Benjamin C. Pierce and David N. Turner. Local type inference. In 25TH ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 252--265, 1998.
[19]
T. Sheard. Type-Level Computation Using Narrowing in Ωmega. In Programming Languages meets Program Verification, 2006.
[20]
A. Stump. Proof Checking Technology for Satisfiability Modulo Theories. In A. Abel and C. Urban, editors, Logical Frameworks and Meta-Languages: Theory and Practice, 2008.
[21]
A. Stump and D. Oe. Towards an SMT Proof Format. In C. Barrett and L. de Moura, editors, International Workshop on Satisfiability Modulo Theories, 2008.
[22]
A. Stump and E. Westbrook. A Core Operational Type Theory. Under review, available from http://www.cs.uiowa.edu/ astump.
[23]
W. Swierstra and T. Altenkirch. Beauty in the Beast. In Haskell Workshop, 2007.
[24]
The Coq Development Team. The Coq Proof Assistant Reference Manual, Version V8.0, 2004. http://coq.inria.fr.
[25]
C. Urban, J. Cheney, and S. Berghofer. Mechanising the Metatheory of LF. In Proc. of the 23rd IEEE Symposium on Logic in Computer Science, pages 45--56. IEEE Computer Society, 2008.
[26]
K. Watkins, I. Cervesato, F. Pfenning, and D. Walker. A Concurrent Logical Framework I: Judgments and Properties. Technical Report CMU-CS-02-101, Carnegie Mellon University, 2002.
[27]
M. Zeller, A. Stump, and M. Deters. Signature Compilation for the Edinburgh Logical Framework. In C. Schürmann, editor, Workshop on Logical Frameworks and Meta-Languages: Theory and Practice (LFMTP), 2007.
[28]
D. Zhu and H. Xi. Safe Programming with Pointers through Stateful Views. In Proceedings of the 7th International Symposium on Practical Aspects of Declarative Languages, pages 83--97, Long Beach, CA, January 2005. Springer-Verlag LNCS vol. 3350.

Cited By

View all

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
PLPV '09: Proceedings of the 3rd workshop on Programming languages meets program verification
January 2009
90 pages
ISBN:9781605583303
DOI:10.1145/1481848
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 20 January 2009

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. dependently typed programming
  2. language-based verification
  3. operational type theory

Qualifiers

  • Research-article

Conference

POPL09
Sponsor:

Acceptance Rates

Overall Acceptance Rate 18 of 25 submissions, 72%

Upcoming Conference

POPL '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)2
  • Downloads (Last 6 weeks)0
Reflects downloads up to 21 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Full Iso-Recursive TypesProceedings of the ACM on Programming Languages10.1145/36897188:OOPSLA2(192-221)Online publication date: 8-Oct-2024
  • (2019)Pure iso-type systemsJournal of Functional Programming10.1017/S095679681900010829Online publication date: 17-Sep-2019
  • (2019)Optimizing a Verified SAT SolverNASA Formal Methods10.1007/978-3-030-20652-9_10(148-165)Online publication date: 28-May-2019
  • (2018)A verified SAT solver with watched literals using imperative HOLProceedings of the 7th ACM SIGPLAN International Conference on Certified Programs and Proofs10.1145/3167080(158-171)Online publication date: 8-Jan-2018
  • (2017)Unifying typing and subtypingProceedings of the ACM on Programming Languages10.1145/31338711:OOPSLA(1-26)Online publication date: 12-Oct-2017
  • (2016)Unified Syntax with Iso-typesProgramming Languages and Systems10.1007/978-3-319-47958-3_14(251-270)Online publication date: 9-Oct-2016
  • (2014)Regression CubeACM Transactions on Interactive Intelligent Systems10.1145/25903494:1(1-32)Online publication date: 1-Apr-2014
  • (2014)Experiments with Mobile Drama in an Instrumented Museum for Inducing Conversation in Small GroupsACM Transactions on Interactive Intelligent Systems10.1145/25842504:1(1-39)Online publication date: 1-Apr-2014
  • (2014)PromotionRankACM Transactions on Interactive Intelligent Systems10.1145/25842494:1(1-23)Online publication date: 1-Apr-2014
  • (2014)Combining proofs and programs in a dependently typed languageACM SIGPLAN Notices10.1145/2578855.253588349:1(33-45)Online publication date: 8-Jan-2014
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media