{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:41:58Z","timestamp":1750308118412,"version":"3.41.0"},"reference-count":28,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2005,9,5]],"date-time":"2005-09-05T00:00:00Z","timestamp":1125878400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["SIGSOFT Softw. Eng. Notes"],"published-print":{"date-parts":[[2006,3]]},"abstract":"<jats:p>This paper explains how a uniform, specification-based approach to reasoning about component-based programs can be used to reason about programs that manipulate pointers. No special axioms, language semantics, global heap model, or proof rules for pointers are necessary. We show how this is possible by capturing pointers and operations that manipulate them in the specification of a software component. The proposed approach is mechanizable as long as programmers are able to understand mathematical specifications and write assertions, such as loop invariants. While some of the previous efforts in reasoning do not require such mathematical sophistication on the part of programmers, they are limited in the kinds of properties they can prove about programs that use pointers. We illustrate the idea using a \"Splice\" operation for linked lists, which has been used previously to explain other analysis techniques. Not only can the proposed approach be used to establish shape properties given lightweight specifications, but also it can be used to establish total correctness given more complete specifications.<\/jats:p>","DOI":"10.1145\/1118537.1123066","type":"journal-article","created":{"date-parts":[[2006,5,8]],"date-time":"2006-05-08T22:51:53Z","timestamp":1147128713000},"page":"7","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["A specification-based approach to reasoning about pointers"],"prefix":"10.1145","volume":"31","author":[{"given":"Gregory","family":"Kulczycki","sequence":"first","affiliation":[{"name":"Virginia Tech, Falls Church, VA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Murali","family":"Sitaraman","sequence":"additional","affiliation":[{"name":"Clemson University, Clemson, SC"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Bruce W.","family":"Weide","sequence":"additional","affiliation":[{"name":"The Ohio State University, Columbus, OH"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Atanas","family":"Rountev","sequence":"additional","affiliation":[{"name":"The Ohio State University, Columbus, OH"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2005,9,5]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.5555\/646620.697863"},{"key":"e_1_2_1_2_1","volume-title":"CASSIS 2004","volume":"3362","author":"Barnett M.","year":"2004","unstructured":"Barnett , M. , Leino , K. R. M. , and Schulte , W . The Spec# programming system: An overview . In CASSIS 2004 , LNCS vol. 3362 , Springer , 2004 .]] Barnett, M., Leino, K. R. M., and Schulte, W. The Spec# programming system: An overview. In CASSIS 2004, LNCS vol. 3362, Springer, 2004.]]"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.5555\/257572.257636"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.v35:6"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/286936.286947"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1040305.1040331"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/130943.130947"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/258915.258936"},{"key":"e_1_2_1_11_1","volume-title":"OOPSLA 2001 SAVCBS Workshop Proceedings, 2001","author":"Krone J.","year":"2001","unstructured":"Krone , J. , Ogden , W. F. , and Sitaraman , M . Modular verification of performance correctness . In OOPSLA 2001 SAVCBS Workshop Proceedings, 2001 . http:\/\/www.cs.iastate.edu\/~leavens\/SAVCBS\/papers- 2001 \/index.html.]] Krone, J., Ogden, W. F., and Sitaraman, M. Modular verification of performance correctness. In OOPSLA 2001 SAVCBS Workshop Proceedings, 2001. http:\/\/www.cs.iastate.edu\/~leavens\/SAVCBS\/papers-2001\/index.html.]]"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2004.05.015"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/286936.286953"},{"key":"e_1_2_1_15_1","volume-title":"Compaq Systems Research Center","author":"Leino K. R. M.","year":"2000","unstructured":"Leino , K. R. M. , Nelson , G. , and Saxe , J. B . ESC\/Java User's Manual, Technical Note 2000-002 , Compaq Systems Research Center , October 2000 .]] Leino, K. R. M., Nelson, G., and Saxe, J. B. ESC\/Java User's Manual, Technical Note 2000-002, Compaq Systems Research Center, October 2000.]]"},{"key":"e_1_2_1_16_1","unstructured":"Meyers S. More Effective C++. Addison-Wesley 1995.]]  Meyers S. More Effective C++. Addison-Wesley 1995.]]"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/381694.378851"},{"key":"e_1_2_1_18_1","volume-title":"Foundations of Component-Based Systems","author":"M\u00fcller P.","year":"2000","unstructured":"M\u00fcller , P. and Poetzsch-Heffter , A. Modular specification and verification techniques for object-oriented software components . In Foundations of Component-Based Systems , G. T. Leavens and M. Sitaraman, editors, Cambridge University Press , Cambridge, United Kingdom, 2000 .]] M\u00fcller, P. and Poetzsch-Heffter, A. Modular specification and verification techniques for object-oriented software components. In Foundations of Component-Based Systems, G. T. Leavens and M. Sitaraman, editors, Cambridge University Press, Cambridge, United Kingdom, 2000.]]"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.5555\/646155.679699"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.5555\/647851.737404"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/330908.331884"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/514188.514190"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/190679.199221"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01213496"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.5555\/645546.656050"},{"key":"e_1_2_1_26_1","volume-title":"Proceedings FSE Workshop on Specification and Verification of Component-Based Systems","author":"Sitaraman M.","year":"2004","unstructured":"Sitaraman , M. , Gandi , D. P. , Kuechlin , W. , Sinz , C. , and Weide , B. W . DEET for Component-Based Software , In Proceedings FSE Workshop on Specification and Verification of Component-Based Systems , October 2004 .]] Sitaraman, M., Gandi, D. P., Kuechlin, W., Sinz, C., and Weide, B. W. DEET for Component-Based Software, In Proceedings FSE Workshop on Specification and Verification of Component-Based Systems, October 2004.]]"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/237721.237727"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-36577-X_37"},{"key":"e_1_2_1_29_1","volume-title":"Proceedings OOPSLA Workshop on Specification and Verification of Component-Based Systems","author":"Weide B. W.","year":"2001","unstructured":"Weide , B. W. , and Heym , W. D . Specification and verification with references . In Proceedings OOPSLA Workshop on Specification and Verification of Component-Based Systems , October 2001 .]] Weide, B. W., and Heym, W. D. Specification and verification with references. In Proceedings OOPSLA Workshop on Specification and Verification of Component-Based Systems, October 2001.]]"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.5555\/647476.760384"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1109\/2.58215"}],"container-title":["ACM SIGSOFT Software Engineering Notes"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1118537.1123066","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1118537.1123066","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T16:08:18Z","timestamp":1750262898000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1118537.1123066"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2005,9,5]]},"references-count":28,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2006,3]]}},"alternative-id":["10.1145\/1118537.1123066"],"URL":"https:\/\/doi.org\/10.1145\/1118537.1123066","relation":{"is-identical-to":[{"id-type":"doi","id":"10.1145\/1123058.1123066","asserted-by":"subject"}]},"ISSN":["0163-5948"],"issn-type":[{"type":"print","value":"0163-5948"}],"subject":[],"published":{"date-parts":[[2005,9,5]]},"assertion":[{"value":"2005-09-05","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}