{"id":"https://openalex.org/W3193613247","doi":"https://doi.org/10.1145/3473579","title":"Deriving efficient program transformations from rewrite rules","display_name":"Deriving efficient program transformations from rewrite rules","publication_year":2021,"publication_date":"2021-08-19","ids":{"openalex":"https://openalex.org/W3193613247","doi":"https://doi.org/10.1145/3473579","mag":"3193613247"},"language":"en","primary_location":{"id":"doi:10.1145/3473579","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3473579","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3473579","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"diamond","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3473579","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5035957556","display_name":"John M. Li","orcid":"https://orcid.org/0000-0003-2130-5092"},"institutions":[{"id":"https://openalex.org/I20089843","display_name":"Princeton University","ror":"https://ror.org/00hx57361","country_code":"US","type":"education","lineage":["https://openalex.org/I20089843"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"John M. Li","raw_affiliation_strings":["Princeton University, USA"],"raw_orcid":"https://orcid.org/0000-0003-2130-5092","affiliations":[{"raw_affiliation_string":"Princeton University, USA","institution_ids":["https://openalex.org/I20089843"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5004766305","display_name":"Andrew W. Appel","orcid":"https://orcid.org/0000-0001-6009-0325"},"institutions":[{"id":"https://openalex.org/I20089843","display_name":"Princeton University","ror":"https://ror.org/00hx57361","country_code":"US","type":"education","lineage":["https://openalex.org/I20089843"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Andrew W. Appel","raw_affiliation_strings":["Princeton University, USA"],"raw_orcid":"https://orcid.org/0000-0001-6009-0325","affiliations":[{"raw_affiliation_string":"Princeton University, USA","institution_ids":["https://openalex.org/I20089843"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":2,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":0.4198,"has_fulltext":true,"cited_by_count":6,"citation_normalized_percentile":{"value":0.69515773,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":90,"max":97},"biblio":{"volume":"5","issue":"ICFP","first_page":"1","last_page":"29"},"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.9998000264167786,"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.9998000264167786,"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/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9994999766349792,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"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/T11424","display_name":"Security and Verification in Computing","score":0.9970999956130981,"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"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8568448424339294},{"id":"https://openalex.org/keywords/correctness","display_name":"Correctness","score":0.8126792311668396},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.7856229543685913},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.7064952850341797},{"id":"https://openalex.org/keywords/set","display_name":"Set (abstract data type)","score":0.6503850221633911},{"id":"https://openalex.org/keywords/transformation","display_name":"Transformation (genetics)","score":0.5993990302085876},{"id":"https://openalex.org/keywords/implementation","display_name":"Implementation","score":0.5520310401916504},{"id":"https://openalex.org/keywords/program-transformation","display_name":"Program transformation","score":0.5409866571426392},{"id":"https://openalex.org/keywords/program-optimization","display_name":"Program optimization","score":0.5231375098228455},{"id":"https://openalex.org/keywords/code","display_name":"Code (set theory)","score":0.4838889539241791},{"id":"https://openalex.org/keywords/variable","display_name":"Variable (mathematics)","score":0.47146302461624146},{"id":"https://openalex.org/keywords/optimizing-compiler","display_name":"Optimizing compiler","score":0.4611949920654297},{"id":"https://openalex.org/keywords/simple","display_name":"Simple (philosophy)","score":0.4539588987827301},{"id":"https://openalex.org/keywords/data-structure","display_name":"Data structure","score":0.43030422925949097},{"id":"https://openalex.org/keywords/dead-code-elimination","display_name":"Dead code elimination","score":0.41813576221466064},{"id":"https://openalex.org/keywords/program-analysis","display_name":"Program analysis","score":0.41175633668899536},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.39809995889663696},{"id":"https://openalex.org/keywords/parallel-computing","display_name":"Parallel computing","score":0.3675498068332672},{"id":"https://openalex.org/keywords/code-generation","display_name":"Code generation","score":0.28719156980514526},{"id":"https://openalex.org/keywords/object-code","display_name":"Object code","score":0.13235902786254883},{"id":"https://openalex.org/keywords/key","display_name":"Key (lock)","score":0.12823301553726196},{"id":"https://openalex.org/keywords/operating-system","display_name":"Operating system","score":0.1043197512626648}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8568448424339294},{"id":"https://openalex.org/C55439883","wikidata":"https://www.wikidata.org/wiki/Q360812","display_name":"Correctness","level":2,"score":0.8126792311668396},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.7856229543685913},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7064952850341797},{"id":"https://openalex.org/C177264268","wikidata":"https://www.wikidata.org/wiki/Q1514741","display_name":"Set (abstract data type)","level":2,"score":0.6503850221633911},{"id":"https://openalex.org/C204241405","wikidata":"https://www.wikidata.org/wiki/Q461499","display_name":"Transformation (genetics)","level":3,"score":0.5993990302085876},{"id":"https://openalex.org/C26713055","wikidata":"https://www.wikidata.org/wiki/Q245962","display_name":"Implementation","level":2,"score":0.5520310401916504},{"id":"https://openalex.org/C2778361913","wikidata":"https://www.wikidata.org/wiki/Q7248437","display_name":"Program transformation","level":2,"score":0.5409866571426392},{"id":"https://openalex.org/C139571649","wikidata":"https://www.wikidata.org/wiki/Q1156793","display_name":"Program optimization","level":3,"score":0.5231375098228455},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.4838889539241791},{"id":"https://openalex.org/C182365436","wikidata":"https://www.wikidata.org/wiki/Q50701","display_name":"Variable (mathematics)","level":2,"score":0.47146302461624146},{"id":"https://openalex.org/C190902152","wikidata":"https://www.wikidata.org/wiki/Q1325106","display_name":"Optimizing compiler","level":3,"score":0.4611949920654297},{"id":"https://openalex.org/C2780586882","wikidata":"https://www.wikidata.org/wiki/Q7520643","display_name":"Simple (philosophy)","level":2,"score":0.4539588987827301},{"id":"https://openalex.org/C162319229","wikidata":"https://www.wikidata.org/wiki/Q175263","display_name":"Data structure","level":2,"score":0.43030422925949097},{"id":"https://openalex.org/C2144512","wikidata":"https://www.wikidata.org/wiki/Q1143090","display_name":"Dead code elimination","level":5,"score":0.41813576221466064},{"id":"https://openalex.org/C98183937","wikidata":"https://www.wikidata.org/wiki/Q2112188","display_name":"Program analysis","level":2,"score":0.41175633668899536},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.39809995889663696},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.3675498068332672},{"id":"https://openalex.org/C133162039","wikidata":"https://www.wikidata.org/wiki/Q1061077","display_name":"Code generation","level":3,"score":0.28719156980514526},{"id":"https://openalex.org/C154526789","wikidata":"https://www.wikidata.org/wiki/Q157965","display_name":"Object code","level":4,"score":0.13235902786254883},{"id":"https://openalex.org/C26517878","wikidata":"https://www.wikidata.org/wiki/Q228039","display_name":"Key (lock)","level":2,"score":0.12823301553726196},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.1043197512626648},{"id":"https://openalex.org/C33923547","wikidata":"https://www.wikidata.org/wiki/Q395","display_name":"Mathematics","level":0,"score":0.0},{"id":"https://openalex.org/C55493867","wikidata":"https://www.wikidata.org/wiki/Q7094","display_name":"Biochemistry","level":1,"score":0.0},{"id":"https://openalex.org/C138885662","wikidata":"https://www.wikidata.org/wiki/Q5891","display_name":"Philosophy","level":0,"score":0.0},{"id":"https://openalex.org/C185592680","wikidata":"https://www.wikidata.org/wiki/Q2329","display_name":"Chemistry","level":0,"score":0.0},{"id":"https://openalex.org/C111472728","wikidata":"https://www.wikidata.org/wiki/Q9471","display_name":"Epistemology","level":1,"score":0.0},{"id":"https://openalex.org/C104317684","wikidata":"https://www.wikidata.org/wiki/Q7187","display_name":"Gene","level":2,"score":0.0},{"id":"https://openalex.org/C134306372","wikidata":"https://www.wikidata.org/wiki/Q7754","display_name":"Mathematical analysis","level":1,"score":0.0}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3473579","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3473579","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3473579","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"}],"best_oa_location":{"id":"doi:10.1145/3473579","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3473579","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3473579","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"sustainable_development_goals":[],"awards":[{"id":"https://openalex.org/G2111556843","display_name":null,"funder_award_id":"CCF-1521602 and CCF-2005545","funder_id":"https://openalex.org/F4320306076","funder_display_name":"National Science Foundation"},{"id":"https://openalex.org/G3010298206","display_name":"SHF: Small: VeriFFI -- Formally Verified Functional+C programs","funder_award_id":"2005545","funder_id":"https://openalex.org/F4320306076","funder_display_name":"National Science Foundation"},{"id":"https://openalex.org/G3767049597","display_name":null,"funder_award_id":"1521602","funder_id":"https://openalex.org/F4320306076","funder_display_name":"National Science Foundation"},{"id":"https://openalex.org/G8496718627","display_name":null,"funder_award_id":"CCF-1521602","funder_id":"https://openalex.org/F4320306076","funder_display_name":"National Science Foundation"}],"funders":[{"id":"https://openalex.org/F4320306076","display_name":"National Science Foundation","ror":"https://ror.org/021nxhr62"}],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W3193613247.pdf","grobid_xml":"https://content.openalex.org/works/W3193613247.grobid-xml"},"referenced_works_count":34,"referenced_works":["https://openalex.org/W1570978294","https://openalex.org/W1584951182","https://openalex.org/W1879332745","https://openalex.org/W1973060466","https://openalex.org/W1977140313","https://openalex.org/W1981104503","https://openalex.org/W1981830935","https://openalex.org/W1982205631","https://openalex.org/W2014472261","https://openalex.org/W2065748025","https://openalex.org/W2088056808","https://openalex.org/W2091921395","https://openalex.org/W2098456636","https://openalex.org/W2119664062","https://openalex.org/W2126126443","https://openalex.org/W2130363716","https://openalex.org/W2131627004","https://openalex.org/W2133979298","https://openalex.org/W2150815772","https://openalex.org/W2165594098","https://openalex.org/W2250270048","https://openalex.org/W2483146133","https://openalex.org/W2522630088","https://openalex.org/W2762872281","https://openalex.org/W2962809971","https://openalex.org/W3001474023","https://openalex.org/W3016921254","https://openalex.org/W3175970536","https://openalex.org/W4230942288","https://openalex.org/W4232354397","https://openalex.org/W4235348386","https://openalex.org/W4240497447","https://openalex.org/W4247319954","https://openalex.org/W6764949246"],"related_works":["https://openalex.org/W2102229283","https://openalex.org/W3088007090","https://openalex.org/W185043635","https://openalex.org/W4254156924","https://openalex.org/W2069117531","https://openalex.org/W2113798250","https://openalex.org/W2324321492","https://openalex.org/W1993524544","https://openalex.org/W1970625600","https://openalex.org/W2128433129"],"abstract_inverted_index":{"An":[0],"efficient":[1,68],"optimizing":[2],"compiler":[3],"can":[4],"perform":[5,30,151],"many":[6],"cascading":[7],"rewrites":[8],"in":[9,109,131,138,186],"a":[10,61,76,181],"single":[11],"pass,":[12],"using":[13],"auxiliary":[14,85],"data":[15,44,86],"structures":[16,45,87],"such":[17],"as":[18,141],"variable":[19],"binding":[20],"maps,":[21],"delayed":[22],"substitutions,":[23],"and":[24,54,71,81,143,157,163,172,196],"occurrence":[25],"counts.":[26],"Such":[27],"optimizers":[28],"often":[29],"transformations":[31],"according":[32],"to":[33,52,56,104,121,146,194],"relatively":[34],"simple":[35],"rewrite":[36,79],"rules,":[37],"but":[38],"the":[39,43,84,94,102,112,117],"subtle":[40],"interactions":[41],"between":[42],"needed":[46],"for":[47,63],"efficiency":[48],"make":[49],"them":[50],"tricky":[51],"write":[53,147,195],"trickier":[55],"prove":[57,197],"correct.":[58,198],"We":[59,127],"present":[60],"system":[62,100,130],"semi-automatically":[64],"deriving":[65],"both":[66],"an":[67],"program":[69],"transformation":[70],"its":[72],"correctness":[73],"proof":[74],"from":[75],"list":[77],"of":[78,83,160,184],"rules":[80],"specifications":[82],"it":[88,125,134,145],"requires.":[89],"Dependent":[90],"types":[91],"ensure":[92],"that":[93,150],"holes":[95],"left":[96],"behind":[97],"by":[98],"our":[99,129],"(for":[101],"user":[103,113],"fill":[105],"in)":[106],"are":[107,169],"filled":[108],"correctly,":[110],"allowing":[111],"low-level":[114],"control":[115],"over":[116],"implementation":[118],"without":[119],"having":[120],"worry":[122],"about":[123],"getting":[124],"wrong.":[126],"implemented":[128,137],"Coq":[132],"(though":[133],"could":[135],"be":[136],"other":[139],"logics":[140],"well),":[142],"used":[144],"optimization":[148],"passes":[149],"uncurrying,":[152],"inlining,":[153],"dead":[154],"code":[155,193],"elimination,":[156],"static":[158],"evaluation":[159],"case":[161],"expressions":[162],"record":[164],"projections.":[165],"The":[166],"generated":[167],"implementations":[168],"sometimes":[170],"faster,":[171],"at":[173],"most":[174],"40%":[175],"slower,":[176],"than":[177],"hand-written":[178],"counterparts":[179],"on":[180],"small":[182],"set":[183],"benchmarks;":[185],"some":[187],"cases,":[188],"they":[189],"require":[190],"significantly":[191],"less":[192]},"counts_by_year":[{"year":2025,"cited_by_count":3},{"year":2024,"cited_by_count":1},{"year":2023,"cited_by_count":1},{"year":2022,"cited_by_count":1}],"updated_date":"2026-06-11T09:08:48.828518","created_date":"2025-10-10T00:00:00"}
