La lógica proposicional no es suficiente para especificar una serie de propiedades importantes del mundo. La lógica de primer orden (o el cálculo de predicados de primer orden) tiene mayor poder expresivo.
Por ejemplo si quisiéramos expresar:
Todos los hombres son mortales.
Sócrates es hombre.
Sócrates es mortal.
Si las dos primeras oraciones son premisas ¿cómo expresarlas en lógica proposicional para que la tercera oración sea teorema? Y si agregamos que “Aristóteles es hombre” entonces también nos gustaría deducir que “Aristóteles es mortal”.
Para la lógica de primer orden (LPO) el mundo está compuesto de objetos (Sócrates, Aristóteles, etc.) que tienen propiedades (alto, bajo, mortal, etc.) que lo distinguen de otros objetos y relaciones entre ellos (hermano de, padre de, enemigo, etc.). Podemos pensar a las propiedades como relaciones unarias y a las proposiciones como relaciones de aridad cero. Las relaciones son llamadas predicados.
El hecho que Sócrates sea hombre podemos expresarlo como es_hombre(Sócrates). Además de expresar objetos y propiedades también es necesario expresar cosas como “Todo hombre es mortal”. Se debe tener alguna manera de cuantificar, es decir poder expresar que Todos cumplen con alguna propiedad. Similarmente es necesario poder expresar que: al menos alguno o existe alguno que cumple con una propiedad. La LPO utiliza dos cuantificadores para ello, uno llamado cuantificador universal y el otro cuantificador existencial.
Antes de pasar a definir un sistema axiomático para la LPO haremos una descripción informal de sus componentes y su sintaxis.
Por ejemplo para decir “Todo hombre es mortal”, en LPO se escribe:

En este ejemplo H representa el predicado ser hombre, x simboliza una variable, que permite establecer objetos generales. Por convención, las primeras letras del alfabeto a, b, c… representan constantes (Ej. Sócrates) y las últimas del alfabeto x, y, z representan variables. M representa el predicado ser mortal. El símbolo -> representa la implicación (como en el cálculo proposicional). El símbolo
es el cuantificador universal que significa para todo. Por lo tanto, el ejemplo dice: para todo x, si x es hombre entonces x es mortal.
El otro cuantificador es el existencial, por ejemplo la sentencia: Hay un gato que ensució el piso, se escribe
.
es el cuantificador existencial, G representa el predicado ser gato y E el predicado ensució el piso.Usamos en esta fórmula la conjunción (^).
Veamos algunos ejemplos:

Como regla general los cuantificadores universales se relacionan con implicaciones mientras los cuantificadores existenciales con las conjunciones. Esto es importante: si decimos a todos los hombres les gusta el fútbol no podemos escribir:

Eso equivaldría a decir para todo x, x es hombre y a x le gusta el fútbol. Pero el dominio de x no son los hombres (en cuyo caso no tendría sentido usar el predicado ser hombre, H). Estaríamos diciendo que un x, que sea por ejemplo el gato Tom, es hombre y le gusta el fútbol. Por lo cual la forma correcta es

En cuyo caso el gato Tom haría falso el predicado ser hombre pero la implicación seguiría siendo verdadera. O sea, estamos diciendo si x es hombre entonces a x le gusta el fútbol.
Existe una relación de equivalencia entre el cuantificador universal y el cuantificador existencial:

Por ejemplo si queremos decir que no a todos los hombres les gusta el futbol, podemos escribir:
es decir: “no para todo x si x es hombre entonces a x le gusta el fútbol”.
La implicación puede, equivalentemente, ser escrita como una conjunción, entonces tenemos:
. Podemos reemplazar por el existencial (recordar la relación entre
y ^):
.
Los símbolos predicativos H y GF significan ser hombre y gustar el fútbol respectivamente.
Por último, antes de pasar a la axiomática de la LPO, nos queda definir la noción de función. Muchas veces es necesario referirse a objetos específicos, por ejemplo para decir “al dueño del gato Tom le gusta el fútbol” necesitamos alguna forma de referirnos al dueño en concreto. No podemos decir, como podríamos estar tentados a hacer:
, por que estaríamos diciendo que hay al menos un dueño de Tom y le gusta el fútbol. Es necesario especificar que Tom tiene solo un dueño, para lo cual usamos una función que dado Tom (u otro gato) nos devuelva el dueño. Entonces quedaría: GF(dueño(tom)). La función dueño recibe un gato como parámetro y devuelve un objeto específico que es el dueño del gato (no confundir la noción de función con la de predicado).