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