Questo modulo ottiene il programma complemento di P semplicemente facendo l'unione di comp(P1) e comp(P2).
Un esempio riassuntivo può essere:
l'analizzatore stabilirà che P1={r,p}, mentre P2={q}.
Infatti il criterio dovrà essere applicato alle queries
,
e
.
Nel caso di
, si avrà che, poiché le clausole la cui testa unifica con
sono tutte fatti e quindi terminanti, il predicato
è inserito in P1.
Le risposte ottenute sono
e
.
Successivamente si passa ad esaminare
:
la clausola
è terminante, mentre per la clausola ricorsiva
bisogna verificare le due condizioni sugli argomenti.
In questo caso, fallisce subito la prima, cioè quella che impone che le norme dei termini non ground di input siano limitate:
infatti
perché
è un costruttore riflessivo in
.
Esaminando infine
, si ha che la clausola
è terminante perché la query
termina.
Infatti
termina con risposte
e
e terminano le query ottenute da
applicandovi tali risposte.
termina perché non unifica con alcuna clausola, mentre
termina perché la clausola con cui unifica è terminante, valendo sulle norme la condizione imposta dal criterio (
).
Quindi comp(P) = comp(P1) comp(P2) sarà: