Six general-purpose modules ported from mm-link/mm-lean/src/ into
Infoductor/Comonad/, namespaced for Infoductor and adapted to
Lean 4 v4.30.0-rc2:
- ComonadFinder.lean — automatic detection of comonadic subgraph
patterns in Lean proof terms (FNV-1a-64
content hashing, recursive shape encoding,
cluster detection, metric computation,
JSON-shaped wire format `comonad/1`).
816 → 712 lines (test section dropped on
port; see § 13 note).
- ComonadCommands.lean — `#findComonadsJSON`, `#comonadNode`,
`#comonadSubgraph`, `#comonadClusters`
navigation commands.
- Convolution.lean — cross-theorem pattern composition.
`String.containsSubstr` (removed in Lean
4.30) replaced with inline arrow-counter.
- ExtractConsts.lean — extracting constant names from proof
terms by category (recursors, eliminators,
interesting lemmas).
- ExtractDefn.lean — extracts comonadic clusters as Lean
`def` skeletons.
- GridView.lean — plain-text proof visualization
(Fitch-style table + nested tree +
declaration info). Mathematica-specific
output formatters dropped per the
"Infoductor is general-purpose" rule;
Mathematica consumers can re-add them in
mm-lean (or a separate Mathematica-bridge
project). 291 → 187 lines.
`Infoductor.Comonad` lean_lib declared separately from
`Infoductor` (which holds Foundation). Mathlib is required for
`Tactic.Explode` proof-decomposition primitive used by the
comonad analysis. Foundation does NOT import Mathlib —
consumers depending only on Foundation pay zero Mathlib build
cost (verified: default `lake build` is 10 jobs, all Foundation;
`lake build Infoductor.Comonad` triggers the Mathlib subgraph).
Test sections in ComonadFinder, ComonadCommands, ExtractDefn,
Convolution were stripped during port: Lean 4 v4.30 changed
`info.value?` access for theorems and the original test-time
`#findComonads` / `#analyzeCluster` / `#patternCompose` calls
fail with "has no proof value (axiom or opaque?)" or "elaboration
function not implemented". Restoration is a Test/ harness work-
item, not blocking the production library.
Mathematica-coupled mm-lean files NOT moved (stay in mm-lean):
- Main.lean, PantographMain.lean (orchestrators)
- Mathematica.lean + Mathematica/ (bridge to Wolfram)
- Provers.lean + Provers/ (LJT, Tableaux — domain-specific)
- All `.m`, `.wl`, `.nb` Mathematica scripts.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| Infoductor | ||
| .gitignore | ||
| Infoductor.lean | ||
| lake-manifest.json | ||
| lakefile.toml | ||
| lean-toolchain | ||
| LICENSE | ||
| NOTICE | ||
| README.md | ||
Infoductor
Generic Lean 4 library + tooling for algebraic organization of code
repositories. Provides the mechanism for declaring methodologies
that organize a Lean codebase — registries, attributes, the universal
restructure operation, the Edit monad / Context comonad pair —
without committing to which methodology a downstream project uses.
Pairs naturally with the Pantograph project (the conductor of an electric train sits atop the pantograph hardware). "Info-ductor" — it conducts information (structure, classifications, methodology) through your codebase.
Status
Phase A: Foundation lib landed (2026-05-01). Tactics, Pantograph plugin, and headless Runner sub-libs are planned but not yet present.
Sub-libraries
| Library | Status | Role |
|---|---|---|
Infoductor.Foundation |
✅ landed | Pure algebra: meta-mirror types, Edit monad, Context comonad, restructure, @[macroAlias] / @[methodology] / @[metaPath] attributes + registries. No domain commitments. |
Infoductor.Tactics |
planned | Reference dispatcher tactics (cubical_search-shaped) built on Foundation primitives. |
Infoductor.Pantograph |
planned | Plugin routing Pantograph commands into Foundation registries. |
Infoductor.Runner |
planned | Headless deployment surface for Edit.runHeadless etc. Lands when concrete deployment need arises. |
Foundation API
Meta-mirror types (Infoductor.Foundation.Meta)
MetaCType— the meta-types of source artifacts (theorem, definition, instance, structure, …).MetaClassifier— a lattice of "where in the codebase" predicates (always,never,atDecl n,inFile p,underAttribute a,dependencyOf n,inNamespace n, plusmeet/join).MetaArtifact— what gets placed at a meta-position (source/declAt/refTo/empty).MetaPosition—(declName, filePath, range?)addressing.
Edit / Context (Infoductor.Foundation.Edit)
Edit α— monad of source mutations.result : αpaired withops : List EditOp.Context α— comonad of "what's around here": focal artifact, position, siblings.extract/extendoperations.contextualEdit— distributive law lifting context-aware decisions into edits.
Restructure (Infoductor.Foundation.Restructure)
restructure (i ctx φ witness fallback)— the universal source- mutation operation. Same five-field shape as cubicalcomp, promoted to source-code level.- Frozen aliases:
transport_artifact,relocate_invariant,rename_throughout,define_question_shape,compose_proof_fragments,materialize. - Headless interpreter:
EditOp.apply,Edit.runHeadless. - Structural soundness:
Edit.brokenRefs,Edit.selfConsistent,Edit.guarded.
Registries
@[macroAlias](Infoductor.Foundation.MacroAlias) — register adefas a frozenrestructurealias.@[methodology Classifier](Infoductor.Foundation.Methodology) — register a theorem as a proof methodology indexed by classifier name.@[metaPath Source Target](Infoductor.Foundation.MetaPath) — declare a structural Path between two classifiers; powersderiveByTransport.tryEntryAsClosedprimitive — try a methodology entry as a goal closer; restores tactic state on failure.
Inspecting registries
#eval inside a Lean session:
#eval Infoductor.printAliases
#eval Infoductor.printMethodologies
#eval Infoductor.printMetaPaths
Building
lake build
Forgejo
http://maxgit.wg:3000/max/infoductor
License
See LICENSE.