A construction of the hat tilings by a Markov partition
26 mars 2026 | Catégories: math | View CommentsIn September 2025 in Montreal, Peter Selinger gave a talk at LaCIM in Montreal (where I am based this year) about the hex game. After lunch, I ask him to play against him. Since I needed to leave in about 30 minutes to give a colloquim at CRM at Université de Montréal, I thought playing againt Peter should not take too long as I would lose fast.
We ended up never even starting the hex game.
Peter was also short in time because he was also giving a second seminar the same day in the afternoon this time at McGill University.
Peter asked me what was my talk about. I said aperiodic tilings associated to the metallic mean, etc. Then, he showed me a picture he recently made. Right away, I recognized the partition of the internal space described by Baake, Gähler and Sadun for tilings by the meta-tiles T, H, P and F following the original terminology Smith, Myers, Kaplan and Goodman-Strauss. I was wondering since then if we could use their partition to describe the hat tilings the same way I did it for Jeandel-Rao tilings. So, I asked Peter how he got the picture. Then he told me exactly what I was hoping for. Peter's construction is marvelous!
With the semester Illustration as a mathematical research technique currently taking place this winter at Institut Henri Poincaré, Paris, I thought it would be a good occasion to share Peter's discovery. Together, we have been preparing a preprint presenting a construction of the hat tilings by a Markov partition following the approach I used in my work on Jeandel-Rao tilings. The preprint is not ready yet to be posted on arxiv, but we publicly share our draft today, March 26th, 2026.
An important aspect of the construction is the choice made by Peter for the placement of the anchors for each tile. Anchors are widely and commonly called control point in the community, but since Peter is an expert on Bezier curves, the terminology of control point did not make sense for him. And maybe he has a (control?) point.
The partition discovered by Peter can be seen as a extension of what happens with Jeandel Rao tilings that I now explain visually with a DIY laser cut puzzle on top of a partition.
Additional information and documents (slides, the partition, the grid, etc) will be posted here later. The talk at IHP on March 26 was recorded and will be available on their website.
Évolution de l'échelle de points dans classement du CQU4 depuis 2007
16 février 2026 | Catégories: ultimate, fqu | View CommentsLe plus vieux tournoi d'ultimate 4x4 au Québec a été organisé à ... Edmundston au Nouveau-Brunswick! C'était le tournoi Fun-E-Nuf! J'y avais participé à l'automne 2002 avec l'équipe B de Sherbrooke (dont j'ai oublié le nom) à ma première année au bacc en mathématiques à l'Université de Sherbrooke. Mais déjà en 2002, c'était la 2e (ou peut-être la 3e?) édition du FunEnuF. Cet hiver-là, mes coéquipiers ont organisé la première édition du tournoi Coup de Foudre à Sherbrooke en février 2003, puis le mois suivant avait lieu la première édition du tournoi Mars Attaque à Québec organisé en mars 2003 selon dans le thème du film américain sorti quelques années auparavant. Puis en décembre 2003 avait lieu la première édition du tournoi Bye Bye à Trois-Rivières.
Je suis fier d'avoir remporté les trois premières éditions du Bye Bye avec trois équipes différentes: avec les Stakatak de Sherbrooke en 2003, Slot Machine de Québec en 2004 (avec Martin Gagnon, Yannick Leduc, Guillaume Canuel, etc.) pendant mon stage à l'INRS à Québec et avec les Polatouches de Sherbrooke en 2005. Voici une copie écran du courriel envoyé par Philippe Lemieux le 30 novembre 2004 qui annonçait l'horaire, le thème du tournoi et les équipes participantes:
Dans les Polatouches édition 2005, il y avait tout plein d'amis de Sherbrooke qui ont évolué dans la ligue de l'Université de Sherbrooke pendant cette période et Greg Verzeaux qui arrivait de France et qui terminait son mémoire de maîtrise à l'Université de Sherbrooke sur la création d'une fédération québécoise d'ultimate. Son mémoire nous a été très utile dans les années qui ont suivi dans la création de la FQU.
Puis, en 2006, une des première action que nous avons faite au sein de la nouvelle Fédération québécoise d'ultimate a été la création du Circuit québécois d'ultimate 4 contre 4 (CQU4). Et je n'ai jamais regagné le tournoi Bye Bye depuis. Avec l'apparition des Ninjax et autres Fluo Turbo, de nouvelles équipes commençaient leur règne sur le circuit CQU4.
2007: la création de la fédération et du CQU4
En octobre 2007, avec PY Lavertu, Jean-Philippe Riopel, Marie-Hélène Audet et JS Mérette, nous avons mis en place le CQU4. Comme les mêmes équipes grosso moddo avec les mêmes alignements participaient aux tournois principaux (Bye Bye, Coup de Foudre, Mars Attaque, La Flotte à Rimouski), l'idée était d'avoir un classement global qui allait formaliser la saison hivernale d'ultimate au Québec et permettre de donner un exemple concret de ce à quoi une fédération pouvait être utile et associer le sigle FQU à quelque chose d'inovateur, de positif et utile.
Je rappelle qu'à ce moment-là, le sigle FQU ne voulait rien dire pour personne et peu de gens y croyait. Le budget de la première année de la FQU était de 200$ et on l'avait utilisé pour faire une bannière. L'ultimate 4 contre 4 n'existait pas à Montréal, mais cela restait un format de jeu qui rassemblait les autres villes universitaires québécoises où c'était joué.
J'avais beaucoup réfléchi à l'époque et analysé les différentes possibilités d'échelles de pointages pour le CQU4 en m'inspirant de ce qui se fait dans le sport (Classement ATP, Classement de la Formule 1, etc.). La conclusion de mon analyse était que c'est pas tant combien de points on donne à une équipe, ce qui est important est plutôt combien de points de plus on donne à une équipe par rapport à une autre.
Le système de pointage par tournoi proposé en 2007 était obtenu par la règle suivante :
Voici ce que cela donnait sur la saison 2006-2007 qui précédait:
Et c'était parti pour la première édition 2007-2008 qui s'était même terminée avec l'organisation du Championnat du Circuit d'ultimate québécois (CCQU4) qui invitait les 8 meilleurs équipes au classement à faire un tournoi final à Saint-Hyacynthe au nouveau Centre BMO en avril 2008. Tournoi qui avait été organisé avec l'aide de Francis Beaumont et des Smileys de Montréal! Après quelques années, le CCQU4 est disparu, car le calendrier devenait chargé.
En particulier, on peut observer que le choix qui avait été fait n'était pas une échelle de points à décroissance linéaire, mais plutôt à décroissance concave. Passer de à 23e à la 22e position donne un point de plus, mais passer de la 2e à la première place donnait 7 points de plus.
Les points dans le CQU4 en 2010-2011
Le système de pointage du Circuit québécois d'ultimate 4 contre 4 pour la saison 2010-2011 était divisé en deux séries:
Série A: Movember, Bye Bye, La Flotte, Coup de Foudre, Mars Attaque Série B: OctoberDisk, Fun-E-nuF, La Virée
La même échelle allant de 1 à 73 points était utilisée pour les tournois de série A et donnait des points à 31 équipes. Une échelle de 1 à 16 points était utilisée pour les tournois de série B et donnait des points à 16 équipes. Ces échelles de pointages avaient été conçues à l'automne 2007 à une époque où le plus grand tournoi acceptait 36 équipes.
Le CQU4 de 2011 à 2014
En 2011, vu l'augmentation de popularité du circuit (le nombre d'équipes participant au circuit avait doublé en trois ans passant de 60 à 120 équipes), le système de pointage a dû être actualisé.
Désormais, l'équipe gagnante d'un tournoi de série A obtenait 1000 points et 400 points pour un tournoi de série B. Cinquante équipes obtenaient des points dans un tournoi de série A (sauf pour le Mars Attaque où l'échelle sera allongée) et 24 équipes obtiendront des points pour un tournoi de série B. Le tournoi La Flotte avait sa propre classe : 800 points pour l'équipe gagnante et 32 équipes obtenaient des points. Ainsi, l'équipe gagnante du tournoi La Flotte obtenait autant de points qu'une 5e place dans un tournoi de série A ce qui correspond à la réalité des forces relatives des équipes qui se déplacaient à Rimouski. Les quatre tournois de série A étaient : Movember, Bye Bye, Coup de Foudre, Mars Attaque et les tournois de série B seraient : OctoberDisk, Fun-E-nuF, La Virée, Ottawa (nouveau) et Landaudière (nouveau).
Le CQU4 en 2014 et après: Séries 1000, 666 et 333
Puis, en 2014, un autre ajustement a eu lieu. On passait désormais à trois séries différentes: Serie 333, 666, 1000.
Puis d'autres ajustements devaient être faits par la suite, mais je n'avais pas suivi le fil vu notre déménagement en Europe. Et j'ai suivi que de loin par la suite.
Une chose ne s'est jamais produite avant 2012: aucune équipe de 2003 à 2012 n'a jamais fait un grand chelem, c'est-à-dire, gagner tous les tournois du circuit CQU4 pendant la même saison. Je ne sais pas si cela s'est produit depuis? À ce sujet, il faudrait conserver l'information des classements des tournois du CQU4 de chaque année et le rendre disponible. Les rendre accessibles permet de faire parler les statistiques. Et comme on le sait, ce type de statistiques est très importants pour les sports télévisuels. Un jour, ce sera au tour de l'ultimate de raconter son histoire, encore faudra-t-il la connaître.
Le CQU4 en 2025
Cette année, grâce à une affectation temporaire d'un an au CRM-CNRS, je participe au CQU4 pour la première fois depuis 12 ans et je constate comment le niveau de jeu a augmenté. Les équipes sont plus polyvalentes qu'avant. Tous les joueurs et joueuses des équipes ont des bonnes capacités techniques de lancers et attrapés (pas juste 2-3 joueurs/euses par équipe). Atteindre la finale d'un tournoi demande des capacités athlétiques de plus en plus élevées. Et le circuit attire les athlètes à performer et être reconnu(e)s au sein du circuit. Aussi, les stratégies ont évolué. On voit toutes les équipes braconner la zone des buts pour aider les coéquipiers pour défendre le lancer marteau, etc. C'est très agréable de constater cette évolution près de 20 ans après la création du CQU4, car finalement, c'était ça l'objectif! Et c'est bien que cela ait fonctionné. Il y a des choses qui se sont perdues par contre. Il n'y a plus de repas communs le samedi soirs, etc. Ces moments permettaient de renforcer les liens entres les équipes et créer une cohésion inter-associations et intra-provinciale.
Concernant l'échelle de points, je constate dans le Guide du circuit Élite 2025-2026 de la fédération que l'échelle de points a été remplacée par une formule à décroissance linéaire, chose que j'avais toujours absoluement voulu éviter lors de la création du CQU4 et de ses multiples évolutions décrites ci-haut.
Le guide 2025-2026 dit:
- L’équipe championne obtient toujours le nombre de points équivalant au nombre d’équipe dans la division élite complète ; - Le nombre de points qu’obtiennent les équipes subséquentes est déterminé selon la formule suivante : (#équipe total du élite — #équipe total du élite/#équipe au tournoi x position + 1), arrondit à l’unité
Autrement dit, l'échelle de points est désormais à décroissance linéaire:
Par décroissance linéaire, on veut dire que de gagner une position donne le même nombre de points supplémentaires peu importe la position où on est. L'avantage de la décroissance linéaire est que c'est très simple à définir, mais à mon avis ce n'est pas du tout adapté.
Pourquoi la décroissance linéaire est à éviter à mon avis
- S'il y a un seul tournoi dans le circuit, alors le type de décroissance n'a pas d'importance. Toutes les échelles décroissantes donneront le même classement final de la saison égal au classement du seul tournoi. Le type de décroissance devient important lorsqu'il y a deux tournois ou plus dans le circuit. C'est le type de décroissance qui dit ce qui est mieux entre finir 1er et 7e et finir 2e et 6e par exemple: une décroissance concave dira que c'est l'un, une décroissance convexe dira que c'est l'autre et une décroissance linéaire dira que c'est ni l'un ni l'autre. À mon avis, il faut choisir la décroissance qui correspond à ce qui est valorisé intrinsèquement par les athlètes eux-mêmes.
- Le classement doit refléter au mieux la force relative des équipes. Plus le classement établi par la fédération est proche de la réalité, plus il sera respecté par la communauté et plus ça donnera du sens et du respect d'atteindre un certain niveau dans le classement. Un classement de qualité motive les athlètes à participer au circuit et obtenir la reconnaissance associée au placement dans le classement. Inversement, un classement de mauvaise qualité fait perdre sa signification et les démotive de se préparer pour être reconnu par celui-ci.
- La décroissance linéaire (de pente -1) dit que de passer de la 2e à la première place vaut 1 point de plus et de passer de la 10e à la 9e place vaut aussi un point de plus et passer de la 25e à la 24e place vaut un point de plus, etc. Or, gagner la finale d'un tournoi prend beaucoup plus d'énergie que de gagner la 9e place même avec les mêmes équipes impliquées. Pour la 9e place, on voudra s'économiser. On ne jouera pas si on a une petite blessure, etc. Mais, pour la finale, les joueurs et joueuses vont tout donner. Il faut que l'échelle de pointage reconnaisse et récompense l'énergie déployées par les athlètes pour atteindre le sommet.
- Pour être plus concret, imaginons par exemple que Ultiminati gagne contre Ninjax au Bye Bye. Et supposons que ces deux équipes jouent très mal au Coup de Foudre et que les deux équipes se retrouvent dans le 9 à 16. Supposons qu'ils se retrouvent en finale du 9 à 16 et que que Ninjax gagne contre Uliminati. En considérant ces deux tournois seulement, quelle équipe devrait avoir le plus de points? La décroissance linéaire dit que les deux équipes sont à égalité. Mais, en réallité, ce n'est pas vrai. L'équipe qui a gagné la finale du Bye Bye doit avoir plus de points que l'équipe qui a gagné la 9e place au Coup de Foudre. Pour que ce principe soit atteint, il faut une décroissance concave de l'échelle de point et pas linéaire ni convexe.
- En Formule 1, dans les années 1990 de Jacques Villeneuve, des points étaient donnés aux 6 premiers à chaque course selon la règle suivante: 10 points au gagnant, 6 points au deuxième, 4 points au 3e, puis 3, 2 et 1 points aux 4e, 5e et 6e. Donc, après deux courses, si un compétiteur avait fini 1er et 3e, il recevait 10 + 4 = 14 points. A contrario, si un autre compétiteur avait fini deux fois 2e, il recevait 6 + 6 = 12 points. Donc, dans les années 1990, en Formule 1, finir 1er et 3e était considéré mieux que finir deux fois 2e. Et c'est exactement la question qu'il faut se poser ici. Si on pense que finir deux fois 2e est mieux que finir 1er et 3e, alors il faut une décroissance convexe de l'échelle de pointage. Si on pense que finir 1er et 3e est mieux que finir deux fois 2e, il faut une décroissance concave. Et si on ne veut pas décider ce qui est mieux, alors on choisit une décroissance linéaire.
- En tennis, le classement de l'ATP utilise l'échelle suivante pour les points associés aux tournois du Grand Chelem: Gagnant 2000 points, finaliste 1300 points, semi-finalistes 720 points, quart-de-finalistes 360 points, ronde des seize 180 points, ronde des 32 donne 90 points. On observe que le nombre de points double à chaque ronde ou, autrement dit, à chaque fois qu'on divise par deux son classement final.
![]()
- Au Poker, selon l'intelligence artificielle de Google, dans les tournois comptant entre 16 et 25 participants, les quatre meilleurs joueurs se voient généralement attribuer des prix dans les proportions suivantes : 50 %, 25 %, 15 % et 10 %. On obtient la courbe ci-bas. Autrement dit, les 5e et tous les autres reçoivent zéro points.
![]()
- Cet exemple du Poker nous amène à un autre argument plus télévisuel et qui concernent les spectateurs et l'intérêt qu'on peut donner à regarder un match (pourquoi regarde-t-on plus les séries de la Coupe Stanley après tout?). Avant le dernier tour d'un tournoi de Poker, il reste encore beaucoup d'argent à gagner. Les joueurs ont donc tout intérêt à donner le meilleur d'eux-mêmes à la dernière ronde. Aussi, les spectateurs ont une raison de regarder, car il y a un enjeu important. Avec l'échelle ci-haut, il y a encore 25% du pot à décider avant l'élection du gagnant. Pendant ce temps, avant la finale d'un tournoi du CQU4 qui donne 48 points à l'équipe championne et 47 points à l'équipe finaliste, il reste juste un maigre point à distribuer. Sur le total de 1+2+3+4+...+48=1176 points, cela représente moins de 0.1 % du pot des points distribués pendant le tournoi. C'est presque rien. Pourquoi donc, devrait-on s'intéresser à regarder la finale? ou même la jouer?
- Cet argument télévisuel se traduit aussi chez les joueurs et les équipes pendant un tournoi. En effet, s'il reste beaucoup plus de points à aller chercher dans le 9 à 12 que dans le 13 à 16, alors cela donne un intérêt supplémentaire à jouer les derniers matchs du dimanche. Cela peut même devenir excitant, car si on sauve les meubles et qu'on termine 5e au Mars Attaque, on peut encore espérer finir premier au classement global, etc. Cela donne du piquant à la fin du tournoi. Hélas, avec des pointages de tournois du CQU4 à décroissance linéaire, on rend la chose beaucoup plus boring avec tout qui est presque déjà décidé plus la fin approche. À mon avis, c'est une occasion perdue de rendre les choses plus excitantes. Les joueurs le demandent. Les spectateurs le demandent. Les familles, les amis des joueurs veulent entendre des histoires du week-end. Les journalistes veulent des histoires et le demandent aussi. C'est une échelle de points bien choisie qui permettra ce contexte positif de recherche de l'excellence.
Futur 2026-2027
S'il y a un intérêt, je suis prêt à m'investir pour proposer une actualisation du système de classement du CQU4 pour la saison 2026-2027. J'aurai besoin de l'aide des gens de la communauté et de la fédération, car je dois mieux comprendre le contexte, les défis actuels et l'évolution anticipée du circuit pour les cinq prochaines années.
Au plaisir d'avoir vos retours.
Découpe laser de pentagones qui pavent le plan
15 mai 2025 | Catégories: découpe laser, math | View CommentsEn janvier 2025, avec l'aide de David Renault, j'ai fait une nouvelle série de découpes lasers au fablab EirLab de l'ENSEIRB sur le thème des pavages par pentagones. Comme démontré par Michael Rao, il n'existe que 15 pavages pentagonaux possibles.
Voici quelques images de la découpe effectuée le 9 janvier 2025.
Un pentagone de type 7 découvert par Kershner en 1968:
Un pentagone de type 10 découvert par James en 1975:
Le pentagone de type 15 découvert en 2015 par Jennifer McLoud-Mann, Casey Mann et David Von Derau, un étudiant de niveau licence en stage avec eux:
J'ai pu rencontrer Casey et Jennifer pour la première fois en 2017 à Montréal. Ils ont passé une année sabbatique à l'Université de Bordeaux en 2019-2020 via le programme Visiting Scholar de l'Université de Bordeaux, et cela a mené à une publication scientifique commune.
J'en ai aussi profité pour découper quelques tuiles chapeau apériodiques en plus:
Interventions dans les collèges et lycées en Gironde
Ces dernières années, sous l'invitation annuelle de Johanne Brengues, professeure au Lycée Kastler, j'ai développé un atelier sur la structure des flocons de neige et pavages apériodiques. Dans l'atelier d'une durée de 60 à 120 minutes, j'utilise des pièces en bois découpées au laser à l'ENSEIRB pour faire découvrir la science des pavages apériodiques et des quasicrystaux par la manipulation.
Pour l'année 2024-2025, j'ai soumis l'atelier suivant à l'Académie de Bordeaux dans le cadre de l'activité Des universitaires dans les classes.
Titre: Structure des flocons de neige et pavages apériodiques
Résumé: On dit que les flocons de neige sont tous différents. Pourquoi alors les branches d’un même flocon sont identiques? Dans cet exposé interactif, nous étudierons ces questions du point de vue des pavages du plan par des pièces de puzzle polygonales. Ces pièces se collent les unes aux autres comme le font en trois dimensions les molécules d’eau lors de la formation d’un flocon. En particulier, nous manipulerons des dizaines de copies d’un polygone à 13 côtés découvert en mars 2023. Les copies de ce polygone ont la propriété de paver le plan sans jamais se répéter. Nous utiliserons cet exemple pour discuter des pavages apériodiques du plan et de leurs propriétés. Public : tout niveau primaire + collège + lycée
J'ai été contacté par plusieurs collèges de la région pour faire cet atelier au printemps 2025:
- Collège Cassignol Bordeaux, 28 élèves de 3e, 7 janvier 2025
- Collège Jean Rostand, Casteljaloux, 3 classes de 6e, 16 janvier 2025
- Collège Olympe de Gouges, Vélines, 17 janvier 2025
- Village de maths, Collège Laure Gatet, Périgueux, 13 mars 2025
- Lycée Kastler, Talence, 15 mai 2025
- Collège Jean Zay, Cenon, 13 juin 2025
Les professeurs me disent que les pavages sont au programme du collège ce qui facilite les liens avec le sujet de l'atelier.
L'atelier en 2024-2025
Dans mes recherches, je m'intéresse à la combinatoire et à ses interactions avec les autres sciences. Par exemple, les atomes se combinent pour former des molécules stables en suivant des règles combinatoires simples. À l'état solide, les molécules peuvent se combiner pour former des structures ordonnées comme des crystaux ou même des flocons de neige.
La structure des flocons de neige est une science passionnante étudiée par Kenneth Libbrecht, professeur de physique au California Institute of Technology. Plusieurs questions naturelles peuvent-être posées par les élèves en voyant quelques images de flocons de neige:
- Pourquoi les flocons ont tous 6 branches?
- Pourquoi les branches d'un même flocon sont pareilles?
Après l'introduction sur la combinatoire et les flocons de neige, on passe à l'atelier. On divise la classe en petits groupes de 3 à 5 élèves. On attribue un atome (c'est-à-dire, plusieurs copies d'un même polygone) à chaque groupe. On demande aux élèves de trouver les molécules que l'atome peut créer en deux dimensions. On oriente les élèves à trouver des grandes molécules qui recouvrent des disques arbitrairement grand (on demande de recouvrir une feuille format A7, puis format A6, puis format A5, puis format A4).
Comme les pavages pentagonaux sont périodiques, nous démarrons l'atelier par l'exploration des pavages par l'un des 15 types de pentagones qui pavent le plan. Chaque groupe d'élèves se voit attribuer plusieurs copies d'une sorte de pentagones. Les élèves doivent explorer la combinatoire de la forme géométrique et faire des observations. Les découvertes des élèves sont publiées au tableau pendant l'atelier comme un article scientifique. Les résultats publiés peuvent être utilisés par les autres groupes à condition de les citer!
La notion d'apériodicité se transmet mieux après avoir compris la notion de pavages périodiques. La nouveauté pour mon atelier du printemps 2025 était de faire en sorte que les élèves découvrent d'abord des pavages périodiques non triviaux avant de considérer des pavages apériodiques. Cela permet de mieux expliquer la notion d'apériodicité.
Toutefois, avec une introduction de 15 à 20 minutes, l'atelier sur les pentagones nécessite presque la totalité du temps restant (30 minutes). Dans certains cas, un des groupes peut commencer l'étude de la pièce apériodique chapeau dans les 10 minutes restantes. Dans d'autres situations, je laisse un groupe choisir la pièce chapeau dès le début de l'atelier. Quand le temps le permet, on peut prévoir l'atelier en deux périodes de 60 minutes avec le même groupe. Cela permet d'explorer les pièces pentagonales périodiques, puis les pièces apériodiques tout en laissant du temps pour répondre aux questions des élèves.
Voici des fichiers qui rassemblent les images que j'utilise dans l'atelier sur les différents thèmes présentés.
Voici quelques liens pour en savoir plus:
Pour les collèges et lycées en dehors de Bordeaux et difficilement accessible en transport en commun, je remercie l'Université de Bordeaux pour le prêt d'une voiture.
On the bifurcation diagram proposed by Jang and Robinson
06 mai 2025 | Catégories: sage, math | View CommentsIn this blog post, we present a few remarks on the "bifurcation diagram" proposed by Jang and Robinson in [1] to describe the tilings associated to a set of 24 Wang tiles encoding Penrose tilings.
[1] Hyeeun Jang, E. Arthur Robinson Jr, Directional Expansiveness for Rd-Actions and for Penrose Tilings, arxiv:2504.10838
In particular, I believe that something is wrong in what the authors call the "bifurcation diagram" shown in Figure 10. But, as we illustrate below, it can be fixed easily by permuting some of the labels of the partition.
I saw Jang and Robinsion's bifurcation diagram for the first time during the talk "Remembering Shunji Ito" made by Robinson during the online conference dedicated to the memory of Shunji Ito on December 14, 2021. At that time, I was working on the family of metallic mean Wang tiles. This is why the bifurcation diagram shown by Robinson and extracted from Jang's PhD thesis got my attention right away, because it was looking very much like the Markov partition associated to the Ammann set of 16 Wang tiles, the first member of the family of metallic mean Wang tiles. As we illustrate below, Jang and Robinson's bifurcation diagram is a refinement of the Markov partition associated the Ammann set of 16 Wang tiles. This means that the 16 tiles Ammann Wang shift is a factor of the 24 tiles Penrose Wang shift. Also most probably the bifurcation diagram is a Markov Partition for the same associated toral ℤ2-action. But this needs a proof.
The content of this blog post is also available as a Jupyter notebook that can be viewed and downloaded from the nbviewer.
Dependencies
The computations made here depend on the modules WangTileSet, WangTiling, PolyhedronPartition, PolyhedronExchangeTransformation, PETsCoding implemented in the SageMath optional package slabbe over the last years in order to describe and study the Jeandel-Rao aperiodic tilings and the family of metallic mean Wang tiles.
Note that the package slabbe can be installed by running !pip install slabbe directly in SageMath:
sage: # !pip install slabbe # uncomment and execute this line to install slabbe package
Here are the version of the packages used in this post:
sage: import importlib sage: importlib.metadata.version("slabbe") '0.8.0'
sage: version() 'SageMath version 10.5.beta6, Release Date: 2024-09-29'
Jang-Robinson encoding of the Penrose 24 Wang tiles
We encode the 24 Wang tiles proposed by Jang and Robinson (Figure 9 of [1]) using alphabet {A, B, C, D, E, F, G, H, I, J} for the shapes:
We define the 24 Wang tiles in SageMath:
sage: from slabbe import WangTileSet, WangTiling sage: tiles = ["AADD", "CCBB", "EEII", "JJFF", ....: "CCHH", "GGDD", "HHAA", "BBGG", ....: "FGEC", "FDEH", "GFCE", "DFHE", ....: "BICF", "DEAJ", "IBFC", "EDJA", ....: "HCBA", "CHAB", "BADG", "ABGD", ....: "DFBJ", "AICE", "FDJB", "IAEC"] sage: T0 = WangTileSet([tuple(str(a) for a in tile) for tile in tiles]) sage: T0 Wang tile set of cardinality 24
sage: T0.tikz(ncolumns=4)
Constructing Jang-Robinson Bifurcation diagram as a polygonal partition
Below is a reproduction of Jang-Robinson bifurcation diagram shown in Figure 10 from arxiv:2504.10838
In this section, we construct this bifurcation diagram in SageMath as a polygonal partition.
sage: from slabbe import PolyhedronPartition
sage: z = polygen(QQ, 'z') sage: K = NumberField(z**2-z-1, 'phi', embedding=RR(1.6)) sage: phi = K.gen()
sage: square = polytopes.hypercube(2,intervals = 'zero_one') sage: P = PolyhedronPartition([square]) sage: P = P.refine_by_hyperplane([1/phi^3,-1,-1]) sage: P = P.refine_by_hyperplane([1/phi,-1,-1]) sage: P = P.refine_by_hyperplane([1,-1,-1]) sage: P = P.refine_by_hyperplane([1 + 1/phi,-1,-1]) sage: P = P.refine_by_hyperplane([1 + 1/phi^3,-1,-1]) sage: P = P.refine_by_hyperplane([1/phi,-phi,-1]) sage: P = P.refine_by_hyperplane([1,-phi,-1]) sage: P = P.refine_by_hyperplane([phi,-phi,-1]) sage: P = P.refine_by_hyperplane([1/phi^2,-1/phi,-1]) sage: P = P.refine_by_hyperplane([1/phi,-1/phi,-1]) sage: P = P.refine_by_hyperplane([1,-1/phi,-1]) sage: P = P.refine_by_hyperplane([1/phi,-1,0]) sage: P = P.refine_by_hyperplane([1/phi,0,-1]) sage: P = -P sage: P = P.translate((1,1)) sage: #P.plot() sage: P = P.rename_keys({0:5, 1:0, 2:18, 3:19, 4:7, 5:6, 6:16, 7:17, 8:1, 9:4, 10:15,11:9, sage: 12:22,13:23,14:8, 15:14,16:13,17:11,18:20,19:21,20:10, 21:12, 22:3, sage: 23:2}) sage: P.plot()
Our claim
We claim that the above bifurcation diagram from Jang-Robinson preprint is slightly wrong according to the choice of indices of the 24 Wang tiles made by Jang and Robinson and shown above. The following changes should be made in order to fix the partition:
- indices 9 and 22 should be swapped,
- indices 8 and 23 should be swapped,
- indices 11 and 20 should be swapped and
- indices 10 and 21 should be swapped.
Defining the toral translations in the internal space as PETs
We define the toral translations associated to the partition chosen by Jang-Robinson. The internal space is the 2-dimensional torus ℝ2 ⁄ ℤ2. It is represented as the unit square [0, 1)2. On this fundamental domain, a toral translation is a polygon exchange transformation.
Note that according to their choice,
- a unit horizontal translation in the physical space corresponds to a vertical translation by (0, φ) in the internal space,
- a unit vertical translation in the physical space corresponds to a horizontal translation by (φ, 0) in the internal space,
where φ is the golden mean.
Below, we follow their convention.
sage: from slabbe import PolyhedronExchangeTransformation as PET
sage: base = diagonal_matrix((1,1)) sage: R0e1 = PET.toral_translation(base, vector((0,phi))) sage: R0e2 = PET.toral_translation(base, vector((phi,0)))
We compute a 10×10 pattern obtained by coding the orbit of some starting point under the ℤ2-action R0.
sage: from slabbe.coding_of_PETs import PETsCoding
sage: coding_R0_P = PETsCoding((R0e1,R0e2), P) sage: pattern = coding_R0_P.pattern((.3,.4), (10,10)) sage: pattern = WangTiling(pattern, T0) sage: pattern.tikz()
We observe that this pattern is not valid !!!
Let's fix the partition
We claim that the above pattern is wrong because something is wrong in the labelling of the atoms in the partition proposed by Jang and Robinson for the 24 Wang tiles encoding Penrose tilings.
Below, we fix the partition by swapping labels 8 and 23, 9 and 22, 11 and 20, 10 and 21:
sage: d = {i:i for i in range(24)} sage: d.update({8:23, 23:8, 9:22, 22:9, 11:20, 20:11, 10:21, 21:10}) sage: P1 = P.rename_keys(d) sage: P1.plot()
We compute a 10×10 pattern out of this updated partition P1:
sage: coding_R0_P1 = PETsCoding((R0e1,R0e2), P1) sage: pattern = coding_R0_P1.pattern((.3,.4), (10,10)) sage: pattern = WangTiling(pattern, T0) sage: pattern.tikz()
We observe that this pattern is valid !!!
Understanding the issue using edge label partitions
Let us try to understand the fix in terms of the Wang tiles east, north, west and south edge labels partitions induced by the original partition.
Indeed, since each atom of the partition corresponds to a Wang tile, we can deduce a partition of the unit square for the east labels (and respectively for the north, west and south labels) by merging two atoms in the partition if their east edge label is the same.
sage: def edge_label_partitions(partition, tiles): ....: EAST = partition.merge_atoms({i:tiles[i][0] for i in range(24)}) ....: NORTH = partition.merge_atoms({i:tiles[i][1] for i in range(24)}) ....: WEST = partition.merge_atoms({i:tiles[i][2] for i in range(24)}) ....: SOUTH = partition.merge_atoms({i:tiles[i][3] for i in range(24)}) ....: return EAST, NORTH, WEST, SOUTH sage: def draw_edge_label_partitions(partition, tiles): ....: EAST, NORTH, WEST, SOUTH = edge_label_partitions(partition, tiles) ....: L = [EAST.plot() + text('EAST', (.5,1.05)), ....: NORTH.plot() + text('NORTH', (.5,1.05)), ....: WEST.plot() + text('WEST', (.5,1.05)), ....: SOUTH.plot() + text('SOUTH', (.5,1.05))] ....: return graphics_array(L, nrows=2)
This is what we get using the partition proposed by Jang and Robinson for the 24 Wang tiles encoding Penrose tilings:
sage: draw_edge_label_partitions(P, T0)
Here are some observations which are normal:
- partitions NORTH and EAST are symmetric under a reflexion by the positive diagonal (remember that the tile set is symmetric under the positive diagonal)
- partitions WEST and SOUTH are symmetric under a reflexion by the positive diagonal (remember that the tile set is symmetric under the positive diagonal)
Here are some observations which are not normal:
- partitions WEST and EAST do not give the same area to the same index (in a Wang tiling, the frequency of a EAST label should be equal to the frequency of the same WEST label)
- partitions SOUTH and NORTH do not give the same area to the same index (in a Wang tiling, the frequency of a NORTH label should be equal to the frequency of the same SOUTH label)
- partitions EAST and WEST are not a translate of one another (idealy a horizontal translate)
- partitions SOUTH and NORTH are not a translate of one another (idealy a vertical translate)
Another indication that something may be wrong is:
- atoms B, H, E, J, A, G are not convex in the torus
This is not a necessity. Atoms are not convex in the Markov partition associated to Jeandel-Rao tilings [2]. But they are convex for the Ammann set of 16 Wang tiles and their generalization to metallic mean numbers made in [3,4]. Since Penrose tilings are closely related to Ammann A2 tilings, we may also expect to have simple convex atoms in each of the four edge label partitions.
Here is the area of each atom in each of the four partitions. We observe that only atoms C and D have the same area in each of the four partitions.
sage: def table_of_area_of_atom_in_east_north_west_south_partitions(partition, tiles): ....: columns = [] ....: labels = 'ABCDEFGHIJ' ....: EAST, NORTH, WEST, SOUTH = edge_label_partitions(partition, tiles) ....: for partition in [EAST, NORTH, WEST, SOUTH]: ....: d = partition.volume_dict() ....: column = [d[a] for a in labels] ....: columns.append(column) ....: header_row = ['EAST', 'NORTH', 'WEST', 'SOUTH'] ....: return table(columns=columns, header_row=header_row, header_column=['']+list(labels))
sage: table_of_area_of_atom_in_east_north_west_south_partitions(P, T0) │ EAST NORTH WEST SOUTH ├───┼────────────────┼────────────────┼────────────────┼────────────────┤ A │ 15/2*phi - 12 15/2*phi - 12 phi - 3/2 phi - 3/2 B │ phi - 3/2 phi - 3/2 15/2*phi - 12 15/2*phi - 12 C │ phi - 3/2 phi - 3/2 phi - 3/2 phi - 3/2 D │ phi - 3/2 phi - 3/2 phi - 3/2 phi - 3/2 E │ phi - 3/2 phi - 3/2 -11/2*phi + 9 -11/2*phi + 9 F │ -11/2*phi + 9 -11/2*phi + 9 phi - 3/2 phi - 3/2 G │ -8*phi + 13 -8*phi + 13 -3/2*phi + 5/2 -3/2*phi + 5/2 H │ -3/2*phi + 5/2 -3/2*phi + 5/2 -8*phi + 13 -8*phi + 13 I │ 5*phi - 8 5*phi - 8 -3/2*phi + 5/2 -3/2*phi + 5/2 J │ -3/2*phi + 5/2 -3/2*phi + 5/2 5*phi - 8 5*phi - 8
But, we observe that we can fix the partitions if we assume that the atoms C and D in the four partitions are correct. There is a unique translation sending atoms C,D in the partition WEST to the atoms C and D in the partition EAST. That translation should send the partition WEST exactly on EAST. Similarly for SOUTH and NORTH. This suggest a way to fix atoms B, H, E, J, A, G in the partition.
Fixed Edge labels partitions
Using the fixed partition, here is what we get.
sage: P1.plot()
sage: draw_edge_label_partitions(P1, T0)
Now it looks good! As for the partitions associated to the metallic mean Wang tiles, the four partitions are isometric copies of the other ones (under toral translation or reflection).
sage: table_of_area_of_atom_in_east_north_west_south_partitions(P1, T0) │ EAST NORTH WEST SOUTH ├───┼────────────────┼────────────────┼────────────────┼────────────────┤ A │ phi - 3/2 phi - 3/2 phi - 3/2 phi - 3/2 B │ phi - 3/2 phi - 3/2 phi - 3/2 phi - 3/2 C │ phi - 3/2 phi - 3/2 phi - 3/2 phi - 3/2 D │ phi - 3/2 phi - 3/2 phi - 3/2 phi - 3/2 E │ phi - 3/2 phi - 3/2 phi - 3/2 phi - 3/2 F │ phi - 3/2 phi - 3/2 phi - 3/2 phi - 3/2 G │ -3/2*phi + 5/2 -3/2*phi + 5/2 -3/2*phi + 5/2 -3/2*phi + 5/2 H │ -3/2*phi + 5/2 -3/2*phi + 5/2 -3/2*phi + 5/2 -3/2*phi + 5/2 I │ -3/2*phi + 5/2 -3/2*phi + 5/2 -3/2*phi + 5/2 -3/2*phi + 5/2 J │ -3/2*phi + 5/2 -3/2*phi + 5/2 -3/2*phi + 5/2 -3/2*phi + 5/2
sage: (phi-3/2).n(), (-3/2*phi + 5/2).n() (0.118033988749895, 0.0729490168751576)
Labels A, B, C, D, E and F all have the same frequency of ϕ − (3)/(2) ≈ 0.118.
Labels G, H, I and J all have the same frequency of − (3)/(2)ϕ + (5)/(2) ≈ 0.0729.
We check that frequencies sum to 1:
sage: 6 * (phi-3/2) + 4 * (-3/2*phi + 5/2) 1
Proposed partition for the encoding of the Penrose tilings into 24 Wang tiles
As done with the Markov partition associated to Jeandel-Rao aperiodic tilings, and for the Markov partition associated to the family of metallic mean Wang tiles, I think it is more natural to associate horizontal (vertical) translations in the internal space with horizontal (vertical) translations in the physical space. This way, the brain is less mixed up and the projections in the physical space π and in the internal space πint of the cut and project scheme are defined more naturally. This way the internal space and physical space can even be identified: this is the root of the do-it-yourself tutorial allowing the construction of Jeandel-Rao tilings [5]. See also my Habilitation à diriger des recherches written in English during Spring 2025 for more information [6].
First, we flip the partition P1 by the positive diagonal. This exchanges the role of x and y axis.
sage: P2 = P1.apply_linear_map(matrix(2, [0,1,1,0])) sage: P2.plot()
This allows to define the ℤ2-action R1 on the torus with horizontal and vertical translations for e1 and e2 respectively:
sage: base = diagonal_matrix((1,1)) sage: R1e1 = PET.toral_translation(base, vector((1/phi,0))) sage: R1e2 = PET.toral_translation(base, vector((0,1/phi)))
Then, we rotate the partition. This changes the origin of the partition. This change may be optional, but it makes the partition look closer to the partitions already studied in [2,3,4]. It simplifies the explanation of any relation between them (and there is one, see below!).
sage: P3 = R1e1(P2) sage: P3 = R1e2(P3) sage: P3.plot()
We observe that the partition P3 associated to the 24 Wang tiles encoding Penrose tiling is a refinement of the partition associated to the 16 Ammann tiles (see Figure 15 in [4] as the 16 Ammann tiles are equivalent to the n-th metallic mean Wang tiles when n = 1).
We compute a 10×10 pattern obtained by coding the orbit of some starting point under the ℤ2-action R1 using partition P3.
sage: from slabbe.coding_of_PETs import PETsCoding
sage: coding_R1_P3 = PETsCoding((R1e1,R1e2), P3) sage: pattern = coding_R1_P3.pattern((.3,.4), (10,10)) sage: pattern = WangTiling(pattern, T0) sage: pattern.tikz()
We are happy to see that the pattern is still valid after all the changes we have made!
sage: draw_edge_label_partitions(P3, T0)
We observe that the EAST, NORTH, WEST and SOUTH partitions are a refinement of the EAST, NORTH, WEST and SOUTH partitions associated to the Ammann tiles partition (see Figure 15 in [4]).
The difference between the Ammann EAST and 24 Wang tiles Penrose EAST partition is the addition of two closed geodesics of slope -1 on the 2-torus passing through the origin and through the vertex (0, φ − 1).
It is possible that there is a clever way of including this information into the labels of the Wang tiles as we have done it for the family of metallic mean Wang tiles. Possibly, we need to use 4-dimension vectors for the tile labels instead of 3-dimensional integer vectors. This remains an open question.
Wang tiles deduced from the partition and ℤ2-action
We check that the Wang tiles computed from the partition P3 and ℤ2-action R1 is the original set of 24 Wang tiles defined by Jang and Robinson.
See Proposition 8.1 in [2].
sage: T = coding_R1_P3.to_wang_tiles() sage: T.tikz()
sage: T.is_equivalent(T0, certificate=True) (True, {'3': 'D', '0': 'A', '6': 'G', '1': 'B', '7': 'H', '2': 'C', '8': 'I', '4': 'E', '5': 'F', '9': 'J'}, {'3': 'D', '0': 'A', '6': 'G', '1': 'B', '7': 'H', '2': 'C', '8': 'I', '4': 'E', '5': 'F', '9': 'J'}, Substitution 2d: {0: [[0]], 1: [[1]], 2: [[2]], 3: [[3]], 4: [[4]], 5: [[5]], 6: [[6]], 7: [[7]], 8: [[8]], 9: [[9]], 10: [[10]], 11: [[11]], 12: [[12]], 13: [[13]], 14: [[14]], 15: [[15]], 16: [[16]], 17: [[17]], 18: [[18]], 19: [[19]], 20: [[20]], 21: [[21]], 22: [[22]], 23: [[23]]})
Dégustation de sirop d'érable à Bègles
12 mars 2025 | Catégories: Uncategorized | View CommentsLe 12 mars 2025, nous avons organisé une dégustation de sirop d'érable à Bègles, à la zone à partager, avec l'aide de notre ami Jérémy qui organise régulièrement des dégustations de vin. L'objectif étant de partager ce qu'est le temps des sucres en profitant de l'expérience bordelaise dans la dégustation de vin. Pour ce faire, on se base sur les travaux récents d'Agriculture Canada qui propose une roue des flaveurs pour repérer les saveurs des produits de l'érable.
En 2022, nous avions organisé une dégustation au même endroit où on avait dégusté des sirops de différentes régions du Québec. La dégustation du 12 mars 2025 avait la particularité d'être une dégustation verticale, c'est-à-dire, comme dans le vin, on goûte des millésimes consécutifs du sirop provenant de la même cabane à sucre. Plus précisément, nous avons goûté au sirop de 2022, 2023 et 2024 de la cabane à sucre de ma tante Diane et mon oncle Guy Roy de Sainte-Cécile-de-Whitton près de Lac-Mégantic.
Quelques jours avant la dégustation, Guy m'a rappelé les particularité de chacune des saisons hivernales. En voici un résumé:
- 2008: mauvaise saison, il tombe 2 pieds de neige le 23 mars (anniversaire André Roy), le rang 9 est bouché pendant 2 jours, trop neige au printemps, les températures au sol restent froides : 32 barils
- 2019: la saison termine tard (début mai)
- 2020: la saison termine tard (début mai)
- 2022: ça coule du 17 mars au 27 avril : 132 barils (plus de neige, très bonne saison quand même)
- 2023: ça coule du 24 mars au 16 avril : 55 barils (la saison se termine avec -20 degrés et beaucoup de neige, ensuite ça ne coulait pas, moitié du quota)
- 2024: ça coule du 28 février au 17 avril : 126 barils (peu de neige, mais bonne saison)
Voici les dégustations du 12 mars 2025:
- Le sirop du Leclerc, magasin supermarché en France
- Le sirop de Diane et Guy Roy, rang 9, Sainte-Cécile (Estrie)
- 2022, "plus de neige, volume record, 132 barils"
- 2023, "trop de neige tardivement, 55 barils"
- 2024, "peu de neige, 126 barils"
- Le sirop de Tem-Sucre (Témiscamingue)
C'est toujours intéressant de commencer la dégustation avec un sirop de la grande distribution. Cette année on a commencé avec celui du magasin Leclerc. En 2022, on avait commencé avec celui du Spar.
J'ai été surpris de constater que les trois saisons 2022, 2023, 2024 du sirop familial n'ont pas la même odeur, ni la même couleur, ni le même goût. En particulier, j'ai trouvé que la saison 2023 avait le plus de saveur. Le goût de l'érable du sirop de 2023 était plus développé que les deux autres années. Peut-être que la plus petite quantité produite dans la saison donne plus de temps pour bouillir le sirop tranquillement? Je dois en parler avec mon oncle et ma tante pour vérifier cette hypothèse!
Voici le vidéo que nous avons regardé le 12 mars 2025 avant la dégustation:
Voici d'autres vidéos qui montrent bien le temps des sucres au Québec:
- La semaine verte : Histoires de sève - 8 mars 2022
- La semaine verte : Flaveurs du sirop d’érable - 1 mars 2021
- La semaine verte : Coulée hâtive des érables - 23 avril 2024
- Radio-Canada : préserver les méthodes d’antan - 15 avril 2022
- Est-ce qu’un Québécois peut faire du sirop d’érable sans expérience ?
Un vidéo de passe-partout de 1979 pour les enfants :
Next Page »


