Systematic software development using VDM (2nd ed.)
Systematic software development using VDM (2nd ed.)
Mechanizing programming logics in higher order logic
Current trends in hardware verification and automated theorem proving
Compiling with continuations
The essence of compiling with continuations
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Toward reliable modular programs
Toward reliable modular programs
Trustworthy tools for trustworthy programs: a mechanically verified verification condition generator for the total correctness of procedures
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
JRes: a resource accounting interface for Java
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
ACM Transactions on Information and System Security (TISSEC)
Verification of Array, Record, and Pointer Operations in Pascal
ACM Transactions on Programming Languages and Systems (TOPLAS)
An axiomatic basis for computer programming
Communications of the ACM
Formalizing the safety of Java, the Java virtual machine, and Java card
ACM Computing Surveys (CSUR)
Bytecode verification on Java smart cards
Software—Practice & Experience
Static prediction of heap space usage for first-order functional programs
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Recursive object types in a logic of object-oriented programs
Nordic Journal of Computing
A Logic for the Java Modeling Language JML
FASE '01 Proceedings of the 4th International Conference on Fundamental Approaches to Software Engineering
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
The LOOP Compiler for Java and JML
TACAS 2001 Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
A Logic of Object-Oriented Programs
TAPSOFT '97 Proceedings of the 7th International Joint Conference CAAP/FASE on Theory and Practice of Software Development
Hoare Logics for Recursive Procedures and Unbounded Nondeterminism
CSL '02 Proceedings of the 16th International Workshop and 11th Annual Conference of the EACSL on Computer Science Logic
Proving Pointer Programs in Hoare Logic
MPC '00 Proceedings of the 5th International Conference on Mathematics of Program Construction
A type system for bounded space and functional in-place update
Nordic Journal of Computing
Computer-aided specification and verification of annotated object-oriented programs
FMOODS '02 Proceedings of the IFIP TC6/WG6.1 Fifth International Conference on Formal Methods for Open Object-Based Distributed Systems V
Foundational Proof-Carrying Code
LICS '01 Proceedings of the 16th Annual IEEE Symposium on Logic in Computer Science
Possible worlds and resources: the semantics of BI
Theoretical Computer Science - Mathematical foundations of programming semantics
Precise Analysis of Memory Consumption using Program Logics
SEFM '05 Proceedings of the Third IEEE International Conference on Software Engineering and Formal Methods
An assertion-based proof system for multithreaded Java
Theoretical Computer Science - Formal methods for components and objects
Electronic Notes in Theoretical Computer Science (ENTCS)
Electronic Notes in Theoretical Computer Science (ENTCS)
Preliminary design of BML: a behavioral interface specification language for java bytecode
FASE'07 Proceedings of the 10th international conference on Fundamental approaches to software engineering
A program logic for handling JAVACARD's transaction mechanism
FASE'03 Proceedings of the 6th international conference on Fundamental approaches to software engineering
The Why/Krakatoa/Caduceus platform for deductive program verification
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Symbolic execution with separation logic
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
Mobile resource guarantees and policies
CASSIS'05 Proceedings of the Second international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Mobile resource guarantees for smart devices
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
ESC/Java2: uniting ESC/Java and JML
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Verification of safety properties in the presence of transactions
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Formalisation and verification of java card security properties in dynamic logic
FASE'05 Proceedings of the 8th international conference, held as part of the joint European Conference on Theory and Practice of Software conference on Fundamental Approaches to Software Engineering
Enforcing resource bounds via static verification of dynamic checks
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Long-Run Cost Analysis by Approximation of Linear Operators over Dioids
AMAST 2008 Proceedings of the 12th international conference on Algebraic Methodology and Software Technology
CSL '08 Proceedings of the 22nd international workshop on Computer Science Logic
Safety Guarantees from Explicit Resource Management
Formal Methods for Components and Objects
A Resource-Aware Semantics and Abstract Machine for a Functional Language with Explicit Deallocation
Electronic Notes in Theoretical Computer Science (ENTCS)
CALCO'07 Proceedings of the 2nd international conference on Algebra and coalgebra in computer science
Long-run cost analysis by approximation of linear operators over dioids
Mathematical Structures in Computer Science
Certification of safe polynomial memory bounds
FM'11 Proceedings of the 17th international conference on Formal methods
ITP'11 Proceedings of the Second international conference on Interactive theorem proving
Amortised resource analysis with separation logic
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Time Bounds for General Function Pointers
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 5.23 |
We introduce a reasoning infrastructure for proving statements about resource consumption in a fragment of the Java Virtual Machine Language (JVML). The infrastructure is based on a small hierarchy of program logics, with increasing levels of abstraction: at the top there is a type system for a high-level language that encodes resource consumption. The infrastructure is designed to be used in a proof-carrying code (PCC) scenario, where mobile programs can be equipped with formal evidence that they have predictable resource behaviour. This article focuses on the core logic in our infrastructure, a VDM-style program logic for partial correctness, which can make statements about resource consumption alongside functional behaviour. We establish some important results for this logic, including soundness and completeness with respect to a resource-aware operational semantics for the JVML. We also present a second logic built on top of the core logic, which is used to express termination; it too is shown to be sound and complete. We then outline how high-level language type systems may be connected to these logics. The entire infrastructure has been formalized in Isabelle/HOL, both to enhance the confidence in our meta-theoretical results, and to provide a prototype implementation for PCC. We give examples to show the usefulness of this approach, including proofs of resource bounds on code resulting from compiling high-level functional programs.