{"id":"https://openalex.org/W2899590559","doi":"https://doi.org/10.1145/3290386","title":"FrAngel: component-based synthesis with control structures","display_name":"FrAngel: component-based synthesis with control structures","publication_year":2019,"publication_date":"2019-01-02","ids":{"openalex":"https://openalex.org/W2899590559","doi":"https://doi.org/10.1145/3290386","mag":"2899590559"},"language":"en","primary_location":{"id":"doi:10.1145/3290386","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3290386","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3290386","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":["arxiv","crossref"],"open_access":{"is_oa":true,"oa_status":"diamond","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3290386","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":null,"display_name":"Kensen Shi","orcid":null},"institutions":[{"id":"https://openalex.org/I97018004","display_name":"Stanford University","ror":"https://ror.org/00f54p054","country_code":"US","type":"education","lineage":["https://openalex.org/I97018004"]}],"countries":["US"],"is_corresponding":true,"raw_author_name":"Kensen Shi","raw_affiliation_strings":["Stanford University, USA"],"affiliations":[{"raw_affiliation_string":"Stanford University, USA","institution_ids":["https://openalex.org/I97018004"]}]},{"author_position":"middle","author":{"id":null,"display_name":"Jacob Steinhardt","orcid":null},"institutions":[{"id":"https://openalex.org/I97018004","display_name":"Stanford University","ror":"https://ror.org/00f54p054","country_code":"US","type":"education","lineage":["https://openalex.org/I97018004"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Jacob Steinhardt","raw_affiliation_strings":["Stanford University, USA"],"affiliations":[{"raw_affiliation_string":"Stanford University, USA","institution_ids":["https://openalex.org/I97018004"]}]},{"author_position":"last","author":{"id":null,"display_name":"Percy Liang","orcid":null},"institutions":[{"id":"https://openalex.org/I97018004","display_name":"Stanford University","ror":"https://ror.org/00f54p054","country_code":"US","type":"education","lineage":["https://openalex.org/I97018004"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Percy Liang","raw_affiliation_strings":["Stanford University, USA"],"affiliations":[{"raw_affiliation_string":"Stanford University, USA","institution_ids":["https://openalex.org/I97018004"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":3,"corresponding_author_ids":[],"corresponding_institution_ids":["https://openalex.org/I97018004"],"apc_list":null,"apc_paid":null,"fwci":3.4685,"has_fulltext":true,"cited_by_count":35,"citation_normalized_percentile":{"value":0.94068668,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":94,"max":99},"biblio":{"volume":"3","issue":"POPL","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.26350000500679016,"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.26350000500679016,"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.23970000445842743,"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"}},{"id":"https://openalex.org/T10639","display_name":"Advanced Software Engineering Methodologies","score":0.14470000565052032,"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/program-synthesis","display_name":"Program synthesis","score":0.7236999869346619},{"id":"https://openalex.org/keywords/variety","display_name":"Variety (cybernetics)","score":0.5996999740600586},{"id":"https://openalex.org/keywords/set","display_name":"Set (abstract data type)","score":0.5690000057220459},{"id":"https://openalex.org/keywords/control","display_name":"Control (management)","score":0.5501999855041504},{"id":"https://openalex.org/keywords/property","display_name":"Property (philosophy)","score":0.5383999943733215},{"id":"https://openalex.org/keywords/code","display_name":"Code (set theory)","score":0.4449999928474426},{"id":"https://openalex.org/keywords/java","display_name":"Java","score":0.40369999408721924},{"id":"https://openalex.org/keywords/formal-specification","display_name":"Formal specification","score":0.35109999775886536}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.7577000260353088},{"id":"https://openalex.org/C2776937632","wikidata":"https://www.wikidata.org/wiki/Q4117718","display_name":"Program synthesis","level":2,"score":0.7236999869346619},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6200000047683716},{"id":"https://openalex.org/C136197465","wikidata":"https://www.wikidata.org/wiki/Q1729295","display_name":"Variety (cybernetics)","level":2,"score":0.5996999740600586},{"id":"https://openalex.org/C177264268","wikidata":"https://www.wikidata.org/wiki/Q1514741","display_name":"Set (abstract data type)","level":2,"score":0.5690000057220459},{"id":"https://openalex.org/C2775924081","wikidata":"https://www.wikidata.org/wiki/Q55608371","display_name":"Control (management)","level":2,"score":0.5501999855041504},{"id":"https://openalex.org/C189950617","wikidata":"https://www.wikidata.org/wiki/Q937228","display_name":"Property (philosophy)","level":2,"score":0.5383999943733215},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.4449999928474426},{"id":"https://openalex.org/C548217200","wikidata":"https://www.wikidata.org/wiki/Q251","display_name":"Java","level":2,"score":0.40369999408721924},{"id":"https://openalex.org/C116253237","wikidata":"https://www.wikidata.org/wiki/Q1437424","display_name":"Formal specification","level":2,"score":0.35109999775886536},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.34060001373291016},{"id":"https://openalex.org/C17500928","wikidata":"https://www.wikidata.org/wiki/Q959968","display_name":"Control system","level":2,"score":0.3366999924182892},{"id":"https://openalex.org/C75606506","wikidata":"https://www.wikidata.org/wiki/Q1049183","display_name":"Formal methods","level":2,"score":0.3357999920845032},{"id":"https://openalex.org/C115903868","wikidata":"https://www.wikidata.org/wiki/Q80993","display_name":"Software engineering","level":1,"score":0.31869998574256897},{"id":"https://openalex.org/C162319229","wikidata":"https://www.wikidata.org/wiki/Q175263","display_name":"Data structure","level":2,"score":0.3149000108242035},{"id":"https://openalex.org/C133162039","wikidata":"https://www.wikidata.org/wiki/Q1061077","display_name":"Code generation","level":3,"score":0.29440000653266907},{"id":"https://openalex.org/C58013763","wikidata":"https://www.wikidata.org/wiki/Q5754574","display_name":"High-level synthesis","level":3,"score":0.289900004863739},{"id":"https://openalex.org/C43126263","wikidata":"https://www.wikidata.org/wiki/Q128751","display_name":"Source code","level":2,"score":0.28380000591278076},{"id":"https://openalex.org/C111498074","wikidata":"https://www.wikidata.org/wiki/Q173326","display_name":"Formal verification","level":2,"score":0.25920000672340393},{"id":"https://openalex.org/C2988963302","wikidata":"https://www.wikidata.org/wiki/Q629206","display_name":"Program code","level":2,"score":0.257999986410141}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1145/3290386","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3290386","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3290386","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"},{"id":"pmh:oai:arXiv.org:1811.05175","is_oa":true,"landing_page_url":"http://arxiv.org/abs/1811.05175","pdf_url":"https://arxiv.org/pdf/1811.05175","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":null,"issn":null,"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"}],"best_oa_location":{"id":"doi:10.1145/3290386","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3290386","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3290386","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":[],"funders":[],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W2899590559.pdf","grobid_xml":"https://content.openalex.org/works/W2899590559.grobid-xml"},"referenced_works_count":26,"referenced_works":["https://openalex.org/W1549970146","https://openalex.org/W1965446936","https://openalex.org/W2008685183","https://openalex.org/W2013596093","https://openalex.org/W2040518484","https://openalex.org/W2093535699","https://openalex.org/W2101432564","https://openalex.org/W2108556169","https://openalex.org/W2115733813","https://openalex.org/W2122947685","https://openalex.org/W2130371489","https://openalex.org/W2134734244","https://openalex.org/W2143861926","https://openalex.org/W2157976942","https://openalex.org/W2250787296","https://openalex.org/W2339276203","https://openalex.org/W2416325154","https://openalex.org/W2550471858","https://openalex.org/W2561055248","https://openalex.org/W2603456259","https://openalex.org/W4232188856","https://openalex.org/W4233189519","https://openalex.org/W4237412827","https://openalex.org/W4242364663","https://openalex.org/W4242912959","https://openalex.org/W6605087937"],"related_works":[],"abstract_inverted_index":{"In":[0],"component-based":[1,16,48],"program":[2,8,140],"synthesis,":[3],"the":[4,33,104,138,145],"synthesizer":[5],"generates":[6],"a":[7,10,44,61,64,70,116,167],"given":[9,60],"library":[11],"of":[12,32,66,72,103,169,174],"components":[13],"(functions).":[14],"Existing":[15],"synthesizers":[17],"have":[18],"difficulty":[19],"synthesizing":[20],"loops":[21],"and":[22,26,69,135,154],"other":[23],"control":[24,57,132,175],"structures,":[25],"they":[27],"often":[28,110],"require":[29],"formal":[30,75],"specifications":[31],"components,":[34],"which":[35],"can":[36,51,165],"be":[37],"expensive":[38],"to":[39,47,79,115],"generate.":[40],"We":[41,161],"present":[42],"FrAngel,":[43],"new":[45],"approach":[46],"synthesis":[49,113,146],"that":[50,99,118,163],"synthesize":[52,166],"short":[53],"Java":[54],"functions":[55],"with":[56,82,172],"structures":[58,176],"when":[59],"desired":[62],"signature,":[63],"set":[65],"input-output":[67],"examples,":[68],"collection":[71],"libraries":[73],"(without":[74],"specifications).":[76],"FrAngel":[77,125,148,164],"aims":[78],"discover":[80],"programs":[81,98,153,171],"many":[83],"distinct":[84],"behaviors":[85],"by":[86],"combining":[87],"two":[88],"main":[89],"ideas.":[90],"First,":[91],"it":[92],"mines":[93],"code":[94],"fragments":[95,108],"from":[96],"partially-successful":[97],"only":[100],"pass":[101],"some":[102],"examples.":[105],"These":[106],"extracted":[107],"are":[109],"useful":[111],"for":[112,131],"due":[114],"property":[117],"we":[119],"call":[120],"special-case":[121],"similarity":[122],".":[123],"Second,":[124],"uses":[126],"angelic":[127],"conditions":[128,134,143],"as":[129],"placeholders":[130],"structure":[133],"optimistically":[136],"evaluates":[137],"resulting":[139],"sketches.":[141],"Angelic":[142],"decompose":[144],"process:":[147],"first":[149],"finds":[150],"promising":[151],"partial":[152],"later":[155],"fills":[156],"in":[157],"their":[158],"missing":[159],"conditions.":[160],"demonstrate":[162],"variety":[168],"interesting":[170],"combinations":[173],"within":[177],"seconds,":[178],"significantly":[179],"outperforming":[180],"prior":[181],"state-of-the-art.":[182]},"counts_by_year":[{"year":2025,"cited_by_count":5},{"year":2024,"cited_by_count":4},{"year":2023,"cited_by_count":2},{"year":2022,"cited_by_count":6},{"year":2021,"cited_by_count":9},{"year":2020,"cited_by_count":7},{"year":2019,"cited_by_count":2}],"updated_date":"2026-03-10T16:38:18.471706","created_date":"2018-11-16T00:00:00"}
