ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 412: Λογική στην Πληροφορική Ενδιάμεση Εξέταση Ημερομηνία : Πέμπτη, 30 Οκτωβρίου 2014 Διάρκεια : 10:30 12.00 Διδάσκουσα : Άννα Φιλίππου ΠΡΟΤΥΠΕΣ ΛΥΣΕΙΣ Οδηγίες: Να διαβάσετε προσεχτικά και να απαντήσετε σε όλες τις ερωτήσεις. Να γράψετε τις απαντήσεις σας (καθαρά) στο εξεταστικό δοκίμιο. Ο άριστος βαθμός της εξέτασης είναι 100. Καλή Επιτυχία! Ερώτηση Βαθμός 1 2 3 4 Τελικός Βαθμός:
Άσκηση 1 [25 μονάδες] Να αποδείξετε τα πιο κάτω λογικά επακόλουθα χρησιμοποιώντας τα συστήματα κανόνων του Προτασιακού Λογισμού (μέρος (α)) και του Κατηγορηματικού Λογισμού (μέρος (β)). (α) [10 μονάδες] p q, (p q) (p q) (q p) 1. p q προϋπόθεση 2. (p q) προϋπόθεση 3. p q υπόθεση 4. p υπόθεση q υπόθεση 5. q MP 3, 4 q p υπόθεση 6. p q i 4, 5 p ΜΡ 4, 5 7. e 2, 6 p q i 4, 6 8. (q p) e 7 e 2, 7 9. (q p) i 5-8 10. (q p) e 1, 4-9 11. (p q) (q p) i 3-10 (β) [15 μονάδες] x y [ R(x,y) (P(x) Q(y)) ], z Q(z) x ( R(x,x) P(x) ) 1. x y [ R(x,y) (P(x) Q(y)) ] προϋπόθεση 2. z Q(z) προϋπόθεση 3. z 0 Q(z 0 ) υπόθεση 4. y [ R(z 0,y) (P(z 0 ) Q(y)) ] x e 1 5. R(z 0, z 0 ) (P(z 0 ) Q(z 0 )) y e 4 6. R(z 0, z 0 ) υπόθεση 7. P(z 0 ) Q(z 0 ) ΜΡ 5, 6 8. P(z 0 ) υπόθεση Q(z 0 ) υπόθεση 9. e 3, 8 10. P(z 0 ) e 9 11. P(z 0 ) e 7, 8-11 12. R(z 0, z 0 ) P(z 0 ) i 6-11 13. x ( R(x,x) P(x) ) x i 12 14. x ( R(x,x) P(x) ) z e 2, 3-13
Άσκηση 2 [25 μονάδες] (α) Θεωρείστε τις πιο κάτω προτάσεις: φ 1 = y x (P(x,y) P(y,x)) φ 2 = z y x [(P(x,y) P(y,z)) P(x,z)] φ 3 = x P(x,x) (i) [7 μονάδες] Να δείξετε ότι η πρόταση (φ 1 φ 2 ) φ 3 δεν είναι έγκυρη. Για να δείξουμε ότι η πρόταση δεν είναι έγκυρη πρέπει να παρουσιάσουμε μοντέλο στο οποίο η πρόταση να γίνεται ψευδής. Ένα τέτοιο μοντέλο είναι το εξής: Σύμπαν: {a,b,c} P = {(a,b),(b,a),(a,a),(b,b)} Αν και Μ φ 1, Μ φ 2, δεν ισχύει ότι Μ φ 3 και το ζητούμενο έπεται. (ii) [7 μονάδες] Να δείξετε ότι η πρόταση (φ 1 φ 2 ) φ 3 είναι ικανοποιήσιμη. Για να δείξουμε ότι η πρόταση είναι ικανοποιήσιμη πρέπει να παρουσιάσουμε μοντέλο στο οποίο η πρόταση να γίνεται αληθής. Ένα τέτοιο μοντέλο είναι το εξής: Σύμπαν: {a,b,c} P = {(a,a),(b,b),(c,c)} Προφανώς Μ φ 1, Μ φ 2 και Μ φ 3, επομένως Μ (φ 1 φ 2 ) φ 3. (γ) [11 μονάδες] Να αποδείξετε την ορθότητα της πιο κάτω σημασιολογικής συνεπαγωγής χρησιμοποιώντας τη σημασιολογία του Κατηγορηματικού Λογισμού (Αλήθεια του Tarski): x ( K(x,a) L(x,b) ), x [K(x,a) ( F(x) L(x,b))] K(b,a) F(b) Υποθέτουμε, για να φτάσουμε σε αντίφαση, ότι ο συλλογισμός είναι ψευδής. Τότε, για κάποιο μοντέλο Μ: Μ x ( K(x,a) L(x,b) ) (1) Μ x [K(x,a) ( F(x) L(x,b))] (2) και Μ K(b,a) F(b), δηλαδή Μ K(b,a) (3) και Μ F(b) (4) Από το (2) συμπεραίνουμε ότι για x = b Μ K(b,a) ( F(b) L(b,b)) επομένως, από το (3) Μ F(b) L(b,b)
και σε συνδυασμό με το (4) Μ L(b,b) (5) Από τα (3) και (5) συμπεραίνουμε ότι Μ K(b,a) L(b,b) και επομένως Μ x ( K(x,a) L(x,b) ) Αυτό όμως έρχεται σε αντίφαση με το (1). Συνεπώς, η αρχική μας υπόθεση είναι λανθασμένη και ο συλλογισμός είναι έγκυρος.
Άσκηση 3 [30 μονάδες] (α) Η διαδικασία της ενοποίησης χρησιμοποιείται για να εντοπίσει ένα κοινό στιγμιότυπο δύο όρων. (i) [6 μονάδες] Να περιγράψετε σύντομα τη διαδικασία/αλγόριθμο της ενοποίησης δίνοντας έμφαση στις μη-τετριμμένες περιπτώσεις. Δες διαφάνεια 4-26. Κάποιες μη τετριμμένες περιπτώσεις: Μια μεταβλητή ενοποιείται με οποιοδήποτε όρο εκτός από μια συνάρτηση που περιέχει τη μεταβλητή. Μια σταθερά ενοποιείται με τον εαυτό της ή με μια μεταβλητή. Μια συνάρτηση ενοποιείται με μια άλλη συνάρτηση με το ίδιο όνομα και ενοποιήσιμους όρους, ή με μια μεταβλητή που δεν αναφέρεται στη συνάρτηση. (ii) [6 μονάδες] Να εφαρμόσετε τον αλγόριθμο ενοποίησης σε κάθε ένα από τα πιο κάτω ζεύγη όρων και να υπολογίσετε τη γενικότερη ενοποιήτρια που προκύπτει σε περίπτωση που υπάρχει μια τέτοια ενοποιήτρια, διαφορετικά, να εξηγήσετε γιατί δεν υπάρχει. j(a, z, f(x)) j(y, f(y), z) f(g(x,y), a, h(z)) f(z, x, y) f(g(x), y, x) f(z, f(z), a) j(a, z, f(x)) j(y, f(y), z) Βήμα 1: y a j(a, z, f(x)) j(α, f(α), z) Βήμα 2: z f(a) j(a, f(a), f(x)) j(α, f(α), f(a)) Βήμα 3: x a: j(a, f(a), f(a)) j(α, f(α), f(a)) Συμπέρασμα: Οι όροι είναι ενοποιήσιμοι με ενοποιήτρια συνάρτηση την {a/y, f(a)/z, a/x}. f(g(x,y), a, h(z)) f(z, x, y) Βήμα 1: z g(x,y) f(g(x,y), a, h(g(x,y))) f(g(x,y), x, y) Βήμα 2: x a: f(g(a,y), a, h(g(a,y))) f(g(a,y), a, y) Βήμα 3: Οι υπογραμμισμένοι όροι είναι μη ενοποιήσιμοι. Συμπέρασμα: Οι όροι δεν είναι ενοποιήσιμοι: η μεταβλητή y δεν μπορεί να ενοποιηθεί με συνάρτηση που την περιέχει. f(g(x), y, x) f(z, f(z), a) Βήμα 1: z g(x) f(g(x), y, x) f(g(x), f(g(x)), a) Βήμα 2: y f(g(x)) f(g(x), f(g(x)), x) f(g(x), f(g(x)), a) Βήμα 3: x a f(g(a), f(g(a)), a) f(g(a), f(g(a)), a) Συμπέρασμα: Οι όροι είναι ενοποιήσιμοι με ενοποιήτρια συνάρτηση την {g(x)/z, f(g(x))/y, a/x}.
(β) [18 μονάδες] Να αποδείξετε με τη Μέθοδο της Επίλυσης ότι αν ισχύουν οι προτάσεις x z [ y ( (P(x) Q(z)) (Q(x) R(y)) ) ] x R(x) y x (Q(x) R(y)) τότε ισχύει και το συμπέρασμα: x y ( P(x) P(y)) Ξεκινούμε θεωρώντας την άρνηση του συλλογισμού την οποία μετατρέπουμε σε κανονική μορφή Prenex: Πρώτη πρόταση: x z [ y ( (P(x) Q(z)) (Q(x) R(y)) ) ] x R(x) x z [ y ( ( P(x) Q(z)) ( Q(x) R(y)) ) ] x R(x) x 1 z [ y 1 ( ( P(x 1 ) Q(z)) ( Q(x 1 ) R(y 1 )) ) ] w R(w) w [ x 1 z [ y 1 ( ( P(x 1 ) Q(z)) ( Q(x 1 ) R(y 1 )) ) ] R(w) ] w x 1 z y 1 [ ( P(x 1 ) Q(z)) ( Q(x 1 ) R(y 1 )) R(w) ] Δεύτερη πρόταση: y x (Q(x) R(y)) y 2 x 2 ( Q(x 2 ) R(y 2 )) Άρνηση τρίτης πρότασης: x y ( P(x) P(y)) x y ( P(x) P(y)) x 3 y 3 (P(x 3 ) P(y 3 )) Στη συνέχεια εφαρμόζουμε απαλοιφή των ποσοδεικτών: Πρώτη πρόταση: ( P(x 1 ) Q(f(x 1 ))) ( Q(x 1 ) R(y 1 )) R(a) Δεύτερη πρόταση: Q(x 2 ) R(y 2 ) Άρνηση τρίτης πρότασης: P(b) P(c) Με βάση τα πιο πάνω προκύπτει το πιο κάτω προτασιακό σύνολο: {{ P(x 1 ), Q(f(x 1 ))}, { Q(x 1 ), R(y 1 )}, {R(a)}, { Q(x 2 ), R(y 2 )}, {P(b), P(c)}} Η Μέθοδος της Επίλυσης επιφέρει διάψευση στο προτασιακό σύνολο όπως φαίνεται στο δέντρο που ακολουθεί: R(a) Q(x 2 ), R(y 2 ) P(x 1 ), Q(f(x 1 )) Q(x 1 ), R(y 1 ) Q(x 2 ) P(b), P(c) P(x 1 ) P(b) Συνεπώς, ο συλλογισμός είναι έγκυρος.
Άσκηση 4 [20 μονάδες] (α) [4 μονάδες] Να γράψετε τον κανόνα SLD-Επίλυση στον οποίο βασίζεται ο Λογικός Προγραμματισμός και να τον εξηγήσετε. Α 1,,Α i-1, A i, A i+1,, A n, A B 1,,B k, A i θ i = Aθ i (Α 1,,Α i-1, B 1,,B k, A i+1,, A n ) θ i Σύμφωνα με τον Κανόνα SLD-Επίλυση οποίος εμφανίζεται πιο πάνω, δεδομένου του στόχου ενός προγράμματος Α 1,,Α i-1, A i, A i+1,, A n και μιας εντολής του προγράμματος A B 1,,B k σύμφωνα με την οποία για να υπολογίσουμε το Α πρέπει να υπολογίσουμε τα B 1,,B k, εφόσον ο όρος του στόχου μας Α i μπορεί να ενοποιηθεί με το Α μέσω μιας αντικατάσταση θ i, τότε ο στόχος του προγράμματος μπορεί να μετατραπεί σε (Α 1,,Α i-1, B 1,,B k, A i+1,, A n ) θ i. Ο κανόνας αυτός δεν είναι παρά μια εξειδίκευση του κανόνα της Επίλυσης στον Κατηγορηματικό Λογισμό. Οι όροι του κανόνα αντιστοιχούν στα προτασιακά σύνολα που εμφανίζονται πιο κάτω Α 1,,Α i-1, A i, A i+1,, A n { Α 1,, Α i-1, A i, A i+1,, A n } A B 1,,B k, {A, B 1,, B k } όπου, προφανώς, αν οι όροι Α i και Α μπορούν να ενοποιηθούν μέσω της ενοποιήτριας συνάρτησης θ i, η επίλυση μας επιστρέφει το προτασιακό σύνολο { Α 1,, Α i-1, B 1,, B k, A i+1,, A n }θ i που αποτελεί και την απόδοση του στόχου (Α 1,,Α i-1, B 1,,B k, A i+1,, A n ) θ i που εμφανίζεται ως αποτέλεσμα της εφαρμογής του κανόνα.
(β) [12 μονάδες] Να χρησιμοποιήσετε τη μέθοδο της SLD επίλυσης για να φθάσετε σε διάψευση του στόχου στο πιο κάτω πρόγραμμα λογικού προγραμματισμού. add([],ys,ys) add(xs,[],xs) add(0:xs,0:ys,0:zs) add(xs,ys,zs) add(0:xs,1:ys,1:zs) add(xs,ys,zs) add(1:xs,0:ys,1:zs) add(xs,ys,zs) add(1:xs,1:ys,0:zs) add(xs,ys,ws), add([1],ws,zs) add([1,1],[0,1],z) Υπενθύμιση: Αν xs = [x 1,,x n ], τότε x:xs συμβολίζει τη λίστα [x, x 1,,x n ]. 1. add([],ys,ys) 2. add(xs,[],xs) 3. add(0:xs,0:ys,0:zs) add(xs,ys,zs) 4. add(0:xs,1:ys,1:zs) add(xs,ys,zs) 5. add(1:xs,0:ys,1:zs) add(xs,ys,zs) 6. add(1:xs,1:ys,0:zs) add(xs,ys,ws), add([1],ws,zs) 7. add([1,1],[0,1],z) 8. add([1], [1], zs) Από γραμμές 5 και 7 και αντικατάσταση σ={[1]/xs, [1]/ys, 1:zs/Z} 9. add([],[],ws 1 ), add([1],ws 1,zs 1 ) Από γραμμές 6 και 8 και αντικατάσταση σ={[]/xs 1, []/ys 1, 0:zs 1 /zs} 10. add([1],[],zs 1 ) Από γραμμές 1 και 9 και αντικατάσταση σ={[]/ys 2, ys 2 /ws 1 } 11. Από γραμμές 2 και 10 και αντικατάσταση σ={[1]/xs 3, xs 3 /zs 1 } (γ) [4 μονάδες] Ποια αντικατάσταση ορθής απάντησης προέκυψε κατά την εκτέλεση του προγράμματος στο μέρος (β); Αντικατάσταση ορθής απάντησης: Ζ 1:zs 1:0:zs 1 1:0:xs 3 1:0:[1] = [1,0,1]