The set of predefined functions in Lua is small but powerful. Most of them provide features that allows some degree of reflexivity in the language. Some of these features cannot be simulated with the rest of the Language nor with the standard Lua API. Others are just helpful interfaces to common API functions.
The libraries, on the other hand, provide useful routines that are implemented directly through the standard API. Therefore, they are not necessary to the language, and are provided as separated C modules. Currently there are three standard libraries: