Verification of object-oriented software : the KeY approach /
Verification of object-oriented software : the KeY approach /
KeY approach
Bernhard Beckert, Reiner Hähnle, Peter H. Schmitt (eds.) ; foreword by K. Rustan M. Leino.
- Berlin ; New York : Springer, ©2007.
- 1 online resource (xxix, 658 pages) : illustrations
- Lecture notes in computer science, Lecture notes in artificial intelligence. AI systems 4334. 0302-9743 ; .
- Lecture notes in computer science ; 4334. Lecture notes in computer science. Lecture notes in artificial intelligence. Lecture notes in computer science. Lecture notes in artificial intelligence. AI systems. .
Includes bibliographical references (pages 627-643) and index.
A New Look at Formal Methods for Software Construction -- A New Look at Formal Methods for Software Construction -- I: Foundations -- First-Order Logic -- Dynamic Logic -- Construction of Proofs -- II: Expressing and Formalising Requirements -- Formal Specification -- Pattern-Driven Formal Specification -- Natural Language Specifications -- Proof Obligations -- From Sequential Java to Java Card -- III: Using the KeY System -- Using KeY -- Proving by Induction -- Java Integers -- Proof Reuse -- IV: Case Studies -- The Demoney Case Study -- The Schorr-Waite-Algorithm -- Appendices -- Predefined Operators in Java Card DL -- The KeY Syntax.
Long gone are the days when program veri?cation was a task carried out merely by hand with paper and pen. For one, we are increasingly interested in proving actual program artifacts, not just abstractions thereof or core algorithms. The programs we want to verify today are thus longer, including whole classes and modules. As we consider larger programs, the number of cases to be considered in a proof increases. The creative and insightful parts of a proof can easily be lost in scores of mundane cases. Another problem with paper-and-pen proofs is that the features of the programming languages we employ in these programs are plentiful, including object-oriented organizations of data, facilities for specifying di?erent c- trol?ow for rare situations, constructs for iterating over the elements of a collection, and the grouping together of operations into atomic transactions. These language features were designed to facilitate simpler and more natural encodings of programs, and ideally they are accompanied by simpler proof rules. But the variety and increased number of these features make it harder to remember all that needs to be proved about their uses. As a third problem, we have come to expect a higher degree of rigor from our proofs. A proof carried out or replayed by a machine somehow gets more credibility than one that requires human intellect to understand.
9783540690610 3540690611 9783540689775 354068977X
9786611351519
978-3-540-68977-5 Springer http://www.springerlink.com
07,A17,0036 dnb 07,N07,0089 dnb
982647239 DE-101 985371226 DE-101
Computer software--Verification.
Object-oriented methods (Computer science)
Java (Computer program language)
Computer programs--Verification.
Logiciels--Vérification.
Conception orientée objet (Informatique)
Java (Langage de programmation)
Java (Computer program language)
Object-oriented methods (Computer science)
Computer software--Verification.
Informatique.
Computer programs--Verification
Computer software--Verification
Java (Computer program language)
Object-oriented methods (Computer science)
wiskunde mathematics computerwetenschappen computer sciences kunstmatige intelligentie artificial intelligence logica logic programmeertalen programming languages software engineering Information and Communication Technology (General) Informatie- en communicatietechnologie (algemeen)
QA76.76.V47 / V474 2007eb
005.1/4
Includes bibliographical references (pages 627-643) and index.
A New Look at Formal Methods for Software Construction -- A New Look at Formal Methods for Software Construction -- I: Foundations -- First-Order Logic -- Dynamic Logic -- Construction of Proofs -- II: Expressing and Formalising Requirements -- Formal Specification -- Pattern-Driven Formal Specification -- Natural Language Specifications -- Proof Obligations -- From Sequential Java to Java Card -- III: Using the KeY System -- Using KeY -- Proving by Induction -- Java Integers -- Proof Reuse -- IV: Case Studies -- The Demoney Case Study -- The Schorr-Waite-Algorithm -- Appendices -- Predefined Operators in Java Card DL -- The KeY Syntax.
Long gone are the days when program veri?cation was a task carried out merely by hand with paper and pen. For one, we are increasingly interested in proving actual program artifacts, not just abstractions thereof or core algorithms. The programs we want to verify today are thus longer, including whole classes and modules. As we consider larger programs, the number of cases to be considered in a proof increases. The creative and insightful parts of a proof can easily be lost in scores of mundane cases. Another problem with paper-and-pen proofs is that the features of the programming languages we employ in these programs are plentiful, including object-oriented organizations of data, facilities for specifying di?erent c- trol?ow for rare situations, constructs for iterating over the elements of a collection, and the grouping together of operations into atomic transactions. These language features were designed to facilitate simpler and more natural encodings of programs, and ideally they are accompanied by simpler proof rules. But the variety and increased number of these features make it harder to remember all that needs to be proved about their uses. As a third problem, we have come to expect a higher degree of rigor from our proofs. A proof carried out or replayed by a machine somehow gets more credibility than one that requires human intellect to understand.
9783540690610 3540690611 9783540689775 354068977X
9786611351519
978-3-540-68977-5 Springer http://www.springerlink.com
07,A17,0036 dnb 07,N07,0089 dnb
982647239 DE-101 985371226 DE-101
Computer software--Verification.
Object-oriented methods (Computer science)
Java (Computer program language)
Computer programs--Verification.
Logiciels--Vérification.
Conception orientée objet (Informatique)
Java (Langage de programmation)
Java (Computer program language)
Object-oriented methods (Computer science)
Computer software--Verification.
Informatique.
Computer programs--Verification
Computer software--Verification
Java (Computer program language)
Object-oriented methods (Computer science)
wiskunde mathematics computerwetenschappen computer sciences kunstmatige intelligentie artificial intelligence logica logic programmeertalen programming languages software engineering Information and Communication Technology (General) Informatie- en communicatietechnologie (algemeen)
QA76.76.V47 / V474 2007eb
005.1/4