math-verify
Check one mathematical statement in Julia, analytically, symbolically or numerically, together with a case that should make the check fail, and keep the check…
Skill by michakraus
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/michakraus-math-verify
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, research, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/math-verify
What's inside
- Skill name
math-verify- Description
- Check one mathematical statement in Julia, analytically, symbolically or numerically, together with a case that should make the check fail, and keep the check as a script in scripts/. Load it first, before answering from memory or reading a paper, whenever the request asks whether a formula, an identity, a scheme or a property holds, even a one-line question. Typical words: derivation, identity, proof, prove, lemma, symplectic, symplecticity, energy, invariant, conserved quantity, Jacobi identity, Poisson bracket, order of convergence, consistency, exactness, holds, numerical confirmation, Symbolics. For every claim of a whole .tex manuscript, use the latex-verifier agent; for timings or allocations, julia-performance.
- License
- MIT
- Instructions
- 77 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Verifying a mathematical statement
## Julia, always
Every analytic, symbolic or numerical check is written in **Julia**. `SymPyPythonCall.jl` is
acceptable where Julia has no equivalent, but the surrounding script is Julia.
The bracket package is the model: SymPy appears **only inside `scripts/`**. Prefer `Symbolics.jl` where it suffices.
Known symbolic traps in this tree:
- `simplify` **harms code generation**. `simplify=false` is the default of the Euler–Lagrange package; leave
it alone.
- `simplify` and `substitute` on a shared expression are writes, even when the result is
discarded: later fields generate their terms in a different order. Prove a code-generation change
harmless by A/B against a pristine worktree of the same head, with `--check-bounds=yes`. Compare
the rebuilt functions and their values; an invariant such as orthonormality cannot show it.
- `==` between two separately generated functions passes or fails by platform rounding. Split it
into `.f ===` (same function), `.p ==` (same parameters) and the values at `rtol = 1e-12`. A
local run on this `apple-m4` host proves nothing about the CI runners.
- An unsubstituted `Differential(t)` can survive codegen, producing a function that throws only
when evaluated — and if nothing evaluates it, silently.
- Anything to be symbolically differentiated must branch with `max`/`min`, not `?:`.
## Design the check before running it
**State what would make it fail, and run that case too.**
The recorded failure: `so(3)` was used as a control for the Jacobi identity. It satisfies Jacobi
because it is **Bianchi class A** — a reason unrelated to the property under test — so it passed
for every case, including the ones it was meant to exclude. An erratum in the papers followed.
A control that cannot fail is not evidence. Before trusting a green result, ask:
1. What input should make this check report failure?
2. Does it?
3. Is the property I measured the property I claimed, or a weaker one that happens to coincide?
For a structure-preservation claim, that third question is where the mistakes live.
`SLRK` is **constraint-preserving but not symplectic**; the manuscript's proof had a hole, and
the checks that "confirmed" symplecticity were measuring constraint preservation.
## Numerical checks
- Compare against a **tolerance derived from the method**, not a round number. A test that
passes at `1e-8` because nothing was computed passes just as well.
- Distinguish "the invariant is preserved to order h^p" from "the invariant is preserved". Fit
the rate; do not assert a single residual.
- A finite result is not a converged one. Check the convergence flag, not just the return value.
- Gauge- and parametrisation-dependence is a real effect here: DVRK's order depends on the gauge
of ϑ, and Poincaré invariants are gauge-blind by construction. Know which before writing a
test that "detects" it.
## Archive the script
The script goes into the relevant repository's `scripts/` directory and is cited from wherever
the claim is written down — `\script{}` in a manuscript, a link in a `Knowledge/` page.
**A claim whose script was thrown away is an unverified claim**, however convincing the run was
at the time. `/tmp` is not an archive.
## Report
```
## <statement being checked>
Verdict: holds / fails / holds under <conditions> / inconclusive
Method: <analytic | symbolic | numerical>, <what was computed>
Control: <the case expected to fail, and whether it did>
Script: <repo>/scripts/<file>
```
If the answer is "holds only under conditions the statement did not mention", that is the
finding — say so rather than reporting a pass. And record a **negative** result as carefully as
a positive one; a disproved conjecture that is not written down gets re-attempted.From michakraus/ResearchHarness, MIT.
More from michakraus/ResearchHarness
- 0.598score
plan-parts
michakraus
Plan work as parts that are each one pull request, and write each part's spec so that the builder-critic loop can build it and judge it: the parts table, the…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
build-reviewed
michakraus
Build one part of a decomposed task file whose tier cell is reviewed: one part-builder, one blind part-critic, at most one fix round by a new part-builder…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
julia-package-audit
michakraus
Audit the correctness and code quality of a whole Julia package, and return one findings report in a fixed format: type piracy, type instabilities, avoidable…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
julia-performance
michakraus
Measure Julia performance so that the number means something: allocations, type stability, timings and before/after comparisons, each in a cold process with…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
julia-release
michakraus
Release and register a Julia package in the General registry.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
build-part
michakraus
Run the next part of a decomposed task file through the builder-critic loop.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
julia-surgical-fix
michakraus
Fix a reported problem in a Julia repository so that the diff holds that fix and nothing else, then check it again: the scope rule, the fix and re-verify…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
latex-revision
michakraus
Run a revision pass over a LaTeX manuscript with colour-marked changes.
SkillAFreshness: A★ 2Claude Code +9 - 0.594score
julia-structure
michakraus
Answer a structural question about Julia code with tools that read it as Julia, not with grep: julia-methods.jl, Kaimon's live session and julia-callers.jl…
SkillAFreshness: A★ 2Claude Code +9 - 0.565score
which-model
michakraus
Probe: report which model runs a typed slash command whose frontmatter names the tier small.
SkillAFreshness: A★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 9, 2026 (19 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/michakraus/ResearchHarness
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from michakraus
- 0.598score
plan-parts
michakraus
Plan work as parts that are each one pull request, and write each part's spec so that the builder-critic loop can build it and judge it: the parts table, the…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
build-reviewed
michakraus
Build one part of a decomposed task file whose tier cell is reviewed: one part-builder, one blind part-critic, at most one fix round by a new part-builder…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
julia-package-audit
michakraus
Audit the correctness and code quality of a whole Julia package, and return one findings report in a fixed format: type piracy, type instabilities, avoidable…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
julia-performance
michakraus
Measure Julia performance so that the number means something: allocations, type stability, timings and before/after comparisons, each in a cold process with…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
julia-release
michakraus
Release and register a Julia package in the General registry.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
build-part
michakraus
Run the next part of a decomposed task file through the builder-critic loop.
SkillAFreshness: A★ 2Claude Code +9
Cite this page
math-verify skill. Agent Mart. https://agentmart.dev/skills/michakraus-math-verify (last updated 2026-10-24)