Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Κρασανάκης Εμμανουήλ

67 views

Published on

Αυτόματη Συγγραφή Κώδικα

Published in: Software
  • Be the first to comment

  • Be the first to like this

Κρασανάκης Εμμανουήλ

  1. 1. Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου Κρασανάκης Εμμανουήλ Επιβλέπων: Συμεωνίδης Ανδρέας Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Επεξεργασίας Πληροφοριών και Υπολογισμών
  2. 2. Διάρθρωση παρουσίασης 1.Περιγραφή 2.Ανάπτυξη θεωρίας 3.Παρουσίαση αλγορίθμου 4.Δημιουργία βάσης δεδομένων 5.Μελλοντικές επεκτάσεις 2 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  3. 3. 1. Περιγραφή 3 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  4. 4. Στόχος Περιγραφή προβλήματος Συσχέτιση με σχόλια κώδικα Παραγωγή νέου κώδικα Βάση δεδομένων σχολιασμένου κώδικα 4 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  5. 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 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  6. 6. Ανάδραση Περιγραφή προβλήματος Συσχέτιση με σχόλια κώδικα Εισαγωγή κώδικα στην περιγραφή του προβλήματος Βάση δεδομένων σχολιασμένου κώδικα Επιλογή κώδικα ώστε μεγιστοποίηση μετρικής 6 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  7. 7. Σκοπός Βιβλιογραφία: • Καλώς ορισμένη λογική χαμηλών επιπέδων • Υπάρχουν μόνο proof machines και μέθοδοι algorithm verification Κενά: • Δεν υπάρχουν μαθηματικά εργαλεία για λογική υψηλότερου επιπέδου • Μαθηματική διαχείριση ισοδύναμου κώδικα 8 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  8. 8. 2. Ανάπτυξη θεωρίας 9 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  9. 9. Λογική 2ου Επιπέδου (SOL) Χαρακτηριστικά: • Μοντελοποιεί ανθρώπινο λόγο (στη χείριστη περίπτωση ως συλλογή κατηγορημάτων) • Turing-complete για κατάλληλες συναρτήσεις (θεωρώντας την εκχώρηση ως επιβεβαίωση-assertion) Μπορεί δηλαδή να χρησιμοποιηθεί για συνδυασμό ανθρώπινου λόγου και κώδικα 11 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  10. 10. Πολυπλοκότητα Ποσοτικοποίηση πληροφορίας SOL έκφρασης Πολυπλοκότητα Πλήθος μη ισοτικών συμβόλων (με επανάληψη) που απαιτούνται για την αναπαράσταση μιας έκφρασης. Παράδειγμα: • 𝑎 + 𝑏 = 3 • 𝑎 + 𝑏 + 𝑐 = 5 • 𝑎 + 𝑎 + 𝑏 = 5 • 𝑎 = 0 = 2 (το σύμβολο = κατ’ εξαίρεση δεν υπολογίζεται) 13 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  11. 11. Ισοτιμία • Διπλή συνεπαγωγή για λογική σύγκριση (π.χ. 𝑎 = 𝑏 𝑎𝑛𝑑 𝑎 = 0 ↔ 𝑎 = 0 𝑎𝑛𝑑 𝑏 = 0 ) • Σύγκριση εκφράσεων από προγραμματιστική άποψη: Ισοτιμία 𝑎 ∼ 𝑏 σημαίνει ότι για ισότιμες δεσμευμένες μεταβλητές (δηλ. που υπόκεινται σε ∀, ∃) έχουμε ισότιμες ελεύθερες μεταβλητές. 14 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  12. 12. Ισότιμες μεταβλητές • Όχι ακριβής ορισμός (π.χ. μπορεί να εξαρτάται από το αν η επιστροφή μεταβλητής 𝑎 αντιστοιχίζεται σε ∃𝑎 ή αν απλά οι ελεύθερες μεταβλητές επιστρέφονται) • Απαραίτητες ιδιότητες ισοτιμίας μεταβλητών: (𝑋 oι ελεύθερες, 𝑉 − 𝑋 οι δεσμευμένες και 𝑉 όλες οι μεταβλητές) 16 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  13. 13. Λογικά Μοντέλα Μοντέλα: Σύνολα εκφράσεων • Παράθεση: 𝑎1 ⊕ ⋯ ⊕ 𝑎 𝑛 = 𝑎1, … , 𝑎 𝑛 • 𝑎1 ⊕ ⋯ ⊕ 𝑎 𝑛 ∼ 𝑎1 𝑎𝑛𝑑 … 𝑎𝑛𝑑 𝑎 𝑛 • 𝑎1 ⊕ ⋯ ⊕ 𝑎 𝑛 ↔ 𝑎1 𝑎𝑛𝑑 … 𝑎𝑛𝑑 𝑎 𝑛 • 𝑎1 ⊕ ⋯ ⊕ 𝑎 𝑛 = 𝑖=1 𝑛 𝑎𝑖 Υπομοντέλα: τμήματα αυτοτελούς λογικής (αλγόριθμος μεγίστων συνδεδεμένων υπογράφων στο γράφο μεταβλητών) 17 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  14. 14. Αλγεβροποίηση Σύνδεση ισοτιμίας με διπλή συνεπαγωγή: Ορθό Aν 𝑀 ∼ 𝑁 τότε ∃𝐶 = 𝑐𝑜𝑛𝑛𝑒𝑐𝑡𝑜𝑟 𝑀, 𝑁 ώστε 𝑀 ⊕ 𝐶 ↔ 𝑁 και 𝑁 ⊕ 𝐶 ↔ 𝑀 Αντίστροφο Αν 𝑀 ↔ 𝑁 τότε ∃𝑄 = 𝑒𝑞𝑢𝑎𝑡𝑜𝑟 𝑀, 𝑁 ώστε 𝑄 ⊕ 𝑀 ∼ 𝑄 ⊕ 𝑁 19 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  15. 15. Μετασχηματισμοί Ομογενοποίηση Αφαιρεί εμφώλευση από εκφράσεις SOL μοντέλου (π.χ. 𝛼 = 𝑓𝑢𝑛𝑐 𝑏 + 𝑐 γίνεται 𝑎 = 𝑚, 𝑚 = 𝑓𝑢𝑛𝑐 𝑛 , 𝑛 = 𝑏 + 𝑐) Ανεξαρτητοποίηση (independent) Μετονομάζει μεταβλητές ώστε να είναι μοναδικές για κάθε μοντέλο (π.χ. μεταβλητή 𝑎 σε μοντέλο 𝐴 γίνεται _𝐴_𝑎 ενώ σε μοντέλο 𝐵 γίνεται _𝐵_𝑎) Ισότιμη αφαίρεση (⊖) 𝑀 ⊖ 𝑁 δίνει τα στοιχεία του 𝑀 εκτός από αυτά που είναι ισότιμα με κάποιο στοιχείο του 𝑁 20 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  16. 16. Εκτέλεση υποθέσεων • Γενίκευση ορθής αλγεβροποίησης • Δημιουργία λογικών συσχετισμών • Συνδέει τις πράξεις ⊕,⊖ Εκτέλεση υποθέσεων Για τυχαία μοντέλα 𝑀, 𝑁 ∃𝐶 = 𝑐𝑜𝑛𝑛𝑒𝑐𝑡𝑜𝑟 𝑀, 𝑁 ώστε 𝑀 ⊖ 𝑁 ⊕ 𝑁 ⊕ 𝐶 ↔ 𝑀 21 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  17. 17. 3. Παρουσίαση αλγορίθμου 22 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  18. 18. Ορισμός 𝑡 𝑔: 𝐷𝑔 → 𝐼𝑔 𝐷𝑔 σχόλια και 𝐼𝑔 κώδικας Περιγραφή 𝐻 ∉ 𝐷𝑔 𝑡 𝑔 𝐻 =? 23 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  19. 19. Ορισμός Επιλογή ακολουθίας 𝐷 𝑛 ∈ 𝐷𝑔 ώστε η ακολουθία 𝐻 𝑛 𝐻0 = 𝐻 𝐻 𝑛+1 = 𝑖𝑛𝑑𝑒𝑝𝑒𝑛𝑑𝑒𝑛𝑡 𝐷 𝑔 𝐻 𝑛 ⊖ 𝐷 𝑛 ⊕ 𝑡 𝑔 𝐷 𝑛 ⊕ 𝐶 𝑛 με 𝐶 𝑛 = 𝑐𝑜𝑛𝑛𝑒𝑐𝑡𝑜𝑟 𝐻 𝑛, 𝐷 𝑛 ⊕ 𝑐𝑜𝑛𝑛𝑒𝑐𝑡𝑜𝑟 𝐷 𝑛, 𝑡 𝑔 𝐷 𝑛 ⊕ 𝑒𝑞𝑢𝑎𝑡𝑜𝑟 𝐻 𝑛, 𝐷 𝑛 (𝐶 𝑛 περιέχει μόνο ισότητες και ποσοδείκτες) να έχει lim 𝑛→∞ 𝐻 𝑛 ⊖ ∀𝑦, ∃𝑥 ∼ 𝐻 24 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  20. 20. Βελτιστοποίηση Ποσότητα προς βελτιστοποίηση: 𝑯∞ ⊖ ⊕ 𝑰 𝒈 ⊖ 𝑸 − 𝒂 𝑯∞ ⊖ 𝑯∞ ⊖ ⊕ 𝑰 𝒈 ⊖ 𝑸 = 𝒎𝒊𝒏 όπου 𝑄 το τετριμμένο μοντέλο 𝑄 = 𝑦 = 𝑥, ∀𝑥, ∃𝑦 Αυτό σημαίνει: 𝐧𝐨𝐧 − 𝐢𝐦𝐩𝐥𝐞𝐦𝐞𝐧𝐭𝐚𝐛𝐥𝐞 − 𝒂 𝒊𝒎𝒑𝒍𝒆𝒎𝒆𝒏𝒕𝒂𝒃𝒍𝒆 = 𝒎𝒊𝒏 όπου 𝑖𝑚𝑝𝑙ementable: • εκφράσεις του υλοποιημένου κώδικα 𝐼𝑔 • εκχωρήσεις • ποσοδείκτες (∃ → έξοδοι, ∀ → είσοδοι) 25 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  21. 21. Βελτιστοποίηση Εφαρμογή άπληστης μεθόδου στη μέση περίπτωση: 𝟏 − 𝜶′ 𝑫 𝒏 + 𝜶′ 𝒕 𝒈 𝑫 𝒏 = 𝐦𝐚𝐱 για σταθερά 0 ≤ 𝛼′ ≤ 1 (εξαρτάται αλλά δεν ισούται με 𝛼), 𝐻 𝑛 ⊖ 𝐷 𝑛 ≠ ∅ • αν 0 ≤ 𝑎′ ≤ 0.5 και ⊕ 𝐷 𝑔, ⊕ 𝐼 𝑔 δεν περιέχουν κοινές εκφράσεις, τότε ολικό ελάχιστο σε πεπερασμένο αριθμό βημάτων • αν εφαρμοστεί ομογενοποίηση στα 𝐷 𝑛 και 𝑡 𝑔 𝐷 𝑛 το ολικό ελάχιστο έχει τη μικρότερη δυνατή τιμή 26 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  22. 22. Υλοποίηση Ισοτιμίας Παραδοχές για ισότιμες εκφράσεις: • Ίδιο πλήθος μεταβλητών • Ίδιο νόημα – Σχόλια: μεγάλη λεξικογραφική ομοιότητα – Κώδικας: ταυτόσημη έκφραση αν αντικατασταθούν οι μεταβλητές με την τρέχουσα διάταξή τους 27 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  23. 23. 4. Δημιουργία βάσης δεδομένων 29 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  24. 24. Εισαγωγή από βιβλιοθήκες Python Απλοϊκή αντιμετώπιση: 1. Εντοπισμός συναρτήσεων 2. Σχόλια 𝐷 𝑛 ∈ 𝐷𝑔, κώδικας 𝑡 𝑔 𝐷 𝑛 ∈ 𝐼𝑔 Προβλήματα: • Κατηγορήματα που έχουν αντίστροφο νόημα (π.χ. table A sorts table B, table B is sorted by A) • Ελλιπής διατύπωση σχολίων (μπορεί να εννοούνται οι μεταβλητές, π.χ. get random value) • Εκφράσεις επιστροφής που δεν επιστρέφουν απευθείας μεταβλητές (π.χ. return a+b) 30 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  25. 25. Εισαγωγή από βιβλιοθήκες Python Αντιμετώπιση προβλημάτων: • Αντιστροφή δεξιού και αριστερού μέρους για συγκεκριμένα κατηγορήματα (π.χ. B by A → Α Β) • Προσθήκη όλων των εισόδων και των εξόδων σε σχόλια χωρίς μεταβλητές • Ομογενοποίηση της έκφρασης επιστροφής (δηλ. επιπλέον μεταβλητές για εξόδους που δεν είναι μεταβλητές) 31 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  26. 26. 5. Μελλοντικές Επεκτάσεις 32 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  27. 27. Επεκτάσεις βελτιστοποίησης • Order-dependent κώδικας • Χρήση μεθόδων Service Composition • Χρήση τύπου και ονόματος μεταβλητών (για κατάλληλες γλώσσες προγραμματισμού) 33 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  28. 28. Επεκτάσεις βιβλιοθηκών • Εισαγωγή αντικειμενοστραφή κώδικα • Καλύτερος μετασχηματισμός δεδομένων (γενικότερα: ‘εξυπνότερος’ εντοπισμός ισότιμων εκφράσεων) • Δέντρο φυσικής γλώσσας για καλύτερο υπολογισμό πολυπλοκότητας 34 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  29. 29. Επίδειξη 35 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου
  30. 30. Ερωτήσεις? 36 Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

×