Any memory solution must have the following properties:
- Memory must be learned. I.e. agent has to be able to say “I should have written something different to memory”
- Agent must be able to efficiently read memory when calculating its actions. Ideally, all memory will be accessible in a small number of steps, and a significant amount of memory should be accessible in a single step.