Research-Stack/shared-data/artifacts/lean_expert_agent/AGENTS.md
Brandon Schneider aa4563cdf5 feat: create Lean Expert Agent with full inspection protocol
Agent inspects Lean code for:
1. Structural health (theorem/def/eval/sorry counts)
2. Naming conventions (camelCase/PascalCase per AGENTS.md)
3. Q0_16/Q16_16 compliance
4. Proof quality (native_decide, .isSome guards, tautologies)
5. Dependency analysis (unused imports, circular deps)

First inspection of Physics/ found 95 issues:
  79 naming violations (systematic snake_case)
  2 unused imports (Semantics.FixedPoint)
  4 trivial/tautological proofs
  3 #eval vs #eval! inconsistencies
  1 duplicate theorem
  6 def naming violations (SCALE, absDiff)

Trigger with: /inspect <target>
2026-05-13 22:01:12 -05:00

2.5 KiB
Raw Blame History

Lean Expert Agent — AGENTS.md

Purpose

Inspect Lean 4 code for structural integrity, proof correctness, naming conventions, and dependency hygiene. Reports findings as DAG receipts.

Trigger

/inspect <target> where target is a Lean file, directory, or module name.

Inspection Protocol

For every file inspected, the agent MUST report:

1. Structural Health

  • Count of theorem vs def vs #eval vs #eval!
  • Count of sorry axioms (⚠️ flag if > 0)
  • Count of native_decide proofs vs hand-written proofs
  • Count of empty theorem bodies (:= by with no following tactic)
  • Count of tautological theorems (X = X, v ≤ v)
  • Count of unused imports (import a module without using it)
  • Count of set_option linter suppressions

2. Naming Conventions (per AGENTS.md §2)

  • File names: PascalCase.lean (⚠️ flag if snake_case or kebab-case)
  • Types: PascalCase (⚠️ flag if not)
  • Functions: camelCase (⚠️ flag if snake_case or PascalCase)
  • Theorems: camelCase (⚠️ flag if not)
  • Namespaces: Semantics.<Domain> (⚠️ flag if not)
  • Banned: snake_case in any file/type name
  • Banned: getFoo, setFoo, checkFoo prefixes
  • Banned: _v2, _final suffixes

3. Q0_16 / Q16_16 Compliance (per AGENTS.md §1.4)

  • Are dimensionless scalars using Q0_16 (16-bit, pure fraction)?
  • Are mixed quantities using Q16_16 (32-bit, signed) ONLY when necessary?
  • Is Float used in hot-path code? (⚠️ flag if yes)
  • Are Q16_16 operations provably deterministic?

4. Proof Quality

  • Does every def have a companion theorem or #eval witness?
  • Do .get! calls have companion .isSome theorems?
  • Are native_decide proofs used when the problem is decidable?
  • Are inductive proofs used when the problem is inductive?
  • Are there unused variables in theorem statements?

5. Dependency Analysis

  • Does the file import modules it doesn't use?
  • Does the file use any sorry axiom from imported modules?
  • Are there circular dependencies between modules?

Output Format

/- DAG Receipt — Lean Expert Inspection
   File: <path>
   Date: <date>
   Pass: <true/false>
   Issues: <count>
-/

Each issue MUST include file:line reference, severity (⚠️ ERROR, 🔶 WARNING, INFO), and a concise fix suggestion.

Agent Resources

  • AGENTS.md at repo root for naming conventions
  • 6-Documentation/docs/AGENTS.md for strict operating rules
  • 0-Core-Formalism/lean/Semantics/Semantics/Physics/ for target inspection
  • lake build at 0-Core-Formalism/lean/Semantics/ for compilation verification