lean-cats is a Lean 4 project for experimenting with weak memory models and litmus tests.
It supports:
- A CAT-style DSL in Lean (
[model| ... ]) for defining models. - Candidate executions (
CandidateExecution) and core relations (po,rf,co,fr). - Litmus parsing/enumeration plus reader commands (
#litmus,deflitmus). - Model loading from
.cat/.bellfiles (defcat <"...">).
git clone <repo-url>
cd lean-cat
lake update
lake buildlake exe litmus-parser-testlake env lean LeanCats/Linux/litmus.lean#litmus "LeanCats/Cats/examples/tests/SB.litmus"
deflitmus SB <"LeanCats/Cats/examples/tests/SB.litmus">
defcat <"sc.cat">
defcat <"tso.cat">LeanCats/Macro.lean: CAT DSL ([model| ... ]).LeanCats/Basic.lean:CandidateExecution.LeanCats/LitmusParser/*: litmus parser/enumerator.LeanCats/LitmusReader.leanandLeanCats/ModelReader.lean:#litmus/deflitmus/defcat.
- Herding Cats (CAT): https://arxiv.org/pdf/1308.6810
- herdtools7 ecosystem: https://github.com/herd/herdtools7