A new Lake project with path dependencies on the three sibling kernels
(golang-lean, octive-lean, tsm-lean). Provides typeclass abstractions
that capture what's structurally shared.
Common/ — three files:
Lang.lean — two typeclasses:
BigStepLang: Term, Value, State, Eval, deterministic.
Captures TGC's and TOC's big-step shape.
SmallStepLang: State, step.
Captures TSM's small-step shape (determinism is
automatic from `step` being a function).
Generic theorems exported once:
BigStepLang.unique_value, BigStepLang.unique_state
SmallStepLang.step_deterministic
Plus a `CompileCorrect` structure for substrate-projection
theorems (the categorical kernel of CompCert-style results).
Instances.lean — three instances:
TGCLang : BigStepLang (State := Heap × Env)
TOCLang : BigStepLang (State := Env)
TSMLang : SmallStepLang (State := TSM.State)
Each instance bridges the local kernel's existing
`BigStep`/`step` + `deterministic` proof into the typeclass.
Demo.lean — three application examples:
The SAME `BigStepLang.unique_value` theorem applied to TGC and
TOC; `SmallStepLang.step_deterministic` to TSM. One abstract
definition, three concrete payoffs.
The factoring is real: any new theorem stated over the typeclasses
applies to all instances. Future theorems (compilation correctness,
type soundness, simulation) can be expressed abstractly and proved
once.
Zero sorries / axioms / admits across all four projects.
37 lines
1 KiB
JSON
37 lines
1 KiB
JSON
{"version": "1.2.0",
|
|
"packagesDir": ".lake/packages",
|
|
"packages":
|
|
[{"type": "path",
|
|
"scope": "",
|
|
"name": "«tsm-lean»",
|
|
"manifestFile": "lake-manifest.json",
|
|
"inherited": false,
|
|
"dir": "../tsm-lean",
|
|
"configFile": "lakefile.toml"},
|
|
{"type": "path",
|
|
"scope": "",
|
|
"name": "«octive-lean»",
|
|
"manifestFile": "lake-manifest.json",
|
|
"inherited": false,
|
|
"dir": "../octive-lean",
|
|
"configFile": "lakefile.toml"},
|
|
{"type": "path",
|
|
"scope": "",
|
|
"name": "«golang-lean»",
|
|
"manifestFile": "lake-manifest.json",
|
|
"inherited": false,
|
|
"dir": "../golang-lean",
|
|
"configFile": "lakefile.toml"},
|
|
{"url": "https://github.com/leanprover-community/ProofWidgets4",
|
|
"type": "git",
|
|
"subDir": null,
|
|
"scope": "",
|
|
"rev": "2db6054a44326f8c0230ee0570e2ddb894816511",
|
|
"name": "proofwidgets",
|
|
"manifestFile": "lake-manifest.json",
|
|
"inputRev": "v0.0.98",
|
|
"inherited": true,
|
|
"configFile": "lakefile.lean"}],
|
|
"name": "«common-lean»",
|
|
"lakeDir": ".lake",
|
|
"fixedToolchain": false}
|