skills/prove/SKILL.md
Formal theorem proving with research, testing, and verification phases
npx skillsauth add rubicanjr/FinCognis proveInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
For mathematicians who want verified proofs without learning Lean syntax.
Before using this skill, check Lean4 is installed:
# Check if lake is available
command -v lake &>/dev/null && echo "Lean4 installed" || echo "Lean4 NOT installed"
If not installed:
# Install elan (Lean version manager)
curl https://raw.githubusercontent.com/leanprover/elan/master/elan-init.sh -sSf | sh
# Restart shell, then verify
lake --version
First run of /prove will download Mathlib (~2GB) via lake build.
/prove every group homomorphism preserves identity
/prove Monsky's theorem
/prove continuous functions on compact sets are uniformly continuous
┌─────────────────────────────────────────────────────────────┐
│ 📚 RESEARCH → 🏗️ DESIGN → 🧪 TEST → ⚙️ IMPLEMENT → ✅ VERIFY │
└─────────────────────────────────────────────────────────────┘
Goal: Understand if/how this can be formalized.
Search Mathlib with Loogle (PRIMARY - type-aware search)
# Use loogle for type signature search - finds lemmas by shape
loogle-search "pattern_here"
# Examples:
loogle-search "Nontrivial _ ↔ _" # Find Nontrivial lemmas
loogle-search "(?a → ?b) → List ?a → List ?b" # Map-like functions
loogle-search "IsCyclic, center" # Multiple concepts
Query syntax:
_ = any single type?a, ?b = type variables (same var = same type)Foo, Bar = must mention bothSearch External - What's the known proof strategy?
mcp__nia__searchmcp__perplexity__searchIdentify Obstacles
Output: Brief summary of proof strategy and obstacles
CHECKPOINT: If obstacles found, use AskUserQuestion:
Goal: Build proof structure before filling details.
Create Lean file with:
sorryAnnotate each sorry:
-- SORRY: needs proof (straightforward)
-- SORRY: needs proof (complex - ~50 lines)
-- AXIOM CANDIDATE: v₂ constraint - will test in Phase 3
Verify skeleton compiles (with sorries)
Output: proofs/<theorem_name>.lean with annotated structure
Goal: Catch false lemmas BEFORE trying to prove them.
For each AXIOM CANDIDATE sorry:
Generate test cases
-- Create #eval or example statements
#eval testLemma (randomInput1) -- should return true
#eval testLemma (randomInput2) -- should return true
Run tests
lake env lean test_lemmas.lean
If counterexample found:
CHECKPOINT: Only proceed if all axiom candidates pass testing.
Goal: Complete the proofs.
Standard iteration loop:
Tools active:
Goal: Confirm proof quality.
Axiom Audit
lake build && grep "depends on axioms" output
Sorry Count
grep -c "sorry" proofs/<file>.lean
Generate Summary
✓ MACHINE VERIFIED (or ⚠️ PARTIAL - N axioms)
Theorem: <statement>
Proof Strategy: <brief description>
Proved:
- <lemma 1>
- <lemma 2>
Axiomatized (if any):
- <axiom>: <why it's needed>
File: proofs/<name>.lean
Use whatever's available, in order:
| Tool | Best For | Command |
|------|----------|---------|
| Loogle | Type signature search (PRIMARY) | loogle-search "pattern" |
| Nia MCP | Library documentation | mcp__nia__search |
| Perplexity MCP | Proof strategies, papers | mcp__perplexity__search |
| WebSearch | General references | WebSearch tool |
| WebFetch | Specific paper/page content | WebFetch tool |
Loogle setup: Requires ~/tools/loogle with Mathlib index. Run loogle-server & for fast queries.
If no search tools available, proceed with caution and note "research phase skipped".
The workflow pauses for user input when:
┌─────────────────────────────────────────────────────┐
│ ✓ MACHINE VERIFIED │
│ │
│ Theorem: ∀ φ : G →* H, φ(1_G) = 1_H │
│ │
│ Proof Strategy: Direct application of │
│ MonoidHom.map_one from Mathlib. │
│ │
│ Phases: │
│ 📚 Research: Found in Mathlib.Algebra.Group.Hom │
│ 🏗️ Design: Single lemma, no sorries needed │
│ 🧪 Test: N/A (trivial) │
│ ⚙️ Implement: 3 lines │
│ ✅ Verify: 0 custom axioms, 0 sorries │
│ │
│ File: proofs/group_hom_identity.lean │
└─────────────────────────────────────────────────────┘
| Domain | Examples | |--------|----------| | Category Theory | Functors, natural transformations, Yoneda | | Abstract Algebra | Groups, rings, homomorphisms | | Topology | Continuity, compactness, connectedness | | Analysis | Limits, derivatives, integrals | | Logic | Propositional, first-order |
/loogle-search - Search Mathlib by type signature (used in Phase 1 RESEARCH)/math-router - For computation (integrals, equations)/lean4 - Direct Lean syntax accessdevelopment
Goal-based workflow orchestration - routes tasks to specialist agents based on user goals
tools
Wiring Verification
development
Connection management, room patterns, reconnection strategies, message buffering, and binary protocol design.
development
Screenshot comparison QA for frontend development. Takes a screenshot of the current implementation, scores it across multiple visual dimensions, and returns a structured PASS/REVISE/FAIL verdict with concrete fixes. Use when implementing UI from a design reference or verifying visual correctness.