SYNTOLOGY HomeExplorerAtlasCodeMethodologyAboutDevelopersFeedPricing
Paper · 2502.04671 · 2025

ProofWala: A Framework for Multilingual Proof Data Synthesis and Theorem-Proving

arXiv · PDF · Open in the Atlas

Code that ran

We lifted 11 functions out of this paper's own repositories and ran 7 of them in a sandbox. "Ran" means the function executed on a synthesized input and returned a value. It is not a reproduction of the paper's results.

RepositoryRoleRan
trishullab/itp-interface canonical 7 of 11
FunctionStatusWhere it lives
hash_file Ran trishullab/itp-interface/src/itp_interface/coq_ser_api/util.py
code served (permissive licence) · get_code("6dc4491e66ae0fb1")
ident_in_context Ran trishullab/itp-interface/src/itp_interface/coq_ser_api/contexts.py
code served (permissive licence) · get_code("50ea60e7ec2f9ff9")
kill_comments Ran trishullab/itp-interface/src/itp_interface/coq_ser_api/coq_util.py
code served (permissive licence) · get_code("2fdfffb69083a4d8")
parse_thm_name Ran trishullab/itp-interface/src/itp_interface/lean/simple_lean4_sync_executor.py
code served (permissive licence) · get_code("c1e203f9425f4f97")
preprocess_command Ran trishullab/itp-interface/src/itp_interface/coq_ser_api/coq_util.py
code served (permissive licence) · get_code("82cc335eefbeb384")
truncate_tactic_context Ran trishullab/itp-interface/src/itp_interface/coq_ser_api/contexts.py
code served (permissive licence) · get_code("a7787d26211adf44")
unwrap Ran trishullab/itp-interface/src/itp_interface/coq_ser_api/util.py
code served (permissive licence) · get_code("8a0871707686b4d1")
get_stem Not yet run trishullab/itp-interface/src/itp_interface/coq_ser_api/coq_util.py
code served (permissive licence) · get_code("c985b33f279e4717")
parse_lean_text Not yet run trishullab/itp-interface/src/itp_interface/lean/parsing_helpers.py
code served (permissive licence) · get_code("206c89cee9c03676")
split_by_char_outside_matching Not yet run trishullab/itp-interface/src/itp_interface/coq_ser_api/util.py
code served (permissive licence) · get_code("c3e90da69e6423b2")
strip_scraped_output Not yet run trishullab/itp-interface/src/itp_interface/coq_ser_api/contexts.py
code served (permissive licence) · get_code("9bfbe73c9e018184")

Repositories linked to this paper

Some links come from the archived Papers with Code dataset (CC BY-SA 4.0): attribution and licence.

Abstract

Neural approaches to theorem proving require robust infrastructure for interfacing with interactive theorem provers (ITPs), extracting structured proof data, and executing proof search at scale. However, existing tooling is often assistant-specific and oriented toward file-level execution, making repository-scale analysis and parallel experimentation challenging. We present ProofWala, a multilingual proof engineering framework built around \texttt{itp-interface}, a reusable library for programmatic interaction with ITPs. For Lean 4, we implement a meta-programmed interaction layer executing inside the elaborator, enabling semantically faithful tactic-level tracing alongside declaration- and dependency-level extraction across entire repositories. This design extends beyond traditional REPL-style interaction by supporting project-wide analysis, environment cloning, and pooled execution of proof states. The same interface abstraction supports multiple versions of Rocq, yielding a unified cross-assistant pipeline. Built on this infrastructure, ProofWala provides standardized multilingual proof datasets, model training utilities, and parallel proof search algorithms. Using the framework, we demonstrate that multilingual training across Lean and Rocq enables cross-lingual and cross-domain transfer. We observe statistically significant improvements on Lean Mathlib and in domain adaptation (CategoryTheory), while other settings exhibit consistent upward trends. We open-source the full framework, parallel proof search module, datasets, and models across two repositories: ProofWala (https://github.com/trishullab/proof-wala) and the itp-interface library (https://github.com/trishullab/itp-interface).

For agents

The same record, over MCP at https://syntology.ai/mcp:

get_harvested_code_for_paper("2502.04671")
get_code_for_paper("2502.04671")
have("2502.04671")

Connect an agent — have() is free.