====== λ-calcul binaire ====== * [[wp>fr:Lambda-calcul]] ==== Intro ==== John Tromp a mis au point le λ-calcul binaire comme programmation suffisamment puissante pour écrire un programme avec le moins de bits possible pouvant s’approcher au plus près de la [[wp>fr:Complexité_de_Kolmogorov|complexité de Kolmogorov]]. > « //Compléxité de Kolmogorov : un nombre comme étant la longueur du plus petit programme nécessaire pour calculer ce nombre. Un nombre complètement aléatoire ne peut être décrit par aucun programme plus court que le nombre lui-même, et possède donc une complexité de Kolmogorov maximale (on rejoint ici le concept d’entropie, qui est maximale quand les données sont aléatoires). Exemple : **“la la la la la la la la la la la la la la la la la la la la” contient assez peu d’information, résumée dans l’algorithme “écrire 20 fois le mot ‘la’”**// » Le langage de John Tromp est issu du λ-calcul, pour lequel tout programme est une expression, qui ne peut être que l’une des 3 formes suivantes : * Une variable, de la forme x, y, z ou n’importe quelle autre lettre * Une abstraction, de la forme (λx.a), où x est une variable et a est une autre expression * Une application, de la forme (a b), où a et b sont deux autres expressions ==== Syntaxe λ-calcul ==== ==== Définiton λ-calcul binaire ==== {{ int_tromp.gif }} Plus précisément, λ-calcul binaire définit une machine universelle qui, à partir d'un flux de bits d'entrée, analyse l'encodage binaire d'un terme de calcul lambda, applique cela au reste de l'entrée (traduit en une liste « ennuyeuses de [[wp>fr:Booléen|booléens]], qui ont une représentation standard en calcul lambda), et traduit le résultat évalué en une serie de bits en sortie. ==== Spécificité λ-calcul binaire ==== ===== Biblio ===== * [[https://cyril.deguet.com/fr/2013/08/05/entropie-exergie-information/|Entropie, exergie et information]], Blog de Cyril Deguet 2013 * [[https://cyril.deguet.com/fr/2013/08/28/lambda-calcul-binaire/|Mesurer la complexité des programmes grâce au λ-calcul binaire]], Blog de Cyril Deguet 2013 * John's Lambda [[https://tromp.github.io/cl/cl|Calculus and Combinatory Logic Playground]] * [[https://tromp.github.io/maze.html|The art of obfuscation]] * IOCCC 2012, [[https://www.ioccc.org/2012/tromp/hint.html|Tromp]] * Functional Bits: {{lc.pdf|Lambda Calculus based Algorithmic Information Theory}}, John TrompMay 10, 2018 * [[https://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/PROG2/06-07/lambda_combinatoire.pdf|Introduction au lambda-calcullogique combinatoire]], Pierre Lescanne, ENS Lyon, 2012 * [[https://www-sop.inria.fr/members/Yves.Bertot/courses/lambda-pur.pdf|Introduction au lambda-calcul pur]] Yves Bertot, INRIA 2006