{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/rango-adaptive-retrieval-augmented-proving","title":"Rango: Adaptive Retrieval-Augmented Proving for Automated Software Verification","arxiv_id":"2412.14063","date":"2024-12-18","proceeding":null,"authors":["Kyle Thompson","Nuno Saavedra","Pedro Carrott","Kevin Fisher","Alex Sanchez-Stern","Yuriy Brun","João F. Ferreira","Sorin Lerner","Emily First"],"abstract":"Formal verification using proof assistants, such as Coq, enables the creation of high-quality software. However, the verification process requires significant expertise and manual effort to write proofs. Recent work has explored automating proof synthesis using machine learning and large language models (LLMs). This work has shown that identifying relevant premises, such as lemmas and definitions, can aid synthesis. We present Rango, a fully automated proof synthesis tool for Coq that automatically identifies relevant premises and also similar proofs from the current project and uses them during synthesis. Rango uses retrieval augmentation at every step of the proof to automatically determine which proofs and premises to include in the context of its fine-tuned LLM. In this way, Rango adapts to the project and to the evolving state of the proof. We create a new dataset, CoqStoq, of 2,226 open-source Coq projects and 196,929 theorems from GitHub, which includes both training data and a curated evaluation benchmark of well-maintained projects. On this benchmark, Rango synthesizes proofs for 32.0% of the theorems, which is 29% more theorems than the prior state-of-the-art tool Tactician. Our evaluation also shows that Rango adding relevant proofs to its context leads to a 47% increase in the number of theorems proven.","url_abs":"https://arxiv.org/abs/2412.14063v3","url_pdf":"https://arxiv.org/pdf/2412.14063v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"rango-adaptive-retrieval-augmented-proving","repo_url":"https://github.com/rkthomps/coq-modeling","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"retrieval","task_name":"Retrieval"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2412.14063","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2412.14063"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/rkthomps/coq-modeling","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":6},"by_repo_kind":{"official":{"samples":6,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"b96a0bdb77eaf58c","entry":"count_lines","repo":"rkthomps/coq-modeling","repo_kind":"official","path":"src/data_management/jsonl_utils.py","file_url":"https://github.com/rkthomps/coq-modeling/blob/HEAD/src/data_management/jsonl_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b96a0bdb77eaf58c"}},{"code_sha256_prefix":"d8e3d3ad58fa6224","entry":"deduplicate","repo":"rkthomps/coq-modeling","repo_kind":"official","path":"src/data_management/jsonl_utils.py","file_url":"https://github.com/rkthomps/coq-modeling/blob/HEAD/src/data_management/jsonl_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d8e3d3ad58fa6224"}},{"code_sha256_prefix":"23fe27750bab8686","entry":"normalize","repo":"rkthomps/coq-modeling","repo_kind":"official","path":"src/data_management/line_dict.py","file_url":"https://github.com/rkthomps/coq-modeling/blob/HEAD/src/data_management/line_dict.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"23fe27750bab8686"}},{"code_sha256_prefix":"08cd801ba4ac1d35","entry":"proof_length","repo":"rkthomps/coq-modeling","repo_kind":"official","path":"src/evaluation/cross_tool_analysis.py","file_url":"https://github.com/rkthomps/coq-modeling/blob/HEAD/src/evaluation/cross_tool_analysis.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"08cd801ba4ac1d35"}},{"code_sha256_prefix":"cd96465ac9f23efc","entry":"read_file","repo":"rkthomps/coq-modeling","repo_kind":"official","path":"src/data_management/line_dict.py","file_url":"https://github.com/rkthomps/coq-modeling/blob/HEAD/src/data_management/line_dict.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cd96465ac9f23efc"}},{"code_sha256_prefix":"c828dfd665bea0f1","entry":"remove_proof_qed","repo":"rkthomps/coq-modeling","repo_kind":"official","path":"src/evaluation/cross_tool_analysis.py","file_url":"https://github.com/rkthomps/coq-modeling/blob/HEAD/src/evaluation/cross_tool_analysis.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c828dfd665bea0f1"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}