commit 6487c7046f1d586e93db55ea8270ed4f3f85b0c6 Author: Maximus Gorog Date: Tue May 12 02:59:08 2026 -0600 Initial commit: crosslang monorepo skeleton. Umbrella repo gathering golang-lean (TGC), octive-lean (TOC), tsm-lean (TSM), and common-lean (apex with cross-language typeclasses). Subprojects arrive next via `git subtree add` so per-file history survives the move. Co-Authored-By: Claude Opus 4.7 (1M context) diff --git a/README.md b/README.md new file mode 100644 index 0000000..51f5761 --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +# 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: + +```sh +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.