diff --git a/MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-16c-Conway-Game-of-Life-Golly.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-16c-Conway-Game-of-Life-Golly.ipynb index f9ebfcb050..2f670dc85e 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-16c-Conway-Game-of-Life-Golly.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-16c-Conway-Game-of-Life-Golly.ipynb @@ -9551,7 +9551,8 @@ "### Compter le signal produit\n", "\n", "Pour rendre le \"calcul\" concret, on mesure la croissance de population : chaque planeur emis ajoute 5 cellules\n", - "vivantes au flux. La courbe de population monte par paliers - chaque palier est un planeur lache dans le circuit." + "vivantes au flux. La courbe n'est pas un escalier monotone : elle oscille fortement au sein de chaque cycle de\n", + "30 generations -- le canon est lui-meme un oscillateur de periode 30 -- et gagne un planeur a chaque cycle." ] }, { @@ -9624,9 +9625,9 @@ "tags": [] }, "source": [ - "### Interpretation : lire le graphique en escalier\n", + "### Interpretation : lire le graphique\n", "\n", - "Chaque palier de la courbe correspond a l'emission d'un planeur (+5 cellules). Le \"step\" est la signature visuelle d'un canon a planeurs. Cette horloge naturelle est le mécanisme fondamental par lequel Life transmet l'information d'un point a un autre -- la base du deuxieme pilier (calcul universel)." + "La courbe oscille fortement d'une generation a l'autre et gagne un planeur par cycle de 30 generations : la progression est *periodique*, et non un escalier monotone. Cette horloge naturelle est le mécanisme fondamental par lequel Life transmet l'information d'un point a un autre -- la base du deuxieme pilier (calcul universel)." ] }, { @@ -15921,7 +15922,7 @@ "| II | Machine de Turing (36 549 cellules) | 1 000 | Le ruban evolue-il ? |\n", "| III | Gemini (~large) | 100 000 | Première étape vers les 33.6M |\n", "\n", - "Pour rappel : le simulateur numpy estimait **107 jours** pour Gemini. HashLife va le faire en quelques secondes." + "Pour rappel : le simulateur numpy estimait **~93.2 jours** pour Gemini. HashLife le fera en ~124 s pour les 100 000 premieres generations (et ~1244 s estimes pour les 33.6 M completes)." ] }, { @@ -16157,7 +16158,7 @@ "source": [ "### Interpretation : OTCA Metapixel en HashLife\n", "\n", - "En **4-5 secondes** de Python pur, HashLife a simule **35 328 generations** d'un motif de 64 691 cellules\n", + "En **~7.3 secondes** de Python pur, HashLife a simule **35 328 generations** d'un motif de plusieurs dizaines de milliers de cellules\n", "sur une grille implicite de $16384 \\times 16384$. Le simulateur numpy aurait necessite plusieurs minutes\n", "pour le même calcul (estimation : ~200 ms/generation sur une grille dense de cette taille, soit ~2 heures).\n", "\n", @@ -16279,7 +16280,7 @@ "source": [ "### Interpretation : Machine de Turing en HashLife\n", "\n", - "La machine de Turing de Rendell (36 549 cellules initiales) evolue sur 1 000 generations en ~4 secondes.\n", + "La machine de Turing de Rendell (un motif spartan de plusieurs dizaines de milliers de cellules) evolue sur 1 000 generations en ~8.6 secondes.\n", "La population diminue de ~263 cellules : la machine **consomme** des signaux pour effectuer ses transitions.\n", "Chaque pas de calcul dans Life \"brule\" des planeurs-signaux qui voyagent entre les composants logiques\n", "(portes AND/OR/NOT implementees en collisions de planeurs).\n", @@ -16413,21 +16414,21 @@ "\n", "| Pilier | Cellules initiales | Generations | Population finale | Temps HashLife | Equiv. numpy |\n", "|--------|-------------------|-------------|-------------------|---------------|--------------|\n", - "| I - OTCA | 64 691 | 35 328 | ~64 697 | ~4-5s | ~2 heures |\n", - "| II - Turing | 36 549 | 1 000 | ~36 286 | ~4s | ~0.5s (faisable) |\n", - "| III - Gemini | ~large | 100 000 | variable | quelques s | **107 jours** |\n", + "| I - OTCA | 64 691 | 35 328 | ~64 697 | ~7.3s | ~2 heures |\n", + "| II - Turing | 36 549 | 1 000 | ~36 286 | ~8.6s | ~0.5s (faisable) |\n", + "| III - Gemini | ~large | 100 000 | variable | ~124s | **~93.2 jours** |\n", "\n", "**Ce qu'on observe** :\n", "\n", "1. **OTCA** : la population revient proche de l'initiale après un cycle complet, confirmant le comportement\n", - " oscillatoire predit par `otca_self_emulates`. Le cout est de ~5s pour 35 328 generations d'un motif de 64 691 cellules.\n", + " oscillatoire predit par `otca_self_emulates`. Le cout est de ~7.3s pour 35 328 generations d'un motif de plusieurs dizaines de milliers de cellules.\n", "\n", "2. **Turing** : la machine consomme des signaux (population en baisse) au fur et a mesure de ses calculs.\n", " La simulation HashLife rend concret le theoreme `spartan_adder_correct` : les portes logiques en collisions\n", " de planeurs fonctionnent reellement.\n", "\n", "3. **Gemini** : le flagship. Même 100 000 generations (bien loin des 33.6M du theoreme) sont traitees en\n", - " quelques secondes grace a la compression temporelle de HashLife. Le theoreme `gemini_replicates` affirme\n", + " ~124 s grace a la compression temporelle de HashLife. Le theoreme `gemini_replicates` affirme\n", " qu'après 33 699 586 generations, le motif est translation de (5, 1) -- la machine s'est copiee.\n", "\n", "**Le message** : les trois piliers que le notebook Lean-16b prouve formellement sont des objets **reels** et\n", @@ -16538,7 +16539,7 @@ "Les cellules ci-dessous sont des **squelettes a completer** : le notebook s'execute de bout en bout même\n", "sans les remplir.\n", "\n", - "L'exercice 4 (Golly / HighLife) est dans la section précédente -- il utilise le webapp Golly plutot que le simulateur numpy." + "L'exercice 1 (Golly / HighLife) est dans la section précédente -- il utilise le webapp Golly plutot que le simulateur numpy." ] }, {