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
CONICET Digital (CONICET)
Institución
Consejo Nacional de Investigaciones Científicas y Técnicas
OAI Identificador
oai:ri.conicet.gov.ar:11336/84726

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