{"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":false,"raw_author_name":"Wendlasida Ouedraogo","raw_affiliation_strings":["Siemens Mobility, France / Inria, France"],"raw_orcid":null,"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"],"raw_orcid":null,"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"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Inria, France / \u00c9cole Polytechnique, France","institution_ids":["https://openalex.org/I142476485"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":2,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":0.2585,"has_fulltext":true,"cited_by_count":2,"citation_normalized_percentile":{"value":0.61672523,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":97,"max":98},"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":"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:HAL:hal-03912170v2","is_oa":true,"landing_page_url":"https://hal.science/hal-03912170","pdf_url":"https://hal.science/hal-03912170v2/file/2306.12411.pdf","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":"info:eu-repo/semantics/article"}],"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","display_name":"Industry, innovation and infrastructure","score":0.5899999737739563}],"awards":[],"funders":[],"has_content":{"pdf":true,"grobid_xml":true},"content_urls":{"pdf":"https://content.openalex.org/works/W4317433133.pdf","grobid_xml":"https://content.openalex.org/works/W4317433133.grobid-xml"},"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":{"Context":[0],"A":[1],"compiler":[2,22],"consists":[3],"of":[4,7,20,28,31,58,75,92,129,135,161,170,173,181,244,283,307,314,333,339,347,394,412,420],"a":[5,21,40,81,90,133,149,154,158,166,192,201,210,277,330,340,461],"sequence":[6],"phases":[8],"going":[9],"from":[10,89],"lexical":[11],"analysis":[12],"to":[13,54,109,123,125,142,190,196,204,231,240,251,275,292,312,328,342,449,482],"code":[14],"generation.":[15],"Ideally,":[16],"the":[17,25,32,37,67,73,126,214,218,233,268,305,383,392,455],"formal":[18,26],"verification":[19,27,128],"should":[23],"include":[24],"each":[29],"component":[30],"tool-chain.":[33],"An":[34],"example":[35,300],"is":[36,77,140,249,264,287,310,337,357,367,382,409,480],"CompCert":[38],"project,":[39],"formally":[41,55,167,484],"verified":[42,111,136,168,187,219,316,331,387,467,485],"C":[43],"compiler,":[44],"that":[45,52,86,260,273,302,304,313,355,364,407,478],"comes":[46,471],"with":[47,95,157,200,472],"associated":[48,96],"tools":[49,431,435],"and":[50,152,217,227,254,285,361,379,391,428,444,475],"proofs":[51],"allow":[53],"verify":[56],"most":[57,171],"those":[59],"components.":[60],"Inquiry":[61],"However,":[62],"some":[63,346],"components,":[64],"in":[65,271,318,324,359,362,389,400,464],"particular":[66,363],"lexer,":[68,220],"remain":[69],"unverified.":[70],"In":[71,121],"fact,":[72],"lexer":[74,84,150,155,176,332,336,396],"Compcert":[76],"generated":[78,234,456],"using":[79,308],"OCamllex,":[80,199,378,416],"lex-like":[82],"OCaml":[83],"generator":[85,134],"produces":[87],"lexers":[88,137,188,206,301,388,459],"set":[91],"regular":[93],"expressions":[94],"semantic":[97],"actions.":[98],"Even":[99],"though":[100],"there":[101],"exist":[102],"various":[103],"approaches,":[104],"like":[105],"CakeML":[106],"or":[107,198,438],"Verbatim++,":[108],"write":[110,205],"lexers,":[112],"they":[113],"all":[114],"have":[115],"only":[116],"limited":[117],"practical":[118,230],"applicability.":[119],"Approach":[120],"order":[122],"contribute":[124],"end-to-end":[127],"compilers,":[130],"we":[131,371],"implemented":[132],"whose":[138],"usage":[139],"similar":[141,195],"OCamllex.":[143,320],"Our":[144,257,404],"software,":[145],"called":[146],"Coqlex,":[147,377],"reads":[148],"specification":[151],"generates":[153],"equipped":[156],"Coq":[159],"proof":[160],"its":[162,365,395],"correctness.":[163],"It":[164],"provides":[165],"implementation":[169,258],"features":[172],"standard,":[174],"unverified":[175],"generators.":[177],"Knowledge":[178],"The":[179,236],"conclusions":[180],"our":[182,222],"work":[183,270,402],"are":[184,349,432,460],"two-fold.":[185],"Firstly,":[186],"gain":[189],"follow":[191],"user":[193,237],"experience":[194,353],"lex/flex":[197],"domain-specific":[202],"syntax":[203],"comfortably.":[207],"This":[208,335,352],"introduces":[209],"small":[211],"gap":[212,226],"between":[213,376],"written":[215],"artifact":[216],"but":[221,417],"design":[223,294],"minimizes":[224],"this":[225],"makes":[228],"it":[229,248,286,479],"review":[232],"lexer.":[235,246],"remains":[238],"able":[239],"prove":[241],"further":[242],"properties":[243],"their":[245],"Secondly,":[247],"possible":[250,481],"combine":[252],"simplicity":[253],"decent":[255],"performance.":[256],"approach":[259],"uses":[261],"Brzozowski":[262],"derivatives":[263],"noticeably":[265,289],"simpler":[266],"than":[267,415,423],"previous":[269,401],"Verbatim++":[272,381],"tries":[274],"generate":[276],"deterministic":[278],"finite":[279],"automaton":[280],"(DFA)":[281],"ahead":[282],"time,":[284],"also":[288],"faster":[290,422],"thanks":[291],"careful":[293],"choices.":[295],"Grounding":[296],"We":[297,321],"wrote":[298],"several":[299,465],"suggest":[303,406],"convenience":[306],"Coqlex":[309,323,356,408,470],"close":[311],"standard":[315],"generators,":[317],"particular,":[319],"used":[322],"an":[325],"industrial":[326],"project":[327],"implement":[329],"Ada.":[334],"part":[338],"tool":[341,385],"optimize":[343],"safety-critical":[344],"programs,":[345],"which":[348],"very":[350],"large.":[351],"confirmed":[354],"usable":[358],"practice,":[360],"performance":[366,374,393],"good":[368],"enough.":[369],"Finally,":[370],"performed":[372],"detailed":[373],"comparisons":[375],"Verbatim++.":[380,424],"state-of-the-art":[384],"for":[386,436],"Coq,":[390],"was":[397],"carefully":[398],"optimized":[399],"by":[403],"results":[405],"two":[410,418],"orders":[411,419],"magnitude":[413,421],"slower":[414],"Importance":[425],"Verified":[426,458],"compilers":[427,468],"other":[429],"language-processing":[430],"becoming":[433],"important":[434],"safetycritical":[437],"security-critical":[439],"applications.":[440],"They":[441],"provide":[442],"trust":[443],"replace":[445],"more":[446],"costly":[447],"approaches":[448],"certification,":[450],"such":[451],"as":[452],"manually":[453],"reading":[454],"code.":[457],"missing":[462],"piece":[463],"Coq-based":[466],"today.":[469],"safety":[473],"guarantees,":[474],"thus":[476],"shows":[477],"build":[483],"front-ends.":[486]},"counts_by_year":[{"year":2026,"cited_by_count":2}],"updated_date":"2026-08-21T09:56:20.448147","created_date":"2025-10-10T00:00:00"}
