1. Αυτόματη Συγγραφή Κώδικα με
χρήση Λογικής Δευτέρου Επιπέδου
Κρασανάκης Εμμανουήλ
Επιβλέπων: Συμεωνίδης Ανδρέας
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Πολυτεχνική Σχολή
Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Εργαστήριο Επεξεργασίας Πληροφοριών και Υπολογισμών
5. Παράδειγμα
function func
return a random
positive number
…
# get a random number
a = random( )
…
…
# make b positive
if(b<0):
b = -b;
…
def func ( ):
temp = random( )
if(temp<0):
temp = -temp
return temp
5
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
9. Λογική 2ου Επιπέδου (SOL)
Χαρακτηριστικά:
• Μοντελοποιεί ανθρώπινο λόγο
(στη χείριστη περίπτωση ως συλλογή κατηγορημάτων)
• Turing-complete για κατάλληλες συναρτήσεις
(θεωρώντας την εκχώρηση ως επιβεβαίωση-assertion)
Μπορεί δηλαδή να χρησιμοποιηθεί για συνδυασμό
ανθρώπινου λόγου και κώδικα
11
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
10. Πολυπλοκότητα
Ποσοτικοποίηση πληροφορίας SOL έκφρασης
Πολυπλοκότητα
Πλήθος μη ισοτικών συμβόλων (με επανάληψη) που
απαιτούνται για την αναπαράσταση μιας έκφρασης.
Παράδειγμα:
• 𝑎 + 𝑏 = 3
• 𝑎 + 𝑏 + 𝑐 = 5
• 𝑎 + 𝑎 + 𝑏 = 5
• 𝑎 = 0 = 2 (το σύμβολο = κατ’ εξαίρεση δεν υπολογίζεται)
13
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
11. Ισοτιμία
• Διπλή συνεπαγωγή για λογική σύγκριση
(π.χ. 𝑎 = 𝑏 𝑎𝑛𝑑 𝑎 = 0 ↔ 𝑎 = 0 𝑎𝑛𝑑 𝑏 = 0 )
• Σύγκριση εκφράσεων από προγραμματιστική άποψη:
Ισοτιμία
𝑎 ∼ 𝑏 σημαίνει ότι για ισότιμες δεσμευμένες μεταβλητές
(δηλ. που υπόκεινται σε ∀, ∃) έχουμε ισότιμες ελεύθερες
μεταβλητές.
14
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
12. Ισότιμες μεταβλητές
• Όχι ακριβής ορισμός
(π.χ. μπορεί να εξαρτάται από το αν η επιστροφή μεταβλητής 𝑎 αντιστοιχίζεται
σε ∃𝑎 ή αν απλά οι ελεύθερες μεταβλητές επιστρέφονται)
• Απαραίτητες ιδιότητες ισοτιμίας μεταβλητών:
(𝑋 oι ελεύθερες, 𝑉 − 𝑋 οι δεσμευμένες και 𝑉 όλες οι μεταβλητές)
16
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
14. Αλγεβροποίηση
Σύνδεση ισοτιμίας με διπλή συνεπαγωγή:
Ορθό
Aν 𝑀 ∼ 𝑁 τότε ∃𝐶 = 𝑐𝑜𝑛𝑛𝑒𝑐𝑡𝑜𝑟 𝑀, 𝑁 ώστε
𝑀 ⊕ 𝐶 ↔ 𝑁 και 𝑁 ⊕ 𝐶 ↔ 𝑀
Αντίστροφο
Αν 𝑀 ↔ 𝑁 τότε ∃𝑄 = 𝑒𝑞𝑢𝑎𝑡𝑜𝑟 𝑀, 𝑁 ώστε
𝑄 ⊕ 𝑀 ∼ 𝑄 ⊕ 𝑁
19
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
15. Μετασχηματισμοί
Ομογενοποίηση
Αφαιρεί εμφώλευση από εκφράσεις SOL μοντέλου
(π.χ. 𝛼 = 𝑓𝑢𝑛𝑐 𝑏 + 𝑐 γίνεται 𝑎 = 𝑚, 𝑚 = 𝑓𝑢𝑛𝑐 𝑛 , 𝑛 = 𝑏 + 𝑐)
Ανεξαρτητοποίηση (independent)
Μετονομάζει μεταβλητές ώστε να είναι μοναδικές για
κάθε μοντέλο
(π.χ. μεταβλητή 𝑎 σε μοντέλο 𝐴 γίνεται _𝐴_𝑎 ενώ σε μοντέλο 𝐵 γίνεται _𝐵_𝑎)
Ισότιμη αφαίρεση (⊖)
𝑀 ⊖ 𝑁 δίνει τα στοιχεία του 𝑀 εκτός από αυτά που
είναι ισότιμα με κάποιο στοιχείο του 𝑁
20
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
16. Εκτέλεση υποθέσεων
• Γενίκευση ορθής αλγεβροποίησης
• Δημιουργία λογικών συσχετισμών
• Συνδέει τις πράξεις ⊕,⊖
Εκτέλεση υποθέσεων
Για τυχαία μοντέλα 𝑀, 𝑁 ∃𝐶 = 𝑐𝑜𝑛𝑛𝑒𝑐𝑡𝑜𝑟 𝑀, 𝑁 ώστε
𝑀 ⊖ 𝑁 ⊕ 𝑁 ⊕ 𝐶 ↔ 𝑀
21
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
18. Ορισμός
𝑡 𝑔: 𝐷𝑔 → 𝐼𝑔
𝐷𝑔 σχόλια και 𝐼𝑔 κώδικας
Περιγραφή 𝐻 ∉ 𝐷𝑔
𝑡 𝑔 𝐻 =?
23
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
19. Ορισμός
Επιλογή ακολουθίας 𝐷 𝑛 ∈ 𝐷𝑔 ώστε η ακολουθία 𝐻 𝑛
𝐻0 = 𝐻
𝐻 𝑛+1 = 𝑖𝑛𝑑𝑒𝑝𝑒𝑛𝑑𝑒𝑛𝑡 𝐷 𝑔
𝐻 𝑛 ⊖ 𝐷 𝑛 ⊕ 𝑡 𝑔 𝐷 𝑛 ⊕ 𝐶 𝑛
με 𝐶 𝑛 = 𝑐𝑜𝑛𝑛𝑒𝑐𝑡𝑜𝑟 𝐻 𝑛, 𝐷 𝑛 ⊕ 𝑐𝑜𝑛𝑛𝑒𝑐𝑡𝑜𝑟 𝐷 𝑛, 𝑡 𝑔 𝐷 𝑛 ⊕ 𝑒𝑞𝑢𝑎𝑡𝑜𝑟 𝐻 𝑛, 𝐷 𝑛
(𝐶 𝑛 περιέχει μόνο ισότητες και ποσοδείκτες)
να έχει lim
𝑛→∞
𝐻 𝑛 ⊖ ∀𝑦, ∃𝑥 ∼ 𝐻
24
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
20. Βελτιστοποίηση
Ποσότητα προς βελτιστοποίηση:
𝑯∞ ⊖ ⊕ 𝑰 𝒈 ⊖ 𝑸 − 𝒂 𝑯∞ ⊖ 𝑯∞ ⊖ ⊕ 𝑰 𝒈 ⊖ 𝑸 = 𝒎𝒊𝒏
όπου 𝑄 το τετριμμένο μοντέλο 𝑄 = 𝑦 = 𝑥, ∀𝑥, ∃𝑦
Αυτό σημαίνει:
𝐧𝐨𝐧 − 𝐢𝐦𝐩𝐥𝐞𝐦𝐞𝐧𝐭𝐚𝐛𝐥𝐞 − 𝒂 𝒊𝒎𝒑𝒍𝒆𝒎𝒆𝒏𝒕𝒂𝒃𝒍𝒆 = 𝒎𝒊𝒏
όπου 𝑖𝑚𝑝𝑙ementable:
• εκφράσεις του υλοποιημένου κώδικα 𝐼𝑔
• εκχωρήσεις
• ποσοδείκτες (∃ → έξοδοι, ∀ → είσοδοι)
25
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
21. Βελτιστοποίηση
Εφαρμογή άπληστης μεθόδου στη μέση περίπτωση:
𝟏 − 𝜶′ 𝑫 𝒏 + 𝜶′ 𝒕 𝒈 𝑫 𝒏 = 𝐦𝐚𝐱
για σταθερά 0 ≤ 𝛼′ ≤ 1 (εξαρτάται αλλά δεν ισούται με 𝛼), 𝐻 𝑛 ⊖ 𝐷 𝑛 ≠ ∅
• αν 0 ≤ 𝑎′ ≤ 0.5 και ⊕ 𝐷 𝑔, ⊕ 𝐼 𝑔 δεν περιέχουν
κοινές εκφράσεις, τότε ολικό ελάχιστο σε
πεπερασμένο αριθμό βημάτων
• αν εφαρμοστεί ομογενοποίηση στα 𝐷 𝑛 και 𝑡 𝑔 𝐷 𝑛 το
ολικό ελάχιστο έχει τη μικρότερη δυνατή τιμή
26
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
22. Υλοποίηση Ισοτιμίας
Παραδοχές για ισότιμες εκφράσεις:
• Ίδιο πλήθος μεταβλητών
• Ίδιο νόημα
– Σχόλια: μεγάλη λεξικογραφική ομοιότητα
– Κώδικας: ταυτόσημη έκφραση αν αντικατασταθούν οι μεταβλητές με την
τρέχουσα διάταξή τους
27
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
23. 4. Δημιουργία βάσης δεδομένων
29
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
24. Εισαγωγή από βιβλιοθήκες Python
Απλοϊκή αντιμετώπιση:
1. Εντοπισμός συναρτήσεων
2. Σχόλια 𝐷 𝑛 ∈ 𝐷𝑔, κώδικας 𝑡 𝑔 𝐷 𝑛 ∈ 𝐼𝑔
Προβλήματα:
• Κατηγορήματα που έχουν αντίστροφο νόημα
(π.χ. table A sorts table B, table B is sorted by A)
• Ελλιπής διατύπωση σχολίων
(μπορεί να εννοούνται οι μεταβλητές, π.χ. get random value)
• Εκφράσεις επιστροφής που δεν επιστρέφουν απευθείας
μεταβλητές
(π.χ. return a+b)
30
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
25. Εισαγωγή από βιβλιοθήκες Python
Αντιμετώπιση προβλημάτων:
• Αντιστροφή δεξιού και αριστερού μέρους για
συγκεκριμένα κατηγορήματα
(π.χ. B by A → Α Β)
• Προσθήκη όλων των εισόδων και των εξόδων σε
σχόλια χωρίς μεταβλητές
• Ομογενοποίηση της έκφρασης επιστροφής
(δηλ. επιπλέον μεταβλητές για εξόδους που δεν είναι μεταβλητές)
31
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
27. Επεκτάσεις βελτιστοποίησης
• Order-dependent κώδικας
• Χρήση μεθόδων Service Composition
• Χρήση τύπου και ονόματος μεταβλητών
(για κατάλληλες γλώσσες προγραμματισμού)
33
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
Παράδειγμα ποσοτικών μεταβλητών: πραγματικοί αριθμοί, φυσικοί αριθμοί, σύνολα τιμών (π.χ. 𝜅𝛼𝜄𝜌ό𝜍∈{𝛽𝜌𝜊𝜒𝜀𝜌ό𝜍, 𝜈𝜀𝜑𝜀𝜆ώ𝛿𝜂𝜍, 𝜂𝜆𝜄𝜊𝜑𝛷𝜈𝜀𝜄𝛼, …} )
Παράδειγμα κατηγορήματος: «είναι», διότι μπορεί να δηλώνει σύγκριση, την πράξη υπαγωγής σε σύνολο, κτλ
Υπάρχουν μετρικές για προγραμματιστικές εκφράσεις/μπλοκ κώδικα, αλλά δε μπορούν να εφαρμοστούν σε τυχαίες εκφράσεις
Περίπλοκος αναδρομικός αυστηρά μαθηματικός ορισμός που περιλαμβάνει έννοιες τις οποίες δεν είναι απαραίτητο να θίξουμε στα πλαίσια αυτής της παρουσίασης
Διαφορετικό σύμβολο από το συνηθισμένο ⇔ ώστε να μπορούμε να διαχειριστούμε θεωρήματα που περιέχουν τη διπλή συνεπαγωγή.
Οι ιδιότητες αποτελούν πρακτικά γραμμικότητα ως προς τις πράξεις ∪, ⊕, 𝑎𝑛𝑑 και ότι ισότιμες μεταβλητές σε διπλή συνεπαγωγή δίνουν ισοτιμία.
𝑐𝑜𝑛𝑛𝑒𝑐𝑡𝑜𝑟 περιέχει μόνο ισότητες, 𝑒𝑞𝑢𝑎𝑡𝑜𝑟 περιέχει μόνο ποσοδείκτες