I hope you have your reasons to tell the shell "a is b" and "a is c"
at the same time. Basically your aliasing ls two times simultaneously.
The interesting thing is that if I issue
"which lf"  it tells me that lf is aliased, not that it is defined as 
a function.  If I then issue the newly defined lf command, the 
function takes precedence over the alias (which is what I understood 
to be the expected behavior), which I can see from the error messages 
produced.
The problem arose because a user made the alias without checking to 
see that the function was defined, and that the function was written 
as a posix function and defined after the alias in the sequence of 
shell initialization.
If the alias is defined after the posix function is defined, the 
problem doesn't arise.