{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,11]],"date-time":"2026-04-11T00:43:39Z","timestamp":1775868219772,"version":"3.50.1"},"reference-count":38,"publisher":"Association for Computing Machinery (ACM)","issue":"POPL","license":[{"start":{"date-parts":[[2019,12,20]],"date-time":"2019-12-20T00:00:00Z","timestamp":1576800000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100000181","name":"Air Force Office of Scientific Research","doi-asserted-by":"publisher","award":["FA9550-16-1-0292"],"award-info":[{"award-number":["FA9550-16-1-0292"]}],"id":[{"id":"10.13039\/100000181","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["1618203"],"award-info":[{"award-number":["1618203"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2020,1]]},"abstract":"<jats:p>The main way of analysing the complexity of a program is that of extracting and solving a recurrence that expresses its running time in terms of the size of its input. We develop a method that automatically extracts such recurrences from the syntax of higher-order recursive functional programs. The resulting recurrences, which are programs in a call-by-name language with recursion, explicitly compute the running time in terms of the size of the input. In order to achieve this in a uniform way that covers both call-by-name and call-by-value evaluation strategies, we use Call-by-Push-Value (CBPV) as an intermediate language. Finally, we use domain theory to develop a denotational cost semantics for the resulting recurrences.<\/jats:p>","DOI":"10.1145\/3371083","type":"journal-article","created":{"date-parts":[[2019,12,20]],"date-time":"2019-12-20T19:45:25Z","timestamp":1576871125000},"page":"1-31","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":20,"title":["Recurrence extraction for functional programs through call-by-push-value"],"prefix":"10.1145","volume":"4","author":[{"given":"G. A.","family":"Kavvos","sequence":"first","affiliation":[{"name":"Wesleyan University, USA"}]},{"given":"Edward","family":"Morehouse","sequence":"additional","affiliation":[{"name":"Wesleyan University, USA"}]},{"given":"Daniel R.","family":"Licata","sequence":"additional","affiliation":[{"name":"Wesleyan University, USA"}]},{"given":"Norman","family":"Danner","sequence":"additional","affiliation":[{"name":"Wesleyan University, USA"}]}],"member":"320","published-online":{"date-parts":[[2019,12,20]]},"reference":[{"key":"e_1_2_1_1_1","volume-title":"Research Topics in Functional Programming","author":"Abramsky Samson"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1006\/inco.2000.2930"},{"key":"e_1_2_1_3_1","volume-title":"Handbook of Logic in Computer Science, Samson Abramsky, Dov M","author":"Abramsky Samson"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.tcs.2011.07.009"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/3274278"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/2499937.2499943"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/3110287"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/2784731.2784753"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.tcs.2003.10.022"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9781316092415"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/224164.224210"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/1328438.1328457"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/2784731.2784749"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2428116.2428123"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.2168\/LMCS-3(1:9)2007"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/258948.258973"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.ic.2008.12.003"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9780511526565"},{"key":"e_1_2_1_19_1","volume-title":"Semantics of Programming Languages: Structures and Techniques","author":"Gunter Carl A."},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/3009837.3009842"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/195613.195632"},{"key":"e_1_2_1_22_1","volume-title":"Cost Semantics for Plotkin\u2019s PCF. Master\u2019s Thesis","author":"Kim Theodore Seok"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/3158142"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-94-007-0954-6"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10990-006-0480-6"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1016\/0304-3975(77)90053-6"},{"key":"e_1_2_1_27_1","volume-title":"Foundations for programming languages","author":"Mitchell John C."},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.29007\/xkwx"},{"key":"e_1_2_1_29_1","volume-title":"Types and Programming Languages","author":"Pierce Benjamin C."},{"key":"e_1_2_1_31_1","doi-asserted-by":"crossref","volume-title":"Semantics and Logics of Computation","author":"Pitts A. M.","DOI":"10.1017\/CBO9780511526619"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-45315-6_1"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1016\/0304-3975(77)90044-5"},{"key":"e_1_2_1_34_1","volume-title":"Lectures on predomains and partial functions. Notes for a course given at CSLI","author":"Plotkin G. D."},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0960129500000293"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9781139166386"},{"key":"e_1_2_1_37_1","doi-asserted-by":"crossref","unstructured":"Thomas Streicher. 2006. Domain-theoretic Foundations of Functional Programming. World Scientific.  Thomas Streicher. 2006. Domain-theoretic Foundations of Functional Programming. World Scientific.","DOI":"10.1142\/6284"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1137\/0606031"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/361002.361016"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3371083","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3371083","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3371083","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T19:05:43Z","timestamp":1750273543000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3371083"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,12,20]]},"references-count":38,"journal-issue":{"issue":"POPL","published-print":{"date-parts":[[2020,1]]}},"alternative-id":["10.1145\/3371083"],"URL":"https:\/\/doi.org\/10.1145\/3371083","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2019,12,20]]},"assertion":[{"value":"2019-12-20","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}