{"id":"https://openalex.org/W2565399133","doi":"https://doi.org/10.1145/3009837.3009874","title":"Contract-based resource verification for higher-order functions with memoization","display_name":"Contract-based resource verification for higher-order functions with memoization","publication_year":2016,"publication_date":"2016-12-22","ids":{"openalex":"https://openalex.org/W2565399133","doi":"https://doi.org/10.1145/3009837.3009874","mag":"2565399133"},"language":"en","primary_location":{"id":"doi:10.1145/3009837.3009874","is_oa":false,"landing_page_url":"https://doi.org/10.1145/3009837.3009874","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages","raw_type":"proceedings-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"green","oa_url":"http://infoscience.epfl.ch/record/229847","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5004372652","display_name":"Ravichandhran Madhavan","orcid":"https://orcid.org/0000-0003-0227-266X"},"institutions":[{"id":"https://openalex.org/I5124864","display_name":"\u00c9cole Polytechnique F\u00e9d\u00e9rale de Lausanne","ror":"https://ror.org/02s376052","country_code":"CH","type":"education","lineage":["https://openalex.org/I2799323385","https://openalex.org/I5124864"]}],"countries":["CH"],"is_corresponding":true,"raw_author_name":"Ravichandhran Madhavan","raw_affiliation_strings":["EPFL, Switzerland"],"affiliations":[{"raw_affiliation_string":"EPFL, Switzerland","institution_ids":["https://openalex.org/I5124864"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5072997227","display_name":"Sumith Kulal","orcid":null},"institutions":[{"id":"https://openalex.org/I162827531","display_name":"Indian Institute of Technology Bombay","ror":"https://ror.org/02qyf5152","country_code":"IN","type":"education","lineage":["https://openalex.org/I162827531"]}],"countries":["IN"],"is_corresponding":false,"raw_author_name":"Sumith Kulal","raw_affiliation_strings":["IIT Bombay, India"],"affiliations":[{"raw_affiliation_string":"IIT Bombay, India","institution_ids":["https://openalex.org/I162827531"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5008699657","display_name":"Viktor Kun\u010dak","orcid":"https://orcid.org/0000-0001-7044-9522"},"institutions":[{"id":"https://openalex.org/I5124864","display_name":"\u00c9cole Polytechnique F\u00e9d\u00e9rale de Lausanne","ror":"https://ror.org/02s376052","country_code":"CH","type":"education","lineage":["https://openalex.org/I2799323385","https://openalex.org/I5124864"]}],"countries":["CH"],"is_corresponding":false,"raw_author_name":"Viktor Kuncak","raw_affiliation_strings":["EPFL, Switzerland"],"affiliations":[{"raw_affiliation_string":"EPFL, Switzerland","institution_ids":["https://openalex.org/I5124864"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":3,"corresponding_author_ids":["https://openalex.org/A5004372652"],"corresponding_institution_ids":["https://openalex.org/I5124864"],"apc_list":null,"apc_paid":null,"fwci":3.9755,"has_fulltext":false,"cited_by_count":19,"citation_normalized_percentile":{"value":0.94636318,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":90,"max":98},"biblio":{"volume":null,"issue":null,"first_page":"330","last_page":"343"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9993000030517578,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9993000030517578,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10772","display_name":"Distributed systems and fault tolerance","score":0.9983999729156494,"subfield":{"id":"https://openalex.org/subfields/1705","display_name":"Computer Networks and Communications"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10142","display_name":"Formal Methods in Verification","score":0.9983000159263611,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/memoization","display_name":"Memoization","score":0.8762922286987305},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8643878698348999},{"id":"https://openalex.org/keywords/heap","display_name":"Heap (data structure)","score":0.6847426295280457},{"id":"https://openalex.org/keywords/bytecode","display_name":"Bytecode","score":0.6837113499641418},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.5444977283477783},{"id":"https://openalex.org/keywords/data-structure","display_name":"Data structure","score":0.5073332190513611},{"id":"https://openalex.org/keywords/toolchain","display_name":"Toolchain","score":0.48174241185188293},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.4698309600353241},{"id":"https://openalex.org/keywords/algorithm","display_name":"Algorithm","score":0.41288936138153076},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.40242743492126465},{"id":"https://openalex.org/keywords/java","display_name":"Java","score":0.2634319067001343},{"id":"https://openalex.org/keywords/parsing","display_name":"Parsing","score":0.10435503721237183}],"concepts":[{"id":"https://openalex.org/C79516417","wikidata":"https://www.wikidata.org/wiki/Q1376168","display_name":"Memoization","level":4,"score":0.8762922286987305},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8643878698348999},{"id":"https://openalex.org/C134757568","wikidata":"https://www.wikidata.org/wiki/Q274089","display_name":"Heap (data structure)","level":2,"score":0.6847426295280457},{"id":"https://openalex.org/C2779818221","wikidata":"https://www.wikidata.org/wiki/Q837330","display_name":"Bytecode","level":3,"score":0.6837113499641418},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.5444977283477783},{"id":"https://openalex.org/C162319229","wikidata":"https://www.wikidata.org/wiki/Q175263","display_name":"Data structure","level":2,"score":0.5073332190513611},{"id":"https://openalex.org/C2777062904","wikidata":"https://www.wikidata.org/wiki/Q545406","display_name":"Toolchain","level":3,"score":0.48174241185188293},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.4698309600353241},{"id":"https://openalex.org/C11413529","wikidata":"https://www.wikidata.org/wiki/Q8366","display_name":"Algorithm","level":1,"score":0.41288936138153076},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.40242743492126465},{"id":"https://openalex.org/C548217200","wikidata":"https://www.wikidata.org/wiki/Q251","display_name":"Java","level":2,"score":0.2634319067001343},{"id":"https://openalex.org/C186644900","wikidata":"https://www.wikidata.org/wiki/Q194152","display_name":"Parsing","level":2,"score":0.10435503721237183},{"id":"https://openalex.org/C42560504","wikidata":"https://www.wikidata.org/wiki/Q15419395","display_name":"Top-down parsing","level":3,"score":0.0},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.0}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1145/3009837.3009874","is_oa":false,"landing_page_url":"https://doi.org/10.1145/3009837.3009874","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages","raw_type":"proceedings-article"},{"id":"pmh:oai:infoscience.epfl.ch:229847","is_oa":true,"landing_page_url":"http://infoscience.epfl.ch/record/229847","pdf_url":null,"source":{"id":"https://openalex.org/S4306400487","display_name":"Infoscience (Ecole Polytechnique F\u00e9d\u00e9rale de Lausanne)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":"Text"}],"best_oa_location":{"id":"pmh:oai:infoscience.epfl.ch:229847","is_oa":true,"landing_page_url":"http://infoscience.epfl.ch/record/229847","pdf_url":null,"source":{"id":"https://openalex.org/S4306400487","display_name":"Infoscience (Ecole Polytechnique F\u00e9d\u00e9rale de Lausanne)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":"Text"},"sustainable_development_goals":[{"score":0.4399999976158142,"id":"https://metadata.un.org/sdg/8","display_name":"Decent work and economic growth"}],"awards":[{"id":"https://openalex.org/G4247904154","display_name":null,"funder_award_id":"European Research Council","funder_id":"https://openalex.org/F4320320924","funder_display_name":"Schweizerischer Nationalfonds zur F\u00f6rderung der Wissenschaftlichen Forschung"}],"funders":[{"id":"https://openalex.org/F4320306076","display_name":"National Science Foundation","ror":"https://ror.org/021nxhr62"},{"id":"https://openalex.org/F4320320924","display_name":"Schweizerischer Nationalfonds zur F\u00f6rderung der Wissenschaftlichen Forschung","ror":"https://ror.org/00yjd3n13"},{"id":"https://openalex.org/F4320334678","display_name":"European Research Council","ror":"https://ror.org/0472cxd90"}],"has_content":{"grobid_xml":false,"pdf":false},"content_urls":null,"referenced_works_count":89,"referenced_works":["https://openalex.org/W17381159","https://openalex.org/W30585784","https://openalex.org/W100631053","https://openalex.org/W110849379","https://openalex.org/W115593648","https://openalex.org/W117718117","https://openalex.org/W205696660","https://openalex.org/W800636375","https://openalex.org/W967948971","https://openalex.org/W1500138362","https://openalex.org/W1507693023","https://openalex.org/W1515621470","https://openalex.org/W1520962304","https://openalex.org/W1521372188","https://openalex.org/W1523037784","https://openalex.org/W1539550612","https://openalex.org/W1553511155","https://openalex.org/W1563374593","https://openalex.org/W1565541828","https://openalex.org/W1567423028","https://openalex.org/W1597068544","https://openalex.org/W1636902686","https://openalex.org/W1856554806","https://openalex.org/W1963833875","https://openalex.org/W1971135355","https://openalex.org/W1982495075","https://openalex.org/W1982529770","https://openalex.org/W1986804682","https://openalex.org/W1991133427","https://openalex.org/W2004843654","https://openalex.org/W2020692742","https://openalex.org/W2023035194","https://openalex.org/W2025581658","https://openalex.org/W2045900383","https://openalex.org/W2053154567","https://openalex.org/W2059703978","https://openalex.org/W2060213695","https://openalex.org/W2063019130","https://openalex.org/W2071542068","https://openalex.org/W2076285066","https://openalex.org/W2080841971","https://openalex.org/W2081841061","https://openalex.org/W2090759054","https://openalex.org/W2091723900","https://openalex.org/W2094712524","https://openalex.org/W2098959411","https://openalex.org/W2099473324","https://openalex.org/W2105045857","https://openalex.org/W2106192381","https://openalex.org/W2109863363","https://openalex.org/W2112969535","https://openalex.org/W2120172501","https://openalex.org/W2120541519","https://openalex.org/W2126001891","https://openalex.org/W2127114597","https://openalex.org/W2128303158","https://openalex.org/W2130427425","https://openalex.org/W2135155734","https://openalex.org/W2140825882","https://openalex.org/W2141505892","https://openalex.org/W2144160229","https://openalex.org/W2144538202","https://openalex.org/W2145619371","https://openalex.org/W2147650421","https://openalex.org/W2147890340","https://openalex.org/W2153036969","https://openalex.org/W2159373783","https://openalex.org/W2169417140","https://openalex.org/W2170577595","https://openalex.org/W2183062003","https://openalex.org/W2183882274","https://openalex.org/W2294370068","https://openalex.org/W2397043727","https://openalex.org/W2461846980","https://openalex.org/W2581110492","https://openalex.org/W2581716308","https://openalex.org/W2752885492","https://openalex.org/W3004540582","https://openalex.org/W3099703838","https://openalex.org/W4246191294","https://openalex.org/W4246219036","https://openalex.org/W4256174789","https://openalex.org/W4301884499","https://openalex.org/W6600711759","https://openalex.org/W6625558578","https://openalex.org/W6631417461","https://openalex.org/W6635592456","https://openalex.org/W6675806528","https://openalex.org/W6828535928"],"related_works":["https://openalex.org/W2955447707","https://openalex.org/W2102498373","https://openalex.org/W2162389432","https://openalex.org/W1515011840","https://openalex.org/W1816055196","https://openalex.org/W2006990447","https://openalex.org/W2997862363","https://openalex.org/W4287324493","https://openalex.org/W3131543016","https://openalex.org/W3162171516"],"abstract_inverted_index":{"We":[0,128],"present":[1],"a":[2],"new":[3],"approach":[4,71,131],"for":[5,58,121,246],"specifying":[6],"and":[7,19,89,100,103,142,152,170,211,243],"verifying":[8,105],"resource":[9,29,225],"utilization":[10],"of":[11,50,68,92,108,116,144,157,160,178,196,229,240,249],"higher-order":[12,86],"functional":[13,161],"programs":[14],"that":[15,62,82,174,216],"use":[16,129],"lazy":[17,165,183],"evaluation":[18,140,241],"memoization.":[20,69],"In":[21],"our":[22,130,234],"approach,":[23],"users":[24],"can":[25,53],"specify":[26],"the":[27,48,60,66,85,90,106,109,117,192,222,230,238,247],"desired":[28],"bound":[30],"as":[31,37,139,191,202,204,209],"templates":[32],"with":[33],"numerical":[34,188],"holes":[35],"e.g.":[36],"steps":[38,141],"&lt;=":[39],"?":[40,46],"not":[41],"asymptotic":[42],"to":[43,132,180],"size(l)":[44],"+":[45],"in":[47,73],"contracts":[49,107],"functions.":[51],"They":[52],"also":[54],"express":[55],"invariants":[56],"necessary":[57],"establishing":[59],"bounds":[61,135],"may":[63],"depend":[64],"on":[65,94,136,147,176,187],"state":[67],"Our":[70,154,213],"operates":[72],"two":[74],"phases:":[75],"first":[76],"generating":[77],"an":[78,124],"instrumented":[79],"first-order":[80,110],"program":[81,111],"accurately":[83],"models":[84],"control":[87],"flow":[88],"effects":[91],"memoization":[93],"resources":[95,137],"using":[96,123],"sets,":[97],"algebraic":[98],"datatypes":[99],"mutual":[101],"recursion,":[102],"then":[104],"by":[112,233],"producing":[113],"verification":[114],"conditions":[115],"form":[118],"there":[119],"exists":[120],"all":[122,220],"extended":[125],"assume/guarantee":[126],"reasoning.":[127],"verify":[133],"precise":[134],"such":[138,190,208],"number":[143,239,248],"heap-allocated":[145,250],"objects":[146],"17":[148],"challenging":[149],"data":[150,172,184,194],"structures":[151,173,185],"algorithms.":[153],"benchmarks,":[155],"comprising":[156],"5K":[158],"lines":[159],"Scala":[162],"code,":[163],"include":[164],"mergesort,":[166],"Okasaki's":[167],"real-time":[168],"queue":[169],"deque":[171],"rely":[175],"aliasing":[177],"references":[179],"first-class":[181],"functions;":[182],"based":[186],"representations":[189],"conqueue":[193],"structure":[195],"Scala's":[197],"data-parallel":[198],"library,":[199],"cyclic":[200],"streams,":[201],"well":[203],"dynamic":[205],"programming":[206],"algorithms":[207],"knapsack":[210],"Viterbi.":[212],"evaluations":[214],"show":[215],"when":[217,236],"averaged":[218],"over":[219],"benchmarks":[221],"actual":[223],"runtime":[224],"consumption":[226],"is":[227,244],"80%":[228],"value":[231],"inferred":[232],"tool":[235],"estimating":[237],"steps,":[242],"88%":[245],"objects.":[251]},"counts_by_year":[{"year":2025,"cited_by_count":1},{"year":2024,"cited_by_count":1},{"year":2023,"cited_by_count":1},{"year":2021,"cited_by_count":3},{"year":2020,"cited_by_count":3},{"year":2019,"cited_by_count":3},{"year":2018,"cited_by_count":2},{"year":2017,"cited_by_count":4},{"year":2015,"cited_by_count":1}],"updated_date":"2026-04-21T08:09:41.155169","created_date":"2025-10-10T00:00:00"}
