{"id":"https://openalex.org/W4317433133","doi":"https://doi.org/10.22152/programming-journal.org/2024/8/3","title":"Coqlex: Generating Formally Verified Lexers","display_name":"Coqlex: Generating Formally Verified Lexers","publication_year":2023,"publication_date":"2023-06-15","ids":{"openalex":"https://openalex.org/W4317433133","doi":"https://doi.org/10.22152/programming-journal.org/2024/8/3"},"language":"en","primary_location":{"id":"doi:10.22152/programming-journal.org/2024/8/3","is_oa":true,"landing_page_url":"https://doi.org/10.22152/programming-journal.org/2024/8/3","pdf_url":"https://arxiv.org/pdf/2306.12411v1","source":{"id":"https://openalex.org/S4210199781","display_name":"The Art Science and Engineering of Programming","issn_l":"2473-7321","issn":["2473-7321"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The Art, Science, and Engineering of Programming","raw_type":"journal-article"},"type":"article","indexed_in":["arxiv","crossref"],"open_access":{"is_oa":true,"oa_status":"bronze","oa_url":"https://arxiv.org/pdf/2306.12411v1","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5012848879","display_name":"Wendlasida Ouedraogo","orcid":"https://orcid.org/0000-0002-5331-4121"},"institutions":[{"id":"https://openalex.org/I4210138743","display_name":"Siemens (France)","ror":"https://ror.org/04q9w3z30","country_code":"FR","type":"company","lineage":["https://openalex.org/I1325886976","https://openalex.org/I4210138743"]}],"countries":["FR"],"is_corresponding":true,"raw_author_name":"Wendlasida Ouedraogo","raw_affiliation_strings":["Siemens Mobility, France / Inria, France"],"affiliations":[{"raw_affiliation_string":"Siemens Mobility, France / Inria, France","institution_ids":["https://openalex.org/I4210138743"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5047042180","display_name":"Gabriel Scherer","orcid":"https://orcid.org/0000-0003-1758-3938"},"institutions":[{"id":"https://openalex.org/I142476485","display_name":"\u00c9cole Polytechnique","ror":"https://ror.org/05hy3tk52","country_code":"FR","type":"education","lineage":["https://openalex.org/I142476485","https://openalex.org/I4210145102"]}],"countries":["FR"],"is_corresponding":false,"raw_author_name":"Gabriel Scherer","raw_affiliation_strings":["Inria, France / \u00c9cole Polytechnique, France"],"affiliations":[{"raw_affiliation_string":"Inria, France / \u00c9cole Polytechnique, France","institution_ids":["https://openalex.org/I142476485"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5108831493","display_name":"Lutz Stra\u00dfburger","orcid":null},"institutions":[{"id":"https://openalex.org/I142476485","display_name":"\u00c9cole Polytechnique","ror":"https://ror.org/05hy3tk52","country_code":"FR","type":"education","lineage":["https://openalex.org/I142476485","https://openalex.org/I4210145102"]}],"countries":["FR"],"is_corresponding":false,"raw_author_name":"Lutz Strassburger","raw_affiliation_strings":["Inria, France / \u00c9cole Polytechnique, France"],"affiliations":[{"raw_affiliation_string":"Inria, France / \u00c9cole Polytechnique, France","institution_ids":["https://openalex.org/I142476485"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":3,"corresponding_author_ids":["https://openalex.org/A5012848879"],"corresponding_institution_ids":["https://openalex.org/I4210138743"],"apc_list":null,"apc_paid":null,"fwci":0.3516,"has_fulltext":true,"cited_by_count":2,"citation_normalized_percentile":{"value":0.62827924,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":98,"max":99},"biblio":{"volume":"8","issue":"1","first_page":null,"last_page":null},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T11424","display_name":"Security and Verification in Computing","score":0.9944999814033508,"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/T11424","display_name":"Security and Verification in Computing","score":0.9944999814033508,"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/T10126","display_name":"Logic, programming, and type systems","score":0.9871000051498413,"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.9868999719619751,"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/computer-science","display_name":"Computer science","score":0.8931320905685425},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.7991305589675903},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.725746214389801},{"id":"https://openalex.org/keywords/correctness","display_name":"Correctness","score":0.6795297861099243},{"id":"https://openalex.org/keywords/generator","display_name":"Generator (circuit theory)","score":0.5887108445167542},{"id":"https://openalex.org/keywords/mathematical-proof","display_name":"Mathematical proof","score":0.5242201089859009},{"id":"https://openalex.org/keywords/code-generation","display_name":"Code generation","score":0.4813009798526764},{"id":"https://openalex.org/keywords/component","display_name":"Component (thermodynamics)","score":0.4787023365497589},{"id":"https://openalex.org/keywords/set","display_name":"Set (abstract data type)","score":0.4603630602359772},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.32077455520629883},{"id":"https://openalex.org/keywords/key","display_name":"Key (lock)","score":0.13158109784126282},{"id":"https://openalex.org/keywords/operating-system","display_name":"Operating system","score":0.10535001754760742}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8931320905685425},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7991305589675903},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.725746214389801},{"id":"https://openalex.org/C55439883","wikidata":"https://www.wikidata.org/wiki/Q360812","display_name":"Correctness","level":2,"score":0.6795297861099243},{"id":"https://openalex.org/C2780992000","wikidata":"https://www.wikidata.org/wiki/Q17016113","display_name":"Generator (circuit theory)","level":3,"score":0.5887108445167542},{"id":"https://openalex.org/C108710211","wikidata":"https://www.wikidata.org/wiki/Q11538","display_name":"Mathematical proof","level":2,"score":0.5242201089859009},{"id":"https://openalex.org/C133162039","wikidata":"https://www.wikidata.org/wiki/Q1061077","display_name":"Code generation","level":3,"score":0.4813009798526764},{"id":"https://openalex.org/C168167062","wikidata":"https://www.wikidata.org/wiki/Q1117970","display_name":"Component (thermodynamics)","level":2,"score":0.4787023365497589},{"id":"https://openalex.org/C177264268","wikidata":"https://www.wikidata.org/wiki/Q1514741","display_name":"Set (abstract data type)","level":2,"score":0.4603630602359772},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.32077455520629883},{"id":"https://openalex.org/C26517878","wikidata":"https://www.wikidata.org/wiki/Q228039","display_name":"Key (lock)","level":2,"score":0.13158109784126282},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.10535001754760742},{"id":"https://openalex.org/C121332964","wikidata":"https://www.wikidata.org/wiki/Q413","display_name":"Physics","level":0,"score":0.0},{"id":"https://openalex.org/C62520636","wikidata":"https://www.wikidata.org/wiki/Q944","display_name":"Quantum mechanics","level":1,"score":0.0},{"id":"https://openalex.org/C97355855","wikidata":"https://www.wikidata.org/wiki/Q11473","display_name":"Thermodynamics","level":1,"score":0.0},{"id":"https://openalex.org/C2524010","wikidata":"https://www.wikidata.org/wiki/Q8087","display_name":"Geometry","level":1,"score":0.0},{"id":"https://openalex.org/C33923547","wikidata":"https://www.wikidata.org/wiki/Q395","display_name":"Mathematics","level":0,"score":0.0},{"id":"https://openalex.org/C163258240","wikidata":"https://www.wikidata.org/wiki/Q25342","display_name":"Power (physics)","level":2,"score":0.0}],"mesh":[],"locations_count":3,"locations":[{"id":"doi:10.22152/programming-journal.org/2024/8/3","is_oa":true,"landing_page_url":"https://doi.org/10.22152/programming-journal.org/2024/8/3","pdf_url":"https://arxiv.org/pdf/2306.12411v1","source":{"id":"https://openalex.org/S4210199781","display_name":"The Art Science and Engineering of Programming","issn_l":"2473-7321","issn":["2473-7321"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The Art, Science, and Engineering of Programming","raw_type":"journal-article"},{"id":"pmh:oai:arXiv.org:2306.12411","is_oa":true,"landing_page_url":"http://arxiv.org/abs/2306.12411","pdf_url":"https://arxiv.org/pdf/2306.12411","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"},{"id":"pmh:oai:HAL:hal-03912170v2","is_oa":true,"landing_page_url":"https://hal.science/hal-03912170","pdf_url":"https://hal.science/hal-03912170/document","source":{"id":"https://openalex.org/S4306402512","display_name":"HAL (Le Centre pour la Communication Scientifique Directe)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I1294671590","host_organization_name":"Centre National de la Recherche Scientifique","host_organization_lineage":["https://openalex.org/I1294671590"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"https://programming-journal.org/2024/8/3/","raw_type":"Journal articles"}],"best_oa_location":{"id":"doi:10.22152/programming-journal.org/2024/8/3","is_oa":true,"landing_page_url":"https://doi.org/10.22152/programming-journal.org/2024/8/3","pdf_url":"https://arxiv.org/pdf/2306.12411v1","source":{"id":"https://openalex.org/S4210199781","display_name":"The Art Science and Engineering of Programming","issn_l":"2473-7321","issn":["2473-7321"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The Art, Science, and Engineering of Programming","raw_type":"journal-article"},"sustainable_development_goals":[{"id":"https://metadata.un.org/sdg/9","score":0.5899999737739563,"display_name":"Industry, innovation and infrastructure"}],"awards":[],"funders":[],"has_content":{"grobid_xml":false,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W4317433133.pdf"},"referenced_works_count":16,"referenced_works":["https://openalex.org/W606696939","https://openalex.org/W1572478860","https://openalex.org/W1748007674","https://openalex.org/W1998368317","https://openalex.org/W2072607050","https://openalex.org/W2094985106","https://openalex.org/W2108455276","https://openalex.org/W2115345034","https://openalex.org/W2156429182","https://openalex.org/W2161151447","https://openalex.org/W2288285441","https://openalex.org/W3182005208","https://openalex.org/W4206544982","https://openalex.org/W4240497447","https://openalex.org/W4251803872","https://openalex.org/W4254941634"],"related_works":["https://openalex.org/W55831818","https://openalex.org/W4252501555","https://openalex.org/W2003848320","https://openalex.org/W650988184","https://openalex.org/W2162410319","https://openalex.org/W2137356287","https://openalex.org/W4321184925","https://openalex.org/W60915090","https://openalex.org/W2025840053","https://openalex.org/W2161692994"],"abstract_inverted_index":{"A":[0],"compiler":[1,21],"consists":[2],"of":[3,6,19,27,30,57,73,90,126,132,158,167,170,177,240,279,302,309,328,334,342,389,411,419],"a":[4,20,39,79,88,130,146,151,155,163,188,197,206,273,325,335,459],"sequence":[5],"phases":[7],"going":[8],"from":[9,87],"lexical":[10],"analysis":[11],"to":[12,53,107,120,122,139,186,192,200,227,236,247,271,288,307,323,337,447,480],"code":[13],"generation.":[14],"Ideally,":[15],"the":[16,24,31,36,65,71,123,210,214,229,264,300,378,387,453],"formal":[17,25],"verification":[18,26,125],"should":[22],"include":[23],"each":[28],"component":[29],"tool-chain.":[32],"An":[33],"example":[34,295],"is":[35,75,137,245,260,283,305,332,352,362,377,408,478],"CompCert":[37],"project,":[38],"formally":[40,54,164,482],"verified":[41,109,133,165,183,215,311,326,382,465,483],"C":[42],"compiler,":[43],"that":[44,51,84,256,269,297,299,308,350,359,406,476],"comes":[45,469],"with":[46,93,154,196,470],"associated":[47,94],"tools":[48,429,433],"and":[49,149,213,223,250,281,356,374,386,400,426,442,473],"proofs":[50],"allow":[52],"verify":[55],"most":[56,168],"those":[58],"components.":[59],"However,":[60],"some":[61,341],"components,":[62],"in":[63,267,313,319,354,357,384,395,462],"particular":[64,358],"lexer,":[66,216],"remain":[67],"unverified.":[68],"In":[69,118],"fact,":[70],"lexer":[72,82,147,152,173,327,331,391],"Compcert":[74],"generated":[76,230,454],"using":[77,303],"OCamllex,":[78,195,373,415],"lex-like":[80],"OCaml":[81],"generator":[83,131],"produces":[85],"lexers":[86,134,184,202,296,383,457],"set":[89],"regular":[91],"expressions":[92],"semantic":[95],"actions.":[96],"Even":[97],"though":[98],"there":[99],"exist":[100],"various":[101],"approaches,":[102],"like":[103],"CakeML":[104],"or":[105,194,436],"Verbatim++,":[106],"write":[108,201],"lexers,":[110],"they":[111],"all":[112],"have":[113],"only":[114],"limited":[115],"practical":[116,226],"applicability.":[117],"order":[119],"contribute":[121],"end-to-end":[124],"compilers,":[127],"we":[128,366],"implemented":[129],"whose":[135],"usage":[136],"similar":[138,191],"OCamllex.":[140,315],"Our":[141,253,403],"software,":[142],"called":[143],"Coqlex,":[144,372],"reads":[145],"specification":[148],"generates":[150],"equipped":[153],"Coq":[156],"proof":[157],"its":[159,360,390],"correctness.":[160],"It":[161],"provides":[162],"implementation":[166,254],"features":[169],"standard,":[171],"unverified":[172],"generators.":[174],"The":[175,232],"conclusions":[176],"our":[178,218],"work":[179,266,397],"are":[180,344,430,458],"two-fold:":[181],"Firstly,":[182],"gain":[185],"follow":[187],"user":[189,233],"experience":[190,348],"lex/flex":[193],"domain-specific":[198],"syntax":[199],"comfortably.":[203],"This":[204,330,347],"introduces":[205],"small":[207],"gap":[208,222],"between":[209,371],"written":[211],"artifact":[212],"but":[217,416],"design":[219,290],"minimizes":[220],"this":[221],"makes":[224],"it":[225,244,282,477],"review":[228],"lexer.":[231,242],"remains":[234],"able":[235],"prove":[237],"further":[238],"properties":[239],"their":[241],"Secondly,":[243],"possible":[246,479],"combine":[248],"simplicity":[249],"decent":[251],"performance.":[252],"approach":[255],"uses":[257],"Brzozowski":[258],"derivatives":[259],"noticeably":[261,285],"simpler":[262],"than":[263,414,422],"previous":[265,396],"Verbatim++":[268,376],"tries":[270],"generate":[272],"deterministic":[274],"finite":[275],"automaton":[276],"(DFA)":[277],"ahead":[278],"time,":[280],"also":[284],"faster":[286,421],"thanks":[287],"careful":[289],"choices.":[291],"We":[292,316],"wrote":[293],"several":[294,463],"suggest":[298,405],"convenience":[301],"Coqlex":[304,318,351,407,468],"close":[306],"standard":[310],"generators,":[312],"particular,":[314],"used":[317],"an":[320],"industrial":[321],"project":[322],"implement":[324],"Ada.":[329],"part":[333],"tool":[336,380],"optimize":[338],"safety-critical":[339,435],"programs,":[340],"which":[343],"very":[345],"large.":[346],"confirmed":[349],"usable":[353],"practice,":[355],"performance":[361,369,388],"good":[363],"enough.":[364],"Finally,":[365],"performed":[367],"detailed":[368],"comparisons":[370],"Verbatim++.":[375,423],"state-of-the-art":[379],"for":[381,434],"Coq,":[385],"was":[392],"carefully":[393],"optimized":[394],"by":[398],"Egolf":[399],"al.":[401],"(2022).":[402],"results":[404],"two":[409,417],"orders":[410,418],"magnitude":[412,420],"slower":[413],"Verified":[424,456],"compilers":[425,466],"other":[427],"language-processing":[428],"becoming":[431],"important":[432],"security-critical":[437],"applications.":[438],"They":[439],"provide":[440],"trust":[441],"replace":[443],"more":[444],"costly":[445],"approaches":[446],"certification,":[448],"such":[449],"as":[450],"manually":[451],"reading":[452],"code.":[455],"missing":[460],"piece":[461],"Coq-based":[464],"today.":[467],"safety":[471],"guarantees,":[472],"thus":[474],"shows":[475],"build":[481],"front-ends.":[484]},"counts_by_year":[{"year":2026,"cited_by_count":2}],"updated_date":"2026-03-20T23:20:44.827607","created_date":"2025-10-10T00:00:00"}
