Each meta-mirror value renders to a Lean expression that, when elaborated, reconstructs the same value. The bridge's loop now closes at the source level: an Edit's .cterm content can be written to a .lean file and parsed back via Lean's own parser/elaborator — no custom parser required. · nameToLeanSource — Lean.Name → constructor-call source. · MetaClassifier.toLeanSource — lattice → Infoductor.MetaClassifier.* calls. · MetaCTerm.toLeanSource — full structural mirror → constructor source. · MetaArtifact.toLeanSource — artifact layer wrapping the above. Foundation.Restructure's EditOp.apply for .cterm now uses MetaCTerm.toLeanSource instead of toString (repr t). The headless interpreter writes valid Lean source. The recursive helper for Lean.Name lives at Infoductor.nameToLeanSource rather than Lean.Name.toLeanSource — defining a Lean.Name.* function inside `namespace Infoductor` would otherwise create an Infoductor.Lean namespace and shadow the global Lean library. 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.