What is memo?
mainmemo is a probabilistic programming language designed for expressing computational cognitive models that involve recursive reasoning about reasoning.
It is built to improve upon the WebPPL-based Bayesian modeling tradition (such as probmods, agentmodels, and problang) by utilizing modern programming techniques and hardware acceleration (including GPUs).
Key benefits include:
- Simplicity: Models are significantly easier to express; idiomatic code can be up to 3x smaller than traditional implementations (e.g., a POMDP solver in 15 lines).
- Performance: Execution and data fitting are dramatically faster, with reported speedups of 3,000x or more compared to non-optimized implementations.