Skip to main content

lean4-prove

Retrieval-augmented Lean4 proof generation with self-improving lab. Queries 94k+ exemplars from DeepSeek-Prover V1+V2, uses hybrid search (BM25 + semantic + graph), generates via Claude, compiles via lean-interact (20 parallel silos), retries on failure. Lab mode: HF dataset ingestion, parallel compilation, English↔Lean4 autoformalization, GRPO training with compiler rewards, convergence loop, and adversarial benchmarking.

Quellinformationen

Repository
grahama1970/agent-stack-public
Letzte Quellaktivität
24. September 2026 um 15:51
Erkannte Sprache von SKILL.md
Englisch
Sterne
0
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
34 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
lean4-prove
description
Retrieval-augmented Lean4 proof generation with self-improving lab. Queries 94k+ exemplars from DeepSeek-Prover V1+V2, uses hybrid search (BM25 + semantic + graph), generates via Claude, compiles via lean-interact (20 parallel silos), retries on failure. Lab mode: HF dataset ingestion, parallel compilation, English↔Lean4 autoformalization, GRPO training with compiler rewards, convergence loop, and adversarial benchmarking.
allowed-tools
Bash, Read, Docker
triggers
["prove this","lean4 proof","generate proof","verify lean4","lean4-prove","formalize this requirement","lab ingest","lab compile","lab formalize","lab converge","lab benchmark","lab report"]
metadata
{"short-description":"Retrieval-augmented Lean4 proof generation with self-improving lab"}
provides
["lean4-prove","lean4-lab"]
composes
["memory","code-runner","scillm","edge-verifier","embedding","task-monitor","ops-runpod","create-gpt","episodic-archiver","agentic-evals"]
disciplines
["ml-training","evaluation-quality"]
> STOP. READ THIS ENTIRE SKILL.MD BEFORE CALLING ANY ENDPOINT. # lean4-prove Retrieval-augmented Lean4 proof generation for engineering requirements. Uses 94,000+ proven theorems from DeepSeek-Prover V1+V2 to guide proof synthesis via hybrid search (BM25 + semantic + graph traversal). ## Architecture (updated 2026-03-29) ``` Requirement + Tactics + Persona │ ▼ ┌───────────────────────────┐ │ 1. RECALL similar proofs │ ← Hybrid search on ArangoDB │ from 94k+ exemplars │ (BM25 + semantic + graph) └───────────────────────────┘ │ ▼ ┌───────────────────────────┐ │ 2. BUILD support pack │ │ - Validated imports │ │ - Tactic patterns │ │ - Similar proofs │ └───────────────────────────┘ │ ▼ ┌───────────────────────────┐ │ 3. /code-runner session │ ← LLM via /scillm (httpx) │ propose → compile → │ DoD: lean4 HTTP compile │ fix → retry (5 rounds) │ Escalation: text → claude └───────────────────────────┘ │ ▼ ┌───────────────────────────┐ │ 4. COMPILE via HTTP svc │ ← lean4-prove-service:8604 │ lean-interact backend │ (lean4 v4.28.0 + Mathlib) └───────────────────────────┘ │ ┌────┴────┐ │ │ Success Failure │ │ ▼ ▼ Return /code-runner retries with error feedback (up to max_rounds) ``` ### Key Changes (2026-03-29) - **LLM**: Uses `/scillm` via httpx (NOT `claude -p` subprocess) - **Retry loop**: Delegated to `/code-runner` (propose→compile→fix→retry) - **Compile**: lean4-prove-service HTTP at :8604 (NOT docker exec) - **Model**: `text` (scillm cascade) by default, not `opus` - **Toolchain**: Pinned to Lean v4.28.0 (Mathlib not yet released for v4.29.0) ## Why Retrieval-Augmented? 1. **Determinism** - Exact provenance: "used these 3 proofs as templates" 2. **Version alignment** - Exemplars use imports that actually work 3. **Fewer hallucinations** - Constrained to lemmas that exist 4. **Tactic idioms** - Transfers working `simp` sets and proof patterns ## Usage ```bash # Basic proof ./run.sh --requirement "Prove n + 0 = n" # With tactics preference ./run.sh -r "Prove commutativity of addition" -t "simp,ring,omega" # With persona context ./run.sh -r "Prove message integrity" -p "cryptographer" # Via stdin (JSON) echo '{"requirement": "Prove n + 0 = n", "tactics": ["rfl"]}' | ./run.sh # Custom settings (uses /scillm text cascade by default) ./run.sh -r "Prove theorem" --candidates 3 --retries 5 --model text ``` ## Output ```json { "success": true, "code": "import Mathlib\n\ntheorem list_append_length (xs ys : List α) :\n (xs ++ ys).length = xs.length + ys.length := by\n induction xs with\n | nil => simp\n | cons x xs ih => simp [List.cons_append, ih]", "attempts": 1, "candidate": 0, "errors": null, "retrieval": { "retrieved": 5, "tactics_added": ["simp", "aesop", "norm_num", "intro"], "imports_count": 3 } } ``` On failure: ```json { "success": false, "code": null, "attempts": 9, "errors": [ "Candidate 0 attempt 1: unknown identifier 'natAdd'", "Candidate 1 attempt 1: type mismatch..." ], "retrieval": { "retrieved": 5, "tactics_added": ["simp", "exact"], "imports_count": 3 } } ``` ## Parameters | Parameter | Default | Description | | ------------------- | --------- | ------------------------------------- | | `--requirement, -r` | (required)| Theorem to prove | | `--tactics, -t` | none | Comma-separated preferred tactics | | `--persona, -p` | none | Persona context for generation | | `--candidates, -n` | 3 | Number of /code-runner sessions | | `--retries` | 3 | Max rounds per /code-runner session | | `--model` | text | scillm model (text, gemini, deepseek) | | `--container` | lean_runner | Docker container (legacy, ignored) | | `--timeout` | 120 | Compilation timeout (seconds) | ## Environment Variables ```bash # Proof generation LEAN4_TIMEOUT=120 # Compile timeout (seconds) LEAN4_MAX_RETRIES=3 # Retries per /code-runner session LEAN4_CANDIDATES=3 # Number of /code-runner sessions LEAN4_PROVE_MODEL=text # scillm model (text cascade by default) # LLM backend (uses /scillm httpx, NOT claude -p) SCILLM_API_BASE=http://localhost:4001 # scillm Docker proxy SCILLM_PROXY_KEY=<proxy-key> # scillm auth key # Compilation backend (HTTP service preferred) LEAN4_SERVICE_URL=http://127.0.0.1:8604 # lean4-prove-service FastAPI # Retrieval (requires ArangoDB with ingested dataset) LEAN4_RETRIEVAL=1 # Enable/disable retrieval (default: 1) LEAN4_RETRIEVAL_K=5 # Number of exemplars to retrieve ARANGO_URL=http://127.0.0.1:8529 # ArangoDB connection ARANGO_DB=memory # Database name (same as memory skill) ``` ## Dataset Setup The skill uses 94,000+ theorems from DeepSeek-Prover V1+V2 for retrieval: - **V1**: 27,503 theorems (`status: "proven"`) - **V2**: 66,708 theorems (`status: "ok"` for 11,689 proven + others) One-time ingest: ```bash # Ingest full dataset (~5 min) ./ingest.sh # Or limit for testing ./ingest.sh --limit 1000 ``` This populates the `lean_theorems` collection in ArangoDB with: - `formal_statement` - The theorem statement - `formal_proof` - Working proof code - `header` - Validated imports (Mathlib, Aesop, etc.) - `tactics` - Extracted tactic names - `source` - "deepseek-prover-v1" or "deepseek-prover-v2" - `status` - "proven" (V1) or "ok"/"failed"/etc. (V2) ## LLM Backend Uses `/scillm` Docker proxy via httpx (NOT `claude -p` subprocess). The scillm text cascade routes to DeepSeek-V3 by default. ## HTTP API (lean4-prove-service at :8604) The Docker container exposes these endpoints: | Endpoint | Method | Description | |----------|--------|-------------| | `/health` | GET | Worker count + timeout | | `/compile` | POST | Compile Lean4 code (no LLM) | | `/compile-batch` | POST | Compile multiple proofs in parallel | | `/step-verify` | POST | Per-tactic incremental elaboration | | `/prove` | POST | **Full pipeline**: generate via scillm → compile → retry | ### POST /prove (composition endpoint) This is what `/create-evidence-case` and other skills call via httpx. No subprocess. ```json POST http://127.0.0.1:8604/prove { "requirement": "Prove that for all natural numbers n, n + 0 = n", "tactics": ["rfl", "simp"], "model": "text", "max_retries": 3, "timeout": 60 } ``` Response: ```json { "success": true, "code": "theorem test (n : Nat) : n + 0 = n := by simp", "attempts": 1, "errors": null } ``` The container calls `/scillm` (via `host.docker.internal:4001`) for LLM generation and compiles locally with lean-interact (20-worker pool, Mathlib cached). ## Compilation Backend The lean4-prove-service container uses lean-interact with a 20-worker LeanServerPool. Mathlib is cached in Docker volumes (`lean4-lake-cache`, `lean4-mathlib-cache`). Toolchain pinned to **v4.28.0** (Mathlib not yet released for v4.29.0). ## Requirements 1. **lean4-prove-service** Docker container running (lean-interact + Mathlib cached) 2. **scillm** Docker proxy running at :4001 (reachable from container via `host.docker.internal`) 3. **/code-runner** skill available (for CLI invocation; not used by HTTP API) 4. **ArangoDB** running locally (for retrieval - optional but recommended) 5. **Dataset ingested** via `./ingest.sh` (one-time setup) ## Tactics Common Lean4/Mathlib tactics to suggest: | Tactic | Use For | | ----------- | ----------------------- | | `rfl` | Reflexivity proofs | | `simp` | Simplification | | `ring` | Ring arithmetic | | `omega` | Linear arithmetic | | `decide` | Decidable propositions | | `exact` | Exact term construction | | `apply` | Apply lemmas | | `induction` | Inductive proofs | ## Examples ### Engineering: List operations ```bash ./run.sh -r "Prove length(xs ++ ys) = length(xs) + length(ys)" -t "simp,induction" ``` ### Engineering: State machine property ```bash ./run.sh -r "When mux_enable is false, output shall equal default_value" \ -p "embedded systems engineer" -t "simp,cases,decide" ``` ### Engineering: Protocol correctness ```bash ./run.sh -r "Prove message append preserves checksum: checksum(msg ++ data) = update(checksum(msg), data)" \ -t "simp,induction,ring" ``` ### Cryptography ```bash ./run.sh -r "Prove that XOR is self-inverse: a ⊕ a = 0" -p "cryptographer" -t "simp,decide" ``` ### Complex theorem ```bash ./run.sh -r "Prove the sum of first n natural numbers equals n*(n+1)/2" \ -t "induction,simp,ring" \ --candidates 5 \ --retries 5 ``` ## Difference from lean4-verify | Skill | Purpose | | -------------- | ---------------------------------------------------------------- | | `lean4-verify` | Compile-only. Takes Lean4 code, returns pass/fail | | `lean4-prove` | Full pipeline. Takes requirement, generates + compiles + retries | Use `lean4-verify` when you already have Lean4 code to check. Use `lean4-prove` when you need to generate the proof from a requirement. ## Advanced: Memory Integration The skill integrates with the memory project for hybrid retrieval (BM25 + semantic + graph traversal): ```bash # One-time setup: embed theorems and create edges ARANGO_PASS=yourpass ARANGO_DB=memory python integrate_memory.py ``` This creates: - **Embeddings**: 39k+ theorem embeddings in `lesson_embeddings` for semantic search - **Tactic edges**: 10k+ edges between theorems sharing primary tactics - **Similarity edges**: Edges between semantically similar theorems (cosine > 0.7) This enables: - **Semantic search**: Find theorems by meaning, not just keywords - **Multi-hop traversal**: "What proofs use similar tactics?" - **Impact analysis**: "If I change lemma X, what breaks?" ### Proof Jobs Queue (Control Extraction Pipeline) The control extraction pipeline (s12_framework_mapper) queues `proof_jobs` in ArangoDB for lean4-prove to consume. Each job represents a requirement→control pair where the requirement claims to implement a framework control (NIST, CWE, SPARTA, etc.). **Queue**: `proof_jobs` collection (40,210 pending jobs as of 2026-02-25) ```json { "source_type": "requirement_control", "requirement_chunk": "datalake_chunks/<key>", "control_id": "AC-2", "control_ref": "sparta_controls/<key>", "framework": "NIST", "requirement_text": "The system SHALL implement automated account management...", "status": "pending", "priority": 1, "attempts": 0 } ``` **On success**: Creates `proof_requirement_edges` and updates `requirement_control_edges.lean4_status` from "pending" to "proved". **Priority**: NIST and SPARTA jobs are priority 1; others priority 2.
Auf GitHub ansehen
Diese SKILL.md ist sehr gross, daher zeigt SkillsMP hier nur den ersten Abschnitt. Auf GitHub ansehen