> iterable is supposed to be those objects that you can iterate, i.e., do something like for i in expr: ... with. But this object (and IndexedBase, even though it has __getitem__, will not work with that, because it will iterate terms forever. 

Any good example of this?

Does it for will run forever or it's \__getitem__?  In the last case - it's a bug.  In the first case - this entity is still a python iterable.  We should use a different function name, not `iterable()`, at least.

> Maybe this should be documented better, or a better name used for the mixin and or function?

Yes, a better function name + documentation.  Right now it will clash with python's vocabulary in a really bad way.  http://docs.python.org/3.1/glossary.html#term-iterable