Monorepo: golang-lean (TGC) + octive-lean (TOC) + tsm-lean (TSM) + common-lean (cross-language apex).
Find a file
Maximus Gorog fd3d42ae33 Add 'golang-lean/' from commit 'f5f17019224c6a6c319387214ceb8e29d09251c6'
git-subtree-dir: golang-lean
git-subtree-mainline: 6487c7046f
git-subtree-split: f5f1701922
2026-05-12 02:59:14 -06:00
golang-lean Add 'golang-lean/' from commit 'f5f17019224c6a6c319387214ceb8e29d09251c6' 2026-05-12 02:59:14 -06:00
README.md Initial commit: crosslang monorepo skeleton. 2026-05-12 02:59:08 -06:00

crosslang

Monorepo gathering language-implementation projects whose shared shape makes cross-language theorems possible. Each subdirectory remains a self-contained Lake package; common-lean is the apex that consumes the other three through Lake path-deps and exposes a typeclass-level abstraction over them.

Layout

Path Role
golang-lean/ TGC — Go subset; big-step over Heap × Env.
octive-lean/ TOC — GNU Octave; big-step over Env.
tsm-lean/ TSM — Tiny Stack Machine; small-step, positional operands. Also hosts a source-to-bytecode Compile/ layer.
common-lean/ Apex: BigStepLang and SmallStepLang typeclasses; TGC/TOC/TSM as instances; generic theorems that fire on every instance.

Why a monorepo

The three kernels share a Core/ skeleton (Syntax · Semantics · Types · Eval · Determinism · Preservation · TypeSoundness). Anything truly language-invariant has to be statable in terms common to all three. Living together in one repo means:

  • a generic theorem proved in common-lean is a single edit away from applying to every kernel,
  • new kernels are added by writing a BigStepLang (or SmallStepLang) instance — no path-dep restructuring,
  • the factoring is post-hoc: abstractions land only after a third concrete point demands them.

Build

Each package builds independently with lake build. The apex:

cd common-lean && lake build

resolves path-deps to the three sibling kernels.

History

Subprojects were imported with git subtree add so per-file git log continues to work across the move.