La semantica dei programmi logici può essere data seguendo due approcci equivalenti, quello dichiarativo, che vedremmo brevemente nelle sezione successiva, e quello procedurale che si basa sul metodo di risoluzione SLD.
Sia un goal e una clausola del programma P. Se è l'atomo selezionato secondo la regola di selezione ed esiste mgu di ed A, il goal G' = è detto risolvente di G e C.
Una derivazione SLD di P{G} consiste di una sequenza (finita o infinita) , di goal, una sequenza di di varianti di clausole di P e una sequenza di mgu tale che ogni è derivato da e usando .
È indispensabile che ogni non contenga variabili già apparse nella derivazione fino a : quindi è necessaria una fase di ridenominazione delle variabili.
Una refutazione SLD di P{G} è una derivazione SLD di P{G} che ha la clausola vuota come ultimo risolvente.
Una derivazione SLD è detta fallita se è finita e non è una refutazione.
Una sostituzione di risposta calcolata per è una sostituzione ottenuta restringendo la composizione alle variabili di G, dove e la sequenza di mgu usati in una refutazione SLD di P{G}.
Una regola di computazione è una funzione da un insieme di goal a un insieme di atomi che, dato un goal, restituisce un atomo di tale goal detto atomo selezionato.
Una derivazione (risp. refutazione) SLD via R è una derivazione (risp refutazione) SLD nella quale per selezionare gli atomi è sempre usata la regola R.
TEOREMA di indipendenza dalla regola di computazione
Se esiste una refutazione SLD di con risposta calcolata , allora per ogni regola di computazione R esiste una refutazione SLD di via R con risposta calcolata tale che è una variante di .
Sia P un programma e G un goal. Un albero SLD per è un albero che soddisfa le seguenti condizioni:
Ogni ramo di un albero SLD è una derivazione di . Rami corrispondenti a derivazioni infinite sono detti rami infiniti.
I sistemi PROLOG standard utilizzano la regola di computazione che seleziona sempre l'atomo più a sinistra (leftmost) insieme ad una regola di ricerca depth-first.