The language it uses enforces that all recursive steps "simplify" the input, and gives a simple definition of "simplify".
Note that the language is not (nor does it try to be) Turing complete - intuitively you could imagine that there might be some level of expressiveness which is not enough to get to halting problem like levels of complexity, but enough to get "real world" complexity.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.106...
The language it uses enforces that all recursive steps "simplify" the input, and gives a simple definition of "simplify".
Note that the language is not (nor does it try to be) Turing complete - intuitively you could imagine that there might be some level of expressiveness which is not enough to get to halting problem like levels of complexity, but enough to get "real world" complexity.