Warren Abstract Machine - A embedded Prolog compiler and virtual machine for Symfony 2