The latest version (1.0.3) of the Core Erlang Language Specification can be downloaded here:
The first published version (1.0) is available as a technical report at: http://www.it.uu.se/research/reports/2000-030/. However, several things have been changed since then, so it is recommended to read the revised version above instead.
For those interested in the implementation details, see the Open Source Erlang distribution, under the subdirectory lib/compiler/src.
From OTP/Erlang R10 and onwards, to compile a .erl source file to Core Erlang, pass the flag to_core to the compiler. A .core file will be generated instead of a .beam file. For example:
1> c(my_module, to_core).
To compile a Core Erlang module my_module.core to a .beam file, pass the flag from_core to the compiler. For example:
1> c(my_module, from_core).