Due operatori di composizione di base sono l'unione e l'intersezione di programmi logici [BMPT90,MPRT90]che sono definiti come segue:
Dati due programmi e :
Se è una clausola di
e è una clausola di
e esiste =
allora è una clausola di .
Il primo ha il semplice effetto di restituire l'unione insiemistica delle clausole dei due programmi, mentre il secondo è l'operatore duale che restituisce una sorta di intersezione tra gli argomenti.
Naturalmente, ogni programma può essere visto come una giustapposizione delle sue clausole.
L'interpretazione logica di questi operatori può essere data riferendosi alla teoria del completamento di un programma.
Sia la definizione completata del predicato in e la definizione completata del predicato in
allora
Se la classe di programmi considerata è quella dei programmi definiti, sono validi i seguenti risultati che forniscono una semantica dell'unione e dell'intersezione basata prima sull'operatore di conseguenza immediata e poi sui modelli.
Dati due programmi e :
Nel seguito la notazione sta per " è un sottoinsieme di '' e denota l'insieme delle clausole unitarie di .
Dati due programmi e :
= = min
=
La definizione data stabilisce che il modello minimo dell'unione di due programmi e è l'interpretazione minimale che è modello sia di che di , mentre il modello minimo dell'intersezione è il più grande modello minimo comune di due sottoteorie ground di e con lo stesso insieme di clausole unitarie.
Il fatto che e sono effettivamente modelli minimi di Herbrand di e , rispettivamente, è stabilito dal seguente teorema:
Dati due programmi e :
Un'ulteriore definizione di questi operatori è quella meta-interpretativa, che può essere data estendendo il meta-interprete standard solve (vanilla). Tale meta-interprete, che simula il modello computazionale dei programmi logici, è definito nel seguente modo:
dove il predicato clause è usato per rappresentare il programma oggetto.
Naturalmente, per trattare una molteplicità di programmi, è necessario aggiungere un nuovo argomento sia a solve che a clause per specificare il programma in cui provare un certo goal.
La definizione di solve diventa:
Usando la ricorsione nella definizione del predicato clause infine si ottengono le definizioni meta-interpretative degli operatori:
Il seguente teorema prova che questa visione meta-interpretativa è equivalente a quella trasformazionale.
Siano e due programmi logici. denoti il programma composto dal meta-interprete solve e delle clausole di e rappresentate per mezzo del predicato clause. denoti oppure .
Il programma ottenuto valutando parzialmente rispetto al goal , per ogni predicato definito in o in , è .