Abstract
Tremendous progress has been made in automated and semi-automated verification since the seminal works on program verification. Automated deductive techniques like model checking have been highly successful for many verification tasks (e.g., [17, 18, 13]). Impressive advances continue to be made in static analysis, type systems, and static bug finding (e.g., [21, 12]). These approaches aim to verify code or find bugs in existing systems as automatically as possible, with as little developer help as possible. This has been the aim of the research community for many years, possibly due in part to the bad reputation that continues to plague full program verification. Theorem proving approaches to program verification have continued to make advances, but indeed, they still are generally applied only to the most critical applications (e.g., [7, 5, 16, 11]).
Chapter PDF
Similar content being viewed by others
Keywords
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.
References
Ahrendt, W., Baar, T., Beckert, B., Bubel, R., Giese, M., Hähnle, R., Menzel, W., Mostowski, W., Roth, A., Schlager, S., Schmitt, P.: The KeY tool. Software and System Modeling 4, 32–54 (2005)
Altenkirch, T.: Integrated verification in Type Theory. Lecture notes for a course at ESSLLI 96, Prague (1996) (Available from the author’s website)
Brandt, J.: What a Mesh: Dependent Data Types for Correct Mesh Manipulation Algorithms. Master’s thesis, Washington University in Saint Louis, April (2005), http://cl.cse.wustl.edu
Harel, D., Kozen, D., Tiuryn, J.: Dynamic Logic. MIT Press, Cambridge (2000)
Harrison, J.: Formal Verification of IA-64 Division Algorithms. In: 13th International Conference on Theorem Proving in Higher Order Logics (2000)
Klapper, R., Stump, A.: Validated Proof-Producing Decision Procedures. In: Tinelli, C., Ranise, S. (eds.) 2nd International Workshop on Pragmatics of Decision Procedures in Automated Reasoning (2004)
Klein, G., Nipkow, T.: Verified Bytecode Verifiers. Theoretical Computer Science 298(3), 583–626 (2003)
Marché, C., Paulin-Mohring, C., Urbain, X.: The Krakatoa Tool for Certification of JAVA/JAVACARD Programs Annotated in JML. Journal of Logic and Algebraic Programming 58(1-2), 89–106 (2004)
McBride, C., McKinna, J.: The View from the Left. Journal of Functional Programming 14(1) (2004)
McPeak, S., Necula, G.: Data Structure Specifications via Local Equality Axioms. In: Etessami, K., Rajamani, S. (eds.) 17th International Conference on Computer-Aided Verification, pp. 476–490. Springer, Heidelberg (2005)
Moore, J., Lynch, T., Kaufmann, M.: A Mechanically Checked Proof of the Correctness of the Kernel of the AMD5k86 Floating-Point Division Program. IEEE Transactions on Computers 47(9) (1998)
Musuvathi, M., Park, D., Chou, A., Engler, D., Dill, D.: CMC: A Pragmatic Approach to Model Checking Real Code. In: 5th Symposium on Operating Systems Design and Implementation (December 2002)
Norman, G., Shmatikov, V.: Analysis of Probabilistic Contract Signing. In: BCSFACS Formal Aspects of Security (FASec 2002) (2002)
Pfenning, F.: Intensionality, Extensionality, and Proof Irrelevance in Modal Type Theory. In: 16th IEEE Symposium on Logic in Computer Science, IEEE Computer Society Press, Los Alamitos (2001)
Pollack, R.: Dependently Typed Records in Type Theory. Formal Aspects of Computing 13, 386–402 (2002)
Ruess, H., Shankar, N., Srivas, M.: Modular Verification of SRT Division. Formal Methods in System Design 14(1) (1999)
Shlyakhter, I., Seater, R., Jackson, D., Sridharan, M., Taghdiri, M.: Debugging Overconstrained Declarative Models Using Unsatisfiable Cores. In: 18th IEEE International Conference on Automated Software Engineering (2003) (received best paper award)
Velev, M., Bryant, R.: Effective Use of Boolean Satisfiability Procedures in the Formal Verification of Superscalar and VLIW Microprocessors. Journal of Symbolic Computation 35(2), 73–106 (2003)
Wang, C., Musser, D.: Dynamic Verification of C++ Generic Algorithms. IEEE Transactions on Software Engineering 23(5), 314–323 (1997)
Westbrook, E., Stump, A.: A Language-based Approach to Functionally Correct Imperative Programming. In: 10th ACM SIGPLAN International Conference on Functional Programming (2005)
Xie, Y., Aiken, A.: Scalable Error Detection using Boolean Satisfiability. In: Abadi, M. (ed.) Proceedings of the 32nd ACM Symposium on Principles of Programming Languages (2005)
Zhu, D., Xi, H.: Safe Programming with Pointers through Stateful Views. In: Proceedings of the 7th International Symposium on Practical Aspects of Declarative Languages, pp. 83–97. Springer, Heidelberg (2005)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2008 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Stump, A. (2008). Programming with Proofs: Language-Based Approaches to Totally Correct Software. In: Meyer, B., Woodcock, J. (eds) Verified Software: Theories, Tools, Experiments. VSTTE 2005. Lecture Notes in Computer Science, vol 4171. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-69149-5_55
Download citation
DOI: https://doi.org/10.1007/978-3-540-69149-5_55
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-69147-1
Online ISBN: 978-3-540-69149-5
eBook Packages: Computer ScienceComputer Science (R0)