| title | TAF Agent | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| emoji | 🔬 | ||||||||||||||||||||||||||||||||
| colorFrom | blue | ||||||||||||||||||||||||||||||||
| colorTo | green | ||||||||||||||||||||||||||||||||
| sdk | static | ||||||||||||||||||||||||||||||||
| pinned | true | ||||||||||||||||||||||||||||||||
| license | apache-2.0 | ||||||||||||||||||||||||||||||||
| short_description | 29 anti-bullshit LLM diagnostics in browser. 4 langs. | ||||||||||||||||||||||||||||||||
| tags |
|
||||||||||||||||||||||||||||||||
| language |
|
Diagnose any transformer LLM in 30 seconds. Free. No GPU. No signup. 28 browser-only modes · 4 languages · 37 Lean+Mathlib-verified theorems · 0 telemetry.
🌐 Live: https://karlesmarin.github.io/tafagent · HF Space: https://huggingface.co/spaces/karlexmarin/taf-agent 📦 Source: https://github.com/karlesmarin/tafagent · Lean repo: https://github.com/karlesmarin/lean-taf 📄 Papers: Predicting How Transformers Attend (Marín 2026) — a continuing I → II → III series: Part I · Part II · Part III · Lean formalization (each explained below) 🗂️ Dataset: taf-attention-decay (58 measurements, 32 models)
The third paper — Predicting How Transformers Attend, Part III — opens a second, orthogonal axis, and this release brings it into the tool.
🪜 Depth map — everything before this measured a model along distance (γ — how far
attention reaches). Depth map reads the depth axis straight from config.json: the two
independent geometric axes side by side (distance γ_geom ⟂ depth L_crit/N), the layer
where the attention regime changes (L_crit/N = log_θ(T/2π)·(d_head/64)^(1/√12)), the three
RoPE scales (λ₀ · T_cross · T_max), and — for models in the shipped γ atlas — the δ
band-position lead (γ_obs − γ_geom) as an exploratory hint of where the J-lens advantage
band sits. Built with Part III's honesty caveats in front: L_crit is not the commitment
knee, and the three depth observables (transport / writing / commitment) are measured, not
derived — so the mode says so and doesn't fake them. Browser-only, no inference, full 4-language
support (mode + guided demo + autocomplete + manual). Try it:
?demo=depth.
📚 The papers, now as a continuing series — the docs no longer point at one paper. Manual,
inventory and README now present Predicting How Transformers Attend as a I → II → III
sequence and explain what each part contributes: Part I (the distance axis + γ atlas),
Part II (the six-axis decomposition + learned imprint ν = −1/2π), Part III (the depth
axis) and the Lean 4 / Mathlib formalization backbone (52 theorems, 0 sorrys). New
dedicated v0.13 manual card, matching inventory entry, and a fixed/expanded BibTeX.
Two things, both born from what the community actually asked for:
💾 Fit Check ("will it fit?") — the #1 recurring question on the HF forum, answered
before you download anything. Model + precision (fp16/bf16/int8/nf4 or any GGUF quant) +
GPU + target context → the full VRAM budget (weights + KV cache + scratch), a verdict
that tells you which side is the problem (weights-bound vs KV-bound — at 128K the KV
cache of an 8B model can equal its weights), the max context that does fit, and the
cheapest rescue (quantized cache → lower precision → partial offload). Same budget math as
Launch Flags — the two can never disagree. Try it: ?demo=fitcheck.
🌍 Demos and results in your language — until v0.11 the menus were translated but the
guided demos and the recipe results (reasons, actions, step interpretations) came out in
English. Fixed at the root: demos follow the browser language automatically, and the
Python recipe engine now emits message codes the UI localizes into EN/ES/FR/ZH (all 8
recipes migrated; English kept as fallback). Guarded by a real-browser regression test
(test_lang.mjs: Spanish locale, clean storage, full demo + full Profile, zero English
residue) and a new CI job that sweeps every mode in every language on each push.
Every one of the 28 modes now has a 🎬 Demo button that runs a short guided walkthrough — watch the tool work, understand the result, then repeat it with your own data.
| What's new | Detail |
|---|---|
| 🎬 Demo button on every mode | Or open ?demo=<mode> (e.g. ?demo=profile). Step banners fill + highlight the inputs, click the real buttons, produce the real result, then append a plain-language "What this tells you" panel — section by section, with honesty caveats. |
| 🌍 Fully localized | EN / ES / FR / ZH (230 demo strings, idiom-reviewed; standard terms like KV-cache, γ, θ kept in English). |
| 🔗 Self-teaching & shareable | The companion field guide deep-links its Try it boxes straight into the matching demo. |
Browser-only, no inference, no new dependencies — index.html untouched (buttons inject via JS). Full notes: docs/RELEASE_NOTES_v0.11.md.
Three additions, all browser-only — no inference, no server.
| Mode | What it answers |
|---|---|
| 🧠 Memory Reality Check | "My model says 128k / 1M context — what does that actually mean?" Detects the architecture (full-attention / SWA / SSM-Mamba / RWKV / linear / TTT / hybrid) from config.json and tells you how its memory really works and how it fails — e.g. why a Mamba/RWKV model misses an exact needle. Detection validated against 13 live HF configs. |
| 📊 Prediction vs Reality | "Don't take the numbers on faith." Compares TAF's predictions against MEASURED values (the shipped dataset or your Diagnose-CLI JSON), with a confidence score — and lets you contribute your measurement back to the public dataset, server-less. |
| ✅ Confidence score | Every viability verdict now carries a 0–100% confidence with a ✓/⚠ evidence checklist (γ measured vs closed-form, validated regime, benchmark available). Predictions are never shown as absolute truth. |
Plus: HF model-id autocomplete on every input, the manual reorganised into scannable cards, and an honest fix to the long-context verdict (the d_horizon ≡ T_eval tautology, see docs/LIMITATIONS.md). Full notes: docs/RELEASE_NOTES_v0.10.md.
The dozen GGUF/VRAM calculators on HF answer one question: does it fit in my GPU? None answer the harder one: does it fit and still work? These three close that gap — all browser-only, no inference.
| Mode | What it answers | Pain it kills |
|---|---|---|
| 🧵 YaRN Planner | "How do I set rope_scaling to extend context — and will quality hold?" |
The most-asked HF question; nobody gives the config and a γ/d_horizon verdict |
| 🧊 GGUF Bridge | "This Q4 fits 8GB — but is it brain-dead past 30K?" | Reads the .gguf header (HTTP Range, no full download) → quality verdict + per-quant comparison the VRAM calcs skip |
| 🚀 Launch Flags | "What -ngl for Llama-70B-Q4 on my 4090?" |
Exact llama.cpp / Ollama command (-ngl, -c, --no-mmap, KV-type) + warns when your context is past the usable horizon |
Each mode solves a documented HuggingFace community pain. All run in your browser with zero inference — pure metadata + math. 3 of these have no comparable tool publicly available (validated against existing literature):
| Mode | What it answers | Pain it kills |
|---|---|---|
| 🪟 Unmask | "Is max_position_embeddings honest?" |
Mistral-7B-v0.1 says 32k, attends ~8k via SWA |
| 📜 Chat-template | "Which CLI flag for lm-eval / vLLM / transformers?" | lm-eval-harness #1841 silently halves multi-turn accuracy |
| 🎯 Arena CI | "Is GPT-4 actually better than Claude — or tied?" | Chatbot Arena strips CIs from public leaderboard |
| 🧪 Contamination | "Should I trust this MMLU score?" | Open LLM Leaderboard v1 killed by MMLU/HellaSwag contamination |
| ⚖️ Quant | "Will NF4 break my model? AWQ better?" | Generic "AWQ ~95%" claims hide model-specific cliffs |
| 🔀 Drift | "lm-eval gives 67.2, vLLM gives 65.1. Bug or noise?" | arxiv 2506.09501 — eval irreproducibility |
| 🔍 NIAH→Reason | "Does my 128k-context model actually reason there?" | RULER paper finding — needle pass ≠ multi-hop reasoning |
Plus a search-as-you-type HF Hub autocomplete on every model-id input (5 minute cache, privacy-noted, gated-license link).
▶ Try it now · v0.7 release notes
This tool was built by one independent researcher, with no funding, no team, no GPUs beyond a single consumer card, and the full collaborative help of large language models as research instruments. It exists because the paper it complements (Predicting How Transformers Attend — Marin 2026) needed a way for any reader to check the framework's predictions on their own model in seconds, without installing anything, without paying anyone, and without trusting a server they don't control.
If it is useful to you — even once — that is enough. If it is wrong about your model, please tell us so we can fix the framework. The point is the common ground, not the artefact.
The closed-form predictions used in TAF Agent have explicit assumptions
and a regime of validity. When the in-tool Validity Gate fires (γ
panel banner), or when you want the full discussion of what the
closed-forms assume and when they break, see
docs/LIMITATIONS.md.
Drop in a model id (or paste any HuggingFace public model), get a falsifiable answer to "will this work?" — backed by the Thermodynamic Attention Framework (TAF) formulas:
Decision recipes
- Will Llama-3-8B serve 32K context with NIAH retrieval? → X-2
- Should I train a custom 7B model or pay for API access? → X-1
- I have $5,000 — what model can I afford to train? → X-3
- Cheapest GPU to serve Llama-70B at 100M tokens/day? → X-5
- Soft KV decay or hard cutoff for compression? → X-19
Diagnostic recipes (NEW v0.4 — sesión 29 findings 2026-04-28)
- How much positional bias did training imprint on this model? → X-21 (✗ retired — ν is not identified by the data; measure γ directly instead)
- Does this model fit the empirical compute-context invariant band? → X-22
- Is this checkpoint pre- or post-induction-head? → X-23
Each as a chain of TAF formulas (paper §17, §19, §20, §24, §26, §28-§30) rendered with full audit trail. Every number is deterministic Python; nothing is hallucinated.
- 📇 Profile a model — paste id, get all 5 recipes scored as a unified TAF Card (best starting point)
- 🆚 Compare models — 2-3 candidates side-by-side on the same recipe
- 💬 Ask plain English — free-form question, in-browser LLM picks the right recipe
- 📋 Pick recipe — manual selection with full form control
- Static HTML/JS hosted on GitHub Pages (truly unlimited bandwidth)
- Python TAF computation runs in your browser via Pyodide (no server-side compute)
- Plain-English synthesis runs Qwen2.5-0.5B-Instruct in your browser via WebLLM (your GPU/CPU, your electricity, ~350MB cached after first load)
- Model
config.jsonfiles fetched directly from HuggingFace Hub (free, public, no auth for non-gated models) - Your data never leaves your browser
If 1 user or 1 million users hit it, our cost stays the same: $0.
A reasonable question. Three TAF Agent USPs are only possible with browser-only architecture:
- Your inputs never leave the tab. No server = no privacy compromise. The "anti-bullshit" framing depends on this.
- $0 forever, even at infinite scale. Static Spaces have unlimited HF bandwidth; there is no cold-start, no queue, no rate limit. Going viral can't bankrupt the project.
- Lean+Mathlib formal verification ships as a static manifest. The 37 theorem badges link to source lines that anyone can
lake buildthemselves — no hidden server logic.
Bonus: in-browser LLM (WebLLM running Qwen2.5-0.5B in your GPU/CPU) for the 💬 Ask mode is only viable in static. Pyodide running deterministic Python in your browser means you can audit every number — no opaque server.
The cost: HuggingFace's "Trending Spaces" algorithm favours Gradio/Streamlit Spaces. We compensate with detailed tags + forum presence + this README. If you'd prefer a Python-API client, that's a planned gradio_client companion (v0.9).
Supports any model whose config.json is parseable:
| Family | Examples | Status |
|---|---|---|
| RoPE-MHA | pythia, gpt-j, original LLaMA | ✓ supported |
| RoPE-GQA | Llama-3, Mistral, Qwen2.5, gemma-2 | ✓ supported |
| ALiBi | BLOOM, Falcon | ✓ supported |
| AbsPE | gpt2 family | ✓ supported |
| SWA (sliding window) | Mistral, gemma-2, phi-3 | ✓ supported |
| SSM | Mamba, Mamba-2 | ✓ partial (γ doesn't apply, KV does) |
| Any HF Hub public model | (any) | ✓ via 📥 Fetch button |
Interface available in:
- 🇬🇧 English
- 🇪🇸 Español
- 🇫🇷 Français
- 🇨🇳 中文
Click flags top-right to switch.
git clone https://github.com/karlesmarin/tafagent
cd tafagent
python -m http.server 8000
# open http://localhost:8000The directory cli/diagnose_model.py is the command-line companion
described in the paper Predicting How Transformers Attend (Marin 2026).
It characterises any causal language model from HuggingFace in
minutes on CPU and produces the raw gamma_obs, R², and
thermodynamic profile used in the manuscript.
pip install torch transformers numpy
python cli/diagnose_model.py --model EleutherAI/pythia-2.8b --fast --cpuThe directory data/ ships every measurement referenced in the
paper (343 JSON files, ~5.5 MB). See data/README.md for the layout.
- Chrome / Edge / Firefox 113+ for WebGPU acceleration (recommended)
- Older browsers fall back to CPU inference (slower but works)
- ~2 GB free RAM for the synthesis LLM
- ~350 MB disk for model cache (one-time)
Three new diagnostic recipes derived from cross-model panel analysis (n=22 LLMs):
Predicted γ on RANDOM-token input via the learned-imprint formula:
γ_random = γ_pade(θ, T) + ν · log_10(P / 14M)
ν = −1/(2π) ≈ −0.1592
✗ Not identified by the data. Part II says so upfront — "ν remains unconstrained by the current data": bootstrap 95% CI
[−0.260, −0.008], only an 11.1% chance a resampled slope lands within 1% of −1/(2π), and pythia-31m drives much of the panel slope. Part II also withdrew the "0.3% match" framing by name. What does hold: the Lean algebra, and the AbsPE falsification control (GPT-2 family, no 2π period → ν ≈ 0, mean |ν| = 0.028 vs RoPE range [−0.5, +0.3]). So the slope is consistent with −1/(2π) but not strongly identified — which is too weak a footing for a shipped diagnostic, hence the retirement. The recipe stays callable so published runs remain reproducible; its verdict is prefixed✗ RETIREDand must not be acted on. Seedocs/LIMITATIONS.md§2.
Instead: measure γ directly (Recipe 1 / cli/diagnose_model.py) rather than
predicting it from ν.
Computes the empirical Chinchilla×attention invariant:
K = γ × log(N² · D) where D = 20·N (Chinchilla compute-optimal)
Empirical band: K ∈ [34, 68] (51.2 ± 16.8, CV=0.329, n=22)
K-outliers indicate scaling/training anomalies. Llama-3-8B with γ=1.045 gives K=74.6 (z=1.39, high-K OUTLIER) — flags supra-Padé attention.
Uses the Δγ probe (cheaper than ICL benchmark):
sign(γ_text − γ_random) > 0 ⟺ post-induction-head formation
Pre-IH (P<400M, n=7): ⟨Δγ⟩=−0.19±0.26 Post-IH (P≥400M, n=15): ⟨Δγ⟩=+0.03±0.26
Use case: monitor training trajectories without running ICL benchmarks; detect anomalous checkpoints.
gamma_decompose_v2(...)— 6-axis decomposition with the new imprint axisfamous_constant_proximity(...)— detects γ-cluster on famous constants (e.g. CodeLlama-13b γ=0.382 ≈ 1−1/φ golden conjugate)
The TAF Agent was applied to its own author's paper (recursive Sócrates audit) and to the agent's own formula implementations. Several real bugs were detected and corrected. All v0.5.0–v0.5.2 users running diagnostics on Phase B models (γ > 1: LLaMA-2/3, Mistral, Gemma, Qwen2.5-7B near-Hagedorn) received incorrect KV-compression recommendations. This release fixes all known issues.
-
D_f_closed(KV compression window): replaced asymptotic / Hagedorn-buffer branches with discrete cumulative sum. Old code clamped Phase B (γ>1) to N when truth was ~3 % of N (LLaMA-3-8B at γ=1.046 with N=2000 should compress to ~750 tokens; old code returned 2000). Boundary γ ∈ [0.99, 1.01] was off by factor ~2×. Now exact for any γ. -
partition_Z(γ=1, N): waslog(N + 0.5), missing Euler-Mascheroni constant γ_E ≈ 0.577 (~7 % underestimate of H_N). Nowlog(N) + γ_E. -
free_energy_F: returned−log(Z)(β·F convention). Now−log(Z)/γ, consistent with the Helmholtz definition F = −T·log(Z) and the thermodynamic identity S = γ·(U − F). -
γ_pred: replaced obsoleteC/lnθheuristic withγ_Padé(θ, T_eval)(paper §3.3).
Re-running the empirical δ corrections of gamma_decompose against the
panel revealed:
| Constant | Hardcoded | Panel re-audit | Verdict |
|---|---|---|---|
| δ_GQA | +0.11 | +0.115 | ✓ replicates |
| δ_SWA | −0.21 | originally fit on n=1 model | ✗ disabled (insufficient data) |
| δ_post_IH | −0.15 | group-mean ≈ 0 (n=16 yes / 6 no) | ⚠ flagged exploratory |
| δ_instruct (v2) | −0.10 | n=3, p=0.06 (already noted) | ⚠ flagged exploratory |
gamma_decompose and gamma_decompose_v2 now return per-axis status fields
(delta_SWA_status, delta_post_IH_status, etc.) and a top-level
calibration_warning so consumers can detect which corrections are reliable.
The TAF Card UI now displays a collapsible "v0.5.3 — Calibration audit" banner in all four supported languages (EN/ES/FR/ZH) explaining this.
The framework's own self-audit found that paper §5.2 Theorem 5.2 claims
C_V(γ=1, N) = (log N)²/4. Sócrates triangulation (numerical Python +
Sage exact rational + SymPy symbolic integral) confirms the correct
asymptotic is (log N)²/12 — a factor-3 error in the paper's truncated
Z-expansion proof. The agent's heat_capacity_Cv already computes the
correct value via numerical derivative of U; only the paper's analytic
formula is wrong, not the tool. A formal erratum will be published as a
separate document.
22/22 unit tests pass (tests/test_taf_formulas.py), including regression
tests for D_f Phase B, partition_Z γ_E, free_energy_F convention, and
δ_SWA disabled.
These bugs survived prior reviews because the affected code paths were exercised mainly on Phase A models (γ < 0.95) where the asymptotic approximation is close enough. Phase B (γ > 1) and the boundary near Hagedorn (|γ−1| < 0.05) were under-tested. The agent now uses direct discrete computation, so accuracy is uniform across all γ.
First transformer-attention framework with formal machine-proof backing.
Sage Groebner basis (algebraic decision procedure) + Lean Mathlib4 (dependent type theory) dual-tool verification of 15 algebraic identities of TAF critical exponents.
Given measured γ ∈ Phase A (0,1), checks 12 D-SAGE identities derived from TAF exponents (β=γ−1, ν=1/(1−γ), η=γ−1, etc.):
- D-SAGE-1 (★★ core):
2η² + η·γ_χ + 1 = 0(quadratic identity) - D-SAGE-2:
β·χ = −1(Phase A) - D-SAGE-4:
α + χ = 2 - D-SAGE-5:
α + γ_χ = 2(2 − γ) - D-SAGE-6:
β·γ_χ = −2γ² + 4γ − 3(factored) - Rushbrooke + Josephson tautologies (d=1)
- Fisher residual =
γ(2γ−3)/(1−γ)(NOT zero generally; corrects "triple closure") - η=2γ refutation (Phase A residual > 0; paper 1's claim was wrong)
- D-SAGE-7:
c · |ν_imprint| · 2π = 3(dimensional closure)
Pass = framework intact. Fail = bf16 outlier, quantization artifact, or γ measurement noise.
Paper 1 originally claimed η = 2γ. Sage Groebner + Lean Mathlib4 detected
this is algebraically wrong (residual (−4γ³+5γ+1)/(1−γ) > 0 ∀γ ∈ Phase A).
Correct value: η = γ − 1, satisfying D-SAGE-1.
# Sage verification
docker run --rm -v "$(pwd)/analysis:/work" sagemath/sagemath:latest \
sage /work/sage_recursive_sweep_2026-04-30.sage
# Lean verification
docker run --rm -v "$(pwd)/lean_taf:/work" \
leanprovercommunity/lean:latest \
-c "cd /work/taf && lake build"Build success: 1973/1973 jobs (Mathlib4 + 15 TAF theorems), DONE_EXIT=0.
Lean code: lean_taf/taf/Taf/Identities.lean
Sage script: analysis/sage_recursive_sweep_2026-04-30.sage
This tool is at v0.11. There's a long way to go.
- 🐛 Report bugs: https://github.com/karlesmarin/tafagent/issues
- 🌐 Translate: add a language to
js/i18n.js, send a PR - 🧪 Falsify a prediction: run the tool on a model where you have ground-truth measurements; if our verdict disagrees with reality, open an issue. We take refutations as seriously as confirmations.
- ➕ New recipe: implement an X-N recipe in
python/taf_browser.pyfollowing the pattern of X-1...X-19 - ➕ New preset: add a popular model to the
PRESETSdict - 📝 Improve docs / examples: anything that helps the next person
TAF Agent is the practical, browser-side tool that closes the loop of a continuing paper series — Predicting How Transformers Attend (Marín 2026). Each part opens a new axis, and the modes here compute from all three:
- Part I — Analytic Power-Law Theory. The distance
axis. Attention decays as a power law
A(d) ∝ d^−γ; a closed-form predictorγ_Padé(θ,T)fixes γ from the RoPE geometry alone; the γ atlas places dozens of models on one axis, and the phase structure (Hagedorn point γ=1) separates looks far from concentrates. This is the foundation nearly every mode in the app reads from. - Part II — A Six-Axis Decomposition. Splits the
measured γ into six interpretable axes (RoPE geometry + training + architecture …), pins the
learned imprint
ν ≈ −1/2π, adds an NF4 precision-direction rule, and machine-verifies the algebraic backbone in Sage + Lean. - Part III — From Attention to Residual Computation. Opens the orthogonal depth axis: three separately-measurable observables (transport / writing / commitment), an exact direct-logit-attribution identity, and the honest reframe that the J-lens "advantage band" is a property of the transport operator, not of stored content. This powers the new 🪜 Depth map mode.
- Formalization — A Machine-Checked Backbone. The
load-bearing identities across I–III, verified in Lean 4 / Mathlib (52 theorems, zero
sorrys).
If this tool helps you — paper or code:
@misc{marin2026taf1,
author = {Mar\'in, Carles},
title = {Predicting How Transformers Attend: Analytic Power-Law Theory, Phase Transitions, and Practical Compression Tools},
year = {2026},
note = {Part I},
url = {https://doi.org/10.5281/zenodo.19826342},
doi = {10.5281/zenodo.19826342},
}
@misc{marin2026taf2,
author = {Mar\'in, Carles},
title = {Predicting How Transformers Attend, Part II: A Six-Axis Decomposition with the Learned Imprint},
year = {2026},
url = {https://doi.org/10.5281/zenodo.19960572},
doi = {10.5281/zenodo.19960572},
}
@misc{marin2026taf3,
author = {Mar\'in, Carles},
title = {Predicting How Transformers Attend, Part III: From Attention to Residual Computation},
year = {2026},
url = {https://doi.org/10.5281/zenodo.21288263},
doi = {10.5281/zenodo.21288263},
}
@misc{marin2026tafagent,
author = {Marin, Carles},
title = {{TAF Agent}: Browser-Based Transformer Diagnostic Tool},
year = {2026},
url = {https://karlesmarin.github.io/tafagent},
}Apache-2.0 (this code).
Synthesis model: Qwen2.5-0.5B-Instruct distributed under Apache-2.0.
This tool would not exist without:
- The model commons: EleutherAI, Meta AI, Alibaba Qwen team, Mistral AI, Google DeepMind, Microsoft Research, AI2, BigScience, TII, DeepSeek-AI, HuggingFace SmolLM team, the Mamba authors, the RWKV community, and OpenAI for releasing weights and configs publicly.
- The infrastructure commons: Pyodide, WebLLM, HuggingFace Hub, GitHub Pages, jsdelivr CDN.
- The maintainers of
transformers,numpy,scipy,sympy,tokenizers,accelerate, and the dozens of small libraries that make modern ML possible. - The wider ML community — bloggers, reproducibility checkers, Discord moderators, Stack Overflow answerers, blog post writers (Lilian Weng, Andrej Karpathy, Sebastian Raschka, Jay Alammar, Sasha Rush, Phil Wang, the EleutherAI team, and many more) whose explanations carried the author through every concept this tool uses.
- Large language models as research instruments — Claude (Anthropic), GPT (OpenAI), Gemini (Google DeepMind), Mistral, Llama, DeepSeek, Grok, Qwen-Chat, and Microsoft phi — for the symbolic derivations, sage cross-checks, prose revision, audit work, and long-form co-writing that underlie both this tool and the underlying paper.
The author was the hand that typed; the work itself belongs to the commons that made it possible.