Las primeras versiones del lenguaje diferían, en sus diferentes implementaciones, en muchos aspectos de sus sintaxis, empleándose mayormente como forma normalizada el dialecto propuesto por la Universidad de Edimburgo,[6] hasta que en 1995 se estableció un estándar ISO (ISO/IEC 13211-1), llamado ISO-Prolog.
Prolog se enmarca en el paradigma de los lenguajes lógicos y declarativos, lo que lo diferencia enormemente de otros lenguajes más populares tales como Fortran, Pascal, C o Java.
Prolog selecciona el primer punto de elección y sigue ejecutando el programa hasta determinar si el objetivo es verdadero o falso.
Conjunciones y disyunciones pueden solo aparecer en el cuerpo, no en la cabeza de la regla.
En realidad la disyunción no es un operador básico o predefinido, sino que está meta-programado así: Las cláusulas sin cuerpo (es decir, antecedente) son llamados hechos porque siempre son ciertos.
Un ejemplo de un hecho es: que es equivalente a la regla: El predicado predefinido true/0 siempre es verdad.
Debido a la naturaleza relacional de muchos predicados, pueden ser usados revertidos sus argumentos.
Similarmente, append/3 puede ser usado también para unir o anexar dos listas: append([a,b], [c,d], X), así como para dividir una lista en dos partes: append(X, Y, [a,b,c,d]).
Por esta razón, una biblioteca relativamente pequeña de predicados basta para muchos programas en Prolog.
Estos predicados no tienen un significado relacional y son solo útiles por los efectos laterales que exhiben en el sistema.
Por ejemplo, el predicado write/1 muestra un término en la pantalla, pero no tiene relevancia su valor de verdad o falsedad.