'Ενα κοινό πρόβλημα σ' όλα τα προγράμματα, ανεξάρτητα από το εάν αντιμετωπίζονται με την προστακτική (imperative), την συναρτησιακή (functional) ή τη λογική προσέγγιση, είναι ο καθορισμός της ορθότητάς τους. Στο λογικό προγραμματισμό η ορθότητα ορίζεται σε σχέση με τη σημασία (meaning) και την επιθυμητή σημασία (intended meaning).
H σημασία ενός λογικού προγράμματος
, ορίζεται ως το σύνολο των βασικών μοναδιαίων γεγονότων τα
οποία είναι δυνατό να παραχθούν από το
(deducible facts). Συνεπώς η σημασία ενός λογικού προγράμματος που αποτελείται μόνον
από βασικά γεγονότα, είναι το ίδιο το πρόγραμμα. Αυτό σημαίνει ότι τα απλά προγράμματα, εννοούν ακριβώς αυτό που λένε. Από την άλλη μεριά, η
επιθυμητή σημασία ενός λογικού προγράμματος
, είναι το σύνολο M των βασικών γεγονότων, τα οποία ο χρήστης αναμένει να παραχθούν
από το πρόγραμμα.
Λέμε ότι ένα πρόγραμμα είναι σωστό (correct) ως προς μια επιθυμητή σημασία M, αν η σημασία
του
είναι
υποσύνολο του M, αν δηλαδή,
. 'Αρα ένα σωστό πρόγραμμα δεν λέει πράγματα τα οποία δεν είναι επιθυμητά.
Λέμε ότι ένα πρόγραμμα είναι πλήρες (complete) ως προς μια επιθυμητή σημασία M, αν το M είναι υποσύνολο του
, δηλαδή
. 'Αρα ένα πλήρες πρόγραμμα, λέει οτιδήποτε είναι επιθυμητό. Σαν συμπέρασμα, ένα πρόγραμμα
είναι ορθό και πλήρες ως προς μια επιθυμητή σημασία M, αν
.