Inferring loop invariants by mutation, dynamic analysis, and static checking
- Autores
- Galeotti, Juan Pablo; Furia, Carlo A.; May, Eva; Fraser, Gordon; Zeller, Andreas
- Año de publicación
- 2015
- Idioma
- inglés
- Tipo de recurso
- artículo
- Estado
- versión publicada
- Descripción
- Verifiers that can prove programs correct against their full functional specification require, for programs with loops, additional annotations in the form of loop invariants - properties that hold for every iteration of a loop. We show that significant loop invariant candidates can be generated by systematically mutating postconditions; then, dynamic checking (based on automatically generated tests) weeds out invalid candidates, and static checking selects provably valid ones. We present a framework that automatically applies these techniques to support a program prover, paving the way for fully automatic verification without manually written loop invariants: Applied to 28 methods (including 39 different loops) from various Java.util classes (occasionally modified to avoid using Java features not fully supported by the static checker), our DYNAMATE prototype automatically discharged 97 percent of all proof obligations, resulting in automatic complete correctness proofs of 25 out of the 28 methods - outperforming several state-of-the-art tools for fully automatic verification.
Fil: Galeotti, Juan Pablo. Universitat Saarland; Alemania. Consejo Nacional de Investigaciones Científicas y Técnicas; Argentina
Fil: Furia, Carlo A.. Swiss Federal Institute of Technology Zurich; Suiza
Fil: May, Eva. Google; Estados Unidos
Fil: Fraser, Gordon. University of Sheffield; Reino Unido
Fil: Zeller, Andreas. Universitat Saarland; Alemania - Materia
-
AUTOMATIC VERIFICATION
DYNAMIC ANALYSIS
FUNCTIONAL PROPERTIES
INFERENCE
LOOP INVARIANTS - Nivel de accesibilidad
- acceso abierto
- Condiciones de uso
- https://creativecommons.org/licenses/by-nc-sa/2.5/ar/
- Repositorio
.jpg)
- Institución
- Consejo Nacional de Investigaciones Científicas y Técnicas
- OAI Identificador
- oai:ri.conicet.gov.ar:11336/84726
Ver los metadatos del registro completo
| id |
CONICETDig_7c4d9ff7405bd74ed414ea548ce7fcd2 |
|---|---|
| oai_identifier_str |
oai:ri.conicet.gov.ar:11336/84726 |
| network_acronym_str |
CONICETDig |
| repository_id_str |
3498 |
| network_name_str |
CONICET Digital (CONICET) |
| spelling |
Inferring loop invariants by mutation, dynamic analysis, and static checkingGaleotti, Juan PabloFuria, Carlo A.May, EvaFraser, GordonZeller, AndreasAUTOMATIC VERIFICATIONDYNAMIC ANALYSISFUNCTIONAL PROPERTIESINFERENCELOOP INVARIANTShttps://purl.org/becyt/ford/2.2https://purl.org/becyt/ford/2Verifiers that can prove programs correct against their full functional specification require, for programs with loops, additional annotations in the form of loop invariants - properties that hold for every iteration of a loop. We show that significant loop invariant candidates can be generated by systematically mutating postconditions; then, dynamic checking (based on automatically generated tests) weeds out invalid candidates, and static checking selects provably valid ones. We present a framework that automatically applies these techniques to support a program prover, paving the way for fully automatic verification without manually written loop invariants: Applied to 28 methods (including 39 different loops) from various Java.util classes (occasionally modified to avoid using Java features not fully supported by the static checker), our DYNAMATE prototype automatically discharged 97 percent of all proof obligations, resulting in automatic complete correctness proofs of 25 out of the 28 methods - outperforming several state-of-the-art tools for fully automatic verification.Fil: Galeotti, Juan Pablo. Universitat Saarland; Alemania. Consejo Nacional de Investigaciones Científicas y Técnicas; ArgentinaFil: Furia, Carlo A.. Swiss Federal Institute of Technology Zurich; SuizaFil: May, Eva. Google; Estados UnidosFil: Fraser, Gordon. University of Sheffield; Reino UnidoFil: Zeller, Andreas. Universitat Saarland; AlemaniaIEEE Computer Society2015-10info:eu-repo/semantics/articleinfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/resource_type/c_6501info:ar-repo/semantics/articuloapplication/pdfapplication/pdfapplication/pdfhttp://hdl.handle.net/11336/84726Galeotti, Juan Pablo; Furia, Carlo A.; May, Eva; Fraser, Gordon; Zeller, Andreas; Inferring loop invariants by mutation, dynamic analysis, and static checking; IEEE Computer Society; IEEE Transactions On Software Engineering; 41; 10; 10-2015; 1019-10370098-5589CONICET DigitalCONICETenginfo:eu-repo/semantics/altIdentifier/url/http://arxiv.org/abs/1407.5286info:eu-repo/semantics/altIdentifier/url/https://ieeexplore.ieee.org/document/7105412info:eu-repo/semantics/altIdentifier/doi/10.1109/TSE.2015.2431688info:eu-repo/semantics/openAccesshttps://creativecommons.org/licenses/by-nc-sa/2.5/ar/reponame:CONICET Digital (CONICET)instname:Consejo Nacional de Investigaciones Científicas y Técnicas2025-10-22T11:22:22Zoai:ri.conicet.gov.ar:11336/84726instacron:CONICETInstitucionalhttp://ri.conicet.gov.ar/Organismo científico-tecnológicoNo correspondehttp://ri.conicet.gov.ar/oai/requestdasensio@conicet.gov.ar; lcarlino@conicet.gov.arArgentinaNo correspondeNo correspondeNo correspondeopendoar:34982025-10-22 11:22:22.986CONICET Digital (CONICET) - Consejo Nacional de Investigaciones Científicas y Técnicasfalse |
| dc.title.none.fl_str_mv |
Inferring loop invariants by mutation, dynamic analysis, and static checking |
| title |
Inferring loop invariants by mutation, dynamic analysis, and static checking |
| spellingShingle |
Inferring loop invariants by mutation, dynamic analysis, and static checking Galeotti, Juan Pablo AUTOMATIC VERIFICATION DYNAMIC ANALYSIS FUNCTIONAL PROPERTIES INFERENCE LOOP INVARIANTS |
| title_short |
Inferring loop invariants by mutation, dynamic analysis, and static checking |
| title_full |
Inferring loop invariants by mutation, dynamic analysis, and static checking |
| title_fullStr |
Inferring loop invariants by mutation, dynamic analysis, and static checking |
| title_full_unstemmed |
Inferring loop invariants by mutation, dynamic analysis, and static checking |
| title_sort |
Inferring loop invariants by mutation, dynamic analysis, and static checking |
| dc.creator.none.fl_str_mv |
Galeotti, Juan Pablo Furia, Carlo A. May, Eva Fraser, Gordon Zeller, Andreas |
| author |
Galeotti, Juan Pablo |
| author_facet |
Galeotti, Juan Pablo Furia, Carlo A. May, Eva Fraser, Gordon Zeller, Andreas |
| author_role |
author |
| author2 |
Furia, Carlo A. May, Eva Fraser, Gordon Zeller, Andreas |
| author2_role |
author author author author |
| dc.subject.none.fl_str_mv |
AUTOMATIC VERIFICATION DYNAMIC ANALYSIS FUNCTIONAL PROPERTIES INFERENCE LOOP INVARIANTS |
| topic |
AUTOMATIC VERIFICATION DYNAMIC ANALYSIS FUNCTIONAL PROPERTIES INFERENCE LOOP INVARIANTS |
| purl_subject.fl_str_mv |
https://purl.org/becyt/ford/2.2 https://purl.org/becyt/ford/2 |
| dc.description.none.fl_txt_mv |
Verifiers that can prove programs correct against their full functional specification require, for programs with loops, additional annotations in the form of loop invariants - properties that hold for every iteration of a loop. We show that significant loop invariant candidates can be generated by systematically mutating postconditions; then, dynamic checking (based on automatically generated tests) weeds out invalid candidates, and static checking selects provably valid ones. We present a framework that automatically applies these techniques to support a program prover, paving the way for fully automatic verification without manually written loop invariants: Applied to 28 methods (including 39 different loops) from various Java.util classes (occasionally modified to avoid using Java features not fully supported by the static checker), our DYNAMATE prototype automatically discharged 97 percent of all proof obligations, resulting in automatic complete correctness proofs of 25 out of the 28 methods - outperforming several state-of-the-art tools for fully automatic verification. Fil: Galeotti, Juan Pablo. Universitat Saarland; Alemania. Consejo Nacional de Investigaciones Científicas y Técnicas; Argentina Fil: Furia, Carlo A.. Swiss Federal Institute of Technology Zurich; Suiza Fil: May, Eva. Google; Estados Unidos Fil: Fraser, Gordon. University of Sheffield; Reino Unido Fil: Zeller, Andreas. Universitat Saarland; Alemania |
| description |
Verifiers that can prove programs correct against their full functional specification require, for programs with loops, additional annotations in the form of loop invariants - properties that hold for every iteration of a loop. We show that significant loop invariant candidates can be generated by systematically mutating postconditions; then, dynamic checking (based on automatically generated tests) weeds out invalid candidates, and static checking selects provably valid ones. We present a framework that automatically applies these techniques to support a program prover, paving the way for fully automatic verification without manually written loop invariants: Applied to 28 methods (including 39 different loops) from various Java.util classes (occasionally modified to avoid using Java features not fully supported by the static checker), our DYNAMATE prototype automatically discharged 97 percent of all proof obligations, resulting in automatic complete correctness proofs of 25 out of the 28 methods - outperforming several state-of-the-art tools for fully automatic verification. |
| publishDate |
2015 |
| dc.date.none.fl_str_mv |
2015-10 |
| dc.type.none.fl_str_mv |
info:eu-repo/semantics/article info:eu-repo/semantics/publishedVersion http://purl.org/coar/resource_type/c_6501 info:ar-repo/semantics/articulo |
| format |
article |
| status_str |
publishedVersion |
| dc.identifier.none.fl_str_mv |
http://hdl.handle.net/11336/84726 Galeotti, Juan Pablo; Furia, Carlo A.; May, Eva; Fraser, Gordon; Zeller, Andreas; Inferring loop invariants by mutation, dynamic analysis, and static checking; IEEE Computer Society; IEEE Transactions On Software Engineering; 41; 10; 10-2015; 1019-1037 0098-5589 CONICET Digital CONICET |
| url |
http://hdl.handle.net/11336/84726 |
| identifier_str_mv |
Galeotti, Juan Pablo; Furia, Carlo A.; May, Eva; Fraser, Gordon; Zeller, Andreas; Inferring loop invariants by mutation, dynamic analysis, and static checking; IEEE Computer Society; IEEE Transactions On Software Engineering; 41; 10; 10-2015; 1019-1037 0098-5589 CONICET Digital CONICET |
| dc.language.none.fl_str_mv |
eng |
| language |
eng |
| dc.relation.none.fl_str_mv |
info:eu-repo/semantics/altIdentifier/url/http://arxiv.org/abs/1407.5286 info:eu-repo/semantics/altIdentifier/url/https://ieeexplore.ieee.org/document/7105412 info:eu-repo/semantics/altIdentifier/doi/10.1109/TSE.2015.2431688 |
| dc.rights.none.fl_str_mv |
info:eu-repo/semantics/openAccess https://creativecommons.org/licenses/by-nc-sa/2.5/ar/ |
| eu_rights_str_mv |
openAccess |
| rights_invalid_str_mv |
https://creativecommons.org/licenses/by-nc-sa/2.5/ar/ |
| dc.format.none.fl_str_mv |
application/pdf application/pdf application/pdf |
| dc.publisher.none.fl_str_mv |
IEEE Computer Society |
| publisher.none.fl_str_mv |
IEEE Computer Society |
| dc.source.none.fl_str_mv |
reponame:CONICET Digital (CONICET) instname:Consejo Nacional de Investigaciones Científicas y Técnicas |
| reponame_str |
CONICET Digital (CONICET) |
| collection |
CONICET Digital (CONICET) |
| instname_str |
Consejo Nacional de Investigaciones Científicas y Técnicas |
| repository.name.fl_str_mv |
CONICET Digital (CONICET) - Consejo Nacional de Investigaciones Científicas y Técnicas |
| repository.mail.fl_str_mv |
dasensio@conicet.gov.ar; lcarlino@conicet.gov.ar |
| _version_ |
1846781740377440256 |
| score |
12.982451 |