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) <noreply@anthropic.com>
This commit is contained in:
commit
6487c7046f
1 changed files with 45 additions and 0 deletions
45
README.md
Normal file
45
README.md
Normal file
|
|
@ -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.
|
||||
Loading…
Add table
Reference in a new issue