Information and Computation - Semantics of Data Types
Essays in computing science
Extracting &ohgr;'s programs from proofs in the calculus of constructions
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A sound and complete axiomatization of operational equivalence of programs with memory
Proceedings of the Fourth Annual Symposium on Logic in computer science
Systematic software development using VDM (2nd ed.)
Systematic software development using VDM (2nd ed.)
Programming from specifications
Programming from specifications
Algebraic reconstruction of types and effects
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Notions of computation and monads
Information and Computation
Typing references by effect inference
ESOP'92 Symposium proceedings on 4th European symposium on programming
The type and effect discipline
Information and Computation
A syntactic approach to type soundness
Information and Computation
The B-book: assigning programs to meanings
The B-book: assigning programs to meanings
The marriage of effects and monads
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Type-based analysis of uncaught exceptions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
Handbook of Theoretical Computer Science
Handbook of Theoretical Computer Science
Software Development: A Rigorous Approach
Software Development: A Rigorous Approach
A Discipline of Programming
Inductive Definitions in the system Coq - Rules and Properties
TLCA '93 Proceedings of the International Conference on Typed Lambda Calculi and Applications
The KIV-Approach to Software Verification
KORSO - Methods, Languages, and Tools for the Construction of Correct Software
Optimizing ML Using a Hierarchy of Monadic Types
TIC '98 Proceedings of the Second International Workshop on Types in Compilation
A Theory of Classes for a Functional Language with Effects
CSL '92 Selected Papers from the Workshop on Computer Science Logic
Formal proof of a program: Find
Science of Computer Programming
Journal of Automated Reasoning
Verifying BDD Algorithms through Monadic Interpretation
VMCAI '02 Revised Papers from the Third International Workshop on Verification, Model Checking, and Abstract Interpretation
Building reliable, high-performance networks with the Nuprl proof development system
Journal of Functional Programming
Building certified libraries for PCC: dynamic storage allocation
Science of Computer Programming - Special issue on 12th European symposium on programming (ESOP 2003)
Formal methods for smart cards: an experience report
Science of Computer Programming - Formal methods for components and objects pragmatic aspects and applications
Verifying haskell programs using constructive type theory
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
Interfaces as functors, programs as coalgebras: a final coalgebra theorem in intensional type theory
Theoretical Computer Science
Formal proof of a program: Find
Science of Computer Programming
Lightweight integration of the Ergo theorem prover inside a proof assistant
Proceedings of the second workshop on Automated formal methods
Tilting at Windmills with Coq: Formal Verification of a Compilation Algorithm for Parallel Moves
Journal of Automated Reasoning
Full functional verification of linked data structures
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Functional translation of a calculus of capabilities
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Ynot: dependent types for imperative programs
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Adapting functional programs to higher order logic
Higher-Order and Symbolic Computation
Machine-code verification for multiple architectures: an application of decompilation into logic
Proceedings of the 2008 International Conference on Formal Methods in Computer-Aided Design
Proofs of randomized algorithms in Coq
Science of Computer Programming
An integrated proof language for imperative programs
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Extending the loop language with higher-order procedural variables
ACM Transactions on Computational Logic (TOCL)
Transforming Programs into Recursive Functions
Electronic Notes in Theoretical Computer Science (ENTCS)
Who: a verifier for effectful higher-order programs
Proceedings of the 2009 ACM SIGPLAN workshop on ML
Convincing Proofs for Program Certification
Electronic Notes in Theoretical Computer Science (ENTCS)
Abstract predicates and mutable adts in hoare type theory
ESOP'07 Proceedings of the 16th European conference on Programming
Building certified libraries for PCC: dynamic storage allocation
ESOP'03 Proceedings of the 12th European conference on Programming
Intuitionistic refinement calculus
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
The Why/Krakatoa/Caduceus platform for deductive program verification
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Typing termination in a higher-order concurrent imperative language
Information and Computation
Modular inference of subprogram contracts for safety checking
Journal of Symbolic Computation
BSP-WHY: an intermediate language for deductive verification of BSP programs
Proceedings of the fourth international workshop on High-level parallel programming and applications
A monadic approach to automated reasoning for Bluespec SystemVerilog
Innovations in Systems and Software Engineering
Characteristic formulae for the verification of imperative programs
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Boogie: a modular reusable verifier for object-oriented programs
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
An open extensible tool environment for event-b
ICFEM'06 Proceedings of the 8th international conference on Formal Methods and Software Engineering
Formal verification of security properties of smart card embedded source code
FM'05 Proceedings of the 2005 international conference on Formal Methods
Science of Computer Programming
Reasoning about java programs with aliasing and frame conditions
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
Proofs of randomized algorithms in CoQ
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
A certified multi-prover verification condition generator
VSTTE'12 Proceedings of the 4th international conference on Verified Software: theories, tools, experiments
Fair cooperative multithreading: typing termination in a higher-order concurrent imperative language
CONCUR'07 Proceedings of the 18th international conference on Concurrency Theory
Hi-index | 0.00 |
We study the problem of certifying programs combining imperative and functional features within the general framework of type theory. Type theory is a powerful specification language which is naturally suited for the proof of purely functional programs. To deal with imperative programs, we propose a logical interpretation of an annotated program as a partial proof of its specification. The construction of the corresponding partial proof term is based on a static analysis of the effects of the program which excludes aliases. The missing subterms in the partial proof term are seen as proof obligations, whose actual proofs are left to the user. We show that the validity of those proof obligations implies the total correctness of the program. This work has been implemented in the Coq proof assistant. It appears as a tactic taking an annotated program as argument and generating a set of proof obligations. Several nontrivial algorithms have been certified using this tactic.