Skip to content

DimopoulosGrigorios/Lamda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

No packages published

Languages