Systematic software development using VDM
Systematic software development using VDM
Mechanizing programming logics in higher order logic
Current trends in hardware verification and automated theorem proving
Trustworthy tools for trustworthy programs: a mechanically verified verification condition generator for the total correctness of procedures
A framework for combining analysis and verification
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An axiomatic basis for computer programming
Communications of the ACM
A Discipline of Programming
Refinement Calculus: A Systematic Introduction
Refinement Calculus: A Systematic Introduction
TACAS '00 Proceedings of the 6th International Conference on Tools and Algorithms for Construction and Analysis of Systems: Held as Part of the European Joint Conferences on the Theory and Practice of Software, ETAPS 2000
Proof of Imperative Programs in Type Theory
TYPES '98 Selected papers from the International Workshop on Types for Proofs and Programs
Hoare Logic for Mutual Recursion and Local Variables
Proceedings of the 19th Conference on Foundations of Software Technology and Theoretical Computer Science
Powerful Techniques for the Automatic Generation of Invariants
CAV '96 Proceedings of the 8th International Conference on Computer Aided Verification
Reasoning about recursive procedures with parameters
MERLIN '03 Proceedings of the 2003 ACM SIGPLAN workshop on Mechanized reasoning about languages with variable binding
A rigorous environment for development of concurrent systems
Nordic Journal of Computing
Hi-index | 0.02 |
Tools for automatically extracting the conditions for which a program is correct with respect to a precondition and postcondition can make proving program correctness easier. We build a HOL-based tool that uses weakest preconditions and semantically derived rules to prove correctness theorems with the verification conditions as assumptions. The rules include two new rules for calculating loop preconditions and recursion correctness while taking specification variables into consideration. The programming language has (recursive) procedures, and both demonic and angelic nondeterminism, which can be used to model interaction. Program variables can be of arbitrary types. Programs with procedures are handled modularly, and proved facts about individual procedures are stored in a database available to all programs.