these ideas have already been proposed by researchers such as Grossberg and Mountcastle. On the other hand, the novel separation of the conceptual mechanism (i.e., bidirectional processing and invariant recognition) from the biological details (i.e., neural layers, columns and structures) lays the foundation for abstract thinking about a wide range of cognitive processes. The most significant limitation of this theory is its current lack of detail. For example, the concept of invariance plays a crucial role; Hawkins posits "name cells" for at least some of these invariants. (See also Neural ensemble#Encoding for grandmother neurons which perform this type of function, and mirror neurons for a somatosensory system viewpoint.) But it is far from obvious how to develop a mathematically rigorous definition, which will carry the required conceptual load across the domains presented by Hawkins. Similarly, a complete theory will require credible details on both the short-term dynamics and the learning processes that will enable the cortical layers to behave as advertised. IBM is implementing Hawkins' model. Machine learning models The memory-prediction theory claims a common algorithm is employed by all regions in the neocortex. The theory has given rise to a number of software models aiming to simulate this common algorithm using a hierarchical memory structure. The year in the list below indicates when the model was last updated. Models based on Bayesian networks The following models use belief propagation or belief revision in singly connected Bayesian networks. Hierarchical Temporal Memory (HTM), a model, a related development platform and source code by Numenta, Inc. (2008). HtmLib, an alternative implementation of HTM algorithms by Greg Kochaniak with a number of modifications for improving the recognition accuracy and speed (2008). Project Neocortex, an open source project for modeling memory-prediction framework (2008). Saulius Garalevicius' research page, research papers and programs presenting experimental results with a model of the memory-prediction framework, a basis for the Neocortex project (2007). a paper describing earlier pre-HTM Bayesian model by the co-founder of Numenta. This is the first model of memory-prediction framework that uses Bayesian networks and all the above models are based on these initial ideas. Matlab source code of this model had been freely available for download for a number of years. Other models Implementation of MPF, a paper by Saulius Garalevicius describing a method of classification and prediction in a model that stores temporal sequences and employs unsupervised learning (2005). M5, a pattern machine for