rédaction partie lambda-calcul (peut-être) terminée

This commit is contained in:
Éric Wegrzynowski 2021-02-15 11:36:54 +01:00
parent 30267226b3
commit bcbe5d3293
4 changed files with 3585 additions and 981 deletions

View File

@ -1,4 +1,16 @@
# Quelques essais autour du 𝜆-calcul # Quelques essais autour du 𝜆-calcul
Fichiers :
* `lambda_calcul.py` module Python permettant de représenter des 𝜆-termes et de les réduire.
* `lambda_calcul.ipynb` calepin Jupyter décrivant et illustrant ce qu'est le 𝜆-calcul.
* `lambda_calcul.md` version Markdown du calepin précédent.
# Prérequis
* Tout ce travail a été réalisé avec Python 3.7.3 et Jupyter 6.1.
* L'utilisation du module `lambda_calcul.py` nécessite le module [`sly`](https://github.com/dabeaz/sly).
# TODO # TODO
Rédiger le texte. Rédiger le texte de la deuxième partie du calepin.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -224,7 +224,7 @@ class Lambda_terme():
def __eq__(self, terme): def __eq__(self, terme):
if not isinstance(terme, Lambda_terme): if not isinstance(terme, Lambda_terme):
raise Lambda_termeError('Comparaison inpossible impossible') raise Lambda_termeError('Comparaison impossible')
if self.est_variable(): if self.est_variable():
return terme.est_variable() and self._content[1] == terme._content[1] return terme.est_variable() and self._content[1] == terme._content[1]
elif self.est_application(): elif self.est_application():
@ -350,8 +350,8 @@ class Lambda_terme():
while not forme_normale_atteinte and etape < nb_etapes_max: while not forme_normale_atteinte and etape < nb_etapes_max:
etape += 1 etape += 1
terme_reduit, est_reduit = lambda_terme.reduit() terme_reduit, est_reduit = lambda_terme.reduit()
if verbose: print('{:3d}: ---> {:s}'.format(etape, str(lambda_terme), str(terme_reduit))) if verbose: print('{:3d}: ---> {:s}'.format(etape, str(terme_reduit)))
forme_normale_atteinte = not est_reduit forme_normale_atteinte = terme_reduit.est_forme_normale()
lambda_terme = terme_reduit lambda_terme = terme_reduit
if forme_normale_atteinte: if forme_normale_atteinte:
if verbose: print('Forme normale calculée : {:s}'.format(str(terme_reduit))) if verbose: print('Forme normale calculée : {:s}'.format(str(terme_reduit)))