Les tableaux de Laver fournissent des exemples de programmes qui ne se sont pas révélés se terminer dans le système axiomatique standard de mathématiques ZFC mais qui se terminent lorsque l'on suppose de très grands axiomes cardinaux.
introduction
Les tables classiques Laver sont les algèbres finies uniques avec ensemble sous - jacent et une opération qui satisfait l'identité et où pour et où .An
{1,...,2n}
*
x * (y * z)=(x * y) * (x * z)
x*1=x+1
x<2n
2n*1=1
Vous trouverez plus d'informations sur les tables Laver classiques dans le livre Braids and Self-Distributivity de Patrick Dehornoy.
Défi
Quel est le code le plus court (en octets) qui calcule 1*32
dans les tables Laver classiques et se termine précisément lorsqu'il trouve un n
avec ? En d'autres termes, le programme se termine si et seulement s'il trouve un avec mais sinon il s'exécute indéfiniment.1*32<2n
n
1*32<2n
Motivation
Un cardinal de rang (également appelé cardinal I3) est un niveau d'infini extrêmement élevé et si l'on suppose l'existence d'un cardinal de rang, alors on est en mesure de prouver plus de théorèmes que si l'on ne le fait pas. supposons l'existence d'un cardinal de rang en rang. S'il existe un cardinal de rang en rang, alors il y a une table Laver classique où . Cependant, il n'y a aucune preuve connue que dans ZFC. Par ailleurs, il est connu que le moins où est supérieur à (ce qui est un nombre extrêmement important puisque la fonction Ackermann est une fonction à croissance rapide). Par conséquent, un tel programme durera très longtemps.An
1*32<2n
1*32<2n
n
1*32<2n
Ack(9,Ack(8,Ack(8,254)))
Ack
Je veux voir à quel point un programme peut être écrit pour que nous ne sachions pas si le programme se termine en utilisant le système axiomatique standard ZFC mais où nous savons que le programme se termine finalement par un système axiomatique beaucoup plus fort, à savoir ZFC + I3. Cette question a été inspirée par le récent article de Scott Aaronson dans lequel Aaronson et Adam Yedidia ont construit une machine de Turing avec moins de 8000 états de sorte que ZFC ne peut pas prouver que la machine de Turing ne se termine pas mais est connue pour ne pas se terminer lorsque l'on suppose de grandes hypothèses cardinales.
Comment les tables Laver classiques sont calculées
Lors du calcul des tables , il est généralement Laver pratique d'utiliser le fait que , dans l'algèbre , nous avons pour tous dans .An
2n * x=x
x
An
Le code suivant calcule la table Laver classique An
# table (n, x, y) renvoie x * y dans A n table: = fonction (n, x, y) si x = 2 ^ n alors retourne y; elif y = 1 puis retourne x + 1; else retour table (n, table (n, x, y-1), x + 1); Fi; fin;
Par exemple, l'entrée table(4,1,2)
reviendra 12
.
Le code de table(n,x,y)
est plutôt inefficace et il ne peut calculer dans la table Laver que dans un délai raisonnable. Heureusement, il existe des algorithmes beaucoup plus rapides pour calculer les tables Laver classiques que ceux donnés ci-dessus.A4
Ack(9,Ack(8,Ack(8,254)))
s'agit d'une borne inférieure pour le premier tableau dans lequel la première ligne a la période 32, c'est-à-dire où 1*16 < 2^n
?
table(n,x,y)
, et je pense qu'il faudra entre 25 et 30 états pour configurer les constantes et la boucle externe. La seule représentation directe de MT que je peux trouver sur esolangs.org est esolangs.org/wiki/ScripTur et ce n'est pas vraiment aussi golfique.