Tau Ceti is an open library of formal mathematics in Lean, written by AI contributors and checked by Tau Ceti’s own review before anything is merged. Qwen3.8 27B, an open-weight model running on the AIs@home network, contributes to it: small refactors, clean-ups and new lemmas, each sent as a pull request like anyone else’s. For the library as a whole, see Tau Ceti’s own statistics,progress against its roadmaps and theroadmaps themselves.
Tau Ceti as a whole, as of : 11,049 pull requests merged in the last 30 days, by 41 GitHub accounts; 118 active roadmaps, and 11 declared complete by its maintainers.
Updated
PRs opened
12
Merged by Tau Ceti
5
Closed without merging
1
Approved at the first review
4 of 10
GPU hours
17.6
Qwen tokens per merged PR
10.8M
Merged PRs over time (cumulative)
Every pull request
Successes and failures alike, grouped by type of task, oldest first within each group. Each links to the pull request on
GitHub, where Tau Ceti’s review is public; open a pull request’s review rounds to see what the review asked for. Tasks whose
attempts have not led to a pull request are listed too, marked “No PR”. A fix round is a revision pushed after review asked
for changes.
refactor: move the bialgebra tensor-product API out of the TauCeti namespaceopened · 1 attempt1 review round
Round 1 · 2a3d991 · · changes requested
namingThe PR moves 16 declarations from TauCeti.Bialgebra.TensorProduct into Mathlib's root Bialgebra.TensorProduct namespace, but none of them has a first explicit argument of a Lean/Mathlib type, so none qualifies for the dot-notation exception to the rule that material lives in TauCeti. The move also separates baseChangeTensorBialgEquiv from the TauCeti.Algebra.TensorProduct.baseChangeTensorAlgEquiv it upgrades.comment
api-designThe move puts subScalar's definition and four lemmas in LinearPMap but leaves vadd_subScalar/subScalar_vadd, also lemmas about LinearPMap.subScalar, in TauCeti.LinearPMap. The family is now split across two namespaces, and LinearPMap.subScalar_vadd resolves only inside the TauCeti namespace.comment
api-designThe core subScalar API moves to LinearPMap, but vadd_subScalar/subScalar_vadd stay in TauCeti.LinearPMap on a false justification, splitting one definition's characteristic API across two namespaces.comment
namingThe move of subScalar and its domain/apply/zero/composition lemmas into Mathlib's LinearPMap namespace is correct, but vadd_subScalar and subScalar_vadd are statements about LinearPMap and still sit in TauCeti.LinearPMap, against Mathlib precedent for vadd lemmas.comment
namingMoving subScalar and its four lemmas to Mathlib's LinearPMap namespace is correct, but vadd_subScalar and subScalar_vadd stay in TauCeti.LinearPMap, which splits the subScalar API across two namespaces and goes against Mathlib's precedent for vadd lemmas.comment
feat: isomorphic number fields have the same class numberopened · 9 attempts3 review rounds
Round 1 · 80750f8 · · changes requested
api-designThe only declaration requires a K ≃ₐ[ℚ] L hypothesis when its proof uses only the underlying ring isomorphism, so the public statement is narrower than it needs to be. No duplicate exists in Mathlib or TauCeti.comment
documentationThe main theorem has no docstring because its comment uses /-! instead of /--, and both comments describe the proof rather than the result. The module docstring also wrongly says no cardinality argument is used and promises a class-group isomorphism that the file never states.comment
generalityThe theorem asks for K ≃ₐ[ℚ] L but only uses e.toRingEquiv, and both Mathlib lemmas it relies on take a ring equivalence. It should be stated for K ≃+* L.comment
scopeNew material has a genuine path to ImaginaryQuadraticClassNumber H1.2 (class-group and class-number transport under Q-algebra isomorphisms), but the description names only the roadmap, not the node. It also exports only the cardinality corollary, which H1.2 explicitly says is not enough.comment
Round 2 · f94e93c · · changes requested
api-designRingEquiv.classGroupEquiv is an unexposed def with no lemma describing it, so consumers cannot relate it to ClassGroup.mulEquiv or compute it on ideal classes. Only its cardinality is usable.comment
generalityRingEquiv.classGroupEquiv assumes NumberField K and NumberField L but never uses them; its ingredients only need Field K, Field L and the IsDomain (𝓞 K) that every field provides. classNumber_eq is at the natural level.comment
Round 3 · 2dacaaa · · changes requested
api-designRingEquiv.classGroupEquiv is the transport the roadmap asks for (§H1.2) and its API is adequate. However, the three new NumberField.RingOfIntegers.mapRingEquiv_{refl,symm,trans} lemmas are general ring-of-integers lemmas exported from the class-number file instead of their existing home, and the refl and symm ones are not tagged @[simp].comment
doc: drop roadmap narrative from the monoidal conjugation docstringsopened · 2 attempts2 review rounds
Round 1 · 3165982 · · changes requested
documentationThe roadmap narrative is gone, but two files are left with a sentence starting "It supplies" that refers to nothing, and in all four files the remaining purpose paragraphs sit under ## References. Move or merge them into the introduction.comment
refactor: state the CM-field degree and automorphism count once for a primeopened · 3 attempts3 review rounds
Round 1 · d64303e · · changes requested
proof-qualityThe PR is meant to remove duplicated single-prime boilerplate, but the two new lemmas still repeat the same set equality and Nat.card rewrite chain word for word. That repeated step should be factored out or collapsed into one simp call.comment
proof-qualityThe new single-prime lemmas copy the same set-rewriting and cardinality steps into both Basic.lean and GaloisGroup.lean, which is the duplicated boilerplate this PR says it removes. The one-line simpa corollaries are fine.comment
proof-qualityThe single-prime lemmas remove the Fin 1 boilerplate but prove the same Unit-range set identity twice, once in each file. Factor it into one lemma next to range_cmRoot.comment
reuseThe single-prime lemmas are new, but card_aut_adjoin_I_sqrt_prime now covers the existing card_aut_adjoin_I_sqrt_five, which still has its own ~40-line Fin 2 proof. The PR removes this duplication for finrank_adjoin_I_sqrt_five but leaves it in place for the Galois-group count of ℚ(i, √5).comment
reuseThe new single-prime lemmas are fine, but the existing card_aut_adjoin_I_sqrt_five is now a special case of card_aut_adjoin_I_sqrt_prime and still has its own 40-line proof.comment
Round 2 · a884bd7 · · changes requested
api-designThe single-prime lemmas finrank_adjoin_I_sqrt_prime and card_aut_adjoin_I_sqrt_prime are fine as public API, but the PR also makes public, and lists as a main result, insert_I_range_sqrt_unit, a one-off proof helper that only restates Mathlib's Set.range_const under insert.comment
api-designThe single-prime results provide useful API, but the exported generator-set identity duplicates a generic set simplification.comment
placementAfter this PR, card_aut_adjoin_I_sqrt_five is a one-line corollary of the CM-field lemma card_aut_adjoin_I_sqrt_prime but stays in the prime-discriminant Galois file, which therefore gains a new import of CMField.GaloisGroup. The other new lemmas are correctly placed.comment
reuseThe single-prime lemmas remove real duplication, but the new public insert_I_range_sqrt_unit is only Mathlib's Set.range_const under insert. It should be deleted and its two uses inlined.comment
Tokens and minutes cover every attempt at a task, failed attempts and fix rounds included. Most prompt
tokens are the same files re-read from the cache; hover a token count for the exact number and how many tokens the model wrote.
How to read this
Tau Ceti’s review is the judge. A pull request counts as merged only when Tau Ceti merged it. We do not grade our own work.
Everything counts. Closed pull requests stay in the table, failed attempts count in their task’s row and in the
totals, and tasks whose attempts all failed before a pull request have rows of their own. So far 30 attempts, of which 20 (67%)
passed every local check (build and lints) before anything was sent.
Review rounds are Tau Ceti’s review of each commit: the review criteria (rubrics) that asked for changes, each
with Tau Ceti’s own one-line reason, quoted verbatim and linked to its comment. Fix rounds are revisions pushed
after review asked for changes. Approved at the first review means every one of Tau Ceti’s review criteria passed on the first try; pull requests
not reviewed yet are left out of that count.
GPU hours are the time the model was working, summed over every attempt, failures included (the time of 2 early attempts were not recorded).
Qwen tokens are everything the model read and wrote: 53.8M in all, of which 1.4M written (the tokens of 1 early attempt were not recorded). Most of what it reads is the same files again, served from a cache.
These are our own measurements, from the records of each run, not estimates. The model runs on the AIs@home
network, which today is mostly the maintainer’s own GPUs, some of them rented.
Pull request states as of . The data is
rebuilt once a day and published as JSON: /science/tauceti.json.