Δεν πρέπει να μπερδεύουμε τις εκφράσεις που είναι προτάσεις στον προτασιακό λογισμό με εκείνες που είναι προτάσεις στην κοινή γλώσσα. Χαρακτηριστική ιδιότητα για να είναι μια έκφραση πρόταση είναι να επιδέχεται ένα και μόνο ένα χαρακτηρισμό:
Τιμή μιάς πρότασης , λέγεται η αλήθεια ή το ψεύδος της. Γράφουμε:
Από μία ή περισσότερες προτάσεις μπορούμε να δημιουργήσουμε μία νέα σύνθετη πρόταση. Γιά να γινούμε πιό συγκεκριμένοι, ξεκινάμε με ορισμένα παραδείγματα.
Γενικά μπορούμε να δημιουργήσουμε σύνθετες προτάσεις με όποιο τρόπο θέλουμε και να τις συμβολίζουμε όπως επιθυμούμε, αρκεί να καθορίσουμε πότε είναι αληθείς ή ψευδείς. Π.χ. ορίζουμε να είναι η σύνθετη πρόταση που αληθεύει μόνο όταν αληθεύει η και την διαβάζουμε: ανεξάρτητα . Κάθε τρόπος δημιουργίας νέας πρότασης από δοθείσες άλλες προτάσεις, λέγεται τελεστής. Οι βασικοί τελεστές που έχουν ενδιαφέρον και βρίσκουν εφαρμογές, είναι οι τελεστές του παραδείγματος 1.29. Οι τιμές τους ορίζονται από τους παρακάτω πίνακες, που λέγονται πίνακες αλήθειας των αντίστοιχων τελεστών.
Δύο οποιεσδήποτε προτάσεις μπορούν να συνδεθούν με το «και» δημιουργώντας μία σύνθετη πρόταση, που λέγεται σύζευξη των και συμβολίζεται με (διαβάζεται και ). Η τιμή της εξαρτάται από τις τιμές των όπως δίνεται από τον παρακάτω πίνακα (πίνακας αλήθειας της σύζευξης):
Γιά κάθε δύο προτάσεις με το διαζευτικό «ή» ορίζουμε μια νέα πρόταση που λέγεται διάζευξη των και και συμβολίζεται με (διαβάζεται ή ). Ο πίνακας αλήθειας της διάζευξης είναι:
Γιά κάθε πρόταση μπορούμε να δημιουργήσουμε την πρόταση «δεν αληθεύει η » ή «όχι » που λέγεται άρνηση της και συμβολίζεται με . Ο πίνακας αλήθειας της άρνησης είναι:
Η συνθετη πρόταση της μορφής «αν τότε », όπου οποιεσδήποτε προτάσεις, λέγεται συνεπαγωγή και συμβολίζεται με . Η πρόταση ονομάζεται υπόθεση της συνεπαγωγής και η πρόταση ονομάζεται συμπέρασμα. Ο πίνακας αλήθειας της συνεπαγωγής είναι:
Με άλλα λόγια, για να είναι αληθής μια συνπαγωγή πρέπει όποτε ισχύει η υπόθεση αναγκαστικά να ισχύει και το συμπέρασμα. Αν σε κάποια περίπτωση η υπόθεση ισχύει αλλά όχι το συμπέρασμα τότε η συνεπαγωγή θεωρείται ψευδής πρόταση. Αυτή είναι και η μόνο περίπτωση να θεωρηθεί μια συνεπαγωγή ψευδής. Ειδικότερα, αν η υπόθεση είναι ψευδής πρόταση τότε δεν έχουμε κανένα έλεγχο να κάνουμε. Σε αυτή την περίπτωση το συμπέρασμα μπορεί να είναι αληθές ή ψευδές χωρίς αυτό να επηρεάζει την αλήθεια της συνπεγαγωγής.
Με άλλα λόγια, η αποκλειστική διάζευξη είναι αληθής όταν μία από τις προτάσεις είναι αληθής, αλλά όχι και οι δύο, όταν δηλαδή αληθεύει ακριβώς μία από τις προτάσεις.
Σύνθετες προτάσεις
Απλούστερες προτάσεις
Για να αποφανθούμε αν αυτή είναι αληθής ή ψευδής θα πρέπει να γνωρίζουμε τις τιμές των και , αν δηλ. αυτές οι προτάσεις είναι αληθείς ή ψευδείς. Προσέξτε ότι δε μας ενδιαφέρει το ποιες είναι οι προτάσεις παρά μόνο το αν αυτές είναι αληθείς ή ψευδείς, για να αποφασίσουμε την τιμή αληθείας της γενικευμένης πρότασης (1.22).
Συχνά δίνουμε ονόματα στις γενικευμένες μας προτάσεις, περίπου όπως δίνουμε ονόματα στις συναρτήσεις αριθμών. Έτσι, π.χ., θα μπορούσαμε στην πρόταση (1.22) να δώσουμε το όνομα γράφοντας
Γενικά ένας σίγουρος (αλλά συνήθως αργός και βαρετός) τρόπος για να βρίσκουμε την τιμή μιάς γενικευμένης πρότασης, είναι να κάνουμε τον πίνακα αληθείας της. Ο πίνακας αληθείας της του παραδείγματος 1.34 είναι ο εξής:
Βλέπουμε ότι οι πίνακες αληθείας των ταυτίζονται. Συνεπώς η είναι ταυτολογία. Παρόμοια εργαζόμαστε για τη δεύτερη ισοδυναμία.
Στο πρόβλημα αυτό βλέπουμε πώς υλοποιούμε διάφορους λογικούς τελεστές στη γλώσσα
python.
Στην python υπάρχουν ήδη ορισμένοι οι λογικοί τελεστές and, or, not οι οποίοι δρουν μεταξύ εκφράσεων που έχουν λογικές τιμές True ή False.
Στο παρακάτω πρόγραμμα (τρέξτε το και προσπαθήσετε να καταλάβετε πώς δουλεύει) χρησιμοποιούμε
τους ήδη υπάρχοντες αυτούς τελεστές για να ορίσουμε τους τελεστές
(συνεπαγωγή),
(ισοδυναμία) και (αποκλειστική διάζευξη (xor)).
def implies(p, q):
return q or not p
def equivalent(p, q):
return implies(p, q) and implies(q, p)
def xor(p, q):
return (p and not q) or (q and not p)
a = True
b = False
print "a => b is", implies(a, b)
print "b => a is", implies(b, a)
print "a <=> b is", equivalent(a, b)
print "a xor b is", xor(a, b)
Mihalis Kolountzakis 2015-11-28