Ways to contribute
-
Add new problem formalisations.
We encourage adding formalisations of open conjectures from:
- Literature: textbooks, problem books, research papers (including arXiv)
- Community resources: Wikipedia, MathOverflow, OEIS
- Problem lists: Millennium Problems, Erdős Problems, Ben Green's list, Kourovka notebook
- Open issues describing problems you'd like to see formalised. Include links to references and a precise informal statement.
- Formalise a proposed problem. Browse unassigned new conjectures or good first issues and comment to claim one.
-
Improve tagging and referencing — add missing
@[AMS]tags or source links to existing files. - Fix misformalisations. PRs fixing incorrect formal statements are especially appreciated.
Contribution process
- Sign the Google CLA (required once per contributor).
- Open a GitHub issue describing your planned contribution.
- Fork the repository and create a branch.
- Add your formalised conjecture(s) in the appropriate directory.
- Ensure the project builds:
lake build. - Submit a Pull Request.
File structure conventions
Every .lean file should follow this structure:
/-
Copyright YYYY The Formal Conjectures Authors.
Licensed under the Apache License, Version 2.0 …
-/
import FormalConjectures.Util.ProblemImports
/-!
# Problem Title
*Reference:* [source](https://…)
-/
namespace MyProblem
@[category research open, AMS 11]
theorem my_conjecture : Statement := by
sorry
end MyProblem
The @[category] attribute
Every statement must have exactly one category tag:
@[category research open]— unsolved open problem@[category research solved]— informally or formally solved@[category research formally solved using lean4 at "url"]— has a formal Lean 4 proof@[category graduate]/undergraduate/high_school]@[category test]/API]— internal use
The @[AMS] attribute
Every statement must have at least one
AMS MSC2020
subject tag. Use #AMS in VS Code to list all valid values.
@[AMS 11] -- Number Theory
@[AMS 5 11] -- Combinatorics + Number Theory
Style guidelines
- One problem per file (variants and special cases may share a file).
- Include a reference comment linking to the source of the conjecture.
- Use
theoremorlemmafor problem statements. - For questions ("Does P hold?"), use the
answer(sorry)elaborator. - Bespoke definitions are fine; add basic API tests for them.
- Follow the same AI usage conventions as Mathlib.
Getting started with Lean 4
If you're new to Lean 4, install elan, lake, and Lean, then:
git clone https://github.com/google-deepmind/formal-conjectures
cd formal-conjectures
lake exe cache get # download prebuilt Mathlib oleans
lake build
Join the Formal Conjectures Zulip channel for help and discussion.