Note: see Stefan's anwser.
It seems that local functions are not a native feature of the language. The GNU Reference Manual does not cover "local functions" or mention it.
Edit: Lisp manages objects unlike other languages. The function object returned the lambda form is bound to a local variable. It is a matter of symbols and scope values.
(defun foo (a b)
(+ a b))
(let (foo)
(setq val (symbol-value 'foo))
(symbol-function 'foo))
(symbol-function 'foo)
returns (lambda (a b) (+ a b))
whereas (symbol-value 'foo)
returns nil
.
Nevertheless, this feature is provided by the GNU Emacs Common Lisp Emulation (c.f. Function Bindings) which is a compatibility extension with Common Lisp for Elisp.
(cl-flet ((func (a b) (+ a b)))
(func 1 1))