In questa sezione sarà trattato il meccanismo che permette di calcolare legami tra variabili e valori, obbiettivo principale dei sistemi di programmazione logica.
Una sostituzione è un insieme finito di associazioni tra variabili e termini, della forma
, con le variabili
distinte tra di loro e
per i=1,
.
Un termine è ground se non contiene variabili.
Una sostituzione è detta ground quando ogni termine è ground .
Una espressione è un termine, oppure un letterale oppure
una congiunzione o disgiunzione di letterali. Sia E una espressione e
una sostituzione.L'espressione
, detta istanza di E secondo
, è il risultato dell'applicazione di
ad E, ottenuto rimpiazzando simultaneamente ogni occorrenza di variabile
in E con il termine
per
.
Se E è ground, allora E è chiamata istanza ground di E.
Una sostituzione
è più generale di una sostituzione
se esiste una sostituzione
per cui
.
Dato un programa P, con ground(P) indichiamo l'insieme di tutte le istanze ground delle clausole in P.
Dati le espressioni ed
una sostituzione
è un unificatore per tali espressioni se
. Un unificatore
per
ed
è detto most general unifier (mgu) se, per ogni unificatore
per
ed
, esiste una sostituzione
tale che
.
A Robinson è dovuto il seguente teorema:
Esiste un algoritmo (algoritmo di unificazione) che, prese due espressioni qualsiasi, produce il corrispondente mgu se sono unificabili. Altrimenti termina notificando la non esistenza di tale unificatore.