Kush Jain, Karl Palmskog, Ahmet Celik, E. J. G. Arias, Miloš Gligorić
{"title":"mCoq","authors":"Kush Jain, Karl Palmskog, Ahmet Celik, E. J. G. Arias, Miloš Gligorić","doi":"10.1145/3377812.3382156","DOIUrl":null,"url":null,"abstract":"Software developed and verified using proof assistants, such as Coq, can provide trustworthiness beyond that of software developed using traditional programming languages and testing practices. However, guarantees from formal verification are only as good as the underlying definitions and specification properties. If properties are incomplete, flaws in definitions may not be captured during verification, which can lead to unexpected system behavior and failures. Mutation analysis is a general technique for evaluating specifications for adequacy and completeness, based on making small-scale changes to systems and observing the results. We demonstrate MCoq, the first mutation analysis tool for Coq projects. MCoq changes Coq definitions, with each change producing a modified project version, called a mutant, whose proofs are exhaustively checked. If checking succeeds, i.e., the mutant is live, this may indicate specification incompleteness. Since proof checking can take a long time, we optimized MCoq to perform incremental and parallel processing of mutants. By applying MCoq to popular Coq libraries, we found several instances of incomplete and missing specifications manifested as live mutants. We believe MCoq can be useful to proof engineers and researchers for analyzing software verification projects. The demo video for MCoq can be viewed at: https://youtu.be/QhigpfQ7dNo.","PeriodicalId":421517,"journal":{"name":"Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Companion Proceedings","volume":"26 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2020-06-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"4","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Companion Proceedings","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/3377812.3382156","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 4
Abstract
Software developed and verified using proof assistants, such as Coq, can provide trustworthiness beyond that of software developed using traditional programming languages and testing practices. However, guarantees from formal verification are only as good as the underlying definitions and specification properties. If properties are incomplete, flaws in definitions may not be captured during verification, which can lead to unexpected system behavior and failures. Mutation analysis is a general technique for evaluating specifications for adequacy and completeness, based on making small-scale changes to systems and observing the results. We demonstrate MCoq, the first mutation analysis tool for Coq projects. MCoq changes Coq definitions, with each change producing a modified project version, called a mutant, whose proofs are exhaustively checked. If checking succeeds, i.e., the mutant is live, this may indicate specification incompleteness. Since proof checking can take a long time, we optimized MCoq to perform incremental and parallel processing of mutants. By applying MCoq to popular Coq libraries, we found several instances of incomplete and missing specifications manifested as live mutants. We believe MCoq can be useful to proof engineers and researchers for analyzing software verification projects. The demo video for MCoq can be viewed at: https://youtu.be/QhigpfQ7dNo.