Modular Verification of Procedure Equivalence in the Presence of Memory Allocation [chapter]

Tim Wood, Sophia Drossopolou, Shuvendu K. Lahiri, Susan Eisenbach
2017 Lecture Notes in Computer Science  
For most high level languages, two procedures are equivalent if they transform a pair of isomorphic stores to isomorphic stores. However, tools for modular checking of such equivalence impose a stronger check where isomorphism is strengthened to equality of stores. This results in the inability to prove many interesting program pairs with recursion and dynamic memory allocation. In this work, we present RIE, a methodology to modularly establish equivalence of procedures in the presence of
more » ... allocation, cyclic data structures and recursion. Our technique addresses the need for finding witnesses to isomorphism with angelic allocation, supports reasoning about equivalent procedures calls when the stores are only locally isomorphic, and reasoning about changes in the order of procedure calls. We have implemented RIE by encoding it in the Boogie program verifier. We describe the encoding and prove its soundness.
doi:10.1007/978-3-662-54434-1_35 fatcat:gml6nftobrdsnkucf56ukbs6ya