> Clearly lisp procedures are not functions
Some are. Others are not.
The only thing a language needs to be legitimately called a functional language is for functions to be first-class data objects. It's helpful but not necessary for them to be lexically scoped. It is also helpful but not necessary to have a conditional expression. Common Lisp has all of these things. In fact, Common Lisp has all of the features commonly associated with modern functional languages except static type inference (and you can add that if you really want it).
Common Lisp is not a purely functional language, but that's true of pretty much every language except Haskell.