Only one level of aliases is removed when learning. Teaching to a chain of aliases can end up adding the new factoid to an alias still.
For example, say the database contains these aliases:
'foo' <alias> 'bar'
'bar' <alias> 'baz'
Teaching "Bucket, foo is spam eggs":
'bar' is 'spam eggs' added to database.
This doesn't seem right. Aliases shouldn't have other factoids. It can lead to e.g. #45.