-
Notifications
You must be signed in to change notification settings - Fork 0
DimopoulosGrigorios/Lamda
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
ΑΡΧΕΙΟ ΤΕΚΜΗΡΙΩΣΗΣ ------------------ Το προγραμμα κανονικοποιησης του λαμδα λογισμου υλοποιηθηκε σε c. Η υλοποιηση βασιστικε στην ιδεα της αναλυσης του ορου σε παρενθεσεις και την αποθηκευση καθε παρασταστης σε ενα δεντρο ωστε να μπορουν να γινουν οι καταλληλες πραξεις. Το προγραμμα δουλευει μονο με πληρες παρενθετοποιημενες παραστασης την μορφη της οποιας θα εξηγησουμε πιο κατω με παραδειγματα και εκτελεσεις.Επισης το προγραμμα λειτουργει με παραστασεις οι οποιες εχουν κενα η και οχι.Η μεταβλητες μπορουν να εχουν οποιο ονομα θελουμε αρκει να τηρουν τους κανονες της πληρως παρενθετοποιημενης μορφης που θα περιγραφει παρακατω.Το προγραμμα τρεχει συνεχομενα και ο τερματισμος του γινεται με Ctrl+C οπυ και καλειται ενας signal handler.Επισης μπορουν να διαχειριστουν και παραστασης που δεχν εχουν κανονικοποιηση και οταν κληθει ο τερματισμος του προγραμματος τυπωνεται το αποτελεσμα που εχουμε ως τωρα.Aκομα γινεται β-κανονικοιηση και σε περιπτωσεις που παει να δεσμευτει καποια μεταβλητη η οποια δεν θα επρεπε να δεσμευτει γινεται και μετανομασια.Επισης γινεται και η-κανονικοποιηση μονο στις περιπτωσεις που επιτρεπεται. Ορισμενα παραδειγματα εκτελεσεις ειναι τα παρακαω: 1.((\x.(\y.(x)))(\z.(z)))-> (\y.(\z.(z))) (το παραδειγμα της εκφωνισης) απλα πρεπει να δωθει με αυτη την μορφη. 2.((\x.(\y.(\z.((x)(y)(z)(z)))))(one)(two)(three))->((one)(two)(three)(three)) 3.((\variable32.(variable32))(one))->(((one))) 4.((\x.((x)(x)(x)))(\x.((x)(x)(x))))-> Bye Bye :((((\x.((x)(x)(x))))((\x.((x)(x)(x))))((\x.((x)(x)(x)))))(\x.((x)(x)(x)))) (οταν πατησουμε ctrl+C) περνουμε ως εκει που εχει υπολογισει 5.((\x.(\y.(x)))(y)) -> (\y.(y(renamed))) η μεταβλητη y μετανομαζεται σε y(renamed) για να μην ειναι δευσμευμενη 6.((\x.((something)(x)))) -> (\x.((something))) η μετατροπη. Οπως βλεπουμε απο τα παραδειγματα καθε μεταβλητη πρεπει να περικλυεται στην δικη της προσωπικη παρενθεση επισης στις μεταβλητες που εμαρμοζεται ενα \χ. πρεπει να ειναι μεσα σε παρενθεση.Τελος ολοκληρη η παρασταση πρεπει να ειναι σε μια παρενθεση.
About
Lamda Calculus interpreter
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published