https://github.com/kach/memo
A probabilistic programming language for metacognitive modeling
https://github.com/kach/memo
cognitive-science differentiable-programming jax probabilistic-programming python
Last synced: 25 days ago
JSON representation
A probabilistic programming language for metacognitive modeling
- Host: GitHub
- URL: https://github.com/kach/memo
- Owner: kach
- License: mit
- Created: 2024-05-03T04:31:42.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2026-01-14T13:54:01.000Z (27 days ago)
- Last Synced: 2026-01-14T17:35:15.946Z (27 days ago)
- Topics: cognitive-science, differentiable-programming, jax, probabilistic-programming, python
- Language: Python
- Homepage: https://pypi.org/project/memo-lang/
- Size: 42.5 MB
- Stars: 132
- Watchers: 5
- Forks: 12
- Open Issues: 8
-
Metadata Files:
- Readme: README-pypi.md
- License: LICENSE
Awesome Lists containing this project
README

[memo](https://github.com/kach/memo) is a probabilistic programming language for expressing computational cognitive models involving **recursive reasoning about reasoning**. memo inherits from the tradition of WebPPL-based Bayesian modeling (see [probmods](http://probmods.org/), [agentmodels](https://agentmodels.org/), and [problang](https://www.problang.org/)), but aims to make models **easier to write and run** by taking advantage of modern programming language techniques and hardware capabilities (including GPUs!). As a result, models are often significantly simpler to express (we've seen codebases shrink by a **factor of 3x or more**), and dramatically faster to execute and fit to data (we've seen **speedups of 3,000x or more**). In idiomatic memo, a POMDP solver is 15 lines of code, and is just as fast as a hand-optimized solver written in 200 lines of code.
memo stands for: mental modeling, memoized matrix operations, model-expressed-model-optimized, and metacognitive memos.
For more information, please visit memo's [GitHub repository](https://github.com/kach/memo).