Prolog używa semantyki bazy danych, jak omówiono to w Rozdziale 8.2.8. Założenie unikalnych nazw mówi, że każda stała Prologu i każdy termin podstawowy odnosi się do odrębnego obiektu, a założenie o zamkniętym świecie mówi, że jedyne zdania, które są prawdziwe, to te, które wynikają z bazy wiedzy. Nie ma sposobu na stwierdzenie, że zdanie jest fałszywe w Prologu. To sprawia, że Prolog jest mniej wyrazisty niż logika pierwszego rzędu, ale jest to część tego, co sprawia, że Prolog jest bardziej wydajny i zwięzły. Rozważ następujące twierdzenia dotyczące niektórych ofert kursów:
Zgodnie z założeniem unikalnych nazw CS i EE są różne (podobnie jak 101, 102 i 106), co oznacza, że istnieją cztery różne kursy. Przy założeniu zamkniętego świata nie ma innych kursów, więc są dokładnie cztery kursy. Ale jeśli byłyby to twierdzenia w FOL, a nie w semantyce bazy danych, to wszystko, co moglibyśmy powiedzieć, to to, że jest gdzieś pomiędzy jednym a kursem nieskończoności. Dzieje się tak, ponieważ twierdzenia (w FOL) nie zaprzeczają możliwości, że oferowane są również inne niewymienione kursy, ani nie mówią, że wspomniane kursy różnią się od siebie. Gdybyśmy chcieli przetłumaczyć Równanie na FOL, otrzymalibyśmy następujące zdanie:
Nazywa się to uzupełnieniem równania . Wyraża w FOL ideę, że istnieją co najwyżej cztery kursy. Aby wyrazić w FOL ideę, że istnieją co najmniej cztery kursy, musimy napisać uzupełnienie predykatu równości:
Uzupełnienie jest przydatne do zrozumienia semantyki bazy danych, ale ze względów praktycznych, jeśli problem można opisać za pomocą semantyki bazy danych, bardziej efektywne jest rozumowanie za pomocą Prologa lub innego systemu semantyki bazy danych, niż tłumaczenie na FOL i rozumowanie z pełnym FOL dowód twierdzenia.