{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,5,14]],"date-time":"2024-05-14T00:07:42Z","timestamp":1715645262548},"reference-count":19,"publisher":"Cambridge University Press (CUP)","issue":"4-5","license":[{"start":{"date-parts":[[2013,9,25]],"date-time":"2013-09-25T00:00:00Z","timestamp":1380067200000},"content-version":"unspecified","delay-in-days":86,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Theory and Practice of Logic Programming"],"published-print":{"date-parts":[[2013,7]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>One of the main challenges to software testing today is to efficiently handle heap-manipulating programs. These programs often build complex, dynamically allocated data structures during execution and, to ensure reliability, the testing process needs to consider all possible shapes these data structures can take. This creates scalability issues since high (often exponential) numbers of shapes may be built due to the <jats:italic>aliasing<\/jats:italic> of references. This paper presents a novel <jats:italic>CLP heap solver<\/jats:italic> for the test case generation of heap-manipulating programs that is more scalable than previous proposals, thanks to the treatment of reference aliasing by means of <jats:italic>disjunction<\/jats:italic>, and to the use of advanced <jats:italic>back-propagation<\/jats:italic> of heap related constraints. In addition, the heap solver supports the use of <jats:italic>heap assumptions<\/jats:italic> to avoid aliasing of data that, though legal, should not be provided as input.<\/jats:p>","DOI":"10.1017\/s1471068413000458","type":"journal-article","created":{"date-parts":[[2013,9,25]],"date-time":"2013-09-25T16:24:58Z","timestamp":1380126298000},"page":"721-735","source":"Crossref","is-referenced-by-count":3,"title":["A CLP heap solver for test case generation"],"prefix":"10.1017","volume":"13","author":[{"given":"ELVIRA","family":"ALBERT","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"MAR\u00cdA GARC\u00cdA","family":"DE LA BANDA","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"MIGUEL","family":"G\u00d3MEZ-ZAMALLOA","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"JOS\u00c9 MIGUEL","family":"ROJAS","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"PETER","family":"STUCKEY","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"56","published-online":{"date-parts":[[2013,9,25]]},"reference":[{"key":"S1471068413000458_ref19","unstructured":"Wielemaker J. 2010. The SWI-Prolog User's Manual 5.9.9. URL: http:\/\/www.swiprolog.org."},{"key":"S1471068413000458_ref18","doi-asserted-by":"publisher","DOI":"10.1145\/1007512.1007526"},{"key":"S1471068413000458_ref17","first-page":"134","volume-title":"TAP'08","author":"Tillmann","year":"2008"},{"key":"S1471068413000458_ref15","doi-asserted-by":"publisher","DOI":"10.1145\/1858996.1859035"},{"key":"S1471068413000458_ref14","first-page":"314","volume-title":"CAV'08","author":"Podelski","year":"2008"},{"key":"S1471068413000458_ref10","doi-asserted-by":"publisher","DOI":"10.1002\/stvr.225"},{"key":"S1471068413000458_ref9","doi-asserted-by":"publisher","DOI":"10.1145\/360248.360252"},{"key":"S1471068413000458_ref7","first-page":"399","volume-title":"CL'00","author":"Gotlieb","year":"2000"},{"key":"S1471068413000458_ref6","unstructured":"Goodrich M. , Tamassia R. and Zamore R. 2003. The net.datastructures Package, version 3. URL: http:\/\/net3.datastructures.net."},{"key":"S1471068413000458_ref4","doi-asserted-by":"publisher","DOI":"10.1016\/j.infsof.2009.04.010"},{"key":"S1471068413000458_ref11","first-page":"365","volume-title":"IASTEDSE'04","author":"M\u00fcller","year":"2004"},{"key":"S1471068413000458_ref3","first-page":"128","volume-title":"LOPSTR'09","author":"Degrave","year":"2010"},{"key":"S1471068413000458_ref5","doi-asserted-by":"publisher","DOI":"10.1017\/S1471068410000347"},{"key":"S1471068413000458_ref13","first-page":"298","volume-title":"NFM'11","author":"Peleska","year":"2011"},{"key":"S1471068413000458_ref2","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2009.06.029"},{"key":"S1471068413000458_ref8","first-page":"553","volume-title":"TACAS'03","author":"Khurshid","year":"2003"},{"key":"S1471068413000458_ref12","doi-asserted-by":"publisher","DOI":"10.1016\/S0164-1212(99)00066-7"},{"key":"S1471068413000458_ref16","doi-asserted-by":"publisher","DOI":"10.1007\/s10009-009-0118-1"},{"key":"S1471068413000458_ref1","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9780511809163"}],"container-title":["Theory and Practice of Logic Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S1471068413000458","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,5,13]],"date-time":"2024-05-13T09:28:59Z","timestamp":1715592539000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S1471068413000458\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2013,7]]},"references-count":19,"journal-issue":{"issue":"4-5","published-print":{"date-parts":[[2013,7]]}},"alternative-id":["S1471068413000458"],"URL":"https:\/\/doi.org\/10.1017\/s1471068413000458","relation":{},"ISSN":["1471-0684","1475-3081"],"issn-type":[{"value":"1471-0684","type":"print"},{"value":"1475-3081","type":"electronic"}],"subject":[],"published":{"date-parts":[[2013,7]]}}}