## E.1 The SWI-Prolog kernel and foreign libraries

The SWI-Prolog kernel and our foreign libraries are distributed under the LGPL. A Prolog executable consists of the combination of these `native' code components and Prolog virtual machine code. The SWI-Prolog plrc utility allows for disassembling and re-assembling these parts, a process satisfying article 6b of the LGPL.

Under the LGPL SWI-Prolog can be linked to code distributed under arbitrary licenses, provided a number of requirements are fullfilled. The most important requirement is that, if an application replies on a modified version of SWI-Prolog, the modified sources must be made available.

### E.1.1 The SWI-Prolog Prolog libraries

Lacking a satisfactory technical solution to handle article 6 of the LGPL, this license cannot be used for the Prolog source code that is part of the SWI-Prolog system (both libraries and kernel code). This situation is comparable to `libgcc`, the runtime library used with the GNU C-compiler. Therefore, we use the same proven license terms as this library. The libgcc license is the with a special exception. Below we rephrased this exception adjusted to our needs:

> As a special exception, if you link this library with other files, compiled with a Free Software compiler, to produce an executable, this library does not by itself cause the resulting executable to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the executable file might be covered by the GNU General Public License.