{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,1,13]],"date-time":"2025-01-13T18:40:16Z","timestamp":1736793616760,"version":"3.33.0"},"reference-count":57,"publisher":"Cambridge University Press (CUP)","issue":"1-2","license":[{"start":{"date-parts":[[2007,1,1]],"date-time":"2007-01-01T00:00:00Z","timestamp":1167609600000},"content-version":"unspecified","delay-in-days":0,"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":[[2007,1]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Program slicing has been mainly studied in the context of imperative languages, where it has been applied to a wide variety of software engineering tasks, like program understanding, maintenance, debugging, testing, code reuse, etc. This work introduces the first forward slicing technique for declarative multi-paradigm programs which integrate features from functional and logic programming. Basically, given a program and a<jats:italic>slicing criterion<\/jats:italic>(a function call in our setting), the computed forward slice contains those parts of the original program which are<jats:italic>reachable<\/jats:italic>from the slicing criterion. Our approach to program slicing is based on an extension of (online) partial evaluation. Therefore, it provides a simple way to develop program slicing tools from existing partial evaluators and helps to clarify the relation between both methodologies. A slicing tool for the multi-paradigm language Curry, which demonstrates the usefulness of our approach, has been implemented in Curry itself.<\/jats:p>","DOI":"10.1017\/s1471068406002870","type":"journal-article","created":{"date-parts":[[2007,2,9]],"date-time":"2007-02-09T12:38:10Z","timestamp":1171024690000},"page":"215-247","source":"Crossref","is-referenced-by-count":1,"title":["Forward slicing of functional logic programs by partial evaluation"],"prefix":"10.1017","volume":"7","author":[{"given":"JOSEP","family":"SILVA","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"GERM\u00c1N","family":"VIDAL","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"56","published-online":{"date-parts":[[2007,1,1]]},"reference":[{"key":"S1471068406002870_N108E5","first-page":"672","volume-title":"Proc. of IEEE Int'l Conf. on Software Maintenance (ICSM'01)","author":"Zhao","year":"2001"},{"key":"S1471068406002870_N108BF","doi-asserted-by":"publisher","DOI":"10.1016\/S0950-5849(98)00029-9"},{"key":"S1471068406002870_N10891","unstructured":"Weiser M. 1979. Program Slices: Formal, Psychological, and Practical Investigations of an Automatic Program Abstraction Method. Ph.D. thesis, The University of Michigan."},{"key":"S1471068406002870_N1084D","doi-asserted-by":"publisher","DOI":"10.1145\/5956.5957"},{"key":"S1471068406002870_N1081B","doi-asserted-by":"publisher","DOI":"10.1145\/236338.236355"},{"volume-title":"Term Rewriting Systems","year":"2003","key":"S1471068406002870_N107ED"},{"key":"S1471068406002870_N1078C","unstructured":"Silva J. and Vidal G. 2006. Forward Slicing of Functional Logic Programs by Partial Evaluation. Computing Research Repository (CoRR) at http:\/\/arXiv.org\/abs\/cs.PL\/0601013\/."},{"key":"S1471068406002870_N10775","doi-asserted-by":"crossref","DOI":"10.7551\/mitpress\/1192.001.0001","volume-title":"Algorithmic Program Debugging","author":"Shapiro","year":"1983"},{"key":"S1471068406002870_N107A4","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796800002008"},{"key":"S1471068406002870_N10732","first-page":"317","volume-title":"Proc. of the Int'l Static Analysis Symposium (SAS'96)","author":"Schoenig","year":"1996"},{"key":"S1471068406002870_N106F8","doi-asserted-by":"crossref","first-page":"409","DOI":"10.1007\/3-540-61580-6_20","volume-title":"Partial Evaluation. Dagstuhl Castle, Germany, February 1996","author":"Reps","year":"1996"},{"key":"S1471068406002870_N106A9","doi-asserted-by":"publisher","DOI":"10.1016\/0743-1066(92)90024-W"},{"key":"S1471068406002870_N10686","first-page":"244","volume-title":"Proc. of RTA'99","author":"L\u00f3pez-Fraguas","year":"1999"},{"key":"S1471068406002870_N10620","first-page":"61","volume-title":"Proc. of the European Symposium on Programming (ESOP 2005)","author":"Leuschel","year":"2005"},{"key":"S1471068406002870_N105FD","first-page":"83","volume-title":"Proc. of the Int'l Workshop on Logic-Based Program Synthesis and Transformation (LOPSTR'96)","author":"Leuschel","year":"1996"},{"key":"S1471068406002870_N105E0","first-page":"379","volume-title":"The Essence of Computation, Complexity, Analysis, Transformation. Essays Dedicated to Neil D. Jones","author":"Leuschel","year":"2002"},{"key":"S1471068406002870_N1058B","first-page":"207","volume-title":"Proc. of the 8th Symp. on the Principles of Programming Languages (POPL'81), SIGPLAN Notices","author":"Kuck","year":"1981"},{"key":"S1471068406002870_N10557","first-page":"1","volume-title":"Handbook of Logic in Computer Science","author":"Klop","year":"1992"},{"key":"S1471068406002870_N10504","first-page":"395","volume-title":"Computational Logic \u2013 Essays in Honor of Alan Robinson","author":"Huet","year":"1992"},{"key":"S1471068406002870_N10643","first-page":"43","volume-title":"Proc. of the International Logic Programming Symposium","author":"Lloyd","year":"1994"},{"key":"S1471068406002870_N104BB","doi-asserted-by":"publisher","DOI":"10.1002\/swf.41"},{"volume-title":"Proc. of the 1st UK Program Comprehension Workshop","year":"1995","author":"Harman","key":"S1471068406002870_N1049B"},{"volume-title":"Proc. of the 5th Int'l Workshop on Program Comprehension","year":"1997","author":"Harman","key":"S1471068406002870_N1047E"},{"key":"S1471068406002870_N10458","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796899003330"},{"key":"S1471068406002870_N1040E","unstructured":"Hanus M. 2003. Curry: An Integrated Functional Logic Language. Available at: http:\/\/www.informatik.uni-kiel.de\/mh\/curry\/."},{"key":"S1471068406002870_N103D1","doi-asserted-by":"publisher","DOI":"10.1016\/0743-1066(94)90034-5"},{"key":"S1471068406002870_N103B4","doi-asserted-by":"crossref","first-page":"103","DOI":"10.1145\/871895.871907","volume-title":"Proc. of the 2003 ACM SIGPLAN Haskell Workshop","author":"Hallgren","year":"2003"},{"key":"S1471068406002870_N10357","first-page":"137","volume-title":"Partial Evaluation, Int'l Seminar, Dagstuhl Castle, Germany","author":"Gl\u00fcck","year":"1996"},{"key":"S1471068406002870_N10328","doi-asserted-by":"publisher","DOI":"10.1016\/0022-0000(91)90009-T"},{"key":"S1471068406002870_N102E2","doi-asserted-by":"publisher","DOI":"10.1016\/S0950-5849(98)00087-1"},{"key":"S1471068406002870_N102B6","doi-asserted-by":"publisher","DOI":"10.1145\/24039.24041"},{"key":"S1471068406002870_N10299","first-page":"239","volume-title":"In Draft Proc. of the 16th Int'l Workshop on Implementation of Functional Languages (IFL 2004)","author":"Chitil","year":"2004"},{"key":"S1471068406002870_N1026A","first-page":"179","volume-title":"Proc. of the 6th ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP'04)","author":"Brassel","year":"2004"},{"key":"S1471068406002870_N1024A","doi-asserted-by":"publisher","DOI":"10.1145\/289121.289138"},{"key":"S1471068406002870_N1023C","unstructured":"Biswas S. 1997. Dynamic Slicing in Higher-Order Programming Languages. Ph.D. thesis, University of Pennsylvania."},{"key":"S1471068406002870_N101F6","doi-asserted-by":"publisher","DOI":"10.1145\/347476.347484"},{"key":"S1471068406002870_N101AD","doi-asserted-by":"publisher","DOI":"10.1145\/291891.291896"},{"key":"S1471068406002870_N100FD","doi-asserted-by":"publisher","DOI":"10.1016\/j.jsc.2004.01.001"},{"key":"S1471068406002870_N1065D","first-page":"184","volume-title":"Proc. of PLILP'93","author":"Loogen","year":"1993"},{"key":"S1471068406002870_N107FE","first-page":"121","article-title":"A Survey of Program Slicing Techniques","volume":"3","author":"Tip","year":"1995","journal-title":"Journal of Programming Languages"},{"volume-title":"Partial Evaluation and Automatic Program Generation","year":"1993","author":"Jones","key":"S1471068406002870_N10534"},{"key":"S1471068406002870_N10420","unstructured":"Hanus M. , Antoy S. , Engelke M. , H\u00f6ppner K. , Koj J. , Niederau P. , Sadre R. and Steiner F. 2004. PAKCS 1.6.0: The Portland Aachen Kiel Curry System User Manual. Tech. rep., University of Kiel, Germany."},{"key":"S1471068406002870_N101D9","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0013825"},{"key":"S1471068406002870_N10755","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796897002712"},{"key":"S1471068406002870_N107D0","first-page":"264","volume-title":"Proc. of the 7th Int'l Conf. on Compiler Construction (CC'98)","author":"Steindl","year":"1998"},{"key":"S1471068406002870_N10187","doi-asserted-by":"publisher","DOI":"10.1007\/BF03037257"},{"key":"S1471068406002870_N106CF","doi-asserted-by":"publisher","DOI":"10.1145\/1014007.1014020"},{"key":"S1471068406002870_N1015B","doi-asserted-by":"publisher","DOI":"10.1016\/S0020-0190(02)00336-8"},{"key":"S1471068406002870_N10222","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9781139172752"},{"key":"S1471068406002870_N10391","first-page":"87","volume-title":"Proc. of the 2nd Int'l Workshop on Automated and Algorithmic Debugging (AADEBUG'95)","author":"Gyim\u00f3thy","year":"1995"},{"key":"S1471068406002870_N1086D","doi-asserted-by":"publisher","DOI":"10.1145\/113446.113455"},{"key":"S1471068406002870_N1089F","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1984.5010248"},{"key":"S1471068406002870_N10135","article-title":"A Practical Partial Evaluation Scheme for Multi-Paradigm Declarative Languages","volume":"2002","author":"Albert","year":"2002","journal-title":"Journal of Functional and Logic Programming"},{"key":"S1471068406002870_N105BD","first-page":"495","volume-title":"Proc. of the 18th Int'l Conf. on Software engineering (ICSE'96)","author":"Larsen","year":"1996"},{"key":"S1471068406002870_N104E1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-44716-4_14"},{"key":"S1471068406002870_N10308","first-page":"88","volume-title":"Proc. of the ACM Symp. on Partial Evaluation and Seman-tics-Based Program Manipulation (PEPM'93)","author":"Gallagher","year":"1993"},{"key":"S1471068406002870_N103EE","first-page":"80","volume-title":"Proc. of ACM Symp. on Principles of Programming Languages (POPL'97)","author":"Hanus","year":"1997"}],"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\/S1471068406002870","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,1,13]],"date-time":"2025-01-13T18:23:52Z","timestamp":1736792632000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S1471068406002870\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2007,1]]},"references-count":57,"journal-issue":{"issue":"1-2","published-print":{"date-parts":[[2007,1]]}},"alternative-id":["S1471068406002870"],"URL":"https:\/\/doi.org\/10.1017\/s1471068406002870","relation":{},"ISSN":["1471-0684","1475-3081"],"issn-type":[{"type":"print","value":"1471-0684"},{"type":"electronic","value":"1475-3081"}],"subject":[],"published":{"date-parts":[[2007,1]]}}}