{"id":"https://openalex.org/W2619214761","doi":"https://doi.org/10.1145/3110258","title":"Imperative functional programs that explain their work","display_name":"Imperative functional programs that explain their work","publication_year":2017,"publication_date":"2017-08-29","ids":{"openalex":"https://openalex.org/W2619214761","doi":"https://doi.org/10.1145/3110258","mag":"2619214761"},"language":"en","primary_location":{"id":"doi:10.1145/3110258","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3110258","pdf_url":"http://dl.acm.org/ft_gateway.cfm?id=3110258&type=pdf","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":false,"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":["arxiv","crossref"],"open_access":{"is_oa":true,"oa_status":"hybrid","oa_url":"http://dl.acm.org/ft_gateway.cfm?id=3110258&type=pdf","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":null,"display_name":"Wilmer Ricciotti","orcid":null},"institutions":[{"id":"https://openalex.org/I98677209","display_name":"University of Edinburgh","ror":"https://ror.org/01nrxwf90","country_code":"GB","type":"education","lineage":["https://openalex.org/I98677209"]}],"countries":["GB"],"is_corresponding":false,"raw_author_name":"Wilmer Ricciotti","raw_affiliation_strings":["University of Edinburgh, UK"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Edinburgh, UK","institution_ids":["https://openalex.org/I98677209"]}]},{"author_position":"middle","author":{"id":null,"display_name":"Jan Stolarek","orcid":null},"institutions":[{"id":"https://openalex.org/I98677209","display_name":"University of Edinburgh","ror":"https://ror.org/01nrxwf90","country_code":"GB","type":"education","lineage":["https://openalex.org/I98677209"]}],"countries":["GB"],"is_corresponding":false,"raw_author_name":"Jan Stolarek","raw_affiliation_strings":["University of Edinburgh, UK"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Edinburgh, UK","institution_ids":["https://openalex.org/I98677209"]}]},{"author_position":"middle","author":{"id":null,"display_name":"Roly Perera","orcid":null},"institutions":[{"id":"https://openalex.org/I98677209","display_name":"University of Edinburgh","ror":"https://ror.org/01nrxwf90","country_code":"GB","type":"education","lineage":["https://openalex.org/I98677209"]}],"countries":["GB"],"is_corresponding":false,"raw_author_name":"Roly Perera","raw_affiliation_strings":["University of Edinburgh, UK"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Edinburgh, UK","institution_ids":["https://openalex.org/I98677209"]}]},{"author_position":"last","author":{"id":null,"display_name":"James Cheney","orcid":null},"institutions":[{"id":"https://openalex.org/I98677209","display_name":"University of Edinburgh","ror":"https://ror.org/01nrxwf90","country_code":"GB","type":"education","lineage":["https://openalex.org/I98677209"]}],"countries":["GB"],"is_corresponding":false,"raw_author_name":"James Cheney","raw_affiliation_strings":["University of Edinburgh, UK"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Edinburgh, UK","institution_ids":["https://openalex.org/I98677209"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":[],"corresponding_institution_ids":["https://openalex.org/I98677209"],"apc_list":null,"apc_paid":null,"fwci":2.9705,"has_fulltext":true,"cited_by_count":16,"citation_normalized_percentile":{"value":0.90172855,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":89,"max":97},"biblio":{"volume":"1","issue":"ICFP","first_page":"1","last_page":"28"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10743","display_name":"Software Testing and Debugging Techniques","score":0.7792999744415283,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"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/T10743","display_name":"Software Testing and Debugging Techniques","score":0.7792999744415283,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"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/T10126","display_name":"Logic, programming, and type systems","score":0.13079999387264252,"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/T10142","display_name":"Formal Methods in Verification","score":0.026599999517202377,"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/correctness","display_name":"Correctness","score":0.781000018119812},{"id":"https://openalex.org/keywords/program-slicing","display_name":"Program slicing","score":0.7656000256538391},{"id":"https://openalex.org/keywords/galois-connection","display_name":"Galois connection","score":0.7023000121116638},{"id":"https://openalex.org/keywords/slicing","display_name":"Slicing","score":0.6988999843597412},{"id":"https://openalex.org/keywords/mathematical-proof","display_name":"Mathematical proof","score":0.6532999873161316},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.486299991607666},{"id":"https://openalex.org/keywords/work","display_name":"Work (physics)","score":0.4625999927520752},{"id":"https://openalex.org/keywords/program-analysis","display_name":"Program analysis","score":0.4440999925136566}],"concepts":[{"id":"https://openalex.org/C55439883","wikidata":"https://www.wikidata.org/wiki/Q360812","display_name":"Correctness","level":2,"score":0.781000018119812},{"id":"https://openalex.org/C91071405","wikidata":"https://www.wikidata.org/wiki/Q1413145","display_name":"Program slicing","level":3,"score":0.7656000256538391},{"id":"https://openalex.org/C2777573902","wikidata":"https://www.wikidata.org/wiki/Q1491747","display_name":"Galois connection","level":2,"score":0.7023000121116638},{"id":"https://openalex.org/C2776190703","wikidata":"https://www.wikidata.org/wiki/Q488148","display_name":"Slicing","level":2,"score":0.6988999843597412},{"id":"https://openalex.org/C108710211","wikidata":"https://www.wikidata.org/wiki/Q11538","display_name":"Mathematical proof","level":2,"score":0.6532999873161316},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.6384999752044678},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.5785999894142151},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.486299991607666},{"id":"https://openalex.org/C18762648","wikidata":"https://www.wikidata.org/wiki/Q42213","display_name":"Work (physics)","level":2,"score":0.4625999927520752},{"id":"https://openalex.org/C98183937","wikidata":"https://www.wikidata.org/wiki/Q2112188","display_name":"Program analysis","level":2,"score":0.4440999925136566},{"id":"https://openalex.org/C195701839","wikidata":"https://www.wikidata.org/wiki/Q4008398","display_name":"Partial evaluation","level":2,"score":0.396699994802475},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.3562999963760376},{"id":"https://openalex.org/C13355873","wikidata":"https://www.wikidata.org/wiki/Q2920850","display_name":"Connection (principal bundle)","level":2,"score":0.33079999685287476},{"id":"https://openalex.org/C115903868","wikidata":"https://www.wikidata.org/wiki/Q80993","display_name":"Software engineering","level":1,"score":0.3208000063896179},{"id":"https://openalex.org/C50033165","wikidata":"https://www.wikidata.org/wiki/Q15712089","display_name":"Inductive programming","level":3,"score":0.2890999913215637},{"id":"https://openalex.org/C61797465","wikidata":"https://www.wikidata.org/wiki/Q1188986","display_name":"Term (time)","level":2,"score":0.2831999957561493},{"id":"https://openalex.org/C152752567","wikidata":"https://www.wikidata.org/wiki/Q116877","display_name":"Code refactoring","level":3,"score":0.2831999957561493},{"id":"https://openalex.org/C77781355","wikidata":"https://www.wikidata.org/wiki/Q223335","display_name":"Structured programming","level":2,"score":0.2818000018596649},{"id":"https://openalex.org/C2777131603","wikidata":"https://www.wikidata.org/wiki/Q5508796","display_name":"Functional approach","level":2,"score":0.2797999978065491},{"id":"https://openalex.org/C2778023277","wikidata":"https://www.wikidata.org/wiki/Q321703","display_name":"Premise","level":2,"score":0.27140000462532043},{"id":"https://openalex.org/C2778361913","wikidata":"https://www.wikidata.org/wiki/Q7248437","display_name":"Program transformation","level":2,"score":0.2635999917984009},{"id":"https://openalex.org/C168065819","wikidata":"https://www.wikidata.org/wiki/Q845566","display_name":"Debugging","level":2,"score":0.26190000772476196},{"id":"https://openalex.org/C34165917","wikidata":"https://www.wikidata.org/wiki/Q188267","display_name":"Programming paradigm","level":2,"score":0.2605000138282776},{"id":"https://openalex.org/C37404715","wikidata":"https://www.wikidata.org/wiki/Q380679","display_name":"Dynamic programming","level":2,"score":0.25450000166893005}],"mesh":[],"locations_count":5,"locations":[{"id":"doi:10.1145/3110258","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3110258","pdf_url":"http://dl.acm.org/ft_gateway.cfm?id=3110258&type=pdf","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":false,"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"},{"id":"pmh:oai:eprints.gla.ac.uk:145536","is_oa":false,"landing_page_url":null,"pdf_url":null,"source":{"id":"https://openalex.org/S4210235606","display_name":"ENLIGHTEN (Jurnal Bimbingan dan Konseling Islam)","issn_l":"2622-8912","issn":["2622-8912","2622-8920"],"is_oa":false,"is_in_doaj":true,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":null,"license_id":null,"version":"acceptedVersion","is_accepted":true,"is_published":false,"raw_source_name":"","raw_type":"Articles"},{"id":"pmh:oai:arXiv.org:1705.07678","is_oa":true,"landing_page_url":"http://arxiv.org/abs/1705.07678","pdf_url":"https://arxiv.org/pdf/1705.07678","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":"2331-8422","issn":["2331-8422"],"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"},{"id":"pmh:oai:pure.ed.ac.uk:openaire/536d5547-d618-4729-9d28-40a82afef6ca","is_oa":true,"landing_page_url":"https://www.research.ed.ac.uk/en/publications/536d5547-d618-4729-9d28-40a82afef6ca","pdf_url":null,"source":{"id":"https://openalex.org/S4306400321","display_name":"Edinburgh Research Explorer (University of Edinburgh)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I98677209","host_organization_name":"University of Edinburgh","host_organization_lineage":["https://openalex.org/I98677209"],"host_organization_lineage_names":[],"type":"repository"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"Ricciotti, W, Stolarek, J, Perera, R & Cheney, J 2017, Imperative functional programs that explain their work. in 22nd ACM SIGPLAN International Conference on Functional Programming (ICFP 2017). Proceedings of the ACM on Programming Languages, no. ICFP, vol. 1, pp. 14:1-14:28, 22nd ACM SIGPLAN International Conference on Functional Programming, Oxford, United Kingdom, 3/09/17. https://doi.org/10.1145/3110258","raw_type":"contributionToPeriodical"},{"id":"pmh:oai:pure.ed.ac.uk:publications/536d5547-d618-4729-9d28-40a82afef6ca","is_oa":true,"landing_page_url":"http://hdl.handle.net/20.500.11820/536d5547-d618-4729-9d28-40a82afef6ca","pdf_url":null,"source":{"id":"https://openalex.org/S4306400321","display_name":"Edinburgh Research Explorer (University of Edinburgh)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I98677209","host_organization_name":"University of Edinburgh","host_organization_lineage":["https://openalex.org/I98677209"],"host_organization_lineage_names":[],"type":"repository"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"Ricciotti, W, Stolarek, J, Perera, R & Cheney, J 2017, Imperative functional programs that explain their work. in 22nd ACM SIGPLAN International Conference on Functional Programming (ICFP 2017). Proceedings of the ACM on Programming Languages, no. ICFP, vol. 1, pp. 14:1-14:28, 22nd ACM SIGPLAN International Conference on Functional Programming, Oxford, United Kingdom, 3/09/17. https://doi.org/10.1145/3110258","raw_type":"contributionToPeriodical"}],"best_oa_location":{"id":"doi:10.1145/3110258","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3110258","pdf_url":"http://dl.acm.org/ft_gateway.cfm?id=3110258&type=pdf","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":false,"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/G1466383412","display_name":null,"funder_award_id":"682315","funder_id":"https://openalex.org/F4320334678","funder_display_name":"European Research Council"},{"id":"https://openalex.org/G1798638720","display_name":"From Data Types to Session Types---A Basis for Concurrency and Distribution","funder_award_id":"EP/K034413/1","funder_id":"https://openalex.org/F4320334627","funder_display_name":"Engineering and Physical Sciences Research Council"},{"id":"https://openalex.org/G7918631928","display_name":null,"funder_award_id":"EP/K034413/1","funder_id":"https://openalex.org/F4320334627","funder_display_name":"Engineering and Physical Sciences Research Council"},{"id":"https://openalex.org/G8982704604","display_name":null,"funder_award_id":"FA8655-13-1-3006","funder_id":"https://openalex.org/F4320338279","funder_display_name":"Air Force Office of Scientific Research"}],"funders":[{"id":"https://openalex.org/F4320332467","display_name":"U.S. Air Force","ror":"https://ror.org/006gmme17"},{"id":"https://openalex.org/F4320334627","display_name":"Engineering and Physical Sciences Research Council","ror":"https://ror.org/0439y7842"},{"id":"https://openalex.org/F4320334678","display_name":"European Research Council","ror":"https://ror.org/0472cxd90"},{"id":"https://openalex.org/F4320338279","display_name":"Air Force Office of Scientific Research","ror":"https://ror.org/011e9bt93"}],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W2619214761.pdf","grobid_xml":"https://content.openalex.org/works/W2619214761.grobid-xml"},"referenced_works_count":24,"referenced_works":["https://openalex.org/W203501420","https://openalex.org/W1970692901","https://openalex.org/W1971906578","https://openalex.org/W1980767016","https://openalex.org/W1985139361","https://openalex.org/W1988797438","https://openalex.org/W1989877409","https://openalex.org/W2007121005","https://openalex.org/W2042825714","https://openalex.org/W2043100293","https://openalex.org/W2044999110","https://openalex.org/W2068336423","https://openalex.org/W2088821694","https://openalex.org/W2093397547","https://openalex.org/W2096001571","https://openalex.org/W2119251833","https://openalex.org/W2139160597","https://openalex.org/W2282057970","https://openalex.org/W2295283668","https://openalex.org/W2489483223","https://openalex.org/W2996075572","https://openalex.org/W3161449428","https://openalex.org/W4381304672","https://openalex.org/W6717334684"],"related_works":[],"abstract_inverted_index":{"Program":[0],"slicing":[1,24],"provides":[2],"explanations":[3],"that":[4,52],"illustrate":[5],"how":[6],"program":[7],"outputs":[8],"were":[9],"produced":[10],"from":[11],"inputs.":[12],"We":[13,44,60],"build":[14],"on":[15],"an":[16],"approach":[17,47,69],"introduced":[18],"in":[19],"prior":[20],"work,":[21],"where":[22],"dynamic":[23],"was":[25],"defined":[26],"for":[27],"pure":[28],"higher-order":[29,54],"functional":[30,50],"programs":[31,51],"as":[32],"a":[33,71],"Galois":[34],"connection":[35],"between":[36],"lattices":[37],"of":[38,63,67],"partial":[39,42],"inputs":[40],"and":[41,58,65,70,74],"outputs.":[43],"extend":[45],"this":[46],"to":[48],"imperative":[49],"combine":[53],"programming":[55],"with":[56],"references":[57],"exceptions.":[59],"present":[61],"proofs":[62],"correctness":[64],"optimality":[66],"our":[68],"proof-of-concept":[72],"implementation":[73],"experimental":[75],"evaluation.":[76]},"counts_by_year":[{"year":2025,"cited_by_count":3},{"year":2024,"cited_by_count":2},{"year":2023,"cited_by_count":1},{"year":2022,"cited_by_count":1},{"year":2021,"cited_by_count":3},{"year":2020,"cited_by_count":1},{"year":2019,"cited_by_count":3},{"year":2018,"cited_by_count":1},{"year":2017,"cited_by_count":1}],"updated_date":"2026-07-28T07:46:37.118299","created_date":"2017-06-05T00:00:00"}
