Diego Medina-Martínez, E. Bárcenas, G. Molero-Castillo, A. Velázquez-Mena, Rocío Aldeco-Pérez
{"title":"Formal Verification of a Database Management System","authors":"Diego Medina-Martínez, E. Bárcenas, G. Molero-Castillo, A. Velázquez-Mena, Rocío Aldeco-Pérez","doi":"10.1109/CONISOFT50191.2020.00024","DOIUrl":null,"url":null,"abstract":"Assertion based program verification is a well-known formal approach to (dis)prove correctness of algorithms associated to software systems. Assertions are input and output properties a correct program must satisfy. These properties are traditionally written in a specification language based on classical logic. Associated classical reasoning (inference) systems are then used to (dis)prove program correctness. However, when programs manipulate mutable data structures such as pointers, classical logical operators have been unable to successfully model syntactically unrelated expressions. In this article, we study separation logics, which are equipped with specially-purposed operators to model mutable data structures. We describe the use of this logic as a specification language in the verification of a database management system (DMS). In particular, we detect several bugs in two DMS libraries regarding heap manipulation. We describe these bugs in detail and propose solutions.","PeriodicalId":294992,"journal":{"name":"2020 8th International Conference in Software Engineering Research and Innovation (CONISOFT)","volume":"53 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2020-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"2020 8th International Conference in Software Engineering Research and Innovation (CONISOFT)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/CONISOFT50191.2020.00024","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0
Abstract
Assertion based program verification is a well-known formal approach to (dis)prove correctness of algorithms associated to software systems. Assertions are input and output properties a correct program must satisfy. These properties are traditionally written in a specification language based on classical logic. Associated classical reasoning (inference) systems are then used to (dis)prove program correctness. However, when programs manipulate mutable data structures such as pointers, classical logical operators have been unable to successfully model syntactically unrelated expressions. In this article, we study separation logics, which are equipped with specially-purposed operators to model mutable data structures. We describe the use of this logic as a specification language in the verification of a database management system (DMS). In particular, we detect several bugs in two DMS libraries regarding heap manipulation. We describe these bugs in detail and propose solutions.