<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Frédéric Wang Nélar</title>
 <link href="/feeds/atom.xml" rel="self"/>
 <link href="https://frederic-wang.fr//"/>
 <updated>2026-03-03T16:58:12+01:00</updated>
 <id>https://frederic-wang.fr/</id>
 <author>
   <name>Frédéric Wang Nélar</name>
   <email></email>
 </author>

 
 <entry>
   <title>Stage d&apos;implémentation des normes Web (session 2026)</title>
   <link href="https://frederic-wang.fr//2026/02/25/stage-implementation-des-normes-web/"/>
   <updated>2026-02-25T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2026/02/25/stage-implementation-des-normes-web</id>
   <content type="html">&lt;p&gt;Les candidatures pour les &lt;a href=&quot;https://www.igalia.com/2026/02/27/Igalia-2026-Coding-Experience-Open-for-Applications.html&quot;&gt;« stages de programmation informatique »&lt;/a&gt; d’&lt;a href=&quot;https://www.igalia.com/about/&quot;&gt;Igalia&lt;/a&gt; sont officiellement ouvertes jusqu’à début avril. Ils offrent aux étudiant·e·s l’occasion de participer au développement de logiciels libres tout en étant rémunéré·e·s 7 000 € brut pour 450 heures, réparties de juin à décembre 2026.&lt;/p&gt;

&lt;p&gt;Comme chaque année, j’encadrerai un·e  étudiant·e sur l’« Implémentation des normes Web » (&lt;em&gt;Web Standards&lt;/em&gt; en anglais). L’objectif étant de modifier les navigateurs (&lt;a href=&quot;https://fr.wikipedia.org/wiki/Chromium&quot;&gt;Chromium&lt;/a&gt;, &lt;a href=&quot;https://fr.wikipedia.org/wiki/Mozilla_Firefox&quot;&gt;Firefox&lt;/a&gt; ou &lt;a href=&quot;https://fr.wikipedia.org/wiki/Safari_(navigateur_web)&quot;&gt;Safari&lt;/a&gt;…) afin d’améliorer le support de technologies Web (&lt;a href=&quot;https://fr.wikipedia.org/wiki/Hypertext_Markup_Language&quot;&gt;HTML&lt;/a&gt;, &lt;a href=&quot;https://fr.wikipedia.org/wiki/Feuilles_de_style_en_cascade&quot;&gt;CSS&lt;/a&gt;, &lt;a href=&quot;https://fr.wikipedia.org/wiki/Document_Object_Model&quot;&gt;DOM&lt;/a&gt;…). Il faudra notamment étudier les spécifications correspondantes et écrire des &lt;a href=&quot;https://web-platform-tests.org/&quot;&gt;tests de conformité&lt;/a&gt;. Notez bien que ce n’est &lt;em&gt;pas&lt;/em&gt; un stage de développement Web mais de développement &lt;a href=&quot;https://fr.wikipedia.org/wiki/C%2B%2B&quot;&gt;C++&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Un des objectifs de ce programme étant de lutter contre les discriminations professionnelles, tout le monde (y compris celles et ceux qui se sentent sous-représenté·e·s dans le secteur informatique) sont invité·e·s à candidater. Depuis 2016, mon équipe « Web Platform » a ainsi encadré 13 étudiant·e·s de différents pays dans le monde (Espagne, Inde, Italie, &lt;a href=&quot;https://www.azabani.com/2020/09/27/my-internship-with-igalia.html&quot;&gt;Australie&lt;/a&gt;, Cameroun, Chine, Vietnam, Angleterre et États-Unis) dont 7 femmes. L’année dernière, nous avions sélectionné &lt;a href=&quot;https://github.com/Charlotte-McCleary&quot;&gt;Charlotte McCleary&lt;/a&gt;, une Américaine non-voyante qui a travaillé sur l’accessibilité dans Firefox au cours de son stage et a depuis rejoint  &lt;a href=&quot;https://fizz.studio/about.html&quot;&gt;Fizz Studio&lt;/a&gt;. J’aimerais encourager les étudiant·e·s Sourd·e·s à postuler et donne dans la vidéo ci-dessous une brève présentation du programme en LSF (en espérant que ce soit compréhensible et que vous serez indulgents avec mon piètre niveau en langue des signes 😅):&lt;/p&gt;

&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1168127679?badge=0&amp;amp;autopause=0&amp;amp;player_id=0&amp;amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;igalia-coding-experience-2026-web-standards-lsf&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Si vous êtes intéréssé·e·s, &lt;a href=&quot;https://www.igalia.com/coding-experience/&quot;&gt;remplissez ce formulaire&lt;/a&gt; en cochant la case &lt;em&gt;Web Standards&lt;/em&gt; et en précisant éventuellement que vous avez trouvé cette offre via mon site Web. Enfin, si vous connaissez des étudiant·e·s qui pourraient participer, n’hésitez pas à partager l’annonce !&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Stage d&apos;implémentation des normes Web</title>
   <link href="https://frederic-wang.fr//2025/02/22/stage-implementation-des-normes-web/"/>
   <updated>2025-02-22T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2025/02/22/stage-implementation-des-normes-web</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;https://www.igalia.com/about/&quot;&gt;Igalia&lt;/a&gt; recherche des étudiant·e·s pour ses &lt;a href=&quot;https://www.igalia.com/2025/02/21/Igalia-2025-Coding-Experience-Open-for-Applications.html&quot;&gt;« stages » de développement logiciel&lt;/a&gt; &lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Brève description :&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Contribution aux logiciels libres.&lt;/li&gt;
  &lt;li&gt;En télétravail.&lt;/li&gt;
  &lt;li&gt;450 heures réparties sur 3 ou 6 mois.&lt;/li&gt;
  &lt;li&gt;Rémunération de 7 000 €.&lt;/li&gt;
  &lt;li&gt;Encadrement par un·e ingénieur·e d’Igalia.&lt;/li&gt;
  &lt;li&gt;Lutter contre les discriminations professionnelles dans le secteur informatique.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Chaque année, je m’occupe du stage « Implémentation des normes Web » qui consiste à modifier les navigateurs (&lt;a href=&quot;https://fr.wikipedia.org/wiki/Chromium&quot;&gt;Chromium&lt;/a&gt;, &lt;a href=&quot;https://fr.wikipedia.org/wiki/Mozilla_Firefox&quot;&gt;Firefox&lt;/a&gt;, &lt;a href=&quot;https://fr.wikipedia.org/wiki/Safari_(navigateur_web)&quot;&gt;Safari&lt;/a&gt;…) afin d’améliorer le support de technologies Web (&lt;a href=&quot;https://fr.wikipedia.org/wiki/Hypertext_Markup_Language&quot;&gt;HTML&lt;/a&gt;, &lt;a href=&quot;https://fr.wikipedia.org/wiki/Feuilles_de_style_en_cascade&quot;&gt;CSS&lt;/a&gt;, &lt;a href=&quot;https://fr.wikipedia.org/wiki/Document_Object_Model&quot;&gt;DOM&lt;/a&gt;…). Il faut notamment étudier les spécifications correspondantes et écrire des &lt;a href=&quot;https://web-platform-tests.org/&quot;&gt;tests de conformité&lt;/a&gt;. Notez bien que ce n’est &lt;em&gt;pas&lt;/em&gt; un stage de développement Web mais de développement &lt;a href=&quot;https://fr.wikipedia.org/wiki/C%2B%2B&quot;&gt;C++&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Je vous invite à lire &lt;a href=&quot;https://www.azabani.com/2020/09/27/my-internship-with-igalia.html&quot;&gt;&lt;em&gt;My internship with Igalia&lt;/em&gt;&lt;/a&gt; &lt;sup id=&quot;fnref:1:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; de ma collègue Delan Azabani pour un exemple concret. Ces dernières années, en plus de la communication par messagerie instantanée, je mets en place des visioconférences hebdomadaires qui se révèlent plutôt efficaces pour permettre aux stagiaires de progresser.&lt;/p&gt;

&lt;div style=&quot;width: 100%; max-width: 400px; margin-left: auto; margin-right: auto;&quot;&gt;
&lt;a href=&quot;/images/igalia-coding-experience-2025-flyer.svg&quot;&gt;&lt;img style=&quot;width: 100%; max-width: 400px&quot; src=&quot;/images/igalia-coding-experience-2025-flyer.png&quot; alt=&quot;flyer A6&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;J’ai commencé des cours de &lt;a href=&quot;https://fr.wikipedia.org/wiki/Langue_des_signes_fran%C3%A7aise&quot;&gt;LSF&lt;/a&gt; depuis quelques mois et assisté à plusieurs spectacles de l’&lt;a href=&quot;https://fr.wikipedia.org/wiki/International_Visual_Theatre&quot;&gt;IVT&lt;/a&gt;, notamment &lt;a href=&quot;https://ivt.fr/node/12&quot;&gt;« Parle plus fort ! »&lt;/a&gt; qui décrit avec humour les difficultés des Sourds au travail. Cette année, j’envisage de prendre un·e stagiaire Sourd·e afin de contribuer à une meilleure intégration des Sourds en milieu professionnel. Je pense que ce sera aussi une expérience positive pour mon entreprise et pour moi-même.&lt;/p&gt;

&lt;p&gt;Profil recherché :&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Étudiant·e en informatique niveau licence/master.&lt;/li&gt;
  &lt;li&gt;Résidant en région parisienne (pour faciliter l’encadrement).&lt;/li&gt;
  &lt;li&gt;Pouvant lire/écrire en anglais (et communiquer en LSF).&lt;/li&gt;
  &lt;li&gt;Intéressé·e par les technologies Web.&lt;/li&gt;
  &lt;li&gt;Connaissance de développement C/C++.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si vous êtes intéressé·e, les candidatures se font &lt;a href=&quot;https://www.igalia.com/coding-experience/&quot;&gt;ici&lt;/a&gt; jusqu’au 4 avril 2025.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Le programme “Coding Experience” d’Igalia ne correspond pas forcément à un stage au sens français du terme. Si vous souhaiteriez en faire un stage conventionné, précisez-le lors de la candidature et nous pourrons trouver une solution. &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt; &lt;a href=&quot;#fnref:1:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Five testharness.js mistakes</title>
   <link href="https://frederic-wang.fr//2025/02/21/five-testharness-dot-js-mistakes/"/>
   <updated>2025-02-21T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2025/02/21/five-testharness-dot-js-mistakes</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;I recently led a small training session at Igalia where I proposed to find mistakes in five small &lt;a href=&quot;https://web-platform-tests.org/writing-tests/testharness.html&quot;&gt;testharness.js&lt;/a&gt; tests I wrote.
These mistakes are based on actual issues I found in official &lt;a href=&quot;https://web-platform-tests.org&quot;&gt;web platform tests&lt;/a&gt;, or on mistakes I made myself in the past while writing tests, so I believe they would be useful to know.
The feedback from my teammates was quite positive, with very good participation and many ideas.
They suggested I write a blog post about it, so here it is.&lt;/p&gt;

&lt;p&gt;Please read the tests carefully and try to find the mistakes before looking at the proposed fixes…&lt;/p&gt;

&lt;h2 id=&quot;1-multiple-tests-in-one-loop&quot;&gt;1. Multiple tests in one loop&lt;/h2&gt;

&lt;p&gt;We often need to perform identical assertions for a set of similar objects.
A good practice is to split such checks into multiple &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test()&lt;/code&gt; calls, so that it’s easier to figure out which of the objects are causing failures.
Below, I’m testing the reflected &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;autoplay&lt;/code&gt; attribute on the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;audio&amp;gt;&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;video&amp;gt;&lt;/code&gt; elements.
What small mistake did I make?&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/resources/testharness.js&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/resources/testharnessreport.js&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;audio&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;video&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;forEach&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;tagName&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;kd&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;element&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;document&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;createElement&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;tagName&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
      &lt;span class=&quot;nf&quot;&gt;assert_equals&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;autoplay&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;inital value&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
      &lt;span class=&quot;nx&quot;&gt;element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;setAttribute&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;autoplay&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;autoplay&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
      &lt;span class=&quot;nf&quot;&gt;assert_equals&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;autoplay&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;after setting attribute&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
      &lt;span class=&quot;nx&quot;&gt;element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;removeAttribute&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;autoplay&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
      &lt;span class=&quot;nf&quot;&gt;assert_equals&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;autoplay&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;after removing attribute&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Basic test for HTMLMediaElement.autoplay.&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;proposed-fix&quot;&gt;Proposed fix&lt;/h3&gt;

&lt;p&gt;Each loop iteration creates one test, but they all have have the name &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;Basic test for HTMLMediaElement.autoplay.&quot;&lt;/code&gt;.
Because this name identifies the test in various places (e.g. failure expectations), it must be unique to be useful.
These tests will even cause a “Harness status: Error” with the message “duplicate test name”.&lt;/p&gt;

&lt;p&gt;One way to solve that is to move the loop iteration into the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test()&lt;/code&gt;, which will fix the error but won’t help you with fine-grained failure reports.
We can instead use a different description for each iteration:&lt;/p&gt;

&lt;div class=&quot;language-diff highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;       assert_equals(element.autoplay, true, &quot;after setting attribute&quot;);
       element.removeAttribute(&quot;autoplay&quot;);
       assert_equals(element.autoplay, false, &quot;after removing attribute&quot;);
&lt;span class=&quot;gd&quot;&gt;-    }, &quot;Basic test for HTMLMediaElement.autoplay.&quot;);
&lt;/span&gt;&lt;span class=&quot;gi&quot;&gt;+    }, `Basic test for HTMLMediaElement.autoplay (${tagName} element).`);
&lt;/span&gt;   });
 &amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;2-cleanup-between-tests&quot;&gt;2. Cleanup between tests&lt;/h3&gt;

&lt;p&gt;Sometimes, it is convenient to reuse objects (e.g. DOM elements) for several &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test()&lt;/code&gt; calls, and some cleanup may be necessary.
For instance, in the following test, I’m checking that setting the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;class&lt;/code&gt; attribute via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;setAttribute()&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;setAttributeNS()&lt;/code&gt; is properly reflected on the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;className&lt;/code&gt; property.
However, I must clear the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;className&lt;/code&gt; at the end of the first &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test()&lt;/code&gt;, so that we can really catch the failure in the second &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test()&lt;/code&gt; if, for example, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;setAttributeNS()&lt;/code&gt; does not modify the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;className&lt;/code&gt; because of an implementation bug.
What’s wrong with this approach?&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/resources/testharness.js&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/resources/testharnessreport.js&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;element&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nf&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;setAttribute&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;myClass&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;assert_equals&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;className&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;myClass&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;className&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Setting the class attribute via setAttribute().&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

  &lt;span class=&quot;nf&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;setAttributeNS&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;myClass&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;assert_equals&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;className&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;myClass&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;element&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;className&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Setting the class attribute via setAttributeNS().&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;proposed-fix-1&quot;&gt;Proposed fix&lt;/h3&gt;

&lt;p&gt;In general, it is difficult to guarantee that a final cleanup is executed.
In this particular case, for example, if the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assert_equals()&lt;/code&gt; fails because of bad browser implementation, then an exception is thrown and the rest of the function is not executed.&lt;/p&gt;

&lt;p&gt;Fortunately, testharness.js provides a better way to &lt;a href=&quot;https://web-platform-tests.org/writing-tests/testharness-api.html#cleanup&quot;&gt;perform cleanup after a test execution&lt;/a&gt;:&lt;/p&gt;

&lt;div class=&quot;language-diff highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gd&quot;&gt;-  test(function() {
&lt;/span&gt;&lt;span class=&quot;gi&quot;&gt;+  function resetClassName() { element.className = &quot;&quot;; }
+
+  test(function(t) {
+    t.add_cleanup(resetClassName);
&lt;/span&gt;     element.setAttribute(&quot;class&quot;, &quot;myClass&quot;);
     assert_equals(element.className, &quot;myClass&quot;);
&lt;span class=&quot;gd&quot;&gt;-    element.className = &quot;&quot;;
&lt;/span&gt;   }, &quot;Setting the class attribute via setAttribute().&quot;);
&lt;span class=&quot;err&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;gd&quot;&gt;-  test(function() {
&lt;/span&gt;&lt;span class=&quot;gi&quot;&gt;+  test(function(t) {
+    t.add_cleanup(resetClassName);
&lt;/span&gt;     element.setAttributeNS(null, &quot;class&quot;, &quot;myClass&quot;);
     assert_equals(element.className, &quot;myClass&quot;);
&lt;span class=&quot;gd&quot;&gt;-    element.className = &quot;&quot;;
&lt;/span&gt;   }, &quot;Setting the class attribute via setAttributeNS().&quot;);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;3-checking-whether-an-exception-is-thrown&quot;&gt;3. Checking whether an exception is thrown&lt;/h3&gt;

&lt;p&gt;Another very frequent test pattern involves checking whether a Web API throws an exception.
Here, I’m trying to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DOMParser.parseFromString()&lt;/code&gt; to parse a small MathML document.
The HTML spec says that it should throw a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TypeError&lt;/code&gt; if one specifies the MathML MIME type.
The second &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test()&lt;/code&gt; asserts that the rest of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;try&lt;/code&gt; branch is not executed and that the correct exception type is found in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;catch&lt;/code&gt; branch.
Is this approach correct?
Can the test be rewritten in a better way?&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/resources/testharness.js&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/resources/testharnessreport.js&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;parser&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;DOMParser&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;mathmlSource&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;`&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&amp;gt;
  &amp;lt;mfrac&amp;gt;
    &amp;lt;mn&amp;gt;1&amp;lt;/mn&amp;gt;
    &amp;lt;mi&amp;gt;x&amp;lt;/mi&amp;gt;
  &amp;lt;/mfrac&amp;gt;
&amp;lt;/math&amp;gt;`&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;nf&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;kd&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;parser&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;parseFromString&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;mathmlSource&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;application/xml&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;nf&quot;&gt;assert_equals&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;documentElement&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;tagName&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;math&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;DOMParser&apos;s parseFromString() accepts application/xml&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

  &lt;span class=&quot;nf&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;nx&quot;&gt;parser&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;parseFromString&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;mathmlSource&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;application/mathml+xml&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
      &lt;span class=&quot;nf&quot;&gt;assert_unreached&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;nf&quot;&gt;assert_true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;e&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;instanceof&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;TypeError&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;DOMParser&apos;s parseFromString() rejects application/mathml+xml&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;proposed-fix-2&quot;&gt;Proposed fix&lt;/h3&gt;

&lt;p&gt;If the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assert_unreached()&lt;/code&gt; is executed because of an implementation bug with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;parseFromString()&lt;/code&gt;, then the assertion will actually throw an exception.
That exception won’t be a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TypeError&lt;/code&gt;, so the test will still fail because of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assert_true()&lt;/code&gt;, but the failure report will look a bit confusing.&lt;/p&gt;

&lt;p&gt;In this situation, it’s better to use the &lt;a href=&quot;https://web-platform-tests.org/writing-tests/testharness-api.html#assert-functions&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assert_throws_*&lt;/code&gt; APIs&lt;/a&gt;:&lt;/p&gt;

&lt;div class=&quot;language-diff highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;   test(function() {
&lt;span class=&quot;gd&quot;&gt;-    try {
-      parser.parseFromString(mathmlSource, &quot;application/mathml+xml&quot;);
-      assert_unreached();
-    } catch(e) {
-      assert_true(e instanceof TypeError);
-    }
&lt;/span&gt;&lt;span class=&quot;gi&quot;&gt;+    assert_throws_js(TypeError,
+        _ =&amp;gt; parser.parseFromString(mathmlSource, &quot;application/mathml+xml&quot;));
&lt;/span&gt;   }, &quot;DOMParser&apos;s parseFromString() rejects application/mathml+xml&quot;);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;4-waiting-for-an-event-listener-to-be-called&quot;&gt;4. Waiting for an event listener to be called&lt;/h3&gt;

&lt;p&gt;The following test verifies a very basic feature: clicking a button triggers the registered event listener.
We use the (asynchronous) testdriver API &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test_driver.click()&lt;/code&gt; to emulate that user click, and a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;promise_test()&lt;/code&gt; call to wait for the click event listener to be called.
The test may time out if there is something wrong in the browser implementation, but do you see a risk for flaky failures?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: the testdriver API only works when running tests automatically.
If you run the test manually, you need to click the button yourself.&lt;/em&gt;&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/resources/testharness.js&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/resources/testharnessreport.js&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/resources/testdriver.js&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/resources/testdriver-vendor.js&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;button&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;button&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;Click me to run manually&lt;span class=&quot;nt&quot;&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nf&quot;&gt;promise_test&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;test_driver&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;click&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;button&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Promise&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;resolve&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;nx&quot;&gt;button&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;click&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;resolve&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Clicking the button triggers registered click event handler.&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;proposed-fix-3&quot;&gt;Proposed fix&lt;/h3&gt;

&lt;p&gt;The problem I wanted to show here is that we are sending the click event before actually registering the listener.
The test would likely still work, because &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test_driver.click()&lt;/code&gt; is asynchronous and communication to the test automation scripts is slow, whereas registering the event is synchronous.&lt;/p&gt;

&lt;p&gt;But rather than making this kind of assumption, which poses a risk of flaky failures as well as making the test hard to read, I prefer to just move the statement that triggers the event into the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Promise&lt;/code&gt;, after the listener registration:&lt;/p&gt;

&lt;div class=&quot;language-diff highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt; &amp;lt;button id=&quot;button&quot;&amp;gt;Click me to run manually&amp;lt;/button&amp;gt;
 &amp;lt;script&amp;gt;
   promise_test(function() {
&lt;span class=&quot;gd&quot;&gt;-    test_driver.click(button);
&lt;/span&gt;     return new Promise(resolve =&amp;gt; {
       button.addEventListener(&quot;click&quot;, resolve);
&lt;span class=&quot;gi&quot;&gt;+      test_driver.click(button);
&lt;/span&gt;     });
   }, &quot;Clicking the button triggers registered click event handler.&quot;);
 &amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;My colleagues also pointed out that if the promise returned by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test_driver.click()&lt;/code&gt; fails, then a “Harness status: Error” could actually be reported with “Unhandled rejection”.
We can add a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;catch&lt;/code&gt; to handle this case:&lt;/p&gt;

&lt;div class=&quot;language-diff highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt; &amp;lt;button id=&quot;button&quot;&amp;gt;Click me to run manually&amp;lt;/button&amp;gt;
 &amp;lt;script&amp;gt;
   promise_test(function() {
&lt;span class=&quot;gd&quot;&gt;-    return new Promise(resolve =&amp;gt; {
&lt;/span&gt;&lt;span class=&quot;gi&quot;&gt;+    return new Promise((resolve, reject) =&amp;gt; {
&lt;/span&gt;       button.addEventListener(&quot;click&quot;, resolve);
&lt;span class=&quot;gd&quot;&gt;-      test_driver.click(button);
&lt;/span&gt;&lt;span class=&quot;gi&quot;&gt;+      test_driver.click(button).catch(reject);
&lt;/span&gt;     });
   }, &quot;Clicking the button triggers registered click event handler.&quot;);
 &amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;5-dealing-with-asynchronous-resources&quot;&gt;5. Dealing with asynchronous resources&lt;/h3&gt;

&lt;p&gt;It’s very common to deal with asynchronous resources in web platform tests.
The following test case verifies the behavior of a frame with lazy loading: it is initially outside the viewport (so not loaded) and then scrolled into the viewport (which should trigger its load).
The actual loading of the frame is tested via the window name of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/common/window-name-setter.html&lt;/code&gt; (should be “spices”).
Again, this test may time out if there is something wrong in the browser implementation, but can you see a way to make the test a bit more robust?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Side question: the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;div id=&quot;log&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;add_cleanup()&lt;/code&gt; are not really necessary for this test to work, so what’s the point of using them?
Can you think of one?&lt;/em&gt;&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/resources/testharness.js&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/resources/testharnessreport.js&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nf&quot;&gt;#lazyframe&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;margin-top&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10000px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;log&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;iframe&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;lazyframe&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;loading=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;lazy&quot;&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/common/window-name-setter.html&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nf&quot;&gt;promise_test&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Promise&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;resolve&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;nb&quot;&gt;window&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;load&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;nf&quot;&gt;assert_not_equals&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;lazyframe&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;contentWindow&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;spices&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
        &lt;span class=&quot;nf&quot;&gt;resolve&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;lazy frame not loaded after page load&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
  &lt;span class=&quot;nf&quot;&gt;promise_test&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;t&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;add_cleanup&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;_&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;window&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;scrollTo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;));&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Promise&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;resolve&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;nx&quot;&gt;lazyframe&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;load&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;nf&quot;&gt;assert_equals&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;lazyframe&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;contentWindow&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;spices&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
        &lt;span class=&quot;nf&quot;&gt;resolve&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
      &lt;span class=&quot;nx&quot;&gt;lazyframe&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;scrollIntoView&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;lazy frame loaded after appearing in the viewport&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;proposed-fix-4&quot;&gt;Proposed fix&lt;/h3&gt;

&lt;p&gt;This is similar to what we discussed in the previous tests.
If the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assert_equals()&lt;/code&gt; in the listener fails, then an exception is thrown, but it won’t be caught by the testharness.js framework.
A “Harness status: Error” is reported, but the test will only complete after the timeout.
This can slow down test execution, especially if this pattern is repeated for several tests.&lt;/p&gt;

&lt;p&gt;To make sure we report the failure immediately in that case, we can instead reject the promise if the equality does not hold, or even better, place the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assert_equals()&lt;/code&gt; check after the promise resolution:&lt;/p&gt;

&lt;div class=&quot;language-diff highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt; &amp;lt;script&amp;gt;
   promise_test(function() {
     return new Promise(resolve =&amp;gt; {
&lt;span class=&quot;gd&quot;&gt;-      window.addEventListener(&quot;load&quot;, () =&amp;gt; {
-        assert_not_equals(lazyframe.contentWindow.name, &quot;spices&quot;);
-        resolve();
-      });
-    });
&lt;/span&gt;&lt;span class=&quot;gi&quot;&gt;+      window.addEventListener(&quot;load&quot;, resolve);
+    }).then(_ =&amp;gt; {
+      assert_not_equals(lazyframe.contentWindow.name, &quot;spices&quot;);
+    });;
&lt;/span&gt;   }, &quot;lazy frame not loaded after page load&quot;);
   promise_test(t =&amp;gt; {
     t.add_cleanup(_ =&amp;gt; window.scrollTo(0, 0));
     return new Promise(resolve =&amp;gt; {
&lt;span class=&quot;gd&quot;&gt;-      lazyframe.addEventListener(&apos;load&apos;, () =&amp;gt; {
-        assert_equals(lazyframe.contentWindow.name, &quot;spices&quot;);
-        resolve();
-      });
&lt;/span&gt;&lt;span class=&quot;gi&quot;&gt;+      lazyframe.addEventListener(&apos;load&apos;, resolve);
&lt;/span&gt;       lazyframe.scrollIntoView();
&lt;span class=&quot;gi&quot;&gt;+    }).then(_ =&amp;gt; {
+      assert_equals(lazyframe.contentWindow.name, &quot;spices&quot;);
&lt;/span&gt;     });
   }, &quot;lazy frame loaded after appearing in the viewport&quot;);
 &amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Regarding the side question, if you run the test by opening the page in the browser, then the report will be appended at the bottom of the page by default.
But &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lazyframe&lt;/code&gt; has very large height, and the page may be scrolled to some other location. An &lt;a href=&quot;https://web-platform-tests.org/writing-tests/testharness-api.html#output&quot;&gt;explicit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;div id=&quot;log&quot;&amp;gt;&lt;/code&gt;&lt;/a&gt; ensures the report is inserted inside that div at top of the page, while the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;add_cleanup()&lt;/code&gt; ensures that we scroll to that location after test execution.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>My recent contributions to Gecko (3/3)</title>
   <link href="https://frederic-wang.fr//2024/09/05/my-recent-contributions-to-gecko-fetch-priority/"/>
   <updated>2024-09-05T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2024/09/05/my-recent-contributions-to-gecko-fetch-priority</id>
   <content type="html">&lt;p&gt;&lt;strong&gt;Note: This blog post was written on June 2024. As of September 2024, final work to ship the feature is still in progress. Please follow &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1797715&quot;&gt;bug 1797715&lt;/a&gt; for the latest updates.&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;This is the final blog post in a series about new web platform features implemented in Gecko, as part as an effort at Igalia to increase browser interoperability.&lt;/p&gt;

&lt;p&gt;Let’s take a look at &lt;a href=&quot;https://html.spec.whatwg.org/multipage/urls-and-fetching.html#fetch-priority-attribute&quot;&gt;fetch priority attributes&lt;/a&gt;, which enable web developers to optimize resource loading by specifying the relative priority of resources to be fetched by the browser.&lt;/p&gt;

&lt;h2 id=&quot;fetch-priority&quot;&gt;Fetch priority&lt;/h2&gt;

&lt;p&gt;The &lt;a href=&quot;https://web.dev/articles/fetch-priority?hl=en#browser_priority_and_fetchpriority&quot;&gt;web.dev article on fetch priority&lt;/a&gt; explains in more detail how web developers can use fetch priority to optimize resource loading, but here’s a quick overview.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://html.spec.whatwg.org/multipage/urls-and-fetching.html#fetch-priority-attributes&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fetchpriority&lt;/code&gt;&lt;/a&gt; is a new attribute with the value &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;auto&lt;/code&gt; (default behavior), &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;high&lt;/code&gt;, or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;low&lt;/code&gt;.
Setting the attribute on a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;script&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;link&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;img&lt;/code&gt; element indicates whether the corresponding resource should be loaded with normal, higher, or lower priority &lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;high.js&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;fetchpriority=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;high&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;link&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;rel=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;stylesheet&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;href=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;auto.css&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;fetchpriority=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;auto&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;img&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;low.png&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;alt=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;low&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;fetchpriority=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;low&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The priority can also be set in the &lt;a href=&quot;https://fetch.spec.whatwg.org/#requestinit&quot;&gt;RequestInit&lt;/a&gt; parameter of the &lt;a href=&quot;https://fetch.spec.whatwg.org/#fetch-method&quot;&gt;fetch() method&lt;/a&gt;:&lt;/p&gt;

&lt;div class=&quot;language-js highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;high.txt&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;priority&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;high&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The &amp;lt;link&amp;gt; element has some interesting features.
One of them is combining &lt;a href=&quot;https://html.spec.whatwg.org/multipage/links.html#link-type-preload&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rel=preload&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;as&lt;/code&gt;&lt;/a&gt; to fetch a resource with a particular &lt;a href=&quot;https://fetch.spec.whatwg.org/#concept-request-destination&quot;&gt;destination&lt;/a&gt; &lt;sup id=&quot;fnref:2&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;link&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;rel=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;preload&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;as=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;font&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;href=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;high.woff2&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;fetchpriority=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;high&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You can even use &lt;a href=&quot;https://html.spec.whatwg.org/multipage/semantics.html#processing-link-headers&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Link&lt;/code&gt; in HTTP response headers&lt;/a&gt; and in particular &lt;a href=&quot;https://html.spec.whatwg.org/multipage/semantics.html#early-hints&quot;&gt;early hints&lt;/a&gt; sent before the final response:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;103 Early Hint
Link: &amp;lt;high.js&amp;gt;; rel=preload; as=script; fetchpriority=high
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;These are basically all the places where a fetch priority attribute can be used.&lt;/p&gt;

&lt;p&gt;Note that other parameters are also taken into account when deciding the priority to use for resources, such as the position of the element in the page (e.g. blocking resources in &amp;lt;head&amp;gt;), other attributes on the element (&amp;lt;script async&amp;gt;, &amp;lt;script defer&amp;gt;, &amp;lt;link media&amp;gt;, &amp;lt;link rel&amp;gt;…) or the resource’s &lt;a href=&quot;https://fetch.spec.whatwg.org/#concept-request-destination&quot;&gt;destination&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Finally, some browsers implement &lt;a href=&quot;https://html.spec.whatwg.org/#speculative-html-parsing&quot;&gt;speculative HTML parsing&lt;/a&gt;, allowing them to continue fetching resources declared in the HTML markup while the parser is blocked.
As far as I understand, Firefox has its own separate HTML parsing code for that purpose, which also has to take fetch priority attributes into account.&lt;/p&gt;

&lt;h2 id=&quot;implementation-defined-prioritization&quot;&gt;Implementation-defined prioritization&lt;/h2&gt;

&lt;p&gt;If you have not run away after reading the complexity described in the previous section, let’s talk a bit more about how fetch priority attributes are interpreted.
The spec contains the following step when &lt;a href=&quot;https://fetch.spec.whatwg.org/#fetching&quot;&gt;fetching a resource&lt;/a&gt; (emphasis mine):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If &lt;em&gt;request&lt;/em&gt;’s internal priority is null, then use &lt;em&gt;request&lt;/em&gt;’s &lt;strong&gt;priority&lt;/strong&gt;, initiator, &lt;strong&gt;destination&lt;/strong&gt;, and render-blocking in an &lt;strong&gt;implementation-defined manner&lt;/strong&gt; to set &lt;em&gt;request&lt;/em&gt;’s &lt;strong&gt;internal priority&lt;/strong&gt; to an &lt;strong&gt;implementation-defined object&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So browsers would use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;high&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;low&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;auto&lt;/code&gt; hints as well as the &lt;a href=&quot;https://fetch.spec.whatwg.org/#concept-request-destination&quot;&gt;destination&lt;/a&gt; in order to calculate an internal priority value &lt;sup id=&quot;fnref:3&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:3&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;, but the details of this value are not provided in the specification, and it’s up to the browser to decide what to do.
This is a bit unfortunate for our interoperability goal, but that’s probably the best we can do, given that each browser already has its own stategies to optimize resource loading.
I think this also gives browsers some flexibility to experiment with optimizations… which can be hard to predict when you realize that web devs also try to adapt their content to the behavior of (the most popular) browsers!&lt;/p&gt;

&lt;p&gt;In any case, the spec authors were kind enough to provide a note with more suggestions (emphasis mine):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The implementation-defined object could encompass &lt;strong&gt;stream weight and dependency for HTTP/2&lt;/strong&gt;, priorities used in &lt;strong&gt;Extensible Prioritization Scheme for HTTP&lt;/strong&gt; for transports where it applies (including HTTP/3), and equivalent information used to &lt;strong&gt;prioritize dispatch and processing of HTTP/1 fetches&lt;/strong&gt;. &lt;a href=&quot;https://httpwg.org/specs/rfc9218.html&quot;&gt;[RFC9218]&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;OK, so what does that mean?
I’m not a networking expert, but this is what I could gather after discussing with the &lt;a href=&quot;https://wiki.mozilla.org/Networking&quot;&gt;Necko team&lt;/a&gt; and reading some HTTP specs:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;HTTP/1 does not have a dedicated prioritization mechanism, but Firefox uses its internal priority to order requests.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc9113.html&quot;&gt;HTTP/2&lt;/a&gt; has a “stream priority” mechanism and Firefox uses its internal priority to implement that part of the spec.
However, it was considered too complex and inefficient, and is likely poorly supported by existing web servers…&lt;/li&gt;
  &lt;li&gt;In upcoming releases, Firefox will use its internal priority to implement the &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc9218.html&quot;&gt;Extensible Prioritization Scheme&lt;/a&gt; used by HTTP/2 and HTTP/3.
See &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1865040&quot;&gt;bug 1865040&lt;/a&gt; and &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1864392&quot;&gt;bug 1864392&lt;/a&gt;.
Essentially, this means using its internal priority to adjust the &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc9218.html#section-4.1&quot;&gt;urgency&lt;/a&gt; parameter.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that various parts of Firefox rely on &lt;a href=&quot;https://searchfox.org/mozilla-central/rev/b11735b86bb4d416c918e2b2413456561beff50c/netwerk/base/nsNetUtil.h#140&quot;&gt;NS_NewChannel&lt;/a&gt; to load resources, including the fetching algorithm above, which Firefox uses to implement the fetch() method.
However, other cases mentioned in the first section have their own code paths with their own calls to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NS_NewChannel&lt;/code&gt;, so these places must also be adjusted to take the fetch priority and destination into account.&lt;/p&gt;

&lt;h2 id=&quot;finishing-the-implementation-work&quot;&gt;Finishing the implementation work&lt;/h2&gt;

&lt;p&gt;Summarizing a bit, &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1797715#c2&quot;&gt;implementing fetch priority&lt;/a&gt; is a matter of:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Adding &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fetchpriority&lt;/code&gt; to DOM objects for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HTMLImageElement&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HTMLLinkElement&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HTMLScriptElement&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RequestInit&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Parsing the fetch priority attribute into an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;auto&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;low&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;high&lt;/code&gt; enum.&lt;/li&gt;
  &lt;li&gt;Passing the information to the callers of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NS_NewChannel&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Using that information to set the internal priority.&lt;/li&gt;
  &lt;li&gt;Using that internal priority for HTTP requests.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=&quot;https://www.igalia.com/team/mbrodesser&quot;&gt;Mirko Brodesser&lt;/a&gt; started this work in June 2023, and had already implemented almost all of the features discussed above.
fetch(), &amp;lt;img&amp;gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;link rel=preload as=image&amp;gt;&lt;/code&gt; were handled by &lt;a href=&quot;https://www.igalia.com/team/zsun&quot;&gt;Ziran Sun&lt;/a&gt; and I, while &lt;a href=&quot;https://valentin.gosu.se/&quot;&gt;Valentin Gosu&lt;/a&gt; from Mozilla made HTTP requests use the internal priority.&lt;/p&gt;

&lt;p&gt;The main blocker was due to that “implementation-defined” use of fetch priority.
Mirko’s approach was to align Firefox with the behavior described in the &lt;a href=&quot;https://web.dev/articles/fetch-priority?hl=en#effects&quot;&gt;web.dev article&lt;/a&gt;, which reflects Chromium’s implementation.
But doing so would mean changing Firefox’s default behavior when &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fetchpriority&lt;/code&gt; is not specified (or explicitly set to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;auto&lt;/code&gt;), and it was not clear whether Chromium’s prioritization choices were the best fit for Firefox’s own implementation of resource loading.&lt;/p&gt;

&lt;p&gt;After meeting with Mozilla, we agreed on a safer approach:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Introduce &lt;a href=&quot;https://searchfox.org/mozilla-central/search?q=network.fetchpriority.adjustments&amp;amp;path=StaticPrefList.yaml&quot;&gt;runtime preferences&lt;/a&gt; to control how Firefox adjusts internal priorities when &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;low&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;high&lt;/code&gt;, or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;auto&lt;/code&gt; is specified.
By default, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;auto&lt;/code&gt; does not affect the internal priority so current behavior is preserved.&lt;/li&gt;
  &lt;li&gt;Ask Mozilla’s performance team to run an experiment, so we can decide the best values for these preferences.&lt;/li&gt;
  &lt;li&gt;Ship fetch priority with the chosen values, probably cleaning things up a bit.
Any other ideas, including the ones described in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;web.dev&lt;/code&gt; article, could be handled in future enhancements.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We recently entered phase 2 of this plan, so fingers crossed it works as expected!&lt;/p&gt;

&lt;h2 id=&quot;internal-wpt-tests&quot;&gt;Internal WPT tests&lt;/h2&gt;

&lt;p&gt;This project is part of the interoperability effort, but again, the “implementation-defined” part meant that we had very few WPT tests for that feature, really only those checking &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fetchpriority&lt;/code&gt; attributes for the DOM part.&lt;/p&gt;

&lt;p&gt;Fortunately Mirko, who is a proponent of &lt;a href=&quot;https://en.wikipedia.org/wiki/Test-driven_development&quot;&gt;Test-driven development&lt;/a&gt;, had written quite a lot of internal WPT tests that use internal APIs to retrieve the internal priority.
To test &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Link&lt;/code&gt; headers, he used the handy &lt;a href=&quot;https://web-platform-tests.org/writing-tests/server-pipes.html#headers&quot;&gt;wptserve pipes&lt;/a&gt;.
The only thing he missed was checking &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1882084&quot;&gt;support in Early hints&lt;/a&gt;, but some WPT tests for early hints using &lt;a href=&quot;https://web-platform-tests.org/writing-tests/python-handlers/&quot;&gt;WPT Python Handlers&lt;/a&gt; were available, so integrating them into Mirko’s tests was not too difficult.&lt;/p&gt;

&lt;p&gt;It was also straightforward for Ziran and I to extend Mirko’s tests to cover &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fetch&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;img&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;link rel=preload as=image&amp;gt;&lt;/code&gt;, with one exception: when the fetch() method uses a non-default destination.
In most of these code paths, we call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NS_NewChannel&lt;/code&gt; to perform a fetch.
But fetch() is tricky, because if the fetch event is &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/FetchEvent#examples&quot;&gt;intercepted&lt;/a&gt;, the event handler might call the fetch() method again using the same destination (e.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;image&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Handling this correctly involves multiple processes and IPC communication, which ended up not working well with the internal APIs used by Mirko’s tests.
It took me a while to understand what was happening in &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1881040&quot;&gt;bug 1881040&lt;/a&gt;, and in the end I came up with a new approach.&lt;/p&gt;

&lt;h2 id=&quot;upstreamable-wpt-tests&quot;&gt;Upstreamable WPT tests&lt;/h2&gt;

&lt;p&gt;First, let’s pause for a moment: all the tests we have so far use an internal API to verify the internal priority, but they don’t actually check how that internal priority is used by Firefox when it sends HTTP requests.
Valentin mentioned we should probably have some tests covering that, and not only would it solve the problem with fetch() calls in fetch event handlers, it would also remove the use of an internal API, making the tests potentially reusable by other browsers.&lt;/p&gt;

&lt;p&gt;To make this kind of test possible, I &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1892734&quot;&gt;added&lt;/a&gt; a &lt;a href=&quot;https://web-platform-tests.org/writing-tests/python-handlers/&quot;&gt;WPT Python Handler&lt;/a&gt; that parses the &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc9218.html#section-4.1&quot;&gt;urgency&lt;/a&gt; from a HTTP request and responds with an urgency-dependent resource, such as a stylesheet with different property values, an image of a different size, or an audio or video file of a different duration.&lt;/p&gt;

&lt;p&gt;When a test uses resources with different fetch priorities, this influences the urgency values of their HTTP requests, which in turn influences the response in a way that the test can check for in JavaScript.
This is a bit complicated, but it works!&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Fetch priority has been enabled in Firefox Nightly for a while, and experiments started recently to determine the optimal priority adjustments.
If everything goes well, we will be able to push this feature to the finish line after the (northern) summer.&lt;/p&gt;

&lt;p&gt;Helping implement this feature also gave me the opportunity to work a bit on the Firefox networking code, which I had not touched since the &lt;a href=&quot;https://blog.ipfs.tech/2021-01-15-ipfs-and-igalia-collaborate-on-dweb-in-browsers/&quot;&gt;collaboration with IPFS&lt;/a&gt;, and I learned a lot about resource loading and WPT features for HTTP requests.&lt;/p&gt;

&lt;p&gt;To me, the “implementation-defined” part was still a bit awkward for the web platform.
We had to write our own internal WPT tests and do extra effort to prepare the feature for shipping.
But in the end, I believe things went relatively smoothly.&lt;/p&gt;

&lt;h2 id=&quot;acknowledgments&quot;&gt;Acknowledgments&lt;/h2&gt;

&lt;p&gt;To conclude this series of blog posts, I’d also like to thank Alexander Surkov, Cathie Chen, Jihye Hong, Martin Robinson, Mirko Brodesser, Oriol Brufau, Ziran Sun, and others at Igalia who helped on implementing these features in Firefox.
Thank you to Emilio Cobos, Olli Pettay, Valentin Gosu, Zach Hoffman, and others from the Mozilla community who helped with the implementation, reviews, tests and discussions.
Finally, our &lt;a href=&quot;https://www.azabani.com/2021/05/17/spelling-grammar.html&quot;&gt;spelling and grammar&lt;/a&gt; expert &lt;a href=&quot;https://www.igalia.com/team/dazabani&quot;&gt;Delan Azabani&lt;/a&gt; deserves special thanks for reviewing this series of blog post and providing useful feedback.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Other elements have been or are being considered (e.g. &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1795233#c7&quot;&gt;&amp;lt;iframe&amp;gt;&lt;/a&gt;, &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1865837&quot;&gt;SVG &amp;lt;image&amp;gt;&lt;/a&gt; or &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1847712&quot;&gt;SVG &amp;lt;script&amp;gt;&lt;/a&gt;), but these are the only ones listed in the HTML spec at the time of writing. &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;As mentioned below, the browser needs to know about the actual destination in order to properly calculate the priority. &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:3&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;As far as I know, Firefox does not take initiator into account, &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1751383&quot;&gt;nor does it support render-blocking yet&lt;/a&gt;. &lt;a href=&quot;#fnref:3&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>My recent contributions to Gecko (2/3)</title>
   <link href="https://frederic-wang.fr//2024/07/09/my-recent-contributions-to-gecko-content-visibility/"/>
   <updated>2024-07-09T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2024/07/09/my-recent-contributions-to-gecko-content-visibility</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;This is the second in a series of blog posts describing new web platform features Igalia has implemented in Gecko, as part of an effort to improve browser interoperability.
I’ll talk about the task of implementing &lt;a href=&quot;https://drafts.csswg.org/css-contain/#content-visibility&quot;&gt;‘content-visibility’&lt;/a&gt;, to which several Igalians have contributed since early 2022, and I’ll focus on two main roadblocks I had to overcome.&lt;/p&gt;

&lt;h2 id=&quot;the-content-visibility-property&quot;&gt;The ‘content-visibility’ property&lt;/h2&gt;

&lt;p&gt;In the past, &lt;a href=&quot;https://blogs.igalia.com/mrego/2019/01/11/an-introduction-to-css-containment/&quot;&gt;Igalia worked on CSS containment&lt;/a&gt;, a feature allowing authors to isolate a subtree from the rest of the document to improve rendering performance.
This is done using the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/contain&quot;&gt;‘contain’ property&lt;/a&gt;, which accepts four kinds of containment: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;size&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;layout&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;style&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;paint&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://drafts.csswg.org/css-contain/#content-visibility&quot;&gt;‘content-visibility’&lt;/a&gt; is a new property allowing authors to “hide” some content from the page, and save the browser unnecessary work by applying containment.
The most interesting one is probably &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;content-visibility: auto&lt;/code&gt;, which hides content that is not &lt;a href=&quot;https://drafts.csswg.org/css-contain/#relevant-to-the-user&quot;&gt;relevant to the user&lt;/a&gt;.
This is essentially native “virtual scrolling”, allowing you to build virtualized or “recycled” lists without breaking accessibility and find-in-page.&lt;/p&gt;

&lt;p&gt;To explain this, consider the typical example of a page with a series of posts, as shown below.
By default, each post would have the four types of containment applied, plus it won’t be painted, &lt;a href=&quot;https://drafts.csswg.org/css-ui-4/#valdef-pointer-events-none&quot;&gt;won’t respond to hit-testing&lt;/a&gt;, and would use the dimensions specified in the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/contain-intrinsic-size&quot;&gt;‘contain-intrinsic-size’&lt;/a&gt; property.
It’s only once a post becomes relevant to the user (e.g. when scrolled close enough to the viewport, or when focus is moved into the post) that the actual effort to properly render the content, and calculate its actual size, is performed:&lt;/p&gt;

&lt;div class=&quot;language-css highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;.post&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;py&quot;&gt;content-visibility&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;auto&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;py&quot;&gt;contain-intrinsic-size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;500px&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;1000px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;post&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
...
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;post&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
...
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;post&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
...
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;post&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
...
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If a post later loses its relevance (e.g. when scrolled away, or when focus is lost) then it would use the dimensions specified by ‘contain-intrinsic-size’ again, discarding the content size that was obtained after layout.
One can also avoid that and use the &lt;a href=&quot;https://drafts.csswg.org/css-sizing-4/#last-remembered&quot;&gt;last remembered size&lt;/a&gt; instead:&lt;/p&gt;

&lt;div class=&quot;language-css highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;.post&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;py&quot;&gt;contain-intrinsic-size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;auto&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;500px&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;auto&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;1000px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Finally, there is also a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;content-visibility: hidden&lt;/code&gt; value, which is the same as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;content-visibility: auto&lt;/code&gt; but never reveals the content, enhancing other methods to hide content such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;display: none&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;visibility: hidden&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This is just a quick overview of the feature, but I invite you to read the &lt;a href=&quot;https://web.dev/articles/content-visibility?hl=en&quot;&gt;web.dev article on content-visibility&lt;/a&gt; for further details and thoughts.&lt;/p&gt;

&lt;h2 id=&quot;viewport-distance-for-content-visibility-auto&quot;&gt;Viewport distance for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;content-visibility: auto&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;As is often the case, the feature looks straightforward to implement, but issues appear when you get into the details.&lt;/p&gt;

&lt;p&gt;In &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1807253&quot;&gt;bug 1807253&lt;/a&gt;, my colleague &lt;a href=&quot;https://www.igalia.com/team/obrufau&quot;&gt;Oriol Brufau&lt;/a&gt; raised an interoperability bug with a very simple test case, reproduced below for convenience.
Chromium would report &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;42&lt;/code&gt;, whereas Firefox would sometimes report &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0&lt;/code&gt; twice, meaning that the post did not become relevant after a rendering update:&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;post&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;style=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;content-visibility: auto&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;style=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;height: 42px&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nx&quot;&gt;console&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;clientHeight&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;nf&quot;&gt;requestAnimationFrame&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;requestAnimationFrame&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;console&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;clientHeight&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}));&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;It turned out that an early version of the specification &lt;a href=&quot;https://github.com/w3c/csswg-drafts/issues/8542&quot;&gt;relied too heavily on an modified version of IntersectionObserver&lt;/a&gt; to &lt;em&gt;synchronously&lt;/em&gt; detect when an element is &lt;a href=&quot;https://drafts.csswg.org/css-contain/#close-to-the-viewport&quot;&gt;close to the viewport&lt;/a&gt;, as this was how it was implemented in Chromium.
However, the initial implementation in Firefox relied on a standard IntersectionObserver (with asynchronous notifications of observers) and so failed to produce the behavior described in the specification.
This issue was showing up in several WPT failures.&lt;/p&gt;

&lt;p&gt;To solve that problem, the moment when we determine an element’s proximity to the viewport was moved into the HTML5 specification, at the step when the rendering is updated, more precisely &lt;a href=&quot;https://html.spec.whatwg.org/multipage/webappapis.html#event-loop-processing-model:content-visibility-auto&quot;&gt;when the ResizeObserver notifications are broadcast&lt;/a&gt;.
My colleague &lt;a href=&quot;https://www.igalia.com/team/asurkov&quot;&gt;Alexander Surkov&lt;/a&gt; had started rewriting Firefox’s implementation to align with this new behavior in early 2023, and I took over his work in November.&lt;/p&gt;

&lt;p&gt;Since this touches the “update the rendering” step which is executed on every page, it was quite likely to break things…
and indeed many regressions were caused by my patch, for example:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1867042&quot;&gt;One regression&lt;/a&gt; was about white flickering of pages on every reload/navigation.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1880928&quot;&gt;One more regression&lt;/a&gt; was about &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;content-visibility: auto&lt;/code&gt; nodes not being rendered at all.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1866894&quot;&gt;Another regression&lt;/a&gt; was about new &lt;a href=&quot;https://drafts.csswg.org/resize-observer-1/#deliver-resize-error&quot;&gt;resize loop errors&lt;/a&gt; appearing in tests.&lt;/li&gt;
  &lt;li&gt;Some test cases were also found where the “update the rendering step” would repeat indefinitely, causing performance regressions.&lt;/li&gt;
  &lt;li&gt;Last but not least, crashes were reported.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of these issues were due to the fact that support for the last remembered size in Firefox relied on an internal &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ResizeObserver&lt;/code&gt;.
However, the CSS Box Sizing spec only says that the last remembered size is updated when &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ResizeObserver&lt;/code&gt; events are delivered, not that such an internal &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ResizeObserver&lt;/code&gt; object is actually needed.
I removed this internal observer and ensured the last remembered size is computed directly in the “update the rendering” phase, making the whole thing simpler and more robust.&lt;/p&gt;

&lt;h2 id=&quot;dynamic-changes-to-css-contain-and-content-visibility&quot;&gt;Dynamic changes to CSS ‘contain’ and ‘content-visibility’&lt;/h2&gt;

&lt;p&gt;Before sending the intent-to-ship, we reviewed remaining issues and stumbled on &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1765615&quot;&gt;bug 1765615&lt;/a&gt;, which had been opened during the initial 2022 work.
Mozilla indicated this performance bug was important enough to consider an optimization, so I started tackling the issue.&lt;/p&gt;

&lt;p&gt;Elaborating a bit about what was mentioned above, a non-visible ‘content-visibility’ implies layout, style and paint containment, and when the element is not relevant to the user, it also implies size containment &lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.
This has certain side effects, for example paint and layout containment establish an &lt;a href=&quot;https://drafts.csswg.org/css-display-4/#establish-an-independent-formatting-context&quot;&gt;independent formatting context&lt;/a&gt; and affect how the contained box &lt;a href=&quot;https://bug1874826.bmoattachments.org/attachment.cgi?id=9373457&quot;&gt;interacts with floats&lt;/a&gt; and &lt;a href=&quot;https://bug1765615.bmoattachments.org/attachment.cgi?id=9371959&quot;&gt;how margin collapsing applies&lt;/a&gt;.
Style containment can even have more drastic consequences, since they &lt;a href=&quot;https://drafts.csswg.org/css-contain/#containment-style&quot;&gt;make &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;counter-*&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;*-quote&lt;/code&gt; properties scoped to the subtree&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When we dynamically modify the ‘contain’ or ‘content-visibility’ properties, or when the relevance of a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;content-visibility: auto&lt;/code&gt; element changes, browsers must make sure that the rendering is properly updated.
It turned out that there were almost no tests for that, and unsurprisingly, Chromium and WebKit had various invalidation bugs.
Firefox was always forcing a &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1765515&quot;&gt;rebuild of the tree used for rendering&lt;/a&gt;, which avoided such bugs but is not optimal.&lt;/p&gt;

&lt;p&gt;I wrote a couple of web platform tests for &lt;a href=&quot;https://wpt.fyi/results/css/css-contain?label=master&amp;amp;label=experimental&amp;amp;aligned&amp;amp;q=dynamic&quot;&gt;‘contain’&lt;/a&gt; and &lt;a href=&quot;https://wpt.fyi/results/css/css-contain/content-visibility?label=master&amp;amp;label=experimental&amp;amp;aligned&amp;amp;q=containment&quot;&gt;‘content-visibility’&lt;/a&gt; &lt;sup id=&quot;fnref:2&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;, and made sure that Firefox does the minimal invalidation effort needed, being careful not to cause any regressions.
As a result, except for style containment changes, we’re now able to avoid the cost a rebuild of the tree used for rendering!&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Almost two years after the initial work on ‘content-visibility’, I was able to send the &lt;a href=&quot;https://groups.google.com/a/mozilla.org/g/dev-platform/c/kXp-yUvkNKQ&quot;&gt;intent-to-ship&lt;/a&gt;, and the feature finally became available in Firefox 125.
Finishing the implementation work on this feature was challenging, but quite interesting to me.&lt;/p&gt;

&lt;p&gt;I believe ‘content-visibility’ is a good example of why implementing a feature in different browsers is important to ensure that both the specification and tests are good enough.
The lack of details in the spec regarding when we determine viewport proximity, and the absence for WPT tests for invalidation, definitely made the Firefox work take longer than expected.
But finishing that implementation work was also useful for improving the spec, tests, and other implementations &lt;sup id=&quot;fnref:3&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:3&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;I’ll conclude this series of blog posts with &lt;strong&gt;fetch priority&lt;/strong&gt;, which also has its own interesting story…&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;In both cases, “implies” means the used value of ‘contain’ is modified accordingly. &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;One of the thing I had to handle with care was the update of the accessibility tree, since content that is not relevant to the user must not be exposed. Unfortunately &lt;a href=&quot;https://github.com/Igalia/webengineshackfest/issues/30&quot;&gt;it’s not possible to write WPT tests for accessibility yet&lt;/a&gt; so for now I had to write internal Firefox-specific non-regression tests. &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:3&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Another interesting report happened after the release and is &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1894546&quot;&gt;related to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;content-visibility: auto&lt;/code&gt; on elements drawn in a canvas&lt;/a&gt;. &lt;a href=&quot;#fnref:3&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>My recent contributions to Gecko (1/3)</title>
   <link href="https://frederic-wang.fr//2024/06/21/my-recent-contributions-to-gecko-registered-custom-properties/"/>
   <updated>2024-06-21T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2024/06/21/my-recent-contributions-to-gecko-registered-custom-properties</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;Igalia has been contributing to the web platform implementations of different web engines for a long time.
One of our goals is ensuring that these implementations are interoperable, by relying on various web standards and &lt;a href=&quot;https://wpt.fyi/results/&quot;&gt;web platform tests&lt;/a&gt;.
In July 2023, I happily joined a project that focuses on this goal, and I worked more specifically on the Gecko web engine.
One year later, three new features I contributed to are being shipped in Firefox.
In this series of blog posts, I’ll give an overview of those features (namely registered custom properties, content visibility, and fetch priority) and my journey to make them “ride the train” as Mozilla people say.&lt;/p&gt;

&lt;p&gt;Let’s start with registered custom properties, an enhancement of traditional CSS variables.&lt;/p&gt;

&lt;h2 id=&quot;registered-custom-properties&quot;&gt;Registered custom properties&lt;/h2&gt;

&lt;p&gt;You may already be familiar with &lt;a href=&quot;https://drafts.csswg.org/css-variables/&quot;&gt;CSS variables&lt;/a&gt;, these “dash dash” names that facilitate the maintenance of a large web site by allowing author-defined CSS properties.
In the example below, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:root&lt;/code&gt; selector defines a variable &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--main-theme-color&lt;/code&gt; with value “blue”, which is used for the style applied to other elements via the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;var()&lt;/code&gt; CSS function.
As you can see, this makes the usage of the main theme color in different places more readable and makes customizing that color much easier.&lt;/p&gt;

&lt;div class=&quot;language-css highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nd&quot;&gt;:root&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;py&quot;&gt;--main-theme-color&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;blue&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;--main-theme-color&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;section&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nl&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;1em&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;nl&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;1px&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;solid&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;--main-theme-color&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;nc&quot;&gt;.progress-bar&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nl&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;nl&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;100%&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;nl&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;linear-gradient&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;white&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;--main-theme-color&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;));&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;section&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Loading...&lt;span class=&quot;nt&quot;&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;progress-bar&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/var#browser_compatibility&quot;&gt;browsers supporting CSS variables&lt;/a&gt;, you should see a frame containing the text “Loading” and a progress bar, all of these components being blue:&lt;/p&gt;

&lt;style&gt;
.example1 {
  --main-theme-color: blue;
  margin: 2em;
}
.example1 p {
  color: var(--main-theme-color);
}
.example1 section {
  padding: 1em;
  border: 1px solid var(--main-theme-color);
}
.example1 .progress-bar {
  height: 10px;
  width: 100%;
  background: linear-gradient(white, var(--main-theme-color));
}
&lt;/style&gt;

&lt;div class=&quot;example1&quot;&gt;
&lt;section&gt;
  &lt;p&gt;Loading...&lt;/p&gt;
  &lt;div class=&quot;progress-bar&quot;&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;/div&gt;

&lt;p&gt;Having such CSS variables available is already nice, but they are lacking some features available to native CSS properties…
For example, there is (almost) no syntax checking on specified values, they are always inherited, and their &lt;a href=&quot;https://drafts.csswg.org/css-cascade/#initial-values&quot;&gt;initial value&lt;/a&gt; is always the &lt;a href=&quot;https://drafts.csswg.org/css-variables/#guaranteed-invalid-value&quot;&gt;guaranteed invalid value&lt;/a&gt;.
In order to improve on that situation, the &lt;a href=&quot;https://drafts.css-houdini.org/css-properties-values-api/&quot;&gt;CSS Properties and Values specification&lt;/a&gt; provides some APIs to &lt;em&gt;register&lt;/em&gt; custom properties with further characteristics:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;An accepted &lt;a href=&quot;https://drafts.css-houdini.org/css-properties-values-api/#syntax-string&quot;&gt;syntax&lt;/a&gt; for the property; for example, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;igalia | &amp;lt;url&amp;gt; | &amp;lt;integer&amp;gt;+&lt;/code&gt; means either the custom identifier “igalia”, or a URL, or a space-separated list of integers.&lt;/li&gt;
  &lt;li&gt;Whether the property is inherited or non-inherited.&lt;/li&gt;
  &lt;li&gt;An initial value.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Custom properties can be registered via CSS or via a JS API, and these ways are equivalent.
For example, to register &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--main-theme-color&lt;/code&gt; as a non-inherited &lt;a href=&quot;https://drafts.csswg.org/css-color-5/#typedef-color&quot;&gt;color&lt;/a&gt; with initial value &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;blue&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-css highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;@property&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;--main-theme-color&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;py&quot;&gt;syntax&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&quot;&amp;lt;color&amp;gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;py&quot;&gt;inherits&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;py&quot;&gt;initial-value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;blue&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-js highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;window&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;CSS&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;registerProperty&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;--main-theme-color&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;syntax&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;lt;color&amp;gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;inherits&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;initialValue&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;blue&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;interpolation-of-registered-custom-properties&quot;&gt;Interpolation of registered custom properties&lt;/h2&gt;

&lt;p&gt;By having custom properties registered with a specific &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;syntax&lt;/code&gt;, we open up the possibility of &lt;a href=&quot;https://drafts.csswg.org/css-values-4/#interpolation&quot;&gt;interpolating&lt;/a&gt; between two values of the properties when performing an animation.
Consider the following example, where the width of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;animated&lt;/code&gt; div depends on the custom property &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--my-length&lt;/code&gt;.
Defining this property as a length allows browsers to &lt;a href=&quot;https://drafts.csswg.org/css-values-4/#combine-dimensions&quot;&gt;interpolate it continuously&lt;/a&gt; between 10px and 200px when it is animated:&lt;/p&gt;

&lt;div class=&quot;language-css highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt; &lt;span class=&quot;k&quot;&gt;@property&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;--my-length&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
   &lt;span class=&quot;py&quot;&gt;syntax&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&quot;&amp;lt;length&amp;gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;py&quot;&gt;inherits&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;py&quot;&gt;initialValue&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&apos;0px&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
 &lt;span class=&quot;k&quot;&gt;@keyframes&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;test&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
   &lt;span class=&quot;nt&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
     &lt;span class=&quot;py&quot;&gt;--my-length&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
   &lt;span class=&quot;nt&quot;&gt;to&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
     &lt;span class=&quot;py&quot;&gt;--my-length&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;200px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
 &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
 &lt;span class=&quot;nt&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;#animated&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
   &lt;span class=&quot;nl&quot;&gt;animation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;test&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;2s&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;linear&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;both&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;nl&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;--my-length&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
   &lt;span class=&quot;nl&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;200px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;nl&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;lightblue&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;With non-registered custom properties, we can instead only &lt;a href=&quot;https://drafts.csswg.org/web-animations-1/#discrete&quot;&gt;animate discretely&lt;/a&gt;; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--my-length&lt;/code&gt; would suddenly jump from 10px to 200px halfway through the duration of the animation, which is generally not what is desired for lengths.&lt;/p&gt;

&lt;h2 id=&quot;custom-properties-in-the-cascade&quot;&gt;Custom properties in the cascade&lt;/h2&gt;

&lt;p&gt;If you check the &lt;a href=&quot;https://wpt.fyi/interop-2023?feature=interop-2023-property&quot;&gt;Interop 2023 Dashboard for custom properties&lt;/a&gt;, you may notice that interoperability was really bad at the beginning of the year, and this was mainly due to Firefox’s low score.
Consequently, when I joined the project, I was asked to help with improving that situation.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://frederic-wang.fr//images/interop-2023-custom-properties.png&quot; alt=&quot;Graph showing the 2023 evolution of scores and interop for custom properties&quot; /&gt;&lt;/p&gt;

&lt;p&gt;While the two registration methods previously mentioned had already been implemented, the main issue was that the CSS cascade was always treating custom properties as inherited and initialized with the guaranteed invalid value.
This is indeed correct for unregistered custom properties, but it’s generally &lt;em&gt;incorrect&lt;/em&gt; for registered custom properties!&lt;/p&gt;

&lt;p&gt;In &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1840478&quot;&gt;bug 1840478&lt;/a&gt;, &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1855887&quot;&gt;bug 1855887&lt;/a&gt;, and others, I made registered custom properties work properly in the cascade, including non-inherited properties and registered initial values.
But in the past, with the previous assumptions around inheritance and initial values, it was possible to store the computed values of custom properties on an element as a “cheap” map, considering only the properties actually specified on the element or an ancestor and (in most cases) only taking shallow copies of the parent’s map.
As a result, when generalizing the cascade for registered custom properties, I had to be careful to avoid introducing performance regressions for existing content.&lt;/p&gt;

&lt;h2 id=&quot;custom-properties-in-animations&quot;&gt;Custom properties in animations&lt;/h2&gt;

&lt;p&gt;Another area where the situation was pretty bad was animations.
Not only was Firefox unable to interpolate registered custom properties between two values — one of the main motivations for the new spec — but it was actually unable to animate custom properties at all!&lt;/p&gt;

&lt;p&gt;The main problem was that the existing animation code referred to CSS properties using an enum &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nsCSSPropertyID&lt;/code&gt;, with all custom properties represented by the single value &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nsCSSPropertyID::eCSSPropertyExtra_variable&lt;/code&gt;.
To make this work for custom properties, I had to essentially replace that value with a structure containing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nsCSSPropertyID&lt;/code&gt; and the name of the custom properties.&lt;/p&gt;

&lt;p&gt;I uploaded patches to &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1846516&quot;&gt;bug 1846516&lt;/a&gt; to perform that change throughout the whole codebase, and with a few more tweaks, I was able to make registered custom properties animate discretely, but my patches still needed some polish before they could be reviewed.
I had to move onto other tasks, but fortunately, some Mozilla folks were kind enough to take over this task, and more generally, complete the work on registered custom properties!&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;This was an interesting task to work on, and because a lot of the work happened in Stylo, the CSS engine shared by Servo and Gecko, I also had the opportunity to train more on the Rust programming language.
Thanks to help from folks at Mozilla, we were able to get excellent progress on registered custom properties in Firefox in 2023, and this feature is &lt;a href=&quot;https://groups.google.com/a/mozilla.org/g/dev-platform/c/UhQSvl_v6xk/m/AvkjQbC0BwAJ&quot;&gt;expected to ship in Firefox 128&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;As I said, I’ve since moved onto other tasks, which I’ll describe in subsequent blog posts in this series.
Stay tuned for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;content-visibility&lt;/code&gt;, enabling interesting layout optimizations for web pages.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Flygskam and o caminho da Corunha</title>
   <link href="https://frederic-wang.fr//2024/05/23/flygskam-and-o-caminho-de-santiago/"/>
   <updated>2024-05-23T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2024/05/23/flygskam-and-o-caminho-de-santiago</id>
   <content type="html">&lt;h2 id=&quot;prolegomenon&quot;&gt;Prolegomenon&lt;/h2&gt;

&lt;p&gt;Early next June, I’m traveling from Paris to A Coruña for the &lt;a href=&quot;https://webengineshackfest.org/&quot;&gt;Web Engines Hackfest&lt;/a&gt; and other internal Igalia events.
In recent years I’ve done it by train, as &lt;a href=&quot;https://frederic-wang.fr/2019/12/10/review-of-my-year-2019-at-igalia/#paris---a-coru%C3%B1a-by-train&quot;&gt;previously&lt;/a&gt; &lt;a href=&quot;https://frederic-wang.fr/2022/06/17/short-blog-post-from-madrid-s-hotel-room/&quot;&gt;mentioned&lt;/a&gt;.
Some colleagues at Igalia were curious about it so I decided to write this blog post, investigating possible ways to do it from various European places.
I wish this can also motivate more people at Igalia and beyond, who are still hesistant to give up alternatives with heavier carbon footprint.&lt;/p&gt;

&lt;p&gt;In addition to various trip planners, I’ve also used this nice map from Wikipedia, which gives a good overview of high-speed rail in Europe:&lt;/p&gt;

&lt;div style=&quot;max-width: 512px; margin-left: auto; margin-right: auto&quot;&gt;
     &lt;a title=&quot;Original PNG : User:Bernese media, User:BIL 2011 SVG version: User:Akwa and others (see the history &amp;amp; the source file), CC BY-SA 3.0 &amp;lt;https://creativecommons.org/licenses/by-sa/3.0&amp;gt;, via Wikimedia Commons&quot; href=&quot;https://commons.wikimedia.org/wiki/File:High_Speed_Railroad_Map_of_Europe.svg&quot;&gt;&lt;img width=&quot;512&quot; alt=&quot;High Speed Railroad Map of Europe&quot; src=&quot;https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/High_Speed_Railroad_Map_of_Europe.svg/512px-High_Speed_Railroad_Map_of_Europe.svg.png?20240202110242&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;I also sought advice from &lt;a href=&quot;https://www.igalia.com/team/nribaudo&quot;&gt;Nicolò Ribaudo&lt;/a&gt; who is quite familiar with train traveling and provided useful recommendations.
In particular, he mentioned the &lt;a href=&quot;https://fahrplan.oebb.at/&quot;&gt;ÖBB trip planner&lt;/a&gt;, which seems quite efficient combining trains from multiple operators.&lt;/p&gt;

&lt;p&gt;I’ve focused on big european cities (with airports) that are close to Spain but this is definitely not exhaustive.
There is probably a lot more to discuss beyong trip planning, but hopefully that can be a good starting point.&lt;/p&gt;

&lt;h2 id=&quot;paris-as-a-departure-or-connection&quot;&gt;Paris as a departure or connection&lt;/h2&gt;

&lt;p&gt;Based on my experience traveling from Paris, I found these direct trains between big cities:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Renfe offers several &lt;a href=&quot;https://en.wikipedia.org/wiki/AVE&quot;&gt;AVE&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Alvia&quot;&gt;Alvia&lt;/a&gt; trains traveling every days between A Coruña and Madrid, with a duration 3h30-4h &lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. There are two important thing to note:
    &lt;ol&gt;
      &lt;li&gt;These local trains are only avalailble for sell maybe 2 months in advance at best.&lt;/li&gt;
      &lt;li&gt;These trains are connecting to &lt;a href=&quot;https://en.wikipedia.org/wiki/Madrid_Chamart%C3%ADn_railway_station&quot;&gt;Madrid Chamartín&lt;/a&gt; which is maybe 30 minutes away from &lt;a href=&quot;https://en.wikipedia.org/wiki/Madrid_Atocha_railway_station&quot;&gt;Madrid Atocha&lt;/a&gt; by the &lt;a href=&quot;https://en.wikipedia.org/wiki/Line_1_(Madrid_Metro)&quot;&gt;Madrid metro&lt;/a&gt;.&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
  &lt;li&gt;Renfe also proposes even more options (say one each half hour during the day) between Barcelona and Madrid Atocha, with a duration of 2h30-3h &lt;sup id=&quot;fnref:2&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/li&gt;
  &lt;li&gt;The &lt;a href=&quot;https://www.sncf-connect.com&quot;&gt;SNCF&lt;/a&gt; proposes &lt;a href=&quot;https://www.sncf-connect.com/en-en/train/timetables/paris/barcelona&quot;&gt;two or three direct trains during the day&lt;/a&gt; between &lt;a href=&quot;https://en.wikipedia.org/wiki/Gare_de_Lyon&quot;&gt;Paris Gare de Lyon&lt;/a&gt; and Barcelona, with a duration of 6h30-7h. If you are coming from Paris and want to to take a train to Madrid, you will likely have to cross the station and pass some x-ray baggage scanner, so be sure to keep enough time for the connection.&lt;/li&gt;
  &lt;li&gt;The &lt;a href=&quot;https://www.eurostar.com/&quot;&gt;Eurostar&lt;/a&gt; offers several options during the day to connect Paris with cities below. They connect to &lt;a href=&quot;https://en.wikipedia.org/wiki/Gare_du_Nord&quot;&gt;Gare du Nord&lt;/a&gt; or &lt;a href=&quot;https://en.wikipedia.org/wiki/Gare_de_l%27Est&quot;&gt;Gare de l’Est&lt;/a&gt;, which are very close to each other but ~30 minutes away from Gare de Lyon by public transport.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.sncf-connect.com/en-en/train/timetables/brussels/paris&quot;&gt;Brussels&lt;/a&gt; (duration ~1h30)&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.sncf-connect.com/en-en/train/timetables/amsterdam/paris&quot;&gt;Amsterdam&lt;/a&gt; (duration ~3h30)&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.sncf-connect.com/en-en/train/timetables/london/paris&quot;&gt;London&lt;/a&gt; (duration ~2h30)&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.sncf-connect.com/en-en/train/timetables/cologne/paris&quot;&gt;Cologne&lt;/a&gt; (duration ~3h30)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Personally, I’m doing this one-day-and-half trip (inbound trip is similar):&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Take the train from Paris (9:42 AM) to Barcelona (4:33 PM).&lt;/li&gt;
  &lt;li&gt;Keep enough time for the Barcelona Sants connection.&lt;/li&gt;
  &lt;li&gt;Take a train from Barcelona to Madrid in the evening.&lt;/li&gt;
  &lt;li&gt;Stay one night in Madrid.&lt;/li&gt;
  &lt;li&gt;Take a train from Madrid to A Coruña in the morning.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;From London, Amsterdam, Brussels, Berlin one could instead do a two-days trip:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Travel to Paris in the morning &lt;sup id=&quot;fnref:3&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:3&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/li&gt;
  &lt;li&gt;Keep enough time for the Paris connection.&lt;/li&gt;
  &lt;li&gt;Take the train from Paris (2:42PM) to Barcelona (9:27PM).&lt;/li&gt;
  &lt;li&gt;Stay one night in Barcelona.&lt;/li&gt;
  &lt;li&gt;Travel from Barcelona to Madrid Atocha.&lt;/li&gt;
  &lt;li&gt;Keep enough time for the Madrid Metro connection.&lt;/li&gt;
  &lt;li&gt;Travel from Madrid Chamartín to A Coruña.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I also looked at the trip with the minimum number of connections to go to Barcelona from big cities in Switzerland and a a similar traject is possible. See later for alternatives.&lt;/p&gt;

&lt;p&gt;Finally, Nicolò mentioned that &lt;a href=&quot;https://www.oebb.at/&quot;&gt;ÖBB&lt;/a&gt; recently started running a night train from Berlin to Paris, which you can probably use to do a similar trip as mine.&lt;/p&gt;

&lt;h2 id=&quot;estimate-of-co2-emissions&quot;&gt;Estimate of CO&lt;sub&gt;2&lt;/sub&gt; emissions&lt;/h2&gt;

&lt;p&gt;In order to estimate CO&lt;sub&gt;2&lt;/sub&gt; emission for the trips suggested in the previous section, I compiled information from different sources:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.eurostar.com/us-en/sustainability&quot;&gt;Eurostar sustainability 2023&lt;/a&gt;,  independent study carried out by EcoRes SCRL in July 2023.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://ressources.data.sncf.com/explore/dataset/emission-co2-tgv/information/&quot;&gt;The own data provided by SNCF&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://ecopassenger.hafas.de&quot;&gt;Ecopassenger&lt;/a&gt;, developed in cooperation with the International Railways Union, the Sustainable Development Foundation and the German Institute for Environment and Energy.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://ecotree.green/en/no-more-offsetting&quot;&gt;Ecotree&lt;/a&gt; a company for tree planating providing a CO&lt;sub&gt;2&lt;/sub&gt; emission calculator.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There would be a lot to discuss about the methodology but the goal here is only to give a rough idea. Anyway, below is an estimate of kilograms of CO&lt;sub&gt;2&lt;/sub&gt; per passenger for some of the train trips previously mentioned:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt; &lt;/th&gt;
      &lt;th&gt;Eurostar&lt;/th&gt;
      &lt;th&gt;SNCF&lt;/th&gt;
      &lt;th&gt;Ecopassenger &lt;sup id=&quot;fnref:4&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:4&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
      &lt;th&gt;Ecotree&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Berlin ↔ Cologne&lt;/td&gt;
      &lt;td&gt;-&lt;/td&gt;
      &lt;td&gt;-&lt;/td&gt;
      &lt;td&gt;17-19&lt;/td&gt;
      &lt;td&gt;1-3&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Cologne ↔ Paris&lt;/td&gt;
      &lt;td&gt;5.2&lt;/td&gt;
      &lt;td&gt;5.2&lt;/td&gt;
      &lt;td&gt;7.4&lt;/td&gt;
      &lt;td&gt;1-3&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;London ↔ Paris&lt;/td&gt;
      &lt;td&gt;2.4&lt;/td&gt;
      &lt;td&gt;2.4&lt;/td&gt;
      &lt;td&gt;1.7&lt;/td&gt;
      &lt;td&gt;1-3&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Brussels ↔ Paris&lt;/td&gt;
      &lt;td&gt;1.6&lt;/td&gt;
      &lt;td&gt;1.8&lt;/td&gt;
      &lt;td&gt;1.8&lt;/td&gt;
      &lt;td&gt;1-2&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Amsterdam ↔ Paris&lt;/td&gt;
      &lt;td&gt;2.6&lt;/td&gt;
      &lt;td&gt;2.9&lt;/td&gt;
      &lt;td&gt;9.3-9.5&lt;/td&gt;
      &lt;td&gt;1-3&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Paris ↔ Barcelona&lt;/td&gt;
      &lt;td&gt;-&lt;/td&gt;
      &lt;td&gt;3.8&lt;/td&gt;
      &lt;td&gt;-&lt;/td&gt;
      &lt;td&gt;1-6&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Barcelona ↔ Madrid&lt;/td&gt;
      &lt;td&gt;-&lt;/td&gt;
      &lt;td&gt;-&lt;/td&gt;
      &lt;td&gt;17-20&lt;/td&gt;
      &lt;td&gt;1-6&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Madrid ↔ A Coruña&lt;/td&gt;
      &lt;td&gt;-&lt;/td&gt;
      &lt;td&gt;-&lt;/td&gt;
      &lt;td&gt;-&lt;/td&gt;
      &lt;td&gt;1-3&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;The best/worst cases are compiled into the following table and compared with a flight to A Coruña (with a connection by Madrid) as calculated by Ecotree. If we follow these data, a train from Berlin, London, Paris, Brussels and Amsterdam won’t at worst be around 50kg of CO&lt;sub&gt;2&lt;/sub&gt; per passenger and represent at least a reduction of around 90% compared to using a plane:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Departure&lt;/th&gt;
      &lt;th&gt;Flight by Madrid (Ecotree)&lt;/th&gt;
      &lt;th&gt;Train &lt;sup id=&quot;fnref:5&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:5&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
      &lt;th&gt;CO&lt;sub&gt;2&lt;/sub&gt; reduction&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Berlin&lt;/td&gt;
      &lt;td&gt;448&lt;/td&gt;
      &lt;td&gt;6-55.4&lt;/td&gt;
      &lt;td&gt;≥87%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;London&lt;/td&gt;
      &lt;td&gt;388&lt;/td&gt;
      &lt;td&gt;4-32&lt;/td&gt;
      &lt;td&gt;≥91%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Brussels&lt;/td&gt;
      &lt;td&gt;396&lt;/td&gt;
      &lt;td&gt;4-30.8&lt;/td&gt;
      &lt;td&gt;≥92%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Amsterdam&lt;/td&gt;
      &lt;td&gt;396&lt;/td&gt;
      &lt;td&gt;4-38.5&lt;/td&gt;
      &lt;td&gt;≥90%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Paris&lt;/td&gt;
      &lt;td&gt;368&lt;/td&gt;
      &lt;td&gt;3-29&lt;/td&gt;
      &lt;td&gt;≥92%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Madrid&lt;/td&gt;
      &lt;td&gt;244&lt;/td&gt;
      &lt;td&gt;1-3&lt;/td&gt;
      &lt;td&gt;≥98%&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;more-cities-and-trains&quot;&gt;More cities and trains&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer: This section is essentially based on information provided by Nicolò and what I found on internet.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In addition to the SNCF train previously mentioned, &lt;a href=&quot;https://www.renfe.com/content/dam/renfe/es/Viajeros/Secciones/Prepara-tu-viaje/ave-francia/pdf/ave-francia-horarios-2023-2024-en.pdf&quot;&gt;Renfe&lt;/a&gt; proposes two trains that are quite important for traveling from France to Spain:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;One train between Lyon and Barcelona per day (duration ~5h)&lt;/li&gt;
  &lt;li&gt;One train between Marseille and Madrid per day (duration ~8h)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From Switzerland, you can pass by the south of France using more trains/connections to arrive faster in Barcelone than what was previously proposed. For example, taking a local train to go from Genève to Lyon followed by the Lyon to Barcelona train mentioned above can be done in around 7h. From Zurich, with connection at Genève and Lyon, it takes around 10h as opposed to 12h for a single connection in Paris.&lt;/p&gt;

&lt;p&gt;From the Netherlands, Belgium or Germany it makes sense to consider the night trains from Paris to the border with Spain. Those trains do not have a fixed schedule, but vary depending on the weekday. Most of them arrive in &lt;a href=&quot;https://en.wikipedia.org/wiki/Portbou_railway_station&quot;&gt;Portbou&lt;/a&gt; and from there you can take a regional train to Barcelona. Some of them arrive to &lt;a href=&quot;https://en.wikipedia.org/wiki/Latour-de-Carol-Enveitg_station&quot;&gt;Latour-de-Carol&lt;/a&gt;, and from there it’s three hours on a regional train to Barcelona. In any case, you’ll be early enough at the border so that it’s possible to then arrive to A Coruña in the afternoon or evening. Rarely the night train arrives at the border on the west coast, and continuing from there to A Coruña with the regional trains that go on the northern coast might be a good experience.&lt;/p&gt;

&lt;p&gt;From Belgium it’s also possible to take a TGV from Brussels to Lyon, and then from there take the train to Barcelona. This avoids a stressful connection in Paris, where you need to move between the two stations Gare du Nord and Gare de Lyon.&lt;/p&gt;

&lt;p&gt;From Italy, the main trouble is to deal with connections. The &lt;a href=&quot;https://en.wikipedia.org/wiki/Turin%E2%80%93Lyon_high-speed_railway&quot;&gt;Turin–Lyon high-speed railway&lt;/a&gt; contruction may help in the future but it’s not running yet. The alternatives are either to go on the coast through Genova-Ventimiglia-Nice, or with the &lt;a href=&quot;https://www.raileurope.com/en/trains/eurocity&quot;&gt;Eurocity&lt;/a&gt; from Milan to Switzerland finally get to France.&lt;/p&gt;

&lt;p&gt;From Portugal, which is so close geographically and culturally to Galicia, we could think there should be an easy way to travel to A Coruña. But apparently neither &lt;a href=&quot;https://www.cp.pt&quot;&gt;Comboios de Portugal&lt;/a&gt; nor &lt;a href=&quot;https://venta.renfe.com&quot;&gt;Renfe&lt;/a&gt; provides any direct train:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;From Porto, the ÖBB trip planner suggests connection at &lt;a href=&quot;https://en.wikipedia.org/wiki/Vigo-Guixar_railway_station&quot;&gt;Vigo-Guixar&lt;/a&gt; for a total duration of 6h30. As a comparison, the website of the &lt;a href=&quot;https://webengineshackfest.org/&quot;&gt;Web Engines Hackfest&lt;/a&gt; indicates a 3-hours trip by car and a 5-hours trip by bus.&lt;/li&gt;
  &lt;li&gt;Between Libon and Porto, Comboios de Portugal seems to propose trains taking 2h30-3h. You can combine that with the other trains to do the trip to A Coruña with one night at Porto or Vigo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Last but not least, &lt;a href=&quot;https://en.wikipedia.org/wiki/A_Coru%C3%B1a_railway_station&quot;&gt;A Coruña railway station&lt;/a&gt; is a one-quarter walk away from the Igalia office and a three-quarter walks away from Palexco (Web Engines Hackfest’s venue). This is more convenient than the A Coruña airport which is around 10 km away from A Coruña.&lt;/p&gt;

&lt;h2 id=&quot;notes-and-references&quot;&gt;Notes and references&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Flight_shame&quot;&gt;Flygskam&lt;/a&gt;: anti-flying social movement started in Sweden, with the aim of reducing the environmental impact of aviation.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Camino_de_Santiago&quot;&gt;O Caminho de Santiago&lt;/a&gt;: The Way of St. James, a network of pilgrims’ ways leading to Santiago de Compostela (whose &lt;a href=&quot;https://en.wikipedia.org/wiki/Santiago_de_Compostela_railway_station&quot;&gt;railway station&lt;/a&gt; you will likely stop at if you take a train to A Coruña).&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Incidentally, people travelling from far away are unlikely to find a direct flight to the A Coruña airport. In that case, using local trains from bigger airports like Madrid or Porto may be a better option. &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Direct train between A Coruña and Barcelona seems to be rarer, slower and no longer available as night train. So a connection or night stay in Madrid seems the best option. &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:3&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;&lt;a href=&quot;https://int.bahn.de/&quot;&gt;Deutsche Bahn&lt;/a&gt; offers a lot of Berlin to Cologne trains per day with a duration of 4h-4h30, including early/late trains or night trains, that you can combine with the Cologne-Paris Eurostar. Deutsche Bahn also offers (non-direct) ICE trains to go from Paris to Berlin. &lt;a href=&quot;#fnref:3&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:4&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Ecopassenger gives information per train, so I’m provided some lower/upper bounds based on different trains. &lt;a href=&quot;#fnref:4&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:5&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Based on the previous data from Eurostar, SNCF, Ecopassenger, Ecotree, trying to find the lowest/highest sum for each individual segment. &lt;a href=&quot;#fnref:5&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Time travel debugging of WebKit with rr</title>
   <link href="https://frederic-wang.fr//2024/05/21/time-travel-debugging-of-webkit-with-rr/"/>
   <updated>2024-05-21T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2024/05/21/time-travel-debugging-of-webkit-with-rr</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://rr-project.org/&quot;&gt;rr&lt;/a&gt; is a debugging tool for Linux that was originally developed by Mozilla for &lt;a href=&quot;https://firefox-source-docs.mozilla.org/contributing/debugging/debugging_firefox_with_rr.html&quot;&gt;Firefox&lt;/a&gt;.
It has long been adopted by Igalia and other web platform developers for &lt;a href=&quot;https://developer.chrome.com/blog/chromium-chronicle-13&quot;&gt;Chromium&lt;/a&gt; and WebKit too.
Back in 2019, there were breakout sessions on this topic at the &lt;a href=&quot;https://blogs.igalia.com/mrego/2019/11/14/web-engines-hackfest-2019/#debugging-tools&quot;&gt;Web Engines Hackfest&lt;/a&gt; and &lt;a href=&quot;https://www.youtube.com/watch?v=pV7AYofV95A&amp;amp;t=565s&quot;&gt;BlinkOn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For WebKitGTK, the Flatpak SDK provides a copy of rr, but recently I was unable to use the &lt;a href=&quot;https://trac.webkit.org/wiki/WebKitFlatpakSDK/DebugWithRR&quot;&gt;instructions on trac.webkit.org&lt;/a&gt;.
Fortunately, my colleague &lt;a href=&quot;https://www.igalia.com/team/aperez&quot;&gt;Adrián Pérez&lt;/a&gt; suggested using a direct build without &lt;a href=&quot;https://flatpak.org/&quot;&gt;flatpak&lt;/a&gt; or the &lt;a href=&quot;https://github.com/containers/bubblewrap&quot;&gt;bubblewrap&lt;/a&gt; sandbox, and that indeed solved my problem.
I thought it might be interesting to share this information with others, so I decided to write this blog post.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer: The build instructions below may be imperfect, will likely become outdated, and are in any case not a replacement for the &lt;a href=&quot;https://trac.webkit.org/wiki/BuildingGtk#BuildingWebKitGTKfromgit&quot;&gt;official ones for WebKitGTK development&lt;/a&gt;.
Use them at your own risk!&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;cmake-configuration&quot;&gt;CMake configuration&lt;/h2&gt;

&lt;p&gt;The approach that worked for me was thus to perform a direct build from my system.
I came up with the following configuration step:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;cmake &lt;span class=&quot;nt&quot;&gt;-S&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-BWebKitBuild&lt;/span&gt;/Release &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
   &lt;span class=&quot;nt&quot;&gt;-DCMAKE_BUILD_TYPE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;Release &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
   &lt;span class=&quot;nt&quot;&gt;-DCMAKE_INSTALL_PREFIX&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$HOME&lt;/span&gt;/WebKit/WebKitBuild/install/Release &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
   &lt;span class=&quot;nt&quot;&gt;-GNinja&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-DPORT&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;GTK &lt;span class=&quot;nt&quot;&gt;-DENABLE_BUBBLEWRAP_SANDBOX&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;OFF &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
   &lt;span class=&quot;nt&quot;&gt;-DDEVELOPER_MODE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;ON &lt;span class=&quot;nt&quot;&gt;-DDEVELOPER_MODE_FATAL_WARNINGS&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;OFF &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
   &lt;span class=&quot;nt&quot;&gt;-DENABLE_TOOLS&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;ON &lt;span class=&quot;nt&quot;&gt;-DENABLE_LAYOUT_TESTS&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;ON
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;where:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-B&lt;/code&gt; option specifies the build directory, which is traditionnaly called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebKitBuild/&lt;/code&gt; for the WebKit project.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html&quot;&gt;CMAKE_BUILD_TYPE&lt;/a&gt; specifies the build type, e.g. optimized release builds (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Release&lt;/code&gt;, corresponding to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--release&lt;/code&gt; for the offical script) or debug builds with assertions (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Debug&lt;/code&gt;, corresponding to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--debug&lt;/code&gt;) &lt;sup id=&quot;fnref:2&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX.html&quot;&gt;CMAKE_INSTALL_PREFIX&lt;/a&gt; specifies the installation directory, which I place inside &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebKitBuild/install/&lt;/code&gt; &lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/li&gt;
  &lt;li&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-G&lt;/code&gt; option specifies the build system generator. I used &lt;a href=&quot;https://ninja-build.org/&quot;&gt;Ninja&lt;/a&gt;, which is the default for the offical script too.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-DPORT=GTK&lt;/code&gt; is for building WebKitGTK. I haven’t tested rr with other Linux ports.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-DENABLE_BUBBLEWRAP_SANDBOX=OFF&lt;/code&gt; was suggested by Adrián. The bubblewrap sandbox probably does not make sense without flatpak, so it should be safe to disable it anyway.&lt;/li&gt;
  &lt;li&gt;I extracted the other &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-D&lt;/code&gt; flags from the official script, trying to stay as close as possible to what it provides for WebKit development (being able to run layout tests, building the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Tools/&lt;/code&gt;, ignoring fatal warnings, etc).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Needless to say, the advantage of using flatpak is that it automatically downloads and install all the required dependencies.
But if you do your own build, you need to figure out what they are and perform the setup manually.
Generally, this is straightforward using your distribution’s package manager, but there can be some tricky exceptions &lt;sup id=&quot;fnref:3&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:3&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;While we are still at the configuration step, I believe it’s worth sharing two more tricks for WebKit developers:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;You can use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-DENABLE_SANITIZERS=address&lt;/code&gt; to produce &lt;a href=&quot;https://searchfox.org/wubkat/rev/16f147d06627e9accc8fa041ccc0f639b5c510cf/Tools/Scripts/webkitdirs.pm#2719&quot;&gt;Asan builds&lt;/a&gt; or builds with other &lt;a href=&quot;https://github.com/google/sanitizers&quot;&gt;sanitizers&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;You can use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-DCMAKE_CXX_FLAGS=&quot;-DENABLE_TREE_DEBUGGING&quot;&lt;/code&gt; in release builds if you want to get access to the &lt;a href=&quot;https://searchfox.org/wubkat/search?q=ENABLE(TREE_DEBUGGING)&quot;&gt;tree debugging functions&lt;/a&gt; (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ShowRenderTree&lt;/code&gt; and the like). This flag is turned on by default for debug builds.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;building-and-running-webkit&quot;&gt;Building and running WebKit&lt;/h2&gt;

&lt;p&gt;Once the configure step is successful, you can build and install WebKit using the following CMake command &lt;sup id=&quot;fnref:1:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;cmake &lt;span class=&quot;nt&quot;&gt;--build&lt;/span&gt; WebKitBuild/Release &lt;span class=&quot;nt&quot;&gt;--target&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;When that operation completes, you should be able to run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MiniBrowser&lt;/code&gt; with the following command:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;LD_LIBRARY_PATH&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;WebKitBuild/install/Release/lib ./WebKitBuild/Release/bin/MiniBrowser
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;For &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebKitTestRunner&lt;/code&gt;, some extra environment variables are necessary &lt;sup id=&quot;fnref:1:2&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;TEST_RUNNER_INJECTED_BUNDLE_FILENAME&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$HOME&lt;/span&gt;/WebKit/WebKitBuild/Release/lib/libTestRunnerInjectedBundle.so &lt;span class=&quot;nv&quot;&gt;LD_LIBRARY_PATH&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;WebKitBuild/install/Release/lib ./WebKitBuild/Release/bin/WebKitTestRunner filename.html
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You can also use the official scripts, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Tools/Script/run-minibrowser&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Tools/Script/run-webkit-tests&lt;/code&gt;.
They expect some particular paths, but a quick workaround is to use a symbolic link:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;ln&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-s&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$HOME&lt;/span&gt;/WebKit/WebKitBuild &lt;span class=&quot;nv&quot;&gt;$HOME&lt;/span&gt;/WebKit/WebKitBuild/GTK
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;using-rr-for-webkit-debugging&quot;&gt;Using rr for WebKit debugging&lt;/h2&gt;

&lt;p&gt;rr is generally easily installable from your distribution’s package manager.
However, as stated on &lt;a href=&quot;https://github.com/rr-debugger/rr/wiki/Building-And-Installing&quot;&gt;the project wiki page&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Support for the latest hardware and kernel features may require building rr from Github master.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Indeed, using the source has always worked best for me to avoid mysterious execution failures when starting the recording &lt;sup id=&quot;fnref:4&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:4&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;If you are not familiar with rr, I strongly invite you to take a look at the overview on the &lt;a href=&quot;https://rr-project.org/&quot;&gt;project home page&lt;/a&gt; or at some of the references I mentioned in the introduction.
In any case, the first step is to record a trace by passing the program and arguments to rr.
For example, to record a trace for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MiniBrowser&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;LD_LIBRARY_PATH&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;WebKitBuild/install/Debug/lib rr ./WebKitBuild/Debug/bin/MiniBrowser https://www.igalia.com/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After the program exits, you can replay the recorded trace as many times as you want.
For hard-to-reproduce bugs (e.g. non-deterministic issues or involving a lot of manual steps), that means you only need to be able to record and reproduce the bug once and then can just focus on debugging.
You can even turn off your machine after hours of exhausting debugging, then continue the effort later when you have more time and energy!
The trace is played in a deterministic way, always using the same timing and pointer addresses.
You can use most gdb commands (to run the program, interrupt it, and inspect data), but the real power comes from new commands to perform reverse execution!&lt;/p&gt;

&lt;p&gt;Before coming to that, let’s explain how to handle programs with multiple processes, which is the case for WebKit and modern browsers in general.
After you recorded a trace, you can display the pids of all recorded processes using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rr ps&lt;/code&gt; command.
For example, we can see in the following output that the MiniBrowser process (pid 24103) actually forked three child processes, including the Network Process (pid 24113) and the Web Process (24116):&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;PID     PPID    EXIT    CMD
24103   &lt;span class=&quot;nt&quot;&gt;--&lt;/span&gt;      0       ./WebKitBuild/Debug/bin/MiniBrowser https://www.igalia.com/
24113   24103   &lt;span class=&quot;nt&quot;&gt;-9&lt;/span&gt;      ./WebKitBuild/Debug/bin/WebKitNetworkProcess 7 12
24115   24103   1       &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;forked without &lt;span class=&quot;nb&quot;&gt;exec&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
24116   24103   &lt;span class=&quot;nt&quot;&gt;-9&lt;/span&gt;      ./WebKitBuild/Debug/bin/WebKitWebProcess 15 15
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here is a small debugging session similar to the single-process example from &lt;a href=&quot;https://developer.chrome.com/blog/chromium-chronicle-13&quot;&gt;Chromium Chronicle #13&lt;/a&gt; &lt;sup id=&quot;fnref:5&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:5&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;.
We use the option &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-p 24116&lt;/code&gt; to attach the debugger to the Web Process and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-e&lt;/code&gt; to start debugging from where it exited:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;rr replay &lt;span class=&quot;nt&quot;&gt;-p&lt;/span&gt; 24116 &lt;span class=&quot;nt&quot;&gt;-e&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;rr&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;break &lt;/span&gt;RenderFlexibleBox::layoutBlock
&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;rr&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; rc &lt;span class=&quot;c&quot;&gt;# Run back to the last layout call&lt;/span&gt;
Thread 2 hit Breakpoint 1, WebCore::RenderFlexibleBox::layoutBlock &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;0x7f66699cc400, &lt;span class=&quot;nv&quot;&gt;relayoutChildren&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; at /home/fred/src-obj/WebKit/Source/WebCore/rendering/RenderFlexibleBox.cpp:420
&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;rr&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Inspect anything you want here. To find the previous Layout call on this object:&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;rr&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; cond 1 this &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; 0x7f66699cc400
&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;rr&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; rc
Thread 2 hit Breakpoint 1, WebCore::RenderFlexibleBox::layoutBlock &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;0x7f66699cc400, &lt;span class=&quot;nv&quot;&gt;relayoutChildren&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; at /home/fred/src-obj/WebKit/Source/WebCore/rendering/RenderFlexibleBox.cpp:420
420     &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;rr&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; delete 1
&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;rr&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; watch &lt;span class=&quot;nt&quot;&gt;-l&lt;/span&gt; m_style.m_nonInheritedFlags.effectiveDisplay &lt;span class=&quot;c&quot;&gt;# Or find the last time the effective display was changed&lt;/span&gt;
Thread 4 hit Hardware watchpoint 2: &lt;span class=&quot;nt&quot;&gt;-location&lt;/span&gt; m_style.m_nonInheritedFlags.effectiveDisplay

Old value &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; 16
New value &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; 0
0x00007f6685234f39 &lt;span class=&quot;k&quot;&gt;in &lt;/span&gt;WebCore::RenderStyle::RenderStyle &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;0x7f66699cc4a8&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; at /home/fred/src-obj/WebKit/Source/WebCore/rendering/style/RenderStyle.cpp:176
176     RenderStyle::RenderStyle&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;RenderStyle&amp;amp;&amp;amp;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; default&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rc&lt;/code&gt; is an abbreviation for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;reverse-continue&lt;/code&gt; and continues execution backward.
Similarly, you can use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;reverse-next&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;reverse-step&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;reverse-finish&lt;/code&gt; commands, or their abbreviations.
Notice that the watchpoint change is naturally reversed compared to normal execution: the old value (sixteen) is the one after intialization, while the new value (zero) is the one before initialization!&lt;/p&gt;

&lt;h2 id=&quot;restarting-playback-from-a-known-point-in-time&quot;&gt;Restarting playback from a known point in time&lt;/h2&gt;

&lt;p&gt;rr also has a concept of “event” and associates a number to each event it records.
They can be obtained by the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;when&lt;/code&gt; command, or printed to the standard output using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-M&lt;/code&gt; option.
To elaborate a bit more, suppose you add the following &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;printf&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderFlexibleBox::layoutBlock&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-diff highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;@@ -423,6 +423,8 @@&lt;/span&gt; void RenderFlexibleBox::layoutBlock(bool relayoutChildren, LayoutUnit)
     if (!relayoutChildren &amp;amp;&amp;amp; simplifiedLayout())
         return;
&lt;span class=&quot;err&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;gi&quot;&gt;+    printf(&quot;this=%p\n&quot;, this);
+
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After building, recording and replaying again, the output should look like this:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;rr &lt;span class=&quot;nt&quot;&gt;-M&lt;/span&gt; replay &lt;span class=&quot;nt&quot;&gt;-p&lt;/span&gt; 70285 &lt;span class=&quot;nt&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# replay with the new PID of the web process.&lt;/span&gt;
...
&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;rr 70285 57408]this&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;0x7f742203fa00
&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;rr 70285 57423]this&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;0x7f742203fc80
&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;rr 70285 57425]this&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;0x7f7422040200
...
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Each printed output is now annotated with two numbers in bracket: a PID and an event number.
So in order to restart from when an interesting output happened (let’s say &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;[rr 70285 57425]this=0x7f7422040200&lt;/code&gt;), you can now execute &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;run 57425&lt;/code&gt; from the debugging session, or equivalently:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;rr replay &lt;span class=&quot;nt&quot;&gt;-p&lt;/span&gt; 70285 &lt;span class=&quot;nt&quot;&gt;-g&lt;/span&gt; 57425
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;older-traces-and-parallel-debugging&quot;&gt;Older traces and parallel debugging&lt;/h2&gt;

&lt;p&gt;Another interesting thing to know is that traces are stored in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/.local/share/rr/&lt;/code&gt; and you can always specify an older trace to the rr command e.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rr ps ~/.local/share/rr/MiniBrowser-0&lt;/code&gt;.
Be aware that the &lt;a href=&quot;https://github.com/rr-debugger/rr/wiki/Usage#limitations&quot;&gt;executable image must not change&lt;/a&gt;, but you can use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rr pack&lt;/code&gt; to be able to run old traces after a rebuild, or even to copy traces to another machine.&lt;/p&gt;

&lt;p&gt;To be honest, most the time I’m just using the latest trace.
However, one thing I’ve sometimes found useful is what I would call the “parallel debugging” technique.
Basically, I’m recording one trace for a testcase that exhibits the bug and another one for a very similar testcase (e.g. with one CSS property difference) that behaves correctly.
Then I replay the two traces side by side, comparing them to understand where the issue comes from and what can be done to fix it.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://github.com/rr-debugger/rr/wiki/Usage&quot;&gt;usage documentation&lt;/a&gt; also provides further tips, but this should be enough to get you started with time travel debugging in WebKit!&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:2&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RelWithDebInfo&lt;/code&gt; build type (which yields an optimized release build with debug symbols) might also be interesting to consider in some situations, e.g. debugging bugs that reproduce in release builds but not in debug builds. &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Using an installation directory might not be necessary, but without that, I had trouble making the whole thing work properly (wrong libraries loaded or libraries not found). &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt; &lt;a href=&quot;#fnref:1:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt; &lt;a href=&quot;#fnref:1:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;sup&gt;3&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:3&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;In my case, I chose the easiest path to disable some features, namely &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-DUSE_JPEGXL=OFF&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-DUSE_LIBBACKTRACE=OFF&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-DUSE_GSTREAMER_TRANSCODER=OFF&lt;/code&gt;. &lt;a href=&quot;#fnref:3&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:4&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Incidentally, you are likely to get an error saying that &lt;a href=&quot;https://docs.kernel.org/admin-guide/sysctl/kernel.html#perf-event-paranoid&quot;&gt;perf_event_paranoid&lt;/a&gt; is required to be at most 1, which you can force using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo sysctl kernel.perf_event_paranoid=1&lt;/code&gt;. &lt;a href=&quot;#fnref:4&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:5&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The equivalent example would probably have been to watch for the previous style change with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;watch -l m_style&lt;/code&gt;, but this was exceeding my hardware watchpoint limit, so I narrowed it down to a smaller observation scope. &lt;a href=&quot;#fnref:5&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Infinite version of the Set card game</title>
   <link href="https://frederic-wang.fr//2023/06/14/infite-version-of-the-set-card-game/"/>
   <updated>2023-06-14T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2023/06/14/infite-version-of-the-set-card-game</id>
   <content type="html">
&lt;p&gt;&lt;em&gt;edit 2023/06/17: I elaborated a bit more in the conclusion about the open problem of finding a minimal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-set-game&quot;&gt;The &lt;em&gt;Set&lt;/em&gt; Game&lt;/h2&gt;

&lt;p&gt;I visited A Coruña last week for the &lt;a href=&quot;https://webengineshackfest.org&quot;&gt;Web Engines Hackfest&lt;/a&gt; and to participate to internal events with my fellow Igalians. One of our tradition being to play board games, my colleague &lt;a href=&quot;https://www.igalia.com/team/idimitriou&quot;&gt;Ioanna&lt;/a&gt; presented a &lt;a href=&quot;https://en.wikipedia.org/wiki/Set_(card_game)&quot;&gt;card game called &lt;em&gt;Set&lt;/em&gt;&lt;/a&gt;. To be honest I was not very good at it, but it made me think of a potential generalization for infinite sets that is worth a blog post…&lt;/p&gt;

&lt;p&gt;Basically, we have a deck of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda^\mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards with &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu = 4&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; features (number of shapes, shape, shading and color), each of them taking &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda = 3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; possible values (e.g. red, green or purple for the color). Given &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards on the table, players must extract &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards forming what is called a &lt;em&gt;Set&lt;/em&gt;, which is defined as follows: for each of the &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; features, either the cards use the same value or they use pairwise distinct values.&lt;/p&gt;

&lt;p&gt;Formally, this can be generalized for any cardinal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; as follows:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A card is a function from &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (the features) to &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (the values).&lt;/li&gt;
  &lt;li&gt;A set of cards &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a &lt;em&gt;Set&lt;/em&gt; iff for any feature &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha &amp;lt; \mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the mapping
    &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;→&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\Phi_\alpha^S : S \rightarrow \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
    &lt;p&gt;that maps a card &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to the value &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is either constant or one-to-one.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Given a value &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda \leq \kappa \leq \lambda^\mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, can we always extract a &lt;em&gt;Set&lt;/em&gt; when &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards are put on the table? Or said otherwise, is there a set of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards from which we cannot extract any &lt;em&gt;Set&lt;/em&gt;?&lt;/p&gt;

&lt;h2 id=&quot;trivial-cases-λ2lambda-leq-2-or-μ1mu-leq-1&quot;&gt;Trivial cases (&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda \leq 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu \leq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;)&lt;/h2&gt;

&lt;p&gt;Given &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa \geq \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards, we can always extract a &lt;em&gt;Set&lt;/em&gt; &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in the following trivial cases:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then the deck contains only one card &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c = \emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda \geq 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such a set of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards does not exist. Otherwise we can just take &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S = \emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S ={\{c\}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;: these are &lt;em&gt;Sets&lt;/em&gt; since the definition is trivial for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/li&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then the deck is empty. We take &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S = \emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and for any &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha &amp;lt; \mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;∅&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\Phi_\alpha^\emptyset = \emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is both constant and one-to-one.&lt;/li&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu = 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, a card &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is fully determined by its value &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c(0)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, so distinct cards give distinct values. So we can pick any &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of size &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;: it is a &lt;em&gt;Set&lt;/em&gt; since &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\Phi_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is one-to-one.&lt;/li&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda = 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then we can pick any singleton &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;: it is a &lt;em&gt;Set&lt;/em&gt; since for any feature &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha &amp;lt; \mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the mapping &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\Phi_\alpha^S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is both constant and one-to-one.&lt;/li&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda = 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then we can pick any pair of cards &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;: it is a &lt;em&gt;Set&lt;/em&gt; since for any feature &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha &amp;lt; \mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the mapping &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\Phi_\alpha^S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is either constant or one-to-one (depending on whether the two cards display the same value or not).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉🏼 For the rest of this blog post, I’ll assume &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu \geq 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda \geq 3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;h2 id=&quot;not-enough-cards-on-the-table-κμkappa-leq-mu&quot;&gt;Not enough cards on the table (&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa \leq \mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;)&lt;/h2&gt;

&lt;p&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu \geq \kappa \geq \lambda \geq 3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then we consider cards &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for each &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha &amp;lt; \kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; defined for each &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta &amp;lt; \mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; as &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_\alpha{(\beta)} = \delta_{\alpha, \beta} &lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (using &lt;a href=&quot;https://en.wikipedia.org/wiki/Kronecker_delta&quot;&gt;Kronecker delta&lt;/a&gt;). If we extract a subset &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; from these cards and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha_1, \alpha_2, \alpha_3 &amp;lt; \kappa \leq \mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are indices for elements of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\Phi_{\alpha_1}^S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; respectively evaluates to 1, 0 and 0 for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha_1, \alpha_2, \alpha_3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not a &lt;em&gt;Set&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;👉🏼 For the rest of this blog post, we’ll assume &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu &amp;lt; \kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and will even focus on the minimal case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa = \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;h2 id=&quot;finite-number-of-values-λltℵ0lambda-lt-aleph_0&quot;&gt;Finite number of values (&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda &amp;lt; \aleph_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;)&lt;/h2&gt;

&lt;p&gt;Let’s consider a finite number of values &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda \geq 3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and define the card &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for each &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha &amp;lt; \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; as follows: &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_\alpha(\beta) = \delta_{\alpha, 0}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (again Kronecker delta) and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_\alpha(\beta) = \alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;0 &amp;lt; \beta &amp;lt; \mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Since &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu \geq 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the latter case shows that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S = \{ c_\alpha : \alpha &amp;lt; \lambda \}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; contains exactly &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards. Since &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa = \lambda &amp;lt; \aleph_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the only way to extract a subset of size &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; would be to take all the cards. But they don’t form a &lt;em&gt;Set&lt;/em&gt; since by construction &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{\Phi_0{(c_0)}} = 1 \neq 0 = {\Phi_0{(c_1)}} = {\Phi_0{(c_2)}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;👉🏼 For the rest of the blog post, I’ll assume &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is infinite.&lt;/p&gt;

&lt;h2 id=&quot;singular-number-of-values-cfλltλmicflambda-lt-lambda&quot;&gt;Singular number of values (&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;cf&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mi{cf}(\lambda) &amp;lt; \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;)&lt;/h2&gt;

&lt;p&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a singular cardinal, then we consider a cofinal sequence &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ν&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{\{ \alpha_{\gamma}, \gamma &amp;lt; \nu \}} \subseteq \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of length &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ν&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\nu &amp;lt; \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and define the card &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha &amp;lt; \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; as follows:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;For &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we consider the smallest ordinal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ν&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\gamma &amp;lt; \nu \leq \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha &amp;lt; \alpha_\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and define &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_\alpha{(0)} = \gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/li&gt;
  &lt;li&gt;For any &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;1 \leq \beta &amp;lt; \mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{c_\alpha{(\beta)}} = \alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu \geq 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the latter case shows that these are &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; distinct cards. Consider &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S \subseteq {\{c_\alpha, \alpha &amp;lt; \lambda \}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\Phi_0^S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; evaluates to a constant value &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ν&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\gamma &amp;lt; \nu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S = {\left(\Phi_0^S\right)}^{-1}(\{\gamma\})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has size at most &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{|\alpha_\gamma|} &amp;lt; \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If instead &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\Phi_0^S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is one-to-one then it takes at most &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ν&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\nu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; distinct values so again &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;ν&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{|S|} \leq \nu &amp;lt; \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not a &lt;em&gt;Set&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;👉🏼 For the rest of the blog post, I’ll assume &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an infinite regular cardinal.&lt;/p&gt;

&lt;h2 id=&quot;finite-number-of-features-μltℵ0mu-lt-aleph_0&quot;&gt;Finite number of features (&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu &amp;lt; \aleph_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;)&lt;/h2&gt;

&lt;p&gt;In this section, we assume that the number of features &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is finite. Let’s consider &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and extract a &lt;em&gt;Set&lt;/em&gt; &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by induction as follows:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_0 = \{ c_\alpha : \alpha &amp;lt; \lambda \}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
  &lt;/li&gt;
  &lt;li&gt;For any &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta &amp;lt; \mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we construct &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\beta+1} \subseteq S_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of cardinality &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We note that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is regular and
    &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;munder&gt;&lt;mo&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;∊&lt;/mo&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/msubsup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;
S_\beta = {\bigcup_{\alpha \in \Phi_\beta^{S_\beta}{(S_\beta)}}
         {\left(\Phi_\beta^{S_\beta}\right)}^{-1}{(\{\alpha\})}
              }
&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
    &lt;p&gt;so there are only two possible cases:&lt;/p&gt;
    &lt;ul&gt;
      &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/msubsup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\Phi_\beta^{S_\beta}{(S_\beta)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is of cardinality &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then pick &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; elements from &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; with pairwise distinct image by &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\Phi_\beta^{S_\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/li&gt;
      &lt;li&gt;Otherwise, if there is &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha &amp;lt; \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{\left(\Phi_\beta^{S_\beta}\right)}^{-1}{(\{\alpha\})}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is of cardinality &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, then let it be our &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\beta+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S = S_{\mu}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then by construction, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is of size &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and for any &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta &amp;lt; \mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S \subseteq S_{\beta+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which means that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Φ&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/msubsup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\Phi_\beta^S =
 {
 {(\Phi_\beta^{S_\beta})}_{| S}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is either constant or one-to-one.&lt;/p&gt;

&lt;p&gt;Incidentally, although I said I would focus on the case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa = \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the result of this session shows that we can extract a &lt;em&gt;Set&lt;/em&gt; if more than &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards are put on the table!&lt;/p&gt;

&lt;h2 id=&quot;summary-and-open-questions&quot;&gt;Summary and open questions&lt;/h2&gt;

&lt;p&gt;Above are the results I found from a preliminary investigation, which can be summarized as follows:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda \leq 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu \leq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then we can always find a &lt;em&gt;Set&lt;/em&gt; from &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa \geq \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards.&lt;/li&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;3 \leq \lambda \leq \mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then for any &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda \leq \kappa \leq \mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; there is a set of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards from which we cannot extract any &lt;em&gt;Set&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2 \leq \mu &amp;lt; \lambda &amp;lt; \aleph_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; there is a set of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards from which we cannot extract any &lt;em&gt;Set&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2 \leq \mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is singular then there is a set of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards from which we cannot extract any &lt;em&gt;Set&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;cf&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2 \leq \mu &amp;lt; \aleph_0 \leq {\mi{cf}(\lambda)} = \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, then we can always find a &lt;em&gt;Set&lt;/em&gt; from &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa \geq \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note that for the standard game &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;3 = \lambda &amp;lt; \mu = 4&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the only of the results above that applies is (2). Indeed, having only three or four cards on the table is generally not enough to extract a &lt;em&gt;Set&lt;/em&gt;!&lt;/p&gt;

&lt;p&gt;So far, I was not able to find an answer for the case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;cf&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\aleph_0 \leq \mu &amp;lt; {\mi{cf}(\lambda)} = \lambda \leq \kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. It looks like the inductive construction from the previous paragraph could work, but it’s not clear what guarantees that taking intersection at limit step would preserve size &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (an idea would be to use closed unbounded &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; instead but I didn’t find a satisfying proof). I also failed to build a counter-example set of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards without any &lt;em&gt;Set&lt;/em&gt; subset, despite several attempts.&lt;/p&gt;

&lt;p&gt;More generally, an open problem is to determine the minimal number of cards &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (with &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda \leq \kappa \leq \lambda^\mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) to put on the table to ensure players can always extract a &lt;em&gt;Set&lt;/em&gt; subset… or even if such a number actually exists! If it does, then in cases (2) (3) (4) we only know &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa &amp;gt; \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. In cases (1) and (5) the minimum value &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa = \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; works ; and when &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mu \geq 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda \geq 3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are finite, the maximum value &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa = \lambda^\mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; means taking the full deck, which works too (e.g. it always contains the &lt;em&gt;Set&lt;/em&gt; given by &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\forall \alpha &amp;lt; \lambda, \forall \beta &amp;lt; \mu, c_\alpha(\beta) = \alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;). Incidentally, note that the latter case is consistent with (2) and (3) since we have &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda^\mu &amp;gt; \mu, \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. But in general for infinite parameters putting &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\kappa = \lambda^\mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; cards on the table does not mean putting the full deck, so it’s less obvious whether we can extract a &lt;em&gt;Set&lt;/em&gt;…&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>MathML in Chrome 109</title>
   <link href="https://frederic-wang.fr//2023/01/31/mathml-in-chrome-109/"/>
   <updated>2023-01-31T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2023/01/31/mathml-in-chrome-109</id>
   <content type="html">
&lt;p&gt;&lt;em&gt;2023/06/15: Most of this article was written in January 2023, but I only finished and published it in June. Hopefully, information is still up-to-date 😃&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;tldr&quot;&gt;TL;DR&lt;/h2&gt;

&lt;p&gt;Igalia announced early this year that &lt;a href=&quot;https://www.igalia.com/2023/01/10/Igalia-Brings-MathML-Back-to-Chromium.html&quot;&gt;MathML is back to Chromium&lt;/a&gt;. This is an excellent news, for those like me who read and write mathematics on the web. Native support for such a universal human language sounds uncontroversial but it has taken a quarter century to get MathML implemented in all web engines… I invite you to listen to the &lt;a href=&quot;https://www.igalia.com/chats/mathml-release&quot;&gt;corresponding episode of Igalia Chats&lt;/a&gt; where you can find some rationale about why it took so long. In this blog post, I’ll try to elaborate a bit about technical challenges we were able to overcome, thanks to the introduction of &lt;a href=&quot;https://w3c.github.io/mathml-core/&quot;&gt;MathML Core&lt;/a&gt;. To be honest, things are still not perfect, but at least we can now rely on a clean foundation and continue to iterate improvements and fix bugs!&lt;/p&gt;

&lt;h2 id=&quot;timeline&quot;&gt;Timeline&lt;/h2&gt;

&lt;p&gt;As a reference, I’m providing below a list of important events (based on &lt;a href=&quot;https://people.igalia.com/fwang/mathml-in-browsers-web-engines-hackfest-2019/slides/history/index.html&quot;&gt;this timeline&lt;/a&gt; and &lt;a href=&quot;https://people.igalia.com/fwang/2022-06-igalia-week-shipping-mathml-in-chromium/#/7&quot;&gt;this slide&lt;/a&gt;) for native MathML support in browsers:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;1993-1995: Early HTML specifications contained a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;MATH&amp;gt;&lt;/code&gt; tag, which was experimented in &lt;a href=&quot;https://en.wikipedia.org/wiki/Dave_Raggett&quot;&gt;Dave Raggett&lt;/a&gt;’s &lt;a href=&quot;https://en.wikipedia.org/wiki/Arena_(web_browser)&quot;&gt;Arena browser&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;1998-2003: Initial specifications of MathML were published. Volunteer contributor &lt;a href=&quot;https://math.ua.edu/people/roger-b-sidje/&quot;&gt;Roger Sidje&lt;/a&gt; added support in &lt;a href=&quot;https://en.wikipedia.org/wiki/Gecko_(software)&quot;&gt;Gecko&lt;/a&gt; for XHTML documents and that was released in Mozilla 1.0.&lt;/li&gt;
  &lt;li&gt;2006-2013:
    &lt;ul&gt;
      &lt;li&gt;MathML was integrated in HTML5. &lt;a href=&quot;https://chavchanidze.com/&quot;&gt;George Chavchanidze&lt;/a&gt; created a &lt;a href=&quot;https://www.w3.org/TR/mathml-for-css/&quot;&gt;CSS-based implementation&lt;/a&gt; and shipped it in Opera. Support was implemented in all Open Source browsers thanks to the effort of volunteer contributors (including Roger Sidje, François Sausset, &lt;a href=&quot;https://twitter.com/alexmilowski&quot;&gt;Alex Miłowski&lt;/a&gt;, &lt;a href=&quot;https://mathscribe.com/about-us.html&quot;&gt;Dave Barton&lt;/a&gt; and myself). However, &lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=152430#c32&quot;&gt;MathML was removed from Chrome&lt;/a&gt; shortly after.&lt;/li&gt;
      &lt;li&gt;Apple engineers, notably Chris Fleizach and &lt;a href=&quot;https://www.linkedin.com/in/jamescraig&quot;&gt;James Craig&lt;/a&gt;, implemented &lt;a href=&quot;https://developer.apple.com/documentation/appkit/nsaccessibility&quot;&gt;NSAccessibility&lt;/a&gt; support for &lt;a href=&quot;https://en.wikipedia.org/wiki/WebKit&quot;&gt;WebKit&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/VoiceOver&quot;&gt;VoiceOver&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;2014-2016:
    &lt;ul&gt;
      &lt;li&gt;I published an &lt;a href=&quot;https://mathml.igalia.com/MathMLinHTML5/&quot;&gt;implementation note&lt;/a&gt; with extra rendering rules based on &lt;a href=&quot;https://en.wikipedia.org/wiki/Donald_Knuth&quot;&gt;Donald Knuth&lt;/a&gt;’s T&lt;sub&gt;E&lt;/sub&gt;XBook and Microsoft’s &lt;a href=&quot;https://learn.microsoft.com/en-us/typography/opentype/spec/math&quot;&gt;OpenType MATH table&lt;/a&gt;. I implemented these rules in Gecko and WebKit via a &lt;a href=&quot;https://www.ulule.com/mathematics-ebooks/&quot;&gt;crowdfunding project&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;During a few codecamps and hackfests, &lt;a href=&quot;https://www.igalia.com/team/jdiggs&quot;&gt;Joanmarie Diggs&lt;/a&gt; (Igalia), &lt;a href=&quot;https://www.igalia.com/team/asurkov&quot;&gt;Alexander Surkov&lt;/a&gt; (at that time at Mozilla) and I (who just joined the &lt;a href=&quot;https://www.researchgate.net/publication/262240672_AcceSciTech_A_Global_Approach_to_Make_Scientific_and_Technical_Literature_Accessible&quot;&gt;AcceSciTech project&lt;/a&gt;) worked on &lt;a href=&quot;https://en.wikipedia.org/wiki/Accessibility_Toolkit&quot;&gt;ATK&lt;/a&gt; and NSAccessibility support for Gecko, WebKit and &lt;a href=&quot;https://help.gnome.org/users/orca/&quot;&gt;Orca&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://twitter.com/jcsteh&quot;&gt;Jamie Teh&lt;/a&gt; and &lt;a href=&quot;https://www.linkedin.com/in/neil-soiffer-1807b76&quot;&gt;Neil Soiffer&lt;/a&gt; added MathML accessibility support for Gecko and Chromium by exposing the raw source code via a dedicated &lt;a href=&quot;https://en.wikipedia.org/wiki/Microsoft_Active_Accessibility&quot;&gt;MSAA&lt;/a&gt; API.&lt;/li&gt;
      &lt;li&gt;Igalia performed a &lt;a href=&quot;https://trac.webkit.org/wiki/MathML/Early_2016_Refactoring&quot;&gt;big refactoring of WebKit’s implementation&lt;/a&gt;. Initially done by &lt;a href=&quot;https://www.igalia.com/team/alex&quot;&gt;Alejandro García&lt;/a&gt; in 2015, I took over the work when I joined the company the following year.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;2019-2023:
    &lt;ul&gt;
      &lt;li&gt;Igalia launched the &lt;a href=&quot;https://mathml.igalia.com/&quot;&gt;“MathML in Chromium” project&lt;/a&gt; with the support of various sponsors. &lt;a href=&quot;https://www.igalia.com/team/rbuis&quot;&gt;Rob Buis&lt;/a&gt; and I worked on a brand new implementation in Chromium. &lt;a href=&quot;https://www.igalia.com/team/bkardell&quot;&gt;Brian Kardell&lt;/a&gt; also joined Igalia at the beginning of the project and has been instrumental in communication, advocacy and standardization efforts.&lt;/li&gt;
      &lt;li&gt;A new &lt;a href=&quot;https://w3c.github.io/mathml-core/&quot;&gt;MathML Core&lt;/a&gt; specification became the reference for browser implementations and was shipped in Chromium 109.&lt;/li&gt;
      &lt;li&gt;Alexander Surkov joined Igalia and helped with the &lt;a href=&quot;https://w3c.github.io/mathml-aam/&quot;&gt;MathML AAM&lt;/a&gt; specification, which we used to implement ATK and NSAccessibility support in Chromium.&lt;/li&gt;
      &lt;li&gt;I’ve regularly presented our results in conferences. For completeness, here are the talks I gave:
        &lt;ul&gt;
          &lt;li&gt;November 2022: &lt;a href=&quot;https://people.igalia.com/fwang/blink-on-17/&quot;&gt;Shipping MathML in Chrome 109&lt;/a&gt; at BlinkOn 17 - &lt;a href=&quot;https://www.youtube.com/watch?v=s3i02Yh3F9s&quot;&gt;video&lt;/a&gt;.&lt;/li&gt;
          &lt;li&gt;June 2022: &lt;a href=&quot;https://people.igalia.com/fwang/2022-06-igalia-week-shipping-mathml-in-chromium&quot;&gt;Shipping MathML in Chrome&lt;/a&gt; at the Web Engines Hackfest.&lt;/li&gt;
          &lt;li&gt;May 2022: &lt;a href=&quot;https://people.igalia.com/fwang/blink-on-16/&quot;&gt;Remainder estimate for MathML integration&lt;/a&gt; - &lt;a href=&quot;https://www.youtube.com/watch?v=n9lX5RLWwGs&quot;&gt;video&lt;/a&gt;.&lt;/li&gt;
          &lt;li&gt;November 2021: &lt;a href=&quot;https://people.igalia.com/fwang/blink-on-15/&quot;&gt;MathML, onde estamos?&lt;/a&gt; - &lt;a href=&quot;https://www.youtube.com/watch?v=H-7kG2lEKQ8&quot;&gt;video&lt;/a&gt;.&lt;/li&gt;
          &lt;li&gt;November 2019: &lt;a href=&quot;https://people.igalia.com/fwang/blink-on-11/slides&quot;&gt;MathML Core&lt;/a&gt; at BlinkOn 11.&lt;/li&gt;
          &lt;li&gt;October 2019: &lt;a href=&quot;https://people.igalia.com/fwang/mathml-in-browsers-web-engines-hackfest-2019/slides&quot;&gt;MathML in Browsers&lt;/a&gt; at the Web Engines Hackfest - &lt;a href=&quot;https://youtu.be/Q8Z1D2i61j8?list=PL4sEzdAGvRgDCN6qACHWs04mQQTWBkdGq&quot;&gt;video&lt;/a&gt;.&lt;/li&gt;
          &lt;li&gt;April 2019: &lt;a href=&quot;https://people.igalia.com/fwang/blink-on-10/slides&quot;&gt;MathML in LayoutNG&lt;/a&gt; at BlinkOn 10.&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;a-simple-fraction&quot;&gt;A simple fraction&lt;/h2&gt;

&lt;p&gt;One of the first thing you can notice is that a significant portion of the work was done by volunteer contributors at the time when the set of requirements to ship a feature or integrate it in the specification was very small. Let’s consider some basic MathML formula to illustrate that:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;math style=&quot;font: 32pt STIX Two Math;&quot;&amp;gt;
  &amp;lt;mfrac&amp;gt;
    &amp;lt;mspace width=&quot;2em&quot; height=&quot;1em&quot; depth=&quot;.5em&quot; style=&quot;background: red&quot;/&amp;gt;
    &amp;lt;mspace width=&quot;2em&quot; height=&quot;.5em&quot; depth=&quot;1em&quot; style=&quot;background: blue&quot;/&amp;gt;
  &amp;lt;/mfrac&amp;gt;
&amp;lt;/math&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;math&amp;gt;&lt;/code&gt; element is the root container for a new MathML formula. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mfrac&amp;gt;&lt;/code&gt; element describes a fraction with two &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mspace/&amp;gt;&lt;/code&gt; children corresponding respectively to its numerator and denominator. These &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mspace/&amp;gt;&lt;/code&gt; elements are boxes of specified width, ascent and descent, as described by their width, height and depth attributes (using &lt;a href=&quot;https://tex.stackexchange.com/questions/40977/confused-with-tex-terminology-height-depth-width&quot;&gt;T&lt;sub&gt;E&lt;/sub&gt;X terminology&lt;/a&gt;). Finally, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;style&lt;/code&gt; attribute attaches inline style to MathML elements.&lt;/p&gt;

&lt;p&gt;MathML 3 describes &lt;a href=&quot;https://www.w3.org/TR/MathML3/chapter3.html#presm.mspace&quot;&gt;how to interpret the attributes&lt;/a&gt; of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mspace&amp;gt;&lt;/code&gt; element. In general, it does not really define interaction with other web technologies and the behavior of the &lt;a href=&quot;https://www.w3.org/TR/MathML3/chapter2.html#fund.globatt&quot;&gt;style attribute “is not specified”&lt;/a&gt;. However, browser implementers can safely assume it has the same syntax and semantic as HTML and that’s basically &lt;a href=&quot;https://w3c.github.io/mathml-core/#attributes-common-to-html-and-mathml-elements&quot;&gt;what MathML Core says&lt;/a&gt;. So we know the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;math&amp;gt;&lt;/code&gt; element uses the font family &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;STIX Two Math&lt;/code&gt; and font size of 32pt, while the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mspace&amp;gt;&lt;/code&gt; elements have red and blue background.&lt;/p&gt;

&lt;p&gt;But how should we layout the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mfrac&amp;gt;&lt;/code&gt; element?&lt;/p&gt;

&lt;h2 id=&quot;tex-based-layout&quot;&gt;T&lt;sub&gt;E&lt;/sub&gt;X-based layout&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://www.w3.org/TR/MathML3/chapter3.html#presm.mfrac&quot;&gt;MathML 3 does not really say much more&lt;/a&gt; than the semantic “used for fractions” and the syntax &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mfrac&amp;gt; numerator denominator &amp;lt;/mfrac&amp;gt;&lt;/code&gt;. For the fraction bar, “the exact thickness of these is left up to the rendering agent”. MathML Core has a &lt;a href=&quot;https://w3c.github.io/mathml-core/#dfn-mfrac&quot;&gt;more detailed description&lt;/a&gt; involving vertical position and thickness of the fraction bar, minimal gaps between numerator/denominator and fraction bar as well as minimal shifts of the numerator/denominator’s baseline with respect to the baseline, horizontal centering of the numerator/denominator and more.&lt;/p&gt;

&lt;p&gt;One of the essential part is that many of these parameters are taken from STIX Two Math’s &lt;a href=&quot;https://learn.microsoft.com/en-us/typography/opentype/spec/math&quot;&gt;Open Type MATH table&lt;/a&gt; such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fractionNumeratorShiftUp&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fractionDenominatorGapMin&lt;/code&gt; etc and are generalizing the rules from the T&lt;sub&gt;E&lt;/sub&gt;XBook. You may notice parameters like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fractionNumeratorDisplayStyleShiftUp&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fractionDenomDisplayStyleGapMin&lt;/code&gt; etc which are variants based on the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/math-style&quot;&gt;math-style&lt;/a&gt; we will explain below.&lt;/p&gt;

&lt;p&gt;In any case, as long as they follow the layout algorithm described in MathML Core, all browsers should now render the fraction example the same, right?&lt;/p&gt;

&lt;h2 id=&quot;exposing-mathml-magic&quot;&gt;Exposing MathML magic&lt;/h2&gt;

&lt;p&gt;Assuming STIX Two Math is available or provided as a web font, Chrome and Firefox renders the previous example that way:&lt;/p&gt;

&lt;p&gt;&lt;img style=&quot;margin-left: auto; margin-right: auto; &quot; width=&quot;75&quot; height=&quot;129&quot; src=&quot;https://frederic-wang.fr/images/2023-mathml-core-mfrac-example.png&quot; alt=&quot;Screenshot of the example in Chromium 109&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can notice that the size of the numerator/denominator is different from what you get in Safari. Indeed, the web inspector shows that the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mspace&amp;gt;&lt;/code&gt; elements has a smaller &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;font-size&lt;/code&gt; than the one of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;math&amp;gt;&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mfrac&amp;gt;&lt;/code&gt; elements. This magic is suggested by the remaining part of the &lt;a href=&quot;https://www.w3.org/TR/MathML3/chapter3.html#presm.mfrac&quot;&gt;description of MathML 3&lt;/a&gt; we have ignored so far:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The mfrac element sets displaystyle to “false”, or if it was already false increments scriptlevel by 1, within numerator and denominator.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let’s try to explain this a bit more. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;displaystyle&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;scriptlevel&lt;/code&gt; properties are concepts from MathML 3 which are themselves generalizing T&lt;sub&gt;E&lt;/sub&gt;X. Imagine many nested superscripts: the font size is scaled down each time you enter a superscript, and becomes smaller and smaller. Here, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;scriptlevel&lt;/code&gt; corresponds to the nesting level and it affects the font size. Regarding  &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;displaystyle=false&lt;/code&gt;, this is typically used when you want to render the formula with more compact height e.g. for formulas rendered inline within a paragraph of text.&lt;/p&gt;

&lt;p&gt;So the MathML 3 spec essentially says that the subformulas numerator/denominator should be rendered with compact height, and if we are already in such a mode we should even scale down the font size within these subformulas. The only problem is that this behavior is not specified at all by CSS!&lt;/p&gt;

&lt;p&gt;In order to solve that, we introduced the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/math-style&quot;&gt;math-style&lt;/a&gt; and &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/math-depth&quot;&gt;math-depth&lt;/a&gt; CSS properties, explaining how they affect &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;font-size&lt;/code&gt; in the cascade. That way the behavior can be completely handled by the CSS engines. Then &lt;a href=&quot;https://w3c.github.io/mathml-core/#the-displaystyle-and-scriptlevel-attributes&quot;&gt;MathML Core&lt;/a&gt; describes how &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;displaystyle&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;scriptlevel&lt;/code&gt; attributes are treated as presentational hints together with appropriate rules in the &lt;a href=&quot;https://w3c.github.io/mathml-core/#user-agent-stylesheet&quot;&gt;User Agent stylesheet&lt;/a&gt;. At the end everything is well-specified and Safari’s behavior is &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=202303&quot;&gt;a bug&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;integration-with-the-web-platform&quot;&gt;Integration with the web platform&lt;/h2&gt;

&lt;p&gt;The previous paragraphs described how we integrated T&lt;sub&gt;E&lt;/sub&gt;X-based math layout inside the web platform. MathML 3 already started that by defined a SGML tree and HTML5 / MathML Core went further by defining the parsing rules, a &lt;a href=&quot;https://w3c.github.io/mathml-core/#dom-and-javascript&quot;&gt;WebIDL&lt;/a&gt; or &lt;a href=&quot;https://w3c.github.io/mathml-core/#html-and-svg&quot;&gt;integration with HTML and SVG&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The integration problem can also be seen on the other side: how do we interpret CSS features for math layout? For example what happens if one specifies a CSS &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;width&lt;/code&gt; on the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mfrac&amp;gt;&lt;/code&gt; element? Or a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;padding&lt;/code&gt;? What would be the CSS layout if there are less or more children than just the numerator/denominator? What happen if &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;float: left&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;position: absolute&lt;/code&gt; are specified on a child? Probably math authors don’t care too much but that’s still something that needs to be defined in the spec and implemented in a cross-compatible way.&lt;/p&gt;

&lt;p&gt;Answering these questions were also useful for many reasons. Just to list a few examples off the top of my head:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;In order to make things manageable, MathML Core focuses on a susbet of MathML 3 and some people are interested in writing polyfills for legacy or future features, which is something that can often be done by CSS.&lt;/li&gt;
  &lt;li&gt;Using a terminology that takes into account direction/writing-mode facilitates the implementation of right-to-left math and could allow vertical math in the future.&lt;/li&gt;
  &lt;li&gt;To avoid visual confusion between the fraction bar and another adjacent items (e.g. minus sign or another fraction’s bar), a default 1-pixel space is added around the element. This can be easily done by setting the padding in the &lt;a href=&quot;https://w3c.github.io/mathml-core/#user-agent-stylesheet&quot;&gt;User Agent stylesheet&lt;/a&gt;… as long as it’s supported!&lt;/li&gt;
  &lt;li&gt;Bypassing MathML layout in invalid subtrees (e.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mfrac&amp;gt;&lt;/code&gt; with three children) as was done in old implementations are making things harder for fuzzers and testcase reducers. Additionally these fuzzers often find issues happening with exotic CSS features, so better if the spec says how to handle them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;web-platform-tests&quot;&gt;Web Platform tests&lt;/h2&gt;

&lt;p&gt;We’ve seen some examples on how to improve the MathML specification. This leads to the topic of &lt;a href=&quot;https://web-platform-tests.org/&quot;&gt;Web Platform tests&lt;/a&gt;, which are very important to verify conformance with that specification and ensure browser interoperability. That’s a good tool and motivation for implementers and they may also prevent regressions since they are run regularly, at least each time a change is made in the browser repository.&lt;/p&gt;

&lt;p&gt;However, MathML 3 was using &lt;a href=&quot;https://www.w3.org/Math/testsuite/build/main/overview.html&quot;&gt;manual tests&lt;/a&gt; where one has to visually compare the rendering of the 1675 testcases in a browser against a sample rendering and decide whether it passes or not. That’s a quite tedious and not very robust way of testing!&lt;/p&gt;

&lt;p&gt;Fortunately, this has changed with MathML Core with &lt;a href=&quot;https://wpt.fyi/results/?label=master&amp;amp;label=experimental&amp;amp;aligned&amp;amp;view=subtest&amp;amp;q=math%20%20not%28path%3A%2Fjs%29%20not%28path%3A%2Fhtml%29&quot;&gt;around 3000 tests&lt;/a&gt; following the format of &lt;a href=&quot;https://web-platform-tests.org/&quot;&gt;Web Platform tests&lt;/a&gt;! Trying to &lt;a href=&quot;https://people.igalia.com/fwang/blink-on-17/#/19&quot;&gt;analyze that a bit&lt;/a&gt;, Chrome has an excellent pass rate except for things that need to be clarified in the spec. Firefox and Safari are also doing good job but failing on tests for new behavior or features that got clarified by MathML Core.&lt;/p&gt;

&lt;p&gt;A complementary metrics for interoperability is MDN’s &lt;a href=&quot;https://github.com/mdn/browser-compat-data&quot;&gt;browser-compat-data&lt;/a&gt;. You can find these compatibility data at the bottom of MDN pages, for example for the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/MathML#browser_compatibility&quot;&gt;MathML article&lt;/a&gt;. Again, a &lt;a href=&quot;https://people.igalia.com/fwang/blink-on-17/#/20&quot;&gt;quick analysis&lt;/a&gt; confirms that browsers are quite interoperable for MathML Core, possibly mixed with other web technologies, but not for new CSS features (implemented in Chromium) or legacy MathML features (remaining in Firefox and Safari).&lt;/p&gt;

&lt;h2 id=&quot;accessibility&quot;&gt;Accessibility&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Abraham_Nemeth&quot;&gt;Abraham Nemeth&lt;/a&gt; who developed Braille code for mathematical notations, presented his view on math accessibility in the book Braille into the next millenium (2000):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The Principle of Meaning Versus Notation: In my view, it is the transcriber’s function to supply only notation, not meaning in an accessible form (speech or braille). It is the reader’s function to extract the meaning from the notation the transcriber supplies. Consider the common notation (x,y). That notation can mean many things: the ordered pair whose first component is x and second component is y ; the point in the cartesian coordinate with abscissa x and ordinate y; the open interval on the real line with left endpoint x and right endpoint y; or the greatest common divisor of x and y. The transcriber’s function, however, is only to convey this five-symbol expression to the reader. It is the reader’s function to extract whatever meaning his experience and the context of the text permit.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;However, for people with different need, or for various uses cases, it is often important to provide more semantic. This is something various members from the MathML WG have worked on and many discussions are currently happening.&lt;/p&gt;

&lt;p&gt;In any case, for native MathML implementation in browsers we are limited to what was called “presentation MathML” in legacy specifications, which gives a very small amount of information: an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mfrac&amp;gt;&lt;/code&gt; can be fraction, binomial coefficient etc ; an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;msup&amp;gt;&lt;/code&gt; can be used to denote a power, a derivative, an index etc ; an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;mtable&amp;gt;&lt;/code&gt; can be used for matrices, to perform table layout etc&lt;/p&gt;

&lt;p&gt;As explained above, some effort was done to implement native accessibility support for MathML in WebKit/Gecko for various assistive technologies in Linux, macOS or Windows. For the present project, we didn’t try to do more than what currently exists. We only documented existing support in the &lt;a href=&quot;https://w3c.github.io/mathml-aam/&quot;&gt;MathML AAM&lt;/a&gt; specification and implemented it in Chromium. This is the bare minimum we can do to ensure the reader can follow Nemeth’s approach.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;As the main person who has led this effort, this is great personal achievement and I’d like to thank all the people who supported it, including my colleagues at Igalia, members of the MathML community, standardization groups, browser developers, web developers, sponsors and contributors to the &lt;a href=&quot;https://opencollective.com/mathml-core-support&quot;&gt;Open Collective&lt;/a&gt;. Finally we made it! 🎉&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Update on OpenType MATH fonts</title>
   <link href="https://frederic-wang.fr//2022/06/20/update-on-open-type-math-fonts/"/>
   <updated>2022-06-20T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2022/06/20/update-on-open-type-math-fonts</id>
   <content type="html">
&lt;p&gt;I mentioned in a &lt;a href=&quot;https://frederic-wang.fr/short-blog-post-from-madrid-s-hotel-room.html&quot;&gt;previous post&lt;/a&gt; that Igalia organized the Web Engines Hackfest 2022 last week. As usual, fonts were one of the topic discussed. Dominik Röttsches presented &lt;a href=&quot;https://youtu.be/Bl4lkam3Snw?t=2356&quot;&gt;COLRv1 color vector fonts in Chrome and OSS&lt;/a&gt; (&lt;a href=&quot;https://hackmd.io/L_EUmERuQfqlT_MyPPVZ-A?view#%E2%80%9CCOLRv1-in-Chromium-amp-OSS%E2%80%9D-Dominik-R%C3%B6ttsches-drott-&quot;&gt;transcript&lt;/a&gt;) and we also settled a breakout session on Tuesday morning. Because one issue raised was the availability of OpenType MATH fonts on operating systems, I believe it’s worth giving an update on the latest status…&lt;/p&gt;

&lt;p&gt;There are only a few fonts with an &lt;a href=&quot;https://docs.microsoft.com/en-us/typography/opentype/spec/math&quot;&gt;OpenType MATH table&lt;/a&gt;. Such fonts can be used for math layout e.g. modern TeX engines to render &lt;a href=&quot;https://en.wikipedia.org/wiki/LaTeX&quot;&gt;LaTeX&lt;/a&gt;, Microsoft Office to render &lt;a href=&quot;https://docs.microsoft.com/en-us/archive/blogs/murrays/mathml-and-ecma-math-omml&quot;&gt;OMML&lt;/a&gt; or Web engines to render &lt;a href=&quot;https://w3c.github.io/mathml-core/&quot;&gt;MathML&lt;/a&gt;. Three of such fonts are interesting to consider, so I’m providing a quick overview together with screenshots generated by &lt;a href=&quot;https://en.wikipedia.org/wiki/XeTeX&quot;&gt;XeTeX&lt;/a&gt; from the LaTeX formula &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$${\sqrt{\sum_{n=1}^\infty {\frac{10}{n^4}}}} = {\int_0^\infty \frac{2x dx}{e^x-1}} = \frac{\pi^2}{3} \in {\mathbb R}$$&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/typography/font-list/cambria-math&quot;&gt;Cambria Math&lt;/a&gt; is a proprietary font installed by default on Microsoft Windows. &lt;img src=&quot;https://frederic-wang.fr/images/2022-06-20-cambria-math.png&quot; alt=&quot;Screenshot of a math formula rendered with Cambria Math by XeLaTeX&quot; /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.stixfonts.org/&quot;&gt;STIX Two Math&lt;/a&gt; is a font &lt;a href=&quot;https://en.wikipedia.org/wiki/SIL_Open_Font_License&quot;&gt;under the OFL license&lt;/a&gt; with a large unicode coverage for scientific characters. &lt;img src=&quot;https://frederic-wang.fr/images/2022-06-20-stix-two-math.png&quot; alt=&quot;Screenshot of a math formula rendered with STIX Two Math by XeLaTeX&quot; /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.stixfonts.org/&quot;&gt;Latin Modern Math&lt;/a&gt; is a font &lt;a href=&quot;https://www.gust.org.pl/projects/e-foundry/licenses/GUST-FONT-LICENSE.txt/view&quot;&gt;under the GUST license&lt;/a&gt; with the &lt;a href=&quot;https://en.wikipedia.org/wiki/Computer_Modern&quot;&gt;Computer Modern&lt;/a&gt; style that TeX uses by default. &lt;img src=&quot;https://frederic-wang.fr/images/2022-06-20-latin-modern-math.png&quot; alt=&quot;Screenshot of a math formula rendered with Latin Modern Math by XeLaTeX&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Recently, Igalia has been in touch with &lt;a href=&quot;https://github.com/litherum&quot;&gt;Myles C. Maxfield&lt;/a&gt; who has helped with internal discussion at Apple regarding inclusion of STIX Two Math in the list of fonts on macOS. Last week he came back to us announcing it’s now the case on all the betas of &lt;a href=&quot;https://en.wikipedia.org/wiki/MacOS_Ventura&quot;&gt;macOS 13 Ventura&lt;/a&gt; 🎉 ! I just tested it this morning and indeed STIX Two Math is now showing up as expected in the &lt;a href=&quot;https://support.apple.com/guide/font-book/welcome/mac&quot;&gt;Font Book&lt;/a&gt;. Here is the rendering of the &lt;a href=&quot;https://people.igalia.com/fwang/2022-06-igalia-week-shipping-mathml-in-chromium/#/20&quot;&gt;last slide of my hackfest presentation&lt;/a&gt; in Safari 16.0:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://frederic-wang.fr/images/2022-06-20-stix-two-math-safari.png&quot; alt=&quot;Screenshot of a math formula rendered with STIX Two Math by Safari&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Obviously, this is a good news for Chromium and Firefox too. For the former, we are preparing our MathML intent-to-ship and having decent rendering on macOS by default is important. As for the latter, we could in the future finally get rid of &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1336058&quot;&gt;hardcoded tables to support the deprecated STIXGeneral set&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Another interesting platform to consider for Chromium is Android. Last week, there has been &lt;a href=&quot;https://github.com/googlefonts/noto-fonts/issues/330#issuecomment-1152883625&quot;&gt;new activity on the Noto fonts bug&lt;/a&gt; and answers seem more encouraging now… So let’s hope we can get a proper math font on Android soon!&lt;/p&gt;

&lt;p&gt;Finally, I’m not exactly sure about the situation on Linux and it may be different for the various distributions. STIX and Latin Modern should generally be available as system packages that can be easily installed. It would be nicer if they were pre-installed by default though…&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Short blog post from Madrid&apos;s hotel room</title>
   <link href="https://frederic-wang.fr//2022/06/17/short-blog-post-from-madrid-s-hotel-room/"/>
   <updated>2022-06-17T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2022/06/17/short-blog-post-from-madrid-s-hotel-room</id>
   <content type="html">
&lt;p&gt;This week, I finally went back to &lt;a href=&quot;https://en.wikipedia.org/wiki/A_Coru%C3%B1a&quot;&gt;A Coruña&lt;/a&gt; for the &lt;a href=&quot;https://webengineshackfest.org/2022/&quot;&gt;Web Engines Hackfest&lt;/a&gt; and internal company meetings. These were my first on-site events since the COVID-19 pandemic. After two years of non-super-exciting virtual conferences I was so glad to finally be able to meet with colleagues and other people from the Web.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.igalia.com/team/&quot;&gt;Igalia&lt;/a&gt; has grown considerably and I finally get to know many new hires in person. Obviously, some people were still not able to travel despite the effort we put to settle strong sanitary measures. Nevertheless, our infrastructure has also improved a lot and we were able to provide remote communication during these events, in order to give people a chance to attend and participate !&lt;/p&gt;

&lt;p&gt;Work on the &lt;a href=&quot;https://en.wikipedia.org/wiki/Madrid%E2%80%93Galicia_high-speed_rail_line&quot;&gt;Madrid–Galicia high-speed rail line&lt;/a&gt; finally completed last December, meaning one can now travel with fast trains between Paris - Barcelona - Madrid - A Coruña. This takes about one day and a half though and, because I’m voting for the &lt;a href=&quot;https://en.wikipedia.org/wiki/2022_French_legislative_election&quot;&gt;Legislative elections in France&lt;/a&gt;, I had to shorten a bit my stay and miss nice social activities 😥… That’s a pity, but I’m looking forward to participating more next time!&lt;/p&gt;

&lt;p&gt;Finally on the technical side, my main contribution was to &lt;a href=&quot;https://people.igalia.com/fwang/2022-06-igalia-week-shipping-mathml-in-chromium/&quot;&gt;present&lt;/a&gt; our upcoming plan to ship &lt;a href=&quot;https://mathml.igalia.com/&quot;&gt;MathML in Chromium&lt;/a&gt;. The summary is that we are happy with this first implementation and will send the intent-to-ship next week. There are minor issues to address, but the consensus from the conversations we had with other attendees (including folks from Google and Mozilla) is that they should not be a blocker and can be refined depending on the feedback from API owners. So let’s do it and see what happens…&lt;/p&gt;

&lt;p&gt;There is definitely a lot more to write and nice pictures to share, but it’s starting to be late here and I have a train back to Paris tomorrow. 😉&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Igalia&apos;s contribution to the Mozilla project and Open Prioritization</title>
   <link href="https://frederic-wang.fr//2020/07/13/igalia-contribution-to-mozilla-and-open-prioritization/"/>
   <updated>2020-07-13T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2020/07/13/igalia-contribution-to-mozilla-and-open-prioritization</id>
   <content type="html">
&lt;p&gt;As many web platform developer and Firefox users, I believe &lt;a href=&quot;https://www.mozilla.org/en-US/mission/&quot;&gt;Mozilla’s mission&lt;/a&gt; is instrumental for a better Internet. In a recent &lt;a href=&quot;https://www.igalia.com/chats/ecosystem-health&quot;&gt;Igalia’s chat about the Web Ecosystem Health&lt;/a&gt;, participants made the usual observation regarding this important role played by Mozilla on the one hand and the limited development resources and small Firefox’s usage share on the other hand. In this blog post, I’d like to explain an experimental idea we are launching at Igalia to try and make browser development better match the interest of the web developer and user community.&lt;/p&gt;

&lt;div&gt;
  &lt;a href=&quot;https://www.igalia.com/open-prioritization/&quot;&gt;
    &lt;img src=&quot;/images/open-prioritization.png&quot; style=&quot;margin-left: auto; margin-right: auto; max-width: 100%; height: auto;&quot; width=&quot;750&quot; height=&quot;255&quot; alt=&quot;Open Prioritization by Igalia. An experiment in crowd-funding prioritization.&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;h2 id=&quot;igalias-contribution-to-browser-repositories&quot;&gt;Igalia’s contribution to browser repositories&lt;/h2&gt;

&lt;p&gt;As mentioned in the past in this blog, Igalia has contributed to different part of Firefox such as multimedia (e.g. &amp;lt;video&amp;gt; support), layout (e.g. Stylo, WebRender, CSS, MathML), scripts (e.g. BigInt, WebAssembly) or accessibility (e.g. ARIA). But is it enough?&lt;/p&gt;

&lt;p&gt;Although commit count is an imperfect metric it is also one of the easiest to obtain. Let’s take a look at how Igalia’s commits repositories of the Chromium (chromium, v8), Mozilla (mozilla-central, servo, servo-web-render) and WebKit projects were distributed last year:&lt;/p&gt;

&lt;figure&gt;
  &lt;img style=&quot;margin-left: auto; margin-right: auto; max-width: 100%; height: auto;&quot; width=&quot;374&quot; height=&quot;305&quot; src=&quot;https://frederic-wang.fr/images/distribution-of-igalia-commits-2019.png&quot; alt=&quot;pie chart&quot; /&gt;
  &lt;figcaption&gt;&lt;small&gt;Diagram showing, the distribution of Igalia&apos;s contributions to browser repositories in 2019 (~5200 commits). Chromium (~73%), Mozilla (~4%) and WebKit (~23%).&lt;/small&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;As you can see, in absolute value Igalia contributed roughly 3/4 to Chromium, 1/4 to WebKit, with a small remaining amount to Mozilla. This is not surprising since Igalia is a consulting company and our work depends on the importance of browsers in the market where Chromium dominates and WebKit is also quite good for iOS devices and embedded systems.&lt;/p&gt;

&lt;p&gt;This suggests a different way to measure our contribution by considering, for each project, the percentage relative to the total amount of commits:&lt;/p&gt;

&lt;figure&gt;
  &lt;img style=&quot;margin-left: auto; margin-right: auto; max-width: 100%; height: auto&quot; width=&quot;436&quot; height=&quot;339&quot; src=&quot;https://frederic-wang.fr/images/igalia-commit-percentage-per-project-2019.png&quot; alt=&quot;Bar graph&quot; /&gt;
  &lt;figcaption&gt;&lt;small&gt;Diagram showing, for each project, the percentage of Igalia&apos;s commits in 2019 relative to the total amount of the project. From left to right:
  Chromium (~3.96%), Mozilla (~0.43%) and WebKit (~10.92%).&lt;/small&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;In the WebKit project, where ~80% of the contributions were made by Apple, Igalia was second with ~10% of the total. In the Chromium project, the huge Google team made more than 90% of the contributions and many more companies are involved, but Igalia was second with about 4% of the total. In the Mozilla project, Mozilla is also doing ~90% of the contributions but Igalia only had ~0.5% of the total. Interestingly, the second contributing organization was… the community of unindentified gmail.com addresses! Of course, this shows the importance of volunteers in the Mozilla project where a great effort is done to encourage participation.&lt;/p&gt;

&lt;h2 id=&quot;open-prioritization&quot;&gt;Open Prioritization&lt;/h2&gt;

&lt;p&gt;From the commit count, it’s clear Igalia is not contributing as much to the Mozilla project as to Chromium or WebKit projects. But this is expected and is just reflecting the priority set by large companies. The solid base of Firefox users as well as the large amount of volunteer contributors show that the Mozilla project is nevertheless still attractive for many people. Could we turn this into browser development that is not funded by advertising or selling devices?&lt;/p&gt;

&lt;p&gt;Another related question is whether the internet can really be shaped by the global community as defended by the Mozilla’s mission? Is the web doomed to be controlled by big corporations doing technology’s “evangelism” or lobbying at standardization committees? Are there prioritization issues that can be addressed by moving to a more collective decision process?&lt;/p&gt;

&lt;p&gt;At &lt;a href=&quot;https://www.igalia.com/about/&quot;&gt;Igalia&lt;/a&gt;, we internally try and follow &lt;a href=&quot;https://wingolog.org/tags/cooperatives&quot;&gt;a more democratic organization&lt;/a&gt; and, at our level, intend to make the world a better place. Today, we are launching a new &lt;a href=&quot;https://www.igalia.com/open-prioritization/&quot;&gt;Open Prioritization&lt;/a&gt; experiment to verify whether crowdfunding could be a way to influence how browser development is prioritized. Below is a short (5 min) &lt;a href=&quot;https://www.youtube.com/embed/xCRxNVbUqhk&quot;&gt;introductory video&lt;/a&gt;:&lt;/p&gt;

&lt;iframe width=&quot;850&quot; height=&quot;508&quot; src=&quot;https://www.youtube.com/embed/xCRxNVbUqhk&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;I strongly recommend you to take a look at the proposed projects and &lt;a href=&quot;https://www.igalia.com/open-prioritization/#faq&quot;&gt;read the FAQ&lt;/a&gt; to understand how this is going to work. But remember &lt;em&gt;this is an experiment&lt;/em&gt; so we are starting with a few ideas that we selected and tasks that are relatively small. We know there are tons of user reports in bug trackers and suggestions of standards, but we are not going to solve everything in one day !&lt;/p&gt;

&lt;p&gt;If the process is successful, we can consider generalizing this approach, but we need to test it first, check what works and what doesn’t, consider whether it is worth pursuing, analyze how it can be improved, etc&lt;/p&gt;

&lt;h2 id=&quot;two-crowdfunding-tasks-for-firefox&quot;&gt;Two Crowdfunding Tasks for Firefox&lt;/h2&gt;

&lt;figure&gt;
  &lt;img style=&quot;margin-left: auto; margin-right: auto; max-width: 100%; height: auto&quot; src=&quot;https://upload.wikimedia.org/wikipedia/commons/0/06/CIELAB_color_space_top_view.png&quot; alt=&quot;CIELAB color space*&quot; /&gt;
  &lt;figcaption&gt;&lt;small&gt;Representation of the CIELAB color space (top view)
  &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:CIELAB_color_space_top_view.png&quot;&gt;by Holger Everding, under CC-SA 4.0&lt;/a&gt;.&lt;/small&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;As explained in the previous paragraph, we are starting with small tasks. For Firefox, we selected the following ones:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;CSS &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lab()&lt;/code&gt; colors. This is about giving web developers a way to express colors using the &lt;a href=&quot;https://en.wikipedia.org/wiki/CIELAB_color_space&quot;&gt;CIELAB color space&lt;/a&gt; which approximates better the human perception. My colleague Brian Kardell wrote a &lt;a href=&quot;https://bkardell.com/blog/Unlocking-Colors.html&quot;&gt;blog with more details&lt;/a&gt;. Some investigations have been made by &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=205675&quot;&gt;Apple&lt;/a&gt; and &lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=1026287&quot;&gt;Google&lt;/a&gt;. Let’s see what we can do for Firefox !&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;SVG path &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;d&lt;/code&gt; attribute. This is about expressing &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1571119&quot;&gt;SVG path using the corresponding CSS syntax&lt;/a&gt; for example &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;path style=&quot;d: path(&apos;M0,0 L10,10,...&apos;)&quot;&amp;gt;&lt;/code&gt;. This will likely involve a refactoring to use the same parser for both SVG and CSS paths. It’s a small feature but part of a more general &lt;a href=&quot;https://www.youtube.com/watch?v=1d--S_wgAJA&quot;&gt;convergence effort between SVG and CSS&lt;/a&gt; that Igalia has been involved in.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Is this crowd-funded experiment going to work? Can this approach solve the prioritization problems or at least help a bit? How can we improve that idea in the future?…&lt;/p&gt;

&lt;p&gt;There are many open questions but we will only be able to answer them if we have enough people participating. I’ll personally pledge for the two Firefox projects and I invite you to at least take a look and decide whether there is something there that is interesting for you. Let’s try and see!&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Contributions to Web Platform Interoperability (First Half of 2020)</title>
   <link href="https://frederic-wang.fr//2020/07/06/amp-contributions-to-web-platform-interoperability-H1/"/>
   <updated>2020-07-06T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2020/07/06/amp-contributions-to-web-platform-interoperability-H1</id>
   <content type="html">
&lt;p&gt;&lt;strong&gt;Note: This blog post was co-authored by AMP and Igalia teams.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Web developers continue to face challenges with web interoperability issues and a lack of implementation of important features. As an open-source project, &lt;a href=&quot;https://www.ampproject.org/&quot;&gt;the AMP Project&lt;/a&gt;  can help represent developers and aid in addressing these challenges.  In the last few years, we have partnered with &lt;a href=&quot;https://www.igalia.com/&quot;&gt;Igalia&lt;/a&gt; to collaborate on helping advance predictability and interoperability among browsers.  Standards and the degree of interoperability that we want can be a long process.  New features frequently require experimentation to get things rolling, course corrections along the way and then, ultimately as more implementations and users begin exploring the space, doing really interesting things and finding issues at the edges we continue to advance interoperability.&lt;/p&gt;

&lt;p&gt;Both AMP and Igalia are very pleased to have been able to play important roles at all stages of this process and help drive things forward.  During the first half of this year, here’s what we’ve been up to…&lt;/p&gt;

&lt;h2 id=&quot;default-aspect-ratio-of-images&quot;&gt;Default Aspect Ratio of Images&lt;/h2&gt;

&lt;p&gt;In our&lt;a href=&quot;https://blog.amp.dev/2019/12/16/our-2019-contributions-to-web-platform-interoperability/&quot;&gt; previous blog post&lt;/a&gt; we mentioned our experiment to implement the&lt;a href=&quot;https://github.com/WICG/intrinsicsize-attribute&quot;&gt; intrinsic size attribute&lt;/a&gt; in WebKit. Although this was a useful prototype for standardization discussions, at the end there was a consensus to switch to an alternative approach. This new approach addresses the same use case without the need of a new attribute. The idea is pretty simple: use specified width and height attributes of an image to determine the default aspect ratio. If additional CSS is used e.g. “width: 100%; height: auto;”, browsers can then compute the final size of the image, without waiting for it to be downloaded. This avoids any relayout that could cause bad user experience. This was implemented in&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1547231&quot;&gt; Firefox&lt;/a&gt; and&lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=979891&quot;&gt; Chromium&lt;/a&gt; and we did the&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=201641&quot;&gt; same in WebKit&lt;/a&gt;. We implemented this under a flag which is currently on by default in Safari Tech Preview and the latest iOS 14 beta.&lt;/p&gt;

&lt;h2 id=&quot;scrolling&quot;&gt;Scrolling&lt;/h2&gt;

&lt;p&gt;We continued our efforts to enhance scroll features. In WebKit, we began with&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=188043&quot;&gt; scroll-behavior&lt;/a&gt;, which provides the ability to do smooth scrolling. Based on our previous patch, it has landed and is guarded by an experimental flag “CSSOM View Smooth Scrolling” which is disabled by default. Smooth scrolling currently has a generic platform-independent implementation controlled by a timer in the web process, and we continue working on a more efficient alternative relying on the native iOS UI interfaces to perform scrolling.&lt;/p&gt;

&lt;p&gt;We have also started to work on overscroll and overscroll customization, especially for the scrollend event. The scrollend event, as you might expect, is fired when the scroll is finished, but it lacked interoperability and required some additional tests. We added web platform tests for&lt;a href=&quot;https://github.com/web-platform-tests/wpt/pull/22768&quot;&gt; programmatic scroll&lt;/a&gt; and&lt;a href=&quot;https://github.com/web-platform-tests/wpt/pull/23753&quot;&gt; user scroll&lt;/a&gt; including scrollbar, dragging selection and keyboard scrolling. With these in place, we are now working on a patch in WebKit which supports scrollend for programmatic scroll and Mac user scroll.&lt;/p&gt;

&lt;p&gt;On the Chrome side, we continue working on the standard scroll values in non-default writing modes. This is an interesting set of challenges surrounding the scroll API and how it works with writing modes which was previously not entirely interoperable or well defined.  Gaining interoperability requires changes, and we have to be sure that those changes are safe.  Our current changes are implemented and guarded by a runtime flag “CSSOM View Scroll Coordinates”. With the help of Google engineers, we are trying to collect user data to decide whether it is safe to enable it by default.&lt;/p&gt;

&lt;p&gt;Another minor interoperability fix that we were involved in was to ensure that the scrolling attribute of frames recognizes values “noscroll” or “off”. That was already the case in Firefox and this is now the case in&lt;a href=&quot;https://chromium-review.googlesource.com/c/chromium/src/+/2083595&quot;&gt; Chromium&lt;/a&gt; and&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=208570&quot;&gt; WebKit&lt;/a&gt; too.&lt;/p&gt;

&lt;h2 id=&quot;intersection-and-resize-observers&quot;&gt;Intersection and Resize Observers&lt;/h2&gt;

&lt;p&gt;As mentioned in our&lt;a href=&quot;https://blog.amp.dev/2019/12/16/our-2019-contributions-to-web-platform-interoperability/&quot;&gt; previous blog post&lt;/a&gt;, we drove the implementation of&lt;a href=&quot;https://webkit.org/blog/8582/intersectionobserver-in-webkit/&quot;&gt; IntersectionObserver&lt;/a&gt; (enabled in iOS 12.2) and &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver&quot;&gt;ResizeObserver&lt;/a&gt; (enabled in iOS 14 beta) in WebKit. We have made a few enhancements to these useful developer APIs this year.&lt;/p&gt;

&lt;p&gt;Users reported difficulties with&lt;a href=&quot;https://github.com/w3c/IntersectionObserver/issues/372&quot;&gt; observe root of inner iframe&lt;/a&gt; and the specification was modified to accept an explicit document as a root parameter. This was&lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=1015183&quot;&gt; implemented in Chromium&lt;/a&gt; and we implemented the same change in&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=208047&quot;&gt; WebKit&lt;/a&gt; and&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1617154&quot;&gt; Firefox&lt;/a&gt;. It is currently available Safari Tech Preview, iOS 14 beta and Firefox 75.&lt;/p&gt;

&lt;p&gt;A bug was also reported with &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=209947&quot;&gt;ResizeObserver incorrectly computing size for non-default zoom levels&lt;/a&gt;, which was in particular causing a bug on twitter feeds. We landed a patch last April and the fix is available in the latest Safari Tech Preview and iOS 14 beta.&lt;/p&gt;

&lt;h2 id=&quot;resource-loading&quot;&gt;Resource Loading&lt;/h2&gt;

&lt;p&gt;Another thing that we have been concerned with is how we can give more control and power to authors to more effectively tell the browser how to manage the loading of resources and improve performance.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://blog.amp.dev/2019/12/16/our-2019-contributions-to-web-platform-interoperability/&quot;&gt;work that we started in 2019 &lt;/a&gt;on lazy loading has matured a lot along with the &lt;a href=&quot;https://github.com/whatwg/html/pull/3752#issuecomment-585202516&quot;&gt;specification&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The lazy image loading &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=196698&quot;&gt;implementation&lt;/a&gt; in WebKit therefore passes the related WPT tests and is functional and comparable to the Firefox and Chrome implementations. However, as you might expect, as we compare uses and implementation notes it becomes apparent that determining the moment when the &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=203557&quot;&gt;lazy image load should start&lt;/a&gt; is not defined well enough.  Before this can be enabled in releases some more work has to be done on improving that. The related frame lazy loading work has not started yet since the specification is not in place.&lt;/p&gt;

&lt;p&gt;We also added an &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=201461&quot;&gt;implementation&lt;/a&gt; for stale-while-revalidate. The&lt;a href=&quot;https://web.dev/stale-while-revalidate/&quot;&gt; stale-while-revalidate&lt;/a&gt; Cache-Control directive allows a grace period in which the browser is permitted to serve a stale asset while the browser is checking for a newer version. This is useful for non-critical resources where some degree of staleness is acceptable, like fonts. The feature has been enabled recently in WebKit trunk, but it is still disabled in the latest iOS 14 beta.&lt;/p&gt;

&lt;p&gt;Contributions were made to improve prefetching in WebKit taking into account its cache partitioning mechanism. Before this work can be enabled some more patches have to be landed and possibly specified (for example, prenavigate) in more detail. Finally, various general Fetch improvements have been done, improving the fetch WPT score. Examples are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://trac.webkit.org/changeset/261821&quot;&gt;Remove certain headers when a redirect causes a request method change&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://trac.webkit.org/changeset/258330&quot;&gt;Implement wildcard behavior for Cross-Origin-Expose-Headers” &lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://trac.webkit.org/changeset/258194&quot;&gt;Align with Origin header changes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://trac.webkit.org/changeset/254672&quot;&gt;Fetch: URL parser not always using UTF-8&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;whats-next&quot;&gt;What’s next&lt;/h2&gt;

&lt;p&gt;There is still a lot to do in scrolling and resource loading improvements and we will continue to focus on the features mentioned such as scrollend event, overscroll behavior and scroll behavior, lazy loading, stale-while-revalidate and prefetching.&lt;/p&gt;

&lt;p&gt;As a continuation of the work done for aspect ratio calculation of images, we will consider the more general&lt;a href=&quot;https://drafts.csswg.org/css-sizing-4/#aspect-ratio&quot;&gt; CSS aspect-ratio property&lt;/a&gt;. Performance metrics such as the ones provided by the&lt;a href=&quot;https://web.dev/vitals/&quot;&gt; Web Vitals&lt;/a&gt; project is also critical for web developers to ensure that their websites provide a good user experience and we are willing to investigate support for these in Safari.&lt;/p&gt;

&lt;p&gt;We love doing this work to improve the platform and we’re happy to be able to collaborate in ways that contribute to bettering the web commons for all of us.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Transcendental number from the oscillating zeno&apos;s paradox</title>
   <link href="https://frederic-wang.fr//2020/04/06/transcendental-number-from-the-oscillating-zeno-paradox/"/>
   <updated>2020-04-06T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2020/04/06/transcendental-number-from-the-oscillating-zeno-paradox</id>
   <content type="html">
&lt;h2 id=&quot;oscillating-zenos-paradox&quot;&gt;Oscillating Zeno’s paradox&lt;/h2&gt;

&lt;p&gt;In a previous blog post, I described an oscillating Zeno’s paradox, which can be formalized as follows. &lt;a href=&quot;https://en.wikipedia.org/wiki/Atalanta&quot;&gt;Atalanta&lt;/a&gt; moves on the real line. She leaves from 0 and at step &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; she decides to move forward or backward by &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\frac{1}{2^{n+1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∊&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_n \in {\{-1, 1\}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; corresponds to the chosen direction then writing &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_0 = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and&lt;/p&gt;

&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;
S_{n+1} = S_n + \frac{\epsilon_n}{2^{n+1}}
&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;

&lt;p&gt;we obtain sequence of Atalatan’s position on the real line.&lt;/p&gt;

&lt;p&gt;In the non-oscillating case (&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_n = 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for all &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) then this just corresponds to a geometric series of common ration &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\frac{1}{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; converges to 1 by lower values, with remaining distance being &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\frac{1}{2^n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. More generally, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is just the partial sum of an absolutely convergent series and so is convergent to a destination &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;munderover&gt;&lt;mo&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/mrow&gt;&lt;/munderover&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\infty = {\sum_{n=0}^{+\infty} \frac{\epsilon_n}{2^{n+1}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. It is easy to see that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\left|S_n\right| &amp;lt; 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\left|S_\infty\right| \leq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{\left| S_\infty - S_n \right| \leq \frac{1}{2^n}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If additionally &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is chosen so that it is not ultimately constant (i.e. Atalatan’s position keeps oscillating) then this becomes a strict inequality &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{\left| S_\infty - S_n \right| &amp;lt; \frac{1}{2^n}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;In theory, it is possible to reach any destination &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∊&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;x \in {[-1,1]}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; using this approach. Just define &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_n = 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if and only if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_n \leq x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (i.e. “move toward &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;”). It is easy to prove by recurrence that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{\left| x - S_n \right| \leq \frac{1}{2^n}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for all &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\infty = x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. However, this assumes we already know &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in order to decide the sequence of directions &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Let’s see how to build sequences without knowing the destination.&lt;/p&gt;

&lt;h2 id=&quot;avoiding-an-at-most-countable-subset&quot;&gt;Avoiding an at most countable subset&lt;/h2&gt;

&lt;p&gt;Suppose that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;X \subseteq \mathbb R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is at most countable and let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;∊&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{(x_n)}_{n \in \mathbb N}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be a sequence of real numbers such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;∊&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;X = \left\{ x_n : n \in \mathbb N \right\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We want to find a sequence such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;∉&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\infty \notin X&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;Assuming additionally that it has infinitely many terms above &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and infinitely many terms below &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, then we obtain a non-ultimately-constant sequence by defining &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_n = 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if and only if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_n \geq x_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (i.e. “move away from &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;”). This is because &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;-1 &amp;lt; S_n &amp;lt; 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so there are always infinitely many terms in front of and behind Atalanta.&lt;/p&gt;

&lt;p&gt;Incidentally, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;X = \mathbb N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; with trivial enumeration &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;x_n = n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; shows a simple counter-example with no term below &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and ultimately constant &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. In that case, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_0 = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{1} = \frac{1}{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{n+1} = S_{n} - \frac{1}{2^{n+1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. But &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;∊&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\infty = 0 \in \mathbb N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;To workaround that issue, we can alternatively define the sequence &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_{2n} = 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if and only if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_n \geq x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_{2n+1} = -\epsilon_{2n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This still moves away from all &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;x_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; once, keeps oscillating and does not require additional assumption on &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;X&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;Whatever the decision chosen, we can show that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;∉&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\infty} \notin X&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Otherwise, consider one &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_{N}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is defined by moving away from &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\infty}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then either &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{S_N - S_\infty} \geq 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{N+1} = {S_N + \frac{1}{2^{N+1}}} \geq {S_\infty + \frac{1}{2^{N+1}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{N+1} = {S_N - \frac{1}{2^{N+1}}} &amp;lt; {S_\infty - \frac{1}{2^{N+1}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. But in any case, we would have &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{\left| S_\infty - S_{N+1} \right| \geq \frac{1}{2^{N+1}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which contradicts our strict inequality for not ultimately constant &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;As explained in the previous blog, this shows that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mathbb R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (or any complete subspace containing &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mathbb Q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) is uncountable. Otherwise, we could use a sequence enumerating it to arrive to a contradiction.&lt;/p&gt;

&lt;p&gt;Similarly, because &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mathbb Q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is countable then we can find a sequence such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;∊&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\left\{ x_n : n \in \mathbb N \right\} = \mathbb Q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, which gives us an irrational number &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\infty&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If instead &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;X&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the set of algebraic numbers (which is countable and contains &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mathbb Q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) then we obtain a transcendental &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\infty&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;h2 id=&quot;an-explicit-computation&quot;&gt;An explicit computation&lt;/h2&gt;

&lt;p&gt;The big difference between the case of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mathbb Q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and the set of algebraic numbers is that it’s much easier to actually compute a list of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;∊&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{(x_n)}_{n \in \mathbb N}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; that lists all the &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mathbb Q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. For example, a simple way to enumerate the fractions &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mfrac&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/mfrac&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\frac{p}{q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; without trying to avoid duplicate values is, for each &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;.&lt;/mo&gt;&lt;mo&gt;.&lt;/mo&gt;&lt;mo&gt;.&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;M=0, 1, 2, ...&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to enumerate the integers &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;p&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;q \neq 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; bounded by &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in the lexicographical order. One can similarly enumerate for each &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the non-constant polynomial of degree at most &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and integer coefficient bounded by &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; but it’s not obvious how to actually compute their roots.&lt;/p&gt;

&lt;p&gt;One can rely on &lt;a href=&quot;https://en.wikipedia.org/wiki/Root-finding_algorithm#Roots_of_polynomials&quot;&gt;root finding algorithm&lt;/a&gt; to estimate the roots &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in order to be able to calculate the sign &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_n - \alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so determine &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. But in theory, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be arbitrary close to &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so it’s not clear how much precision to request.&lt;/p&gt;

&lt;p&gt;Instead, let’s consider &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;∊&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{(P_n)}_{n \in \mathbb N}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; an enumeration of the non-constant polynomial with integer cofficients and define &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_n = 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if and only if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msubsup&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{(P_n\prime P_n)}{(S_n)} \geq 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. With that new formula, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be calculated very easily in &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;deg&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;O(\deg P_n)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; from the cofficients of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;P_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; using &lt;a href=&quot;https://en.wikipedia.org/wiki/Horner%27s_method&quot;&gt;Horner’s method&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For any integer &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;M \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, let’s consider &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;Q&lt;/mi&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;Q_M^\pm = {(X \pm 2)}^M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then its product with its derivative is &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;M {(X \pm 2)}^{2M -1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Its value at any &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has the same sign as &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;x \pm 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\left|x\right| &amp;lt; 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; it just &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\pm&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. For any &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we can find &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; large enough such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;Q&lt;/mi&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;Q_M^+&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;Q&lt;/mi&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;Q_M^-&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; have not been enumerated yet. So &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not ultimately constant. Alternatively, we could have used the trick from the previous section to force that property.&lt;/p&gt;

&lt;p&gt;Now let’s prove that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\infty&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is still algebraic. If that’s not the case, let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{P_n(S_\infty)} = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We can choose &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;P_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is of minimal degree and so &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{P_n\prime(S_\infty)} \neq 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Since &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;P_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has only finitely many roots, there is &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k \geq n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that at maximum distance &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\frac{1}{2^k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; around &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\infty&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\infty&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the only root of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;P_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;P_n\prime&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; does not vanish. Let’s &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; large enough such that the polynomial &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;R_M = P_n^{2M+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has not been enumerated before &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;P_k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Let’s &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;P_l = R_M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;In the considered neighbourhood of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\infty&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;P_l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has only one root &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\infty&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, has the same sign as &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;P_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and its derivative &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;msubsup&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;msubsup&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{(2M+1)}P_n^{2M} P_n\prime&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has the same nonzero constant sign as &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;P_n\prime&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Analyzing each combination &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;P_l\prime&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; positive/negative and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; greater/smaller than &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\infty&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we verify that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\epsilon_l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is chosen such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{\left| S_\infty - S_{l+1} \right| \geq \frac{1}{2^{l+1}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which is obviously also true if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;∞&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_l = S_\infty&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This agains contradict our strict inequality. Q.E.D.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>A Zeno paradox to prove the reals are uncountable</title>
   <link href="https://frederic-wang.fr//2020/04/03/a-zeno-paradox-to-prove-the-reals-are-uncountable/"/>
   <updated>2020-04-03T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2020/04/03/a-zeno-paradox-to-prove-the-reals-are-uncountable</id>
   <content type="html">
&lt;h2 id=&quot;a-simple-zenos-paradox&quot;&gt;A simple Zeno’s paradox&lt;/h2&gt;

&lt;p&gt;A simple variant of &lt;a href=&quot;https://en.wikipedia.org/wiki/Zeno&apos;s_paradoxes&quot;&gt;Zeno’s paradoxes&lt;/a&gt; can be described as follows. &lt;a href=&quot;https://en.wikipedia.org/wiki/Atalanta&quot;&gt;Atalanta&lt;/a&gt; wishes to walk to the end of a path. When she gets halfway, she still have to walk the remaining half of the path ; When she gets halfway of that remaining half, she still needs to walk the remaining quarter of the path ; When she gets halfway of that remaining quarter, she still needs to walk the remaining eight of the path ; and so on. Hence it seems she will never reach the end of the path, which is paradoxical.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/classical_zeno_paradox.svg&quot; style=&quot;width: 100%; max-height: 200px;&quot; alt=&quot;Schema for classical Zeno&apos;s paradox&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Obviously, this is not true: Atalanta is going to reach the end of the path after a certain amount of time. The issue in the previous reasoning is that (assuming she walks at constant velocity) walking these subpaths also takes her respectively half, a quarter, a eight, etc of the total time she actually needs to arrive to her destination… and the observations are only done for a total time that is less than the one needed.&lt;/p&gt;

&lt;h2 id=&quot;a-modern-variant&quot;&gt;A modern variant&lt;/h2&gt;

&lt;p&gt;Now suppose the ground is an infinite &lt;a href=&quot;https://en.wikipedia.org/wiki/Real_line&quot;&gt;real line&lt;/a&gt;, itself covered by an infinite treadmill on which Atalanta is walking. This treadmill brings Atalanta in the opposite direction by twice her velocity. She can decide to turn the treadmill on or off, but its state must remain the same during the whole walk of a subpath. In the following schema, the treadmill was enabled when she was on the second subpath:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/modern_zeno_variant.svg&quot; style=&quot;width: 100%; max-height: 200px;&quot; alt=&quot;Schema for modern variant of Zeno&apos;s paradox&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After the total duration considered in the previous problem, Atalanta has walked exactly the same total distance on the treadmill. The conveyor belt also moves by summing up distances that are twice the distances on subpaths. Because the treadmill can be on or off, the conveyor’s belt position is not following a simple linear function of the time. Let’s admit for a while it still converges to a certain distance when getting closer to the total duration, I will come back to this at the end of the blog post.&lt;/p&gt;

&lt;p&gt;With respect to the ground, Atalanta’s position is basically given by her departure position, moved backward by the distance of the conveyor belt with respect to the ground and moved forward by the distance she walked on the treadmill. As a consequence of the previous paragraph, Atalanta is also converging to a destination with respect to the ground.&lt;/p&gt;

&lt;h2 id=&quot;modern-zenos-paradox-with-a-flaw&quot;&gt;Modern Zeno’s paradox (with a flaw)&lt;/h2&gt;

&lt;p&gt;Now consider an enumeration of all the points of the real line. At the beginning the treadmill is off. Before walking the first half of the path, Atalanta picks the first point in that enumeration and enables the treadmill if she can see that point in front of her. Before walking the next quarter of the path, she picks the second point and enables or disables the treadmill according to whether she can see that second point in front of her. She continues that way for each subpath and each point of the real line.&lt;/p&gt;

&lt;p&gt;When a given point is picked there are two options. Either it is not in front of her and so she will just walk forward to a certain distance ; or otherwise the the treamill will additionnaly take her backward by twice that distance. In any case, with respect to the ground, she is moving away from the picked point by the distance she walks during that subpath.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/modern_zeno_variant_picking_a_point.svg&quot; style=&quot;width: 100%; max-height: 200px;&quot; alt=&quot;Schema for modern variant of Zeno&apos;s paradox (picking a point behind or in front of Atalanta)&quot; /&gt;&lt;/p&gt;

&lt;p&gt;At some step, the point of the real line corresponding to Atalanta’s destination will be picked and she will move away from that destination by a certain distance. But the remaining subpaths are half, a quarter, a eight, etc that distance. To have a chance to converge to the destination again she must now always keep the same direction. But so far, only finitely many points have been picked and so there is at least one point beyond the destination that has not been chosen yet (actually infinitely many). This means she will have to change her direction at least once in the future and so will never be able to reach her destination!&lt;/p&gt;

&lt;h2 id=&quot;uncountability-of-the-real-line&quot;&gt;Uncountability of the real line&lt;/h2&gt;

&lt;p&gt;How to solve the paradox in this modern variant?&lt;/p&gt;

&lt;p&gt;First, let’s go back to why the distance of the conveyor belt with respect to the ground is convergent. Consider the binary number whose digits describe the sequences of states of the treadmill: 0 if turned off and 1 if turned on. Place the binary point after the first digit to obtain a real number. Then one can check that the distance of the conveyor belt is given by that real number multiplied by Atalanta’s total distance on the treadmill. Of course, one must admit that such a binary number with infinitely many digits after the binary point is well defined!&lt;/p&gt;

&lt;p&gt;For a rigorous proof, note that the conveyor belt is always going in the same direction and at most twice Atalanta’s total walking distance on the treadmill. So the convergence of the conveyor belt just comes from the &lt;a href=&quot;https://en.wikipedia.org/wiki/Monotone_convergence_theorem&quot;&gt;monotone convergence theorem&lt;/a&gt;. This assumption was correct.&lt;/p&gt;

&lt;p&gt;However, reading more carefully the argumentation, we actually assumed that there is a countable enumeration of all the points of the real line. But Cantor proved at the end of the 19th century that this is wrong, the real line is &lt;a href=&quot;https://en.wikipedia.org/wiki/Uncountable_set&quot;&gt;uncountable&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;It is interesting to actually turn this modern Zeno’s paradox into an apparently “elementary” alternative of &lt;a href=&quot;https://en.wikipedia.org/wiki/Cantor&apos;s_diagonal_argument&quot;&gt;Cantor’s diagonal argument&lt;/a&gt;, in a way that involves only concepts understandable by the Ancient Greeks and no advanced mathematical formalisms. In particular, this is not mentioning explicitly the &lt;a href=&quot;https://en.wikipedia.org/wiki/Positional_notation&quot;&gt;positional notation&lt;/a&gt; invented by Indian mathematicians. As a comparison, Cantor’s proof assumes that a decimal notation with infinitely many digits after the decimal point is well defined (similar to what we used for our proof with binary numbers) ; or it must deal with the edge case of a real number with two different decimal notations (e.g. 0.4999999… = 0.5).&lt;/p&gt;

&lt;h2 id=&quot;for-completeness&quot;&gt;For completeness&lt;/h2&gt;

&lt;p&gt;Nevertheless, we still had to use some kind of &lt;a href=&quot;https://en.wikipedia.org/wiki/Completeness_of_the_real_numbers&quot;&gt;completeness property&lt;/a&gt; in order to prove that the moving distance of the conveyor belt is convergent. Actually, &lt;a href=&quot;https://en.wikipedia.org/wiki/Completeness_of_the_real_numbers#Cauchy_completeness&quot;&gt;Cauchy completeness is enough&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It is also interesting to note that all the moves as well as Atalanta’s total distance on the treadmill are rational numbers. Since the rational numbers are countable, this modern Zeno’s paradox can also be performed by considering only rational points on the ground. In that case, the flaw is then in the assumption that the conveyor belt converges to a rational point: &lt;a href=&quot;https://en.wikipedia.org/wiki/Construction_of_the_real_numbers#On_the_least_upper_bound_property&quot;&gt;the set of rational numbers is not complete&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;More generally, we can also applie this modern Zeno’s paradox to any &lt;a href=&quot;https://en.wikipedia.org/wiki/Ordered_field&quot;&gt;ordered field&lt;/a&gt; since they include a subset isomorphic to the rational numbers. The conclusion becomes that if the field is Cauchy-complete then it is uncountable.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>S[α] for strings of ordinals</title>
   <link href="https://frederic-wang.fr//2020/03/08/char-at-for-strings-of-ordinals/"/>
   <updated>2020-03-08T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2020/03/08/char-at-for-strings-of-ordinals</id>
   <content type="html">
&lt;p&gt;&lt;strong&gt;Update 2020/03/10: Added complexity analysis for S.substr(α, N)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In a &lt;a href=&quot;https://frederic-wang.fr/ordinal-as-strings-of-emptyset-commas-and-braces.html&quot;&gt;previous blog post&lt;/a&gt;, I defined for each ordinal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; a string &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (made of the characters for the empty set, comma, opening brace and closing brace) that enumerates the element of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. I gave a simple formulas to calculate the length &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of this string.&lt;/p&gt;

&lt;p&gt;My colleague &lt;a href=&quot;https://www.igalia.com/igalian/idimitriou&quot;&gt;Ioanna&lt;/a&gt; was a bit disappointed that I didn’t provide a script for calculating the infinite &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; strings. Obviously, the complexity would be “&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Ω&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\Omega(\omega)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;” but it is still possible to evaluate the string at a given position: Given &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta &amp;lt; L_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, what is the character of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; at position &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;?&lt;/p&gt;

&lt;p&gt;Since the initial segments of the strings are compatible, another way to express this is by introducing the class &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;munder&gt;&lt;mo&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;∊&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;O&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;r&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S = \bigcup_{\alpha \in {\mathrm{Ord}}} S_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; corresponding to a giant string enumerating the class &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;O&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;r&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\mathrm{Ord}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of all ordinals. Given an ordinal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, what is &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\alpha]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;?&lt;/p&gt;

&lt;p&gt;A small generalization of this S.charAt(α) operation is S.substr(α, N) calculating the substring of length &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; starting at &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;h2 id=&quot;example&quot;&gt;Example&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &quot;∅,{∅}&quot;, so
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[0]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the character ∅, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[1]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a comma,
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[2]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an opening brace and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[4]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a closing brace.
&lt;/li&gt;
&lt;li&gt;
 &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\omega+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is made of
 of an &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-concatenation of finite strings
 (the character ∅, a comma,
 &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; surrounded by braces, a comma,
 &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; surrounded by braces, a comma,
 &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_4&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; surrounded by braces, a comma, etc), followed
 by a comma, an opening brace, the same
 &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-concatenation of finite strings and finally
 a closing brace.
 So &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\omega]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a comma,
 &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\omega+1]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an opening brace,
 &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\omega+2]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the character &quot;∅&quot;
 and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\omega2]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a closing brace.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the previous example, we have basically analyzed the string &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; at a given successor ordinal, splitting it into two copies of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, comma and braces. This suggests some easy values of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;

&lt;h2 id=&quot;lemma&quot;&gt;Lemma&lt;/h2&gt;

&lt;p&gt;For any &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\alpha]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A comma if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be written &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2^n - 3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\omega^\beta 2^n + n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/li&gt;
&lt;li&gt;An opening brace if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be written &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2^n - 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\omega^\beta 2^n + n + 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/li&gt;
&lt;li&gt;A closing brace if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be written &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2^{n+1} - 4&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\omega^\beta 2^{n+1} + n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Proof: For any ordinal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, by viewing the string &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
as a concatenation of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, a comma, an opening fence, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
a closing fence, we deduce that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{S\left[L_{\alpha}\right]}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a comma.&lt;/li&gt;
&lt;li&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{S\left[L_{\alpha} + 1 \right]}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an opening brace.&lt;/li&gt;
&lt;li&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a successor ordinal and
    &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{S\left[L_{\alpha+1} - 1 \right]}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a closing brace.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The lemma follows immediately from the calculation of string lengths performed in the previous blog post. □&lt;/p&gt;

&lt;div style=&quot;border: 1px dashed black; padding: .5em; margin: 1em&quot;&gt;
Warning: The rest of the blog post gives the solution to this puzzle, so you
might want to have fun solving it yourself first and then go back checking
my proposed solution later 😉...
&lt;/div&gt;

&lt;p&gt;More generally, the proof of the lemma can be extended by saying that if we find &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{2^n - 1} \leq \alpha \leq {2^{n+1} - 5}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\delta = {\alpha - {(2^n - 1)}} \leq {2^n - 4}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the index of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{S[\alpha]}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in the second substring &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{S[\alpha]} = {S[\delta]}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;Details will be provided in the theorem below but one can already write a simple JavaScript recursive program to evalute &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; at finite ordinals:&lt;/p&gt;

&lt;h2 id=&quot;script-for-αltωalpha-lt-omega&quot;&gt;Script for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/h2&gt;

&lt;div id=&quot;javascript_character_at_finite_alpha&quot; style=&quot;border: 1px dashed black; padding: .5em; margin: 1em&quot;&gt;
The character of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; at position &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = &lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;br /&gt;
&lt;input id=&quot;alpha_input&quot; size=&quot;72&quot; type=&quot;text&quot; onchange=&quot;calculateCharacterAtIndex()&quot; value=&quot;123456789&quot; /&gt;&lt;br /&gt;
is &lt;input id=&quot;s_alpha_output&quot; type=&quot;text&quot; value=&quot;BigInt not supported&quot; /&gt;
&lt;script&gt;
  function charAtIndex(alpha) {
    if (alpha == BigInt(0))
       return &quot;∅&quot;;
    // Not sure whether there is an efficient native BigInt operation, so just
    // serialize in binary and count the digits.
    var m = BigInt(2) ** BigInt((alpha + BigInt(3)).toString(2).length - 1);

    if (alpha == m - BigInt(3))
       return &quot;,&quot;;
    if (alpha == m - BigInt(2))
       return &quot;{&quot;;
    if (alpha == BigInt(2) * m  - BigInt(4))
       return &quot;}&quot;;
    var d = alpha - (m - BigInt(1));
    return charAtIndex(d);
  }

  function calculateCharacterAtIndex() {
    if (!window.BigInt)
        return;
    var output = document.getElementById(&quot;s_alpha_output&quot;);
    try {
      var alpha = BigInt(document.getElementById(&quot;alpha_input&quot;).value);
      output.value = charAtIndex(alpha);
    } catch(e) {
      output.value = e.message;
      throw e;
    }
  }
  calculateCharacterAtIndex();
&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;The following intermediary step will be helpful to evaluate &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; at infinite ordinal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;

&lt;h2 id=&quot;proposition&quot;&gt;Proposition&lt;/h2&gt;

&lt;p&gt;Let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is infinite and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta = \log_{\omega}(\alpha) \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;1 \leq q &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;0 \leq \rho &amp;lt; \omega^\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be the quotient
and remainder of the euclidean division of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\omega^\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Let’s define:&lt;/p&gt;

&lt;p&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;{&lt;/mo&gt;&lt;mtable displaystyle=&quot;false&quot; columnalign=&quot;left left&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mtext&gt; if &lt;/mtext&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mtext&gt; is not a power of 2 or this value is &lt;/mtext&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mtext&gt; otherwise.&lt;/mtext&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n = \begin{cases}
    \left\lfloor {\log_2(q)} \right\rfloor &amp;amp; \text{ if } q \text{ is not a power of 2 or this value is } \leq \rho \\
    \left\lfloor {\log_2(q)} \right\rfloor - 1 &amp;amp; \text{ otherwise.}
 \end{cases}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
&lt;/p&gt;

&lt;p&gt;Then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\alpha]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A comma if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = {\omega^{\beta} 2^n + n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/li&gt;
  &lt;li&gt;An opening brace if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = {\omega^{\beta} 2^n + n + 1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/li&gt;
   &lt;li&gt;An closing brace if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = {\omega^{\beta} 2^{n+1} + n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/li&gt;
   &lt;li&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\delta]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; otherwise where &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\delta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the unique
   ordinal such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = {\omega^\beta 2^n + n + 2 + \delta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
   and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\delta &amp;lt; {\omega^{\beta} 2^n + n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
   &lt;/li&gt;
 &lt;/ul&gt;

&lt;p&gt;Proof: First by construction we have &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = { {\omega^\beta q } + \rho}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;If the first case of the definition of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2^n \leq q &amp;lt; 2^{n+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so we always have &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha &amp;lt; {\omega^\beta {(q+1)}} \leq \omega^\beta 2^{n+1} \leq L_{\omega{\beta} + n + 1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
If additionnaly &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not a power then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2^n &amp;lt; q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha \geq {\omega^{\beta}q} \geq {\omega^{\beta}{(2^n+1)}} \geq L_{\omega{\beta} + n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Otherwise &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;q = 2^n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n \leq \rho&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so again &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha \geq L_{\omega{\beta} + n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;In the second case of the definition of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\left\lfloor {\log_2(q)} \right\rfloor \geq \rho + 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n \geq \rho \geq 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a power of 2 and more precisely &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;q = 2^{n+1} &amp;gt; 2^n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so we deduce the same way as in the previous case that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha \geq L_{\omega{\beta} + n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Moreover, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\rho &amp;lt; n + 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so again &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = {\omega^\beta 2^{n+1} + \rho} &amp;lt; L_{\omega{\beta} + n + 1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;We can thus view &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\omega \beta + n + 1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; as a concatenation of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\omega \beta+n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, a comma, an opening brace, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\omega \beta+n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
a closing brace. We assume that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt; { {\omega^{\beta} {2^n}} + n + 2} \leq \alpha &amp;lt;
{\omega^{\beta} 2^{n+1} + n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; as the three other cases are handled by the lemma. Then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\delta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is well-defined and is actually the index of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\alpha]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in the second copy of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\omega \beta + n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{S[\alpha]} = S{[\delta]}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. □&lt;/p&gt;

&lt;p&gt;We are now ready to give a nice way to evaluate &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; at any ordinal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;

&lt;h2 id=&quot;theorem&quot;&gt;Theorem&lt;/h2&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\alpha]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be calculated inductively as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\alpha]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the character &quot;∅&quot;.&lt;/li&gt;
&lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;0 &amp;lt; \alpha \leq \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;
 \right\rfloor}} - 3} \leq
\alpha \leq  \right\rfloor + 1}} - 4}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\alpha]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is equal to:
  &lt;ul&gt;
    &lt;li&gt;A comma if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = {2^{\left\lfloor {\log_2{(\alpha+3)}} \right\rfloor} - 3}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/li&gt;
    &lt;li&gt;An opening brace if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = {2^{\left\lfloor {\log_2{(\alpha+3)}} \right\rfloor} - 2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/li&gt;
    &lt;li&gt;A closing brace if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = {2^{\left\lfloor {\log_2{(\alpha+3)}} \right\rfloor + 1}} - 4&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/li&gt;
    &lt;li&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\delta]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; otherwise where
     &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\delta = {\alpha - \left( 2^{\left\lfloor {\log_2{(\alpha+3)}} \right\rfloor} - 1 \right)} \leq {2^{\left\lfloor {\log_2{(\alpha+3)}} \right\rfloor} - 4} \leq \alpha - 3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;br /&gt;
     Moreover &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\delta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; compares against &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; as follows:
     &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\frac{\delta}{\alpha} \leq \frac{1}{2} + \frac{1}{2^{\left\lfloor {\log_2{(\alpha+3)}} \right\rfloor + 1}} \leq \frac{3}{4}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
     and
     &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;
{\left\lfloor {\log_2{(\delta+3)}} \right\rfloor} &amp;lt;
{\left\lfloor {\log_2{(\alpha+3)}} \right\rfloor}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
     &lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is infinite, let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;0 &amp;lt; c_1 &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be the coefficient
  in its &lt;a href=&quot;https://en.wikipedia.org/wiki/Ordinal_arithmetic#Cantor_normal_form&quot;&gt;Cantor normal form&lt;/a&gt; corresponding to the smallest infinite term
  and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0 &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be finite term if there is one, or zero otherwise.
  Let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be the exponent corresponding to the smallest nonzero
  term in the binary decomposition of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
  Then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\alpha]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is equal to:
  &lt;ul&gt;
  &lt;li&gt;A closing brace if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0 \leq k - 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/li&gt;
  &lt;li&gt;A comma if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0 = k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/li&gt;
  &lt;li&gt;An opening brace if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0 = k + 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[{c_0 - {(k+2)}}]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0 \geq k + 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Proof:&lt;/p&gt;

&lt;p&gt;The case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is clear. Suppose &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;0 &amp;lt; \alpha &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;l = {\left\lfloor {\log_2{(\alpha+3)}} \right\rfloor}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. By definition &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2^l \leq \alpha + 3 &amp;lt; 2^{l+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2^l - 3 \leq \alpha \leq 2^{l+1} - 4&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Let’s consider the case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2^l - 1 \leq \alpha \leq 2^{l+1} - 5&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; as the three other cases are already known from the Lemma. &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{l+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is made of the concatenation of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, a comma and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; surrounded by braces. &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\delta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is actually the index of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\alpha]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in the second copy of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{S[\alpha]} = S{[\delta]}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. The first equality is straighforward:&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\delta = {\alpha - {(2^l -1)}} \leq
{2^{l+1} - 5 - {(2^l -1)}} = {2^l - 4} = {2^l - 1 - 3}\leq \alpha - 3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;Morever we have:&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;
\frac{\delta}{\alpha} \leq {1 - \frac{2^l - 1}{2^{l+1}+5}} \leq
{1 - \frac{2^l - 1}{2^{l+1}}} \leq {\frac{1}{2} + \frac{1}{2^{l+1}}}
&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;and so the second inequality follows from the fact that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;l \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Finally, the third inequality comes from:&lt;/p&gt;

&lt;p&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;
2^{\left\lfloor {\log_2{(\delta+3)}} \right\rfloor} \leq {\delta + 3}
\leq {2^l - 4 + 3} &amp;lt; 2^l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
&lt;/p&gt;

&lt;p&gt;Let’s consider the case of an infinite &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. For some &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;N \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mo&gt;…&lt;/mo&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta_N &amp;gt; \beta_{N-1} &amp;gt; \dots &amp;gt; \beta_1 \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0 &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;0 &amp;lt; c_1, c_2, c_N &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we can write Cantor’s Normal form as:&lt;/p&gt;

&lt;p&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mo&gt;…&lt;/mo&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = { \omega^{\beta_N} c_N} + { \omega^{\beta_{N-1}} c_{N-1} } + \dots
+  { \omega^{\beta_{1}} c_{1} } + c_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
&lt;/p&gt;

&lt;p&gt;With the notation of the proposition, we have &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta = \beta_N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;q = c_N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mo&gt;…&lt;/mo&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;
\rho = { \omega^{\beta_{N-1}} c_{N-1} } + \dots
+ { \omega^{\beta_{1}} c_{1} } + c_0
&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;N \geq 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\rho&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is infinite and so &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n = \left\lfloor {\log_2(q)} \right\rfloor&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and we are in the fouth bullet of the proposition. Moreover &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;q \geq 2^n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and we can write:&lt;/p&gt;

&lt;p&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = { \omega^{\beta} 2^n} + {\omega^{\beta} \left(q-2^n\right)} + \rho = { \omega^{\beta} 2^n} + n + 2 + \delta
&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
&lt;/p&gt;

&lt;p&gt;where &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\delta = {\omega^{\beta} \left(q-2^n\right)} + \rho&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is infinite and so cancels out the &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n + 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; term. It follows that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S{[\alpha]} = S\left[ {\omega^{\beta} \left(q-2^n\right)} + \rho \right]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Essentially, we have just removed from &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_{N}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; its term of highest exponent in its binary decomposition!&lt;/p&gt;

&lt;p&gt;By repeated application of the theorem, we can remove each binary digit of the &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_i&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;i&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; going from &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. When then arrive at &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;i = 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{S[\alpha]} = S\left[ \omega^{\beta_1} c_1 + c_0\right]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;With the notation of the proposition, we now have &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta = \beta_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;q = c_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\rho = c_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If the binary decomposition of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has more than one nonzero digit then so &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not a power of 2. So although &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\rho&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is now finite, we are still in the first case of the proposition and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\delta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; remains infinite. So we can remove all but the last digit of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by repeated application of the proposition:&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{S[\alpha]} = S\left[ \omega^{\beta_1} 2^k + c_0\right]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;where &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the exponent corresponding to the smallest nonzero term in the binary decomposition of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;Using the lemma, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\alpha]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a comma if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k = c_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, an opening brace if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k = c_0 - 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and a closing brace if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k = c_0 + 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k \leq c_0 - 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k = \left\lfloor {\log_2(2^k)} \right\rfloor \leq c_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and writing&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{\omega^{\beta_1} 2^k + c_0} = \omega^{\beta_1} 2^k + k + 2 + \left(c_0 - {(k + 2)}\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;we deduce from the proposition that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{S[\alpha]} = {S[{c_0 - {(k+2)}}]}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;Finally, if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k \geq c_0 + 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k = \left\lfloor {\log_2(2^k)} \right\rfloor &amp;gt; c_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and writing&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{\omega^{\beta_1} 2^k + c_0} = {\omega^{\beta_1} 2^{k-1}} + k - 1 + 2 +
{\omega^{\beta_1} 2^{k-1}} + c_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;we deduce from the proposition that&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{S[\alpha]} = S\left[ \omega^{\beta_1} 2^{k-1} + c_0\right]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;We have essentially decremented &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and we can repeat this until we reach the case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k = c_0 + 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for which we already said that the character is a closing brace. □&lt;/p&gt;

&lt;p&gt;As an application of this theorem, here is a few simple exercises:&lt;/p&gt;

&lt;h2 id=&quot;exercise-1&quot;&gt;Exercise 1&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;72&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S\left[2^72 + 2\right]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an empty set.&lt;/li&gt;
&lt;li&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;72&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S\left[\omega^72\right]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a comma.&lt;/li&gt;
&lt;li&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;72&lt;/mn&gt;&lt;/msup&gt;&lt;mn&gt;72&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;72&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S\left[\omega^72 72 + 72\right]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a closing brace.&lt;/li&gt;
&lt;li&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;72&lt;/mn&gt;&lt;/msup&gt;&lt;mn&gt;72&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;42&lt;/mn&gt;&lt;/msup&gt;&lt;mn&gt;42&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;12&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S\left[\omega^72 72 + \omega^42 42 + 12\right]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an opening brace.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;exercise-2&quot;&gt;Exercise 2&lt;/h2&gt;

&lt;p&gt;The evaluation of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; at&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Limit_ordinal&quot;&gt;Limit ordinals&lt;/a&gt; is either a comma or a closing brace.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Epsilon_numbers_(mathematics)&quot;&gt;Epsilon numbers&lt;/a&gt; is a comma.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Additively_indecomposable_ordinal&quot;&gt;Indecomposable ordinals&lt;/a&gt; is a comma.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;corollary-1-time-complexity&quot;&gt;Corollary 1: Time complexity&lt;/h2&gt;

&lt;p&gt;Let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be an ordinal. Let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_1 &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be the coefficient in its &lt;a href=&quot;https://en.wikipedia.org/wiki/Ordinal_arithmetic#Cantor_normal_form&quot;&gt;Cantor normal form&lt;/a&gt; corresponding to the smallest infinite term if there is one, or zero otherwise. Let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0 &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be its finite term if there is one, or zero otherwise. Then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S[\alpha]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be evaluated in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;O\left( \log_2{(c_0+2)}^2 + \log_2{(c_1+2)} \right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; elementary arithmetic operations and comparisons on integers.&lt;/li&gt;
&lt;li&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;O\left( \log_2{(c_0+2)}\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; elementary operations if integers are represented in binary and &lt;a href=&quot;https://en.wikipedia.org/wiki/Find_first_set&quot;&gt;leading/trailing zero counting&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Bitwise_operation#Bit_shifts&quot;&gt;bit shifts&lt;/a&gt; are elementary operations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Proof: First note that the “+ 2” is just to workaround for the edge cases &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0 = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_1 = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;For the infinite case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_1 &amp;gt; 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we need to calculate &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; that is performing the &lt;a href=&quot;https://en.wikipedia.org/wiki/Find_first_set&quot;&gt;find first set&lt;/a&gt;. A naive implementation can be done in &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;O(\log_2{(c_1+2)})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; steps by browsing the digits of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to find the first nonzero for example by calculating the remainder modulo increasing power of 2. Each iteration requires only &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;O(1)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; elementary integer operations %, * and comparisons. Then returning the result of moving to the finite case requires &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;O(1)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; integer operations +, − and comparisons.&lt;/p&gt;

&lt;p&gt;For the finite case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_1 = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = c_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, first notice that we only require &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;O\left( \log_2{(c_0+2)}\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; recursive calls given the inequality:&lt;/p&gt;

&lt;p&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;
{\left\lfloor {\log_2{(\delta+3)}} \right\rfloor} &amp;lt;
{\left\lfloor {\log_2{(\alpha+3)}} \right\rfloor}
&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
&lt;/p&gt;

&lt;p&gt;The case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; only requires one comparison. For the case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha &amp;gt; 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we need to calculate &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;l = {\left\lfloor {\log_2{(\alpha+3)}} \right\rfloor}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which is &lt;a href=&quot;https://en.wikipedia.org/wiki/Binary_logarithm#Integer_rounding&quot;&gt;integer rounding of the binary logarithm&lt;/a&gt; or even just &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2^l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. As above, we can provide a naive implementation by calculating the quotient modulo increasing power of 2 in &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;O(l)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; comparisons and elementary integer operations /, *. Then returning the result of moving to a &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\delta &amp;lt; \alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; requires only &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;O(1)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; integer operations and comparisons. In total, complexity is &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;O\left( \log_2{(c_0+2)}^2\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;Finally, this can be simplified if one calculates &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by a simple leading/trailing zero counting (or similar) and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2^l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by a bit shift. □&lt;/p&gt;

&lt;h2 id=&quot;script-based-on-cantor-normal-form&quot;&gt;Script based on Cantor normal form&lt;/h2&gt;

&lt;div id=&quot;javascript_character_at_alpha&quot; style=&quot;border: 1px dashed black; padding: .5em; margin: 1em&quot;&gt;
If the coefficients of Cantor normal form of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; corresponding the smallest infinite term and finite term are&lt;br /&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; = &lt;input id=&quot;c1_input&quot; size=&quot;72&quot; type=&quot;text&quot; onchange=&quot;calculateCharacterAtIndex2()&quot; value=&quot;123456789&quot; /&gt;&lt;br /&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; = &lt;input id=&quot;c0_input&quot; size=&quot;72&quot; type=&quot;text&quot; onchange=&quot;calculateCharacterAtIndex2()&quot; value=&quot;123456789&quot; /&gt;&lt;br /&gt;
Then the character of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; at position &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is&lt;br /&gt;
&lt;input id=&quot;s_alpha_output_2&quot; type=&quot;text&quot; value=&quot;BigInt not supported&quot; /&gt;
&lt;script&gt;
  function charAtIndex2(c0, c1) {
      if (c1 == BigInt(0)) {
         // Finite case
         return charAtIndex(c0);
      }

      // Not sure whether there is an efficient native BigInt operation, so just
      // use a naive implementation with % and *.
      var k = BigInt(0);
      var quotient = BigInt(2);
      while (!(c1 % quotient)) {
        k++;
        quotient *= BigInt(2);
      }

      if (k == c0)
          return &quot;,&quot;;
      if (k == c0 - BigInt(1))
          return &quot;{&quot;;
      if (k &gt;= c0 + BigInt(1))
          return &quot;}&quot;;
      return charAtIndex(c0 - (k + BigInt(2)))
  }

  function calculateCharacterAtIndex2() {
    if (!window.BigInt)
        return;
    var output = document.getElementById(&quot;s_alpha_output_2&quot;);
    try {
      var c0 = BigInt(document.getElementById(&quot;c0_input&quot;).value);
      var c1 = BigInt(document.getElementById(&quot;c1_input&quot;).value);
      output.value = charAtIndex2(c0, c1);
    } catch(e) {
      output.value = e.message;
      throw e;
    }
  }
  calculateCharacterAtIndex2();
&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;Once we have an algorithm for S.charAt(α), it is easy to get an algorithm of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; times that complexity for S.substr(α, N) calculating the substring of length &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; starting at position &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by repeated calls to S.charAt(α). Let’s analyze a bit more carefully how we can make this recursive and more efficient:&lt;/p&gt;

&lt;h2 id=&quot;corollary-2-algorithm-for-ssubstrα-n&quot;&gt;Corollary 2: Algorithm for S.substr(α, N)&lt;/h2&gt;

&lt;p&gt;Let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be an ordinal and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;N &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then S.substr(α, N) can be calculated as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;N = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then it is the empty string.&lt;/li&gt;
&lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;N = 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then it is the character &quot;∅&quot;.&lt;/li&gt;
&lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;0 &amp;lt; \alpha &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;l = \left\lfloor {\log_2{(\alpha+N+2)}} \right\rfloor&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We have &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2^l-3 \leq {\alpha + N - 1} \leq 2^{l+1} - 4&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and the result is obtained by concatenating the following strings:
&lt;ol&gt;
&lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha \leq  2^l - 4&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the substring at offset &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and length &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2^l - 3 - \alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/li&gt;
&lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha \leq {2^l - 3}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, a comma.&lt;/li&gt;
&lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha \leq {2^l - 2} \leq {\alpha + N - 1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, an opening brace.&lt;/li&gt;
&lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{\alpha + N - 1} \geq {2^l - 1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the substring at offset &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;m&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;a&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\delta = \mathrm{max}{(0, \alpha - {(2^l - 1)})}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and length &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;m&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;i&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;m&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;a&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;1 + \mathrm{min}{({\alpha + N - 1}, {2^{l+1} - 5})} - \mathrm{max}{(\alpha, {(2^l - 1)})}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/li&gt;
&lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{\alpha + N - 1} = {2^{l+1} - 4}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, a closing brace.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is infinite, let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;0 &amp;lt; c_1 &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be the coefficient
  in its &lt;a href=&quot;https://en.wikipedia.org/wiki/Ordinal_arithmetic#Cantor_normal_form&quot;&gt;Cantor normal form&lt;/a&gt; corresponding to the smallest infinite term
  and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0 &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be finite term if there is one, or zero otherwise.
  Let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be the exponent corresponding to the smallest nonzero
  term in the binary decomposition of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then the result is obtained by a concatenating the following strings:
  &lt;ol&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0 \leq k - 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;m&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;i&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{\mathrm{min}{(N, k - c_0)}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; closing braces.&lt;/li&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0 \leq k \leq c_0 + N - 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, a comma.&lt;/li&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0 \leq k + 1 \leq c_0 + N - 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, an opening brace.&lt;/li&gt;
  &lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0 + N - 1 \geq k + 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the substring at offset &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;m&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;a&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\delta = \mathrm{max}{({0, {c_0 - {(k + 2)}}})}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and length &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;m&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;a&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0 + N - {\mathrm{max}{(c_0, k + 2)}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Moreover, this only adds &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;O(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; compared to the complexity of evaluating to a single offset.&lt;/p&gt;

&lt;p&gt;Proof: The algorithm is just direct application of the Theorem. For the case where &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha \geq \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the only change is that we add at most &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; characters before moving to the finite case. The case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is essentially a divide-and-conquer algorithm and we have a relation of the form:&lt;/p&gt;

&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{T(L)} = 2{T\left(\frac{L}{2}\right)} + {f(L)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;

&lt;p&gt;where &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Θ&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L = 2^l = {\Theta{(\alpha + N)}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;f{(L)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;O(1)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;O(\log_2{L})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; depending on available operations, but in any case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msqrt&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;/msqrt&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;O{(\sqrt{L})}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So from the &lt;a href=&quot;https://en.wikipedia.org/wiki/Master_theorem_(analysis_of_algorithms)&quot;&gt;master theorem&lt;/a&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{T{(L)}} = {O(L)} = {O(\alpha+N)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. In general, this bound is not as good as repeating &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; calls to S.charAt!&lt;/p&gt;

&lt;p&gt;However, we note that if we assume that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha &amp;gt; N - 4&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{\alpha + 2 + N} &amp;lt; {2{(\alpha+3)}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\log_2\left(\alpha + 2 + N\right) &amp;lt; {1 + \log_2{(\alpha+3)}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;We can easily discard the edge case where these start/end offsets point to a brace surrounding the right substring of the iterative step and so we get:&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;log&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\left\lfloor {\log_2{(\alpha+N+2)}} \right\rfloor = \left\lfloor {\log_2{(\alpha+3)}} \right\rfloor&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;which means that the left substring is just empty and so the complexity is not changed compared to S.charAt. Finally, when &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha \leq N - 4&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the previous bound tells us that the steps are done in &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;O(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. □&lt;/p&gt;

&lt;h2 id=&quot;script-for-ssubstrα-n&quot;&gt;Script for S.substr(α, N)&lt;/h2&gt;

&lt;div id=&quot;javascript_substring&quot; style=&quot;border: 1px dashed black; padding: .5em; margin: 1em&quot;&gt;
If the coefficients of Cantor normal form of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; corresponding the smallest infinite term and finite term are&lt;br /&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; = &lt;input id=&quot;c1_input_2&quot; size=&quot;72&quot; type=&quot;text&quot; onchange=&quot;calculateSubstring()&quot; value=&quot;1&quot; /&gt;&lt;br /&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;c_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; = &lt;input id=&quot;c0_input_2&quot; size=&quot;72&quot; type=&quot;text&quot; onchange=&quot;calculateSubstring()&quot; value=&quot;0&quot; /&gt;&lt;br /&gt;
Then the character of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; substring of length
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; = &lt;input id=&quot;N_input_2&quot; type=&quot;number&quot; onchange=&quot;calculateSubstring()&quot; value=&quot;72&quot; /&gt;&lt;br /&gt;
and offset &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is&lt;br /&gt;
&lt;input id=&quot;s_substring_output&quot; size=&quot;72&quot; type=&quot;text&quot; value=&quot;BigInt not supported&quot; /&gt;
&lt;script&gt;
  function BigIntMin(a, b) {
    return a &lt;= b ? a : b;
  }
  function substringAt(c0, c1, N) {
    var result = &quot;&quot;, len, delta;
    if (N == BigInt(0)) {
      return result;
    }
    if (c1 &gt; BigInt(0)) {
      // Infinite case
      // Not sure whether there is an efficient native BigInt operation, so
      // just use a naive implementation with % and *.
      var k = BigInt(0);
      var quotient = BigInt(2);
      while (!(c1 % quotient)) {
        k++;
        quotient *= BigInt(2);
      }
      while (c0 &lt;= k - BigInt(1)) {
        result += &quot;}&quot;;
        c0++;
        N--;
      }
      if (c0 &lt;= k &amp;&amp; N &gt; 0) {
         result += &quot;,&quot;;
         c0++;
         N--;
      }
      if (c0 &lt;= k + BigInt(1) &amp;&amp; N &gt; 0) {
         result += &quot;{&quot;;
         c0++;
         N--;
      }
      if (N &gt; 0) { // c0 &gt;= k + 2
         delta = c0 - (k + BigInt(2));
         result += substringAt(delta, BigInt(0), N);
      }
      return result;
    }

    // Finite case.
    // Not sure whether there is an efficient native BigInt operation, so just
    // serialize in binary and count the digits.
    if (c0 == BigInt(0) &amp;&amp; N == 1)
       return &quot;∅&quot;;

    var m = BigInt(2) ** BigInt((c0 + N + BigInt(2)).toString(2).length - 1);
    if (c0 &lt;= m - BigInt(4)) {
      delta = c0;
      len = m - BigInt(3) - c0;
      result += substringAt(delta, c1, len);
      c0 += len;
      N -= len;
    }
    if (c0 == m - BigInt(3) &amp;&amp; N &gt; 0) {
      result += &quot;,&quot;;
      c0++;
      N--;
    }
    if (c0 == m - BigInt(2) &amp;&amp; N &gt; 0) {
      result += &quot;{&quot;;
      c0++;
      N--;
    }
    if (N &gt; 0) { // c0 &gt;= m - 1
      delta = c0 - (m - BigInt(1));
      len = BigIntMin(N, BigInt(2) * m - BigInt(4) - c0);
      result += substringAt(delta, c1, len);
      c0 += len;
      N -= len;
    }
    if (N &gt; 0) // c0 == 2*m - 4
      result += &quot;}&quot;;
    return result;
  }

  function calculateSubstring() {
    if (!window.BigInt)
        return;
    var output = document.getElementById(&quot;s_substring_output&quot;);
    try {
      var c0 = BigInt(document.getElementById(&quot;c0_input_2&quot;).value);
      var c1 = BigInt(document.getElementById(&quot;c1_input_2&quot;).value);
      var N = BigInt(document.getElementById(&quot;N_input_2&quot;).value);
      output.value = substringAt(c0, c1, N);
    } catch(e) {
      output.value = e.message;
      throw e;
    }
  }
  calculateSubstring();
&lt;/script&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Ordinals as strings of ∅, commas and braces</title>
   <link href="https://frederic-wang.fr//2020/03/05/ordinal-as-strings-of-emptyset-commas-and-braces/"/>
   <updated>2020-03-05T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2020/03/05/ordinal-as-strings-of-emptyset-commas-and-braces</id>
   <content type="html">
&lt;p&gt;This week, my colleagues at Igalia were talking about cutting text at a 72-characters limit for word-wrapping emails. One might say that the &lt;a href=&quot;https://en.wikipedia.org/wiki/Construction_of_the_real_numbers&quot;&gt;real&lt;/a&gt; question is whether 72 is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Construction_of_the_real_numbers#Construction_by_Dedekind_cuts&quot;&gt;cut&lt;/a&gt; or a &lt;a href=&quot;https://en.wikipedia.org/wiki/Construction_of_the_real_numbers#Construction_from_Cauchy_sequences&quot;&gt;limit&lt;/a&gt;. Or wonder how one has decided to &lt;a href=&quot;https://en.wikipedia.org/wiki/Set-theoretic_definition_of_natural_numbers#Definition_as_von_Neumann_ordinals&quot;&gt;set&lt;/a&gt; that particular value?&lt;/p&gt;

&lt;p&gt;The latter link explains the recursive definition of 72 as a finite set, which can be written with only braces, commas and the empty set &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;∅&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\empty&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;

&lt;p&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;0 = {\{\}} = \empty&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;∅&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;1 = 0 \union {\{0\}} = {\{0\}} = {\{\empty\}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;∅&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;∅&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;2 = 1 \union {\{1\}} = {\{0,1\}} = {\{ \empty, {\{\empty\}} \}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;∅&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;∅&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;∅&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;∅&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;3 = 2 \union {\{2\}} = {\{0,1,2\}} =
{\{ \empty, {\{\empty\}}, {\{ \empty, {\{\empty\}} \}} \}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
&lt;/p&gt;

&lt;p&gt;and so forth until&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;72&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;71&lt;/mn&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;71&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;…&lt;/mo&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;71&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo&gt;…&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;72 = 71 \union {\{71\}} = {\{0,1,2,\dots,71\}} = \dots&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;You can notice that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has only one element &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;∅&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;∅&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and for any &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, in order to enumerate the elements of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; using only the four characters &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;∅&quot;&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;,&quot;&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;{&quot;&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;}&quot;&lt;/code&gt;, you first write the elements of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, followed by a comma, followed by an opening brace, followed by the elements of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and finally followed by a closing brace. One can write a simple JavaScript loop that initializes a variable &lt;code&gt;string = &quot;∅&quot;&lt;/code&gt; and performs the concatenation &lt;code&gt;string += `,{${string}}`&lt;/code&gt; at each step:&lt;/p&gt;

&lt;div id=&quot;javascript_calculate_string_recursively&quot; style=&quot;border: 1px dashed black; padding: .5em; margin: 1em&quot;&gt;
The elements of &lt;input id=&quot;n_input&quot; type=&quot;number&quot; min=&quot;1&quot; max=&quot;6&quot; onchange=&quot;calculateNaturalAsSet()&quot; value=&quot;3&quot; /&gt; are&lt;br /&gt;
&lt;input id=&quot;n_output&quot; size=&quot;72&quot; type=&quot;text&quot; /&gt;
&lt;script&gt;
  function calculateNaturalAsSet() {
    var n = parseInt(document.getElementById(&quot;n_input&quot;).value, 10);
    var string = &quot;∅&quot;;
    for (i = 1; i &lt; n; i++) {
        string += `,{${string}}`;
    }
    document.getElementById(&quot;n_output&quot;).value = string;
  }
  calculateNaturalAsSet();
&lt;/script&gt;
&lt;/div&gt;

&lt;h2 id=&quot;length-of-the-string&quot;&gt;Length of the string&lt;/h2&gt;

&lt;p&gt;You notice that the length of the string obtained for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;6&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n=6&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; already exceeds the
72-character limit. From the previous recursive construction of the string one can deduce a recursive definition of its length:&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_1 = 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_{n+1} = L_n + 2 + L_n + 1 = 2L_n +3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;It is easy to see that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Ω&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_n = {\Omega{(2^n)}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so although the simple JavaScript loop above uses a time complexity of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{O{(n)}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; string concatenations, the space complexity is at least exponential. That’s why in the definition of 72 above I used dots instead of showing the whole string!&lt;/p&gt;

&lt;p&gt;One can however easily modify the previous JavaScript loop to calculate the length of such a string. At Igalia, we have been working on a new native type called &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt&quot;&gt;BigInt&lt;/a&gt; which is particularly useful to accurately calculate large integers. The case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;72&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n = 72&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; demonstrates why it is more appropriate than JavaScript Number:&lt;/p&gt;

&lt;div id=&quot;javascript_calculate_length_recursively&quot; style=&quot;border: 1px dashed black; padding: .5em; margin: 1em&quot;&gt;
The length of the strings enumerating the elements of &lt;input id=&quot;n_input_bis&quot; type=&quot;number&quot; min=&quot;1&quot; max=&quot;260&quot; step=&quot;10&quot; onchange=&quot;calculateLengthOfNaturalAsSet()&quot; value=&quot;72&quot; /&gt; has the following length (first field uses Number, second field uses BigInt):&lt;br /&gt;
&lt;input id=&quot;n_output_bis_number&quot; size=&quot;72&quot; type=&quot;text&quot; /&gt;&lt;br /&gt;
&lt;input id=&quot;n_output_bis_bigint&quot; size=&quot;72&quot; type=&quot;text&quot; value=&quot;BigInt not supported&quot; /&gt;
&lt;script&gt;
  function calculateLengthOfNaturalAsSet() {
    var n = parseInt(document.getElementById(&quot;n_input_bis&quot;).value, 10);
    var result_number = 1;
    for (i = 1; i &lt; n; i++)
        result_number = 2 * result_number + 3;
    document.getElementById(&quot;n_output_bis_number&quot;).value = result_number;
    if (window.BigInt) {
        var result_bigint = BigInt(1);
        for (i = 1; i &lt; n; i++)
            result_bigint = BigInt(2) * result_bigint + BigInt(3);
        document.getElementById(&quot;n_output_bis_bigint&quot;).value = result_bigint;
    }
  }
  calculateLengthOfNaturalAsSet();
&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;One can do better and try to calculate an explicit formula for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for any &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Since for all &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;i \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_{i+2} - L_{i+1} = 2\left(L_{i+1} - L_i\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the sequence &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\left(L_{i+1} - L_i\right)_{i \geq 1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Geometric_progression&quot;&gt;geometric sequence&lt;/a&gt; with common ratio 2 and for all &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;i \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we can write&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;{L_{i+1} - L_{i}} = {2^{i-1} \left( L_2 - L_1 \right)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;Summing this up for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;1 \leq i \leq n - 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;

&lt;p&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;munderover&gt;&lt;mo&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/munderover&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;munderover&gt;&lt;mo&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/munderover&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;
L_n - L_1 =
{\sum_{i=1}^{n-1} L_{i+1} - L_{i}} =
{\left( L_2 - L_1 \right)
\left(\sum_{i=0}^{n-2} 2^i \right)}=
{ {\left( L_2 - L_1 \right)} {\left(2^{n-1}-1\right)} }
&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
&lt;/p&gt;

&lt;p&gt;Finally, given that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_1 = 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_2 = 2L_1 + 3 = 5&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, one can write for all &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_n = (2^{n-1}-1) (5-1) + 1 = 2^{n+1} - 3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;This formula can be used to calculate &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; using built-in JavaScript exponentation instead of a loop, as done below.&lt;/p&gt;

&lt;div id=&quot;javascript_calculate_string_by_exponentiation&quot; style=&quot;border: 1px dashed black; padding: .5em; margin: 1em&quot;&gt;
The length of the strings enumerating the elements of &lt;input id=&quot;n_input_ter&quot; type=&quot;number&quot; min=&quot;1&quot; max=&quot;260&quot; step=&quot;10&quot; onchange=&quot;calculateLengthOfNaturalAsSetUsingExponentiation()&quot; value=&quot;72&quot; /&gt; has the following length (first field uses Number, second field uses BigInt):&lt;br /&gt;
&lt;input id=&quot;n_output_ter_number&quot; size=&quot;72&quot; type=&quot;text&quot; /&gt;&lt;br /&gt;
&lt;input id=&quot;n_output_ter_bigint&quot; size=&quot;72&quot; type=&quot;text&quot; value=&quot;BigInt not supported&quot; /&gt;
&lt;script&gt;
  function calculateLengthOfNaturalAsSetUsingExponentiation() {
    var n = parseInt(document.getElementById(&quot;n_input_ter&quot;).value, 10);
    document.getElementById(&quot;n_output_ter_number&quot;).value = 2 ** (n+1) - 3;
    if (window.BigInt)
        document.getElementById(&quot;n_output_ter_bigint&quot;).value = BigInt(2) ** (BigInt(n+1)) - BigInt(3);
  }
  calculateLengthOfNaturalAsSetUsingExponentiation();
&lt;/script&gt;
&lt;/div&gt;

&lt;h2 id=&quot;order-type-of-infinite-strings&quot;&gt;Order-type of infinite strings&lt;/h2&gt;

&lt;p&gt;It is possible to generalize this problem to infinite &lt;a href=&quot;https://en.wikipedia.org/wiki/Ordinal_number&quot;&gt;ordinal numbers&lt;/a&gt;.  The string &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and its length &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are defined by induction for any ordinal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the empty string &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_0 = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the string with one character &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;∅&quot;&lt;/code&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_1 = 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. For &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the string obtained by concatenating the string &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, a comma character &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;,&quot;&lt;/code&gt;, an opening brace character &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;{&quot;&lt;/code&gt;, the string &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and finally a closing brace character &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;}&quot;&lt;/code&gt;. It is of length &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_{\alpha+1} = L_\alpha + 2 + L_\alpha + 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Beware that ordinal operations are not commutative so this cannot be simplified a priori!&lt;/p&gt;

&lt;p&gt;For any limit ordinal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the string &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is obtained by taking the union of the &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-sequence &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha &amp;lt; \lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This is still a well-defined sequence since these strings always agree on the character at a given index. &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is of length &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;munder&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_\lambda = \sup_{\alpha &amp;lt; \lambda} L_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;By construction, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an increasing sequence of ordinals and so &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_\alpha \geq \alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Can we calculate it more explicitly?&lt;/p&gt;

&lt;div style=&quot;border: 1px dashed black; padding: .5em; margin: 1em&quot;&gt;
Warning: The rest of the blog post gives the solution to this puzzle, so you
might want to have fun solving it yourself first and then go back checking
my proposed solution later 😉...
&lt;/div&gt;

&lt;p&gt;Let’s consider some examples. In the case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\omega = \mathbb N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the string &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be more easily seen as the &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-concatenation of finite strings: the empty set, a comma, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; surrounded by braces, a comma, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; surrounded by braces, a comma, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; surrounded by braces, a comma, etc So clearly &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_{\omega} = \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and this aligns with the definition for limit ordinal.&lt;/p&gt;

&lt;p&gt;In order to write &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\omega+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, you first write the elements of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, followed by a comma, followed by an opening brace, followed by the elements of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and finally followed by a closing brace. So really this is an &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\omega + \omega + 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; sequence. This aligns with the definition in the successor ordinal case, using the fact that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k + \omega = \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for any &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;k &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_{\omega+1} = L_\omega + 2 + L_\omega + 1 = \omega + 2 + \omega + 1 = \omega2 + 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;Continuing for other successor ordinals, one can write&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_{\omega+2} = L_{\omega+1} + 2 + L_{\omega+1} + 1 = \omega2 + 1 + 2 + \omega2 + 1 + 1 = \omega4 + 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;8&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_{\omega+3} = L_{\omega+2} + 2 + L_{\omega+2} + 1 = \omega4 + 1 + 2 + \omega4 + 2 + 1 = \omega8 + 3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;and more generally for all &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_{\omega+n} = \omega{2^n} + n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;To calculate &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;S_{\omega2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, one takes the union for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of the &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_{\omega+n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-sequence of characters describing &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\omega+n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Its length is&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;munder&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_{\omega2} = {\sup_{n &amp;lt; \omega} \left(\omega{2^n} + n\right)} = \omega^2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;Then the exact same calculation as above leads for all &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_{\omega2+n} = \omega^2{2^n} + n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;Continuing this kind of calculations for larger values &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;…&lt;/mo&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\omega3, \omega4, \dots, \omega^2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; suggests the following conjecture: For every infinite ordinal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the order-type of the sequence describing its element is:&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_{\alpha} = L_{\omega \beta + n} = \omega^\beta 2^n + n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;where &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n &amp;lt; \omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are the quotient and remainder of the euclidean division of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;Let’s sketch the proof by induction on &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We already explained the case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta = 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in the example above. Similarly, for a given &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, it is enough to prove the case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the formula for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;n &amp;gt; 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; follows, using the property &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\forall k &amp;lt; \omega, k + \omega^\beta = \omega^\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and the calculations we gave for the case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta = 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;If the formula holds for some &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta \geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then because &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\omega{(\beta + 1)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
is limit and the lengths are increasing, the formula holds for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta + 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;munder&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;munder&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_{\omega {(\beta + 1)}} =
L_{\omega\beta + \omega} = {\sup_{n &amp;lt; \omega} L_{\omega \beta + n}} =
{\sup_{n &amp;lt; \omega} {(\omega^\beta 2^n + n)} } = \omega^{\beta+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;Finally, if the formula holds for all &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; below a limit ordinal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then because the lengths are increasing the formula holds for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; too:&lt;/p&gt;

&lt;p&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;munder&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;munder&gt;&lt;mo lspace=&quot;0em&quot; rspace=&quot;0em&quot;&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;TeX&quot;&gt;L_{\omega \lambda} =
{\sup_{\beta &amp;lt; \lambda} L_{\omega \beta}} =
{\sup_{\beta &amp;lt; \lambda} \omega^{\beta}} = \omega^{\lambda}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;Q.E.D.&lt;/p&gt;

&lt;div style=&quot;border: 1px dashed black; padding: .5em; margin: 1em&quot;&gt;
Sorry, no JavaScript program to calculate these infinite strings 😇...
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Review of my year 2019 at Igalia</title>
   <link href="https://frederic-wang.fr//2019/12/10/review-of-my-year-2019-at-igalia/"/>
   <updated>2019-12-10T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2019/12/10/review-of-my-year-2019-at-igalia</id>
   <content type="html">
&lt;h2 id=&quot;co-owner-and-mentorship&quot;&gt;Co-owner and mentorship&lt;/h2&gt;

&lt;p&gt;In 2016, I was among the new software engineers who joined Igalia. Three years later I applied to become co-owner of the company and the legal paperwork was completed in April. As my colleague Andy explained &lt;a href=&quot;https://wingolog.org/archives/2013/06/13/but-that-would-be-anarchy&quot;&gt;on his blog&lt;/a&gt;, this does not change a lot of things in practice because most of the decisions are taken within the assembly. However, I’m still very happy and proud of having achieved this step 😄&lt;/p&gt;

&lt;p&gt;One of my new duty has been to be the “mentor” of &lt;a href=&quot;https://www.igalia.com/igalian/mshin&quot;&gt;Miyoung Shin&lt;/a&gt; since February and to help with her integration at Igalia. Shin has been instrumental in &lt;a href=&quot;https://www.youtube.com/watch?v=mF7w4LvqlRU&quot;&gt;Igalia’s project to improve Chromium’s Code Health&lt;/a&gt; with an &lt;a href=&quot;https://chromium-review.googlesource.com/q/owner:myid.shin%2540igalia.com&quot;&gt;impressive number of ~500 commits&lt;/a&gt;. You can watch the video of &lt;a href=&quot;https://www.youtube.com/watch?v=t2PcAnZV5r8&quot;&gt;her BlinkOn lightning talk&lt;/a&gt; on YouTube. In addition to her excellent technical contribution she has also invested her energy in company’s life, helping with the organization of social activities during our &lt;a href=&quot;https://www.igalia.com/2018/06/04/The-23rd-biannual-Igalia-Summit.html&quot;&gt;summits&lt;/a&gt;, something which has really been appreciated by her colleagues. I’m really glad that she has recently entered the assembly and will be able to
take a more active role in the company’s decisions!&lt;/p&gt;

&lt;figure&gt;
  &lt;img style=&quot;max-width: 100%&quot; src=&quot;images/julie-shin-blinkon-11.jpg&quot; alt=&quot;Julie and Shin at BlinkOn11&quot; /&gt;
                                                                                   &lt;figcaption style=&quot;font-style: italic; font-size: small;&quot;&gt;Julie (left) and Shin (right) at BlinkOn 11.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&quot;working-with-new-colleagues&quot;&gt;Working with new colleagues&lt;/h2&gt;

&lt;p&gt;Igalia also hired
&lt;a href=&quot;https://frederic-wang.fr/review-of-igalia-s-web-platform-activities-H2-2018.html&quot;&gt;Cathie Chen&lt;/a&gt; last December and I’ve gotten the chance to work with her as part of our Web Platform collaboration with AMP. Cathie has been very productive and we have been able to push forward several features, mostly related to scrolling. Additionally, she implemented &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver&quot;&gt;ResizeObserver&lt;/a&gt; in WebKit, which is a quite exciting new feature for web developers!&lt;/p&gt;

&lt;figure&gt;
  &lt;img style=&quot;max-width: 100%&quot; src=&quot;images/cathie-溜溜溜.jpg&quot; alt=&quot;Cathie Chen signing 溜溜溜&quot; /&gt;
  &lt;figcaption style=&quot;font-style: italic; font-size: small;&quot;&gt;Cathie executing traditional Chinese sign language.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The other project I’ve been contributed to this year is
&lt;a href=&quot;https://mathml.igalia.com/&quot;&gt;MathML&lt;/a&gt;. We are introducing new
math and font concepts into Chromium’s new layout engine, so the project is
both technically challenging and fascinating. For this project,
I was able to rely on
&lt;a href=&quot;https://www.igalia.com/igalian/rbuis&quot;&gt;Rob&lt;/a&gt;’s excellent development skills
to complete &lt;a href=&quot;https://mathml.igalia.com/news/2019/07/25/project-status-after-one-semester/#new&quot;&gt;this year’s implementation roadmap&lt;/a&gt; on our Chromium branch
and start &lt;a href=&quot;https://chromium-review.googlesource.com/q/hashtag:%22mathml%22&quot;&gt;upstreaming patches&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In addition, &lt;a href=&quot;https://mathml.igalia.com/news/2019/10/31/mathml-in-chromium-upstream-process-started&quot;&gt;a lot of extra non-implementation effort&lt;/a&gt; has been done which led to consensus
between browser implementers, MathML enthusiasts and other web developer groups.
&lt;a href=&quot;https://bkardell.com/&quot;&gt;Brian Kardell&lt;/a&gt;
became a developer advocate for Igalia in March
and has been very helpful talking to different people, explaining our project
and introducing ideas from the Extensible Web, HTML or CSS Communities. I strongly
recommend his
recent &lt;a href=&quot;https://mathml.igalia.com/news/2019/12/03/igalia-chats-with-neil-soiffer-on-mathml/#new&quot;&gt;Igalia chat&lt;/a&gt;
and &lt;a href=&quot;https://www.youtube.com/watch?v=uajCY9rGqfw&quot;&gt;lightning talk&lt;/a&gt; for a good
explanation of what we have been doing this year.&lt;/p&gt;

&lt;figure&gt;
  &lt;img style=&quot;max-width: 100%&quot; src=&quot;images/brian-blinkon-11.jpg&quot; alt=&quot;Photo of Brian&quot; /&gt;
                                                                                   &lt;figcaption style=&quot;font-style: italic; font-size: small;&quot;&gt;Brian presenting his lightning talk at BlinkOn11.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&quot;conferences&quot;&gt;Conferences&lt;/h2&gt;

&lt;p&gt;These are the developer conferences I attended this year and gave talks
about our MathML project:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;April (Toronto): &lt;a href=&quot;https://groups.google.com/a/chromium.org/d/msg/blink-dev/HxTVkDgXDWw/jCSkQlsCBwAJ&quot;&gt;BlinkOn 10&lt;/a&gt; - &lt;a href=&quot;https://www.slideshare.net/igalia/mathml-in-layoutng-blinkon-10&quot;&gt;talk&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;October (A Coruña): &lt;a href=&quot;https://webengineshackfest.org/2019/&quot;&gt;Web Engines Hackfest 2019&lt;/a&gt; - &lt;a href=&quot;https://www.slideshare.net/igalia/mathml-in-browsers-web-engines-hackfest-2019&quot;&gt;talk&lt;/a&gt;&amp;amp;&lt;a href=&quot;https://youtu.be/Q8Z1D2i61j8?list=PL4sEzdAGvRgDCN6qACHWs04mQQTWBkdGq&quot;&gt;video&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;November (Sunnyvalle): &lt;a href=&quot;https://groups.google.com/a/chromium.org/d/msg/blink-dev/O01tTGsI9xc/pBo12Qa2EQAJ&quot;&gt;BlinkOn 11&lt;/a&gt; - &lt;a href=&quot;https://www.slideshare.net/igalia/mathml-core&quot;&gt;talk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure&gt;
  &lt;img style=&quot;max-width: 100%&quot; src=&quot;images/fred-blinkon-11-talk.jpg&quot; alt=&quot;Me at BlinkOn 11&quot; /&gt;
  &lt;figcaption style=&quot;font-style: italic; font-size: small;&quot;&gt;Me, giving my BlinkOn 11 talk on &quot;MathML Core&quot;.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;As usual it was nice to meet the web platform and chromium communities during
these events and to hear about the great projects happening. I’m also super
excited that the assembly decided to
&lt;a href=&quot;https://blogs.igalia.com/mrego/2019/12/05/web-engines-hackfest-2020-new-dates-new-venue/&quot;&gt;try something new for my favorite event&lt;/a&gt;.
Indeed, next year we will organize the Web Engines Hackfest in May to avoid
conflicts with other browser events but more importantly, we will move to
a bigger venue so that we can welcome more people. I’m really looking forward
to seeing how things go!&lt;/p&gt;

&lt;h2 id=&quot;paris---a-coruña-by-train&quot;&gt;Paris - A Coruña by train&lt;/h2&gt;

&lt;p&gt;Environmental protection is an important topic discussed in our cooperative.
This year, I’ve tried to reduce my carbon footprint when traveling to
Igalia’s headquarters by using train instead of plane. Obviously the latter
is faster but the former is much more confortable and has less security
constraints.
It is possible to use high-speed train from Paris to Barcelona and then a
Trenhotel to avoid a hotel night. For a quantitative comparison,
let’s consider this table, based on my personal travel experience:&lt;/p&gt;

&lt;table style=&quot;padding: 1em; width: 100%&quot;&gt;
&lt;tr&gt;
  &lt;th&gt;Traject&lt;/th&gt;
  &lt;th&gt;Transport&lt;/th&gt;
  &lt;th&gt;Duration&lt;/th&gt;
  &lt;th&gt;Price&lt;/th&gt;
  &lt;th&gt;CO2/passenger&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;Paris - Barcelona&lt;/td&gt;
  &lt;td&gt;TGV&lt;/td&gt;
  &lt;td&gt;~6h30&lt;/td&gt;
  &lt;td&gt;60-90€&lt;/td&gt;
  &lt;td&gt;6kg&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;Barcelona - A Coruña&lt;/td&gt;
  &lt;td&gt;Trenhotel&lt;/td&gt;
  &lt;td&gt;~15h&lt;/td&gt;
  &lt;td&gt;40-60€&lt;/td&gt;
  &lt;td&gt;Unspecified&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;Paris - A Coruña&lt;br /&gt;(via Madrid)&lt;/td&gt;
  &lt;td&gt;Iberia&lt;/td&gt;
  &lt;td&gt;4h30-5h&lt;/td&gt;
  &lt;td&gt;100-150€&lt;/td&gt;
  &lt;td&gt;192kg&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;The price depends on how early the tickets are booked but it is more or less the
same for train and plane.
Renfe does not seem to indicate estimated CO2 emission and trains to Galicia are
&lt;a href=&quot;https://en.wikipedia.org/wiki/Trenhotel#Traction&quot;&gt;probably not the most eco-friendly&lt;/a&gt;. However, using this &lt;a href=&quot;https://calculator.carbonfootprint.com/calculator.aspx?tab=6&quot;&gt;online estimator&lt;/a&gt;, the 1200 kilometers
between Barcelona and A Coruña
would emit 50kg by national train. This would mean a reduction of 71% in the
emission of CO2, which is quite significant. Hopefully things will get better
when one day
&lt;a href=&quot;https://en.wikipedia.org/wiki/AVE&quot;&gt;AVE&lt;/a&gt; is available between Madrid and
A Coruña… 😉&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Review of Igalia&apos;s Web Platform activities (H2 2018)</title>
   <link href="https://frederic-wang.fr//2019/02/27/review-of-igalia-s-web-platform-activities-H2-2018/"/>
   <updated>2019-02-27T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2019/02/27/review-of-igalia-s-web-platform-activities-H2-2018</id>
   <content type="html">
&lt;p&gt;This blog post reviews Igalia’s activity around the
&lt;a href=&quot;https://en.wikipedia.org/wiki/Web_platform&quot;&gt;Web Platform&lt;/a&gt;, focusing on
the second semester of 2018.&lt;/p&gt;

&lt;h2 id=&quot;projects&quot;&gt;Projects&lt;/h2&gt;

&lt;h3 id=&quot;mathml&quot;&gt;MathML&lt;/h3&gt;

&lt;p&gt;During 2018 we have continued discussions to implement MathML in Chromium with Google and people interested in math layout. The project was finally &lt;a href=&quot;https://mathml.igalia.com/news/2019/02/12/launch-of-the-project/#new&quot;&gt;launched early this year&lt;/a&gt; and we have encouraging progress. Stay tuned for more details!&lt;/p&gt;

&lt;h3 id=&quot;javascript&quot;&gt;Javascript&lt;/h3&gt;

&lt;p&gt;As mentioned in the previous report, Igalia has proposed and developed the specification for &lt;a href=&quot;https://github.com/tc39/proposal-bigint/&quot;&gt;BigInt&lt;/a&gt;, enabling math on arbitrary-sized integers in JavaScript. We’ve continued to land patches for
 &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1366287&quot;&gt;BigInt support in SpiderMonkey&lt;/a&gt; and &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=179001&quot;&gt;JSC&lt;/a&gt;. For the
latter, you can watch this
&lt;a href=&quot;https://vimeo.com/304865023&quot;&gt;video demonstrating the current support&lt;/a&gt;. Currently, these
two support are under a preference flag but we hope to make it enable by default
after we are done polishing the implementations. We also added support for BigInt to several Node.js APIs (e.g. &lt;a href=&quot;https://github.com/nodejs/node/pull/20220&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fs.Stat&lt;/code&gt;&lt;/a&gt; or &lt;a href=&quot;https://github.com/nodejs/node/pull/21256&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;process.hrtime.bigint&lt;/code&gt;&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Regarding “object-oriented” features, we submitted patches
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=174212&quot;&gt;private and public instance fields support to JSC&lt;/a&gt;
and they are pending review. At the same time, we are working on
&lt;a href=&quot;https://chromium-review.googlesource.com/c/v8/v8/+/1301018&quot;&gt;private methods for V8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We contributed other nice features to V8 such as a spec change for template
strings and iterator protocol, support for
&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries&quot;&gt;Object.fromEntries&lt;/a&gt;, &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/description&quot;&gt;Symbol.prototype.description&lt;/a&gt;, miscellaneous optimizations.&lt;/p&gt;

&lt;p&gt;At TC39, we maintained or developed many proposals (BigInt, class fields,
private methods, decorators, …) and led the ECMAScript Internationalization
effort. Additionally, at the WebAssembly Working Group we edited the WebAssembly
JS and Web API and early version of WebAssembly/ES Module integration specifications.&lt;/p&gt;

&lt;p&gt;Last but not least, we contributed various conformance tests to test262
and Web Platform Tests to ensure interoperability between the various features
mentioned above (BigInt, Class fields, Private methods…). In Node.js, we worked on &lt;a href=&quot;https://github.com/nodejs/node/pull/24035&quot;&gt;the new Web Platform Tests driver with update automation&lt;/a&gt; and continued porting and fixing more Web Platform Tests in Node.js core.&lt;/p&gt;

&lt;p&gt;We also worked on &lt;a href=&quot;https://github.com/nodejs/node/pull/24035&quot;&gt;the new Web Platform Tests driver with update automation&lt;/a&gt;, and continued porting and fixing more Web Platform Tests in Node.js core. Outside of core, we implemented &lt;a href=&quot;https://github.com/nodejs/llnode/pull/206&quot;&gt;the initial JavaScript API for llnode&lt;/a&gt;, a Node.js/V8 plugin for the LLDB debugger.&lt;/p&gt;

&lt;h3 id=&quot;accessibility&quot;&gt;Accessibility&lt;/h3&gt;

&lt;p&gt;Igalia has continued its involvement at the W3C. We have achieved the following:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.w3.org/2018/11/aria-charter.html&quot;&gt;The ARIA Working Group Charter&lt;/a&gt; has been renewed&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.w3.org/TR/accname-1.1/&quot;&gt;AccName 1.1&lt;/a&gt;, &lt;a href=&quot;https://www.w3.org/TR/graphics-aria-1.0/&quot;&gt;Graphics ARIA 1.0&lt;/a&gt; and &lt;a href=&quot;https://www.w3.org/TR/graphics-aam-1.0/&quot;&gt;Graphics AAM 1.0&lt;/a&gt; became recommendations.&lt;/li&gt;
  &lt;li&gt;A new version of the 1.2 suite (ARIA, Core-AAM, AccName and the Authoring Practices) is available. In particular, we published a first working draft for &lt;a href=&quot;https://www.w3.org/TR/wai-aria-1.2/&quot;&gt;ARIA 1.2&lt;/a&gt; which will focus on role parity with HTML 5 elements. A working draft for &lt;a href=&quot;https://w3c.github.io/core-aam/&quot;&gt;Core-AAM 1.2&lt;/a&gt; is also available.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We are also collaborating with Google to implement ATK support in Chromium. This work will make it possible for users of the Orca screen reader to use Chrome/Chromium as their browser. During H2 we began implementing the foundational accessibility support. During H1 2019 we will continue this work. It is our hope that sufficient progress will be made during H2 2019 for users to begin using Chrome with Orca.&lt;/p&gt;

&lt;h3 id=&quot;web-platform-predictability&quot;&gt;Web Platform Predictability&lt;/h3&gt;

&lt;p&gt;On Web Platform Predictability, we’ve continued our collaboration with AMP to do bug fixes and implement new features in WebKit. You can read a review of the work done in 2018 on the &lt;a href=&quot;https://amphtml.wordpress.com/2018/12/06/contributing-to-webkit-for-a-more-predictable-web-platform/&quot;&gt;AMP blog post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We have worked on a lot of interoperability issues related to editing and selection thanks to financial support from Bloomberg. For example when &lt;a href=&quot;https://github.com/w3c/editing/issues/163&quot;&gt;deleting the last cell of a table&lt;/a&gt; some browsers keep an empty table while others delete the whole table. The latter can be problematic, for example if users press backspace continuously to delete a long line, they can accidentally end up deleting the whole table. This was &lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=731320&quot;&gt;fixed in Chromium&lt;/a&gt; and &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=173117&quot;&gt;WebKit&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Another issue is that style is lost when transforming some text into list items. When running &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand&quot;&gt;execCommand()&lt;/a&gt; with insertOrderedList/insertUnorderedList on some styled paragraph, the new list item loses the original text’s style. This behavior is not interoperable and &lt;a href=&quot;https://github.com/w3c/editing/issues/179&quot;&gt;we have proposed a fix&lt;/a&gt;  so that Firefox, Edge, Safari and Chrome behave the same for this operation. We &lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=149901&quot;&gt;landed a patch for Chromium&lt;/a&gt;. After discussion with Apple, it was decided not to implement this change in Safari as it would break some iOS rich text editor apps, mismatching the required platform behavior.&lt;/p&gt;

&lt;p&gt;We have also been working on CSS Grid interoperability. We imported Web Platform Tests into WebKit (cf bugs &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=191515&quot;&gt;191515&lt;/a&gt; and &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=191369&quot;&gt;191369&lt;/a&gt; and at the same time completing the missing features and bug fixes so that browsers using WebKit are interoperable, passing 100% of the Grid test suite. For details, see &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=191358&quot;&gt;191358&lt;/a&gt;,
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=189582&quot;&gt;189582&lt;/a&gt;, &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=189698&quot;&gt;189698&lt;/a&gt;, &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=191881&quot;&gt;191881&lt;/a&gt;, &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=191938&quot;&gt;191938&lt;/a&gt;, &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=170175&quot;&gt;170175&lt;/a&gt;, &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=191473&quot;&gt;191473&lt;/a&gt; and &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=191963&quot;&gt;191963&lt;/a&gt;. Last but not least, we are exporting more than 100 internal browser tests to the Web Platform test suite.&lt;/p&gt;

&lt;h3 id=&quot;css&quot;&gt;CSS&lt;/h3&gt;

&lt;p&gt;Bloomberg is supporting our work to develop new CSS features. One of the new exciting features we’ve been working on is CSS Containment. The goal is to improve the rendering performance of web pages by isolating a subtree from the rest of the document. You can read &lt;a href=&quot;https://blogs.igalia.com/mrego/2019/01/11/an-introduction-to-css-containment/#wrap-up&quot;&gt;details on Manuel Rego’s blog post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Regarding &lt;a href=&quot;https://www.w3.org/TR/css-grid-2/&quot;&gt;CSS Grid Layout&lt;/a&gt; we’ve continued our maintenance duties, bug triage of the Chromium and WebKit bug trackers, and fixed the most severe bugs. One change with impact on end users was related to &lt;a href=&quot;https://blogs.igalia.com/mrego/2018/08/10/changes-on-css-grid-layout-in-percentages-and-indefinite-height/&quot;&gt;how percentages row tracks and gaps work in grid containers with indefinite size&lt;/a&gt;, the last spec resolution was implemented in both Chromium and WebKit. We are finishing the level 1 of the specification with some missing/incomplete features. First we’ve been working on the new Baseline Alignment algorithm (cf. CSS WG issues &lt;a href=&quot;https://github.com/w3c/csswg-drafts/issues/1039&quot;&gt;1039&lt;/a&gt;, &lt;a href=&quot;https://github.com/w3c/csswg-drafts/issues/1365&quot;&gt;1365&lt;/a&gt; and &lt;a href=&quot;https://github.com/w3c/csswg-drafts/issues/1409&quot;&gt;1409&lt;/a&gt;). We fixed related issues in &lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=704713&quot;&gt;Chromium&lt;/a&gt; and &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=145566&quot;&gt;WebKit&lt;/a&gt;. Similarly, we’ve worked on Content Alignment logic (see CSS WG issue &lt;a href=&quot;https://github.com/w3c/csswg-drafts/issues/2557&quot;&gt;2557&lt;/a&gt;) and resolved &lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=844744&quot;&gt;a bug in Chromium&lt;/a&gt;. The new algorithm for baseline alignment caused an important performance regression for certain resizing use cases so we’ve fixed them with some performance optimization and &lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=873452&quot;&gt;that landed in Chromium&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We have also worked on various topics related to &lt;a href=&quot;https://www.w3.org/TR/css-text-3/&quot;&gt;CSS Text 3&lt;/a&gt;. We’ve fixed several bugs to increase the pass rate for the Web Platform test suite in Chromium such as bugs &lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=854624&quot;&gt;854624&lt;/a&gt;, &lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=900727&quot;&gt;900727&lt;/a&gt; and &lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=768363&quot;&gt;768363&lt;/a&gt;. We are also working on a &lt;a href=&quot;https://drafts.csswg.org/css-text-3/#white-space-property&quot;&gt;new CSS value ‘break-spaces’ for the ‘white-space’ property&lt;/a&gt;. For details, see the CSS WG discussions: &lt;a href=&quot;https://github.com/w3c/csswg-drafts/issues/2465&quot;&gt;issue 2465&lt;/a&gt; and &lt;a href=&quot;https://github.com/w3c/csswg-drafts/pull/2841&quot;&gt;pull request&lt;/a&gt;. We &lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=767634&quot;&gt;implemented this new property in Chromium&lt;/a&gt; under a CSSText3BreakSpaces flag. Additionally, we are currently &lt;a href=&quot;https://chromium-review.googlesource.com/c/chromium/src/+/1363971&quot;&gt;porting this implementation to Chromium’s new layout engine ‘LayoutNG’&lt;/a&gt;. We have plans to &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=177327&quot;&gt;implement this feature&lt;/a&gt; in WebKit during the second semester.&lt;/p&gt;

&lt;h3 id=&quot;multimedia&quot;&gt;Multimedia&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API&quot;&gt;WebRTC&lt;/a&gt;: The libwebrtc branch is now upstreamed in WebKit and has been tested with popular servers.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Media_Source_Extensions_API&quot;&gt;Media Source Extensions&lt;/a&gt;: WebM MSE support is upstreamed in WebKit.&lt;/li&gt;
  &lt;li&gt;We implemented basic support for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;video&amp;gt;&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;audio&amp;gt;&lt;/code&gt; elements in Servo.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;other-activities&quot;&gt;Other activities&lt;/h2&gt;

&lt;h3 id=&quot;web-engines-hackfest-2018&quot;&gt;Web Engines Hackfest 2018&lt;/h3&gt;

&lt;p&gt;Last October, we organized the
&lt;a href=&quot;https://webengineshackfest.org/2018/&quot;&gt;Web Engines Hackfest&lt;/a&gt; at our A Coruña
office. It was a great event with about 70 attendees from all the web engines,
thank you to all the participants! As usual, you can find more information on
the &lt;a href=&quot;https://github.com/Igalia/webengineshackfest/wiki/2018&quot;&gt;event wiki&lt;/a&gt; including
link to slides and videos of speakers.&lt;/p&gt;

&lt;h3 id=&quot;tpac-2018&quot;&gt;TPAC 2018&lt;/h3&gt;

&lt;p&gt;Again in October, but this time in Lyon (France), 12 people from Igalia attended TPAC and participated in several discussions on the different meetings. Igalia had a booth there showcasing several demos of our last developments running on top of WPE (a WebKit port for embedded devices). Last, &lt;a href=&quot;https://blogs.igalia.com/mrego/2019/02/11/summary-of-a-week-in-lyon-for-tpac-2018/&quot;&gt;Manuel Rego gave a talk on the W3C Developers Meetup about how to contribute to CSS&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;thisjavascript-state-of-browsers&quot;&gt;This.Javascript: State of Browsers&lt;/h3&gt;

&lt;p&gt;In December, we also participated with other browser developers to the online &lt;a href=&quot;https://www.youtube.com/watch?v=lD5IhYNIKvk&quot;&gt;This.Javascript: State of Browsers&lt;/a&gt; event organized by &lt;a href=&quot;https://www.thisdot.co/&quot;&gt;ThisDot&lt;/a&gt;. We talked more specifically about the current work in WebKit.&lt;/p&gt;

&lt;h3 id=&quot;new-igalians&quot;&gt;New Igalians&lt;/h3&gt;

&lt;p&gt;We are excited to announce that new Igalians are joining us to continue our Web platform effort:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/cchen&quot;&gt;Cathie Chen&lt;/a&gt;, a Chinese engineer with about 10 years of experience working on browsers. Among other contributions to Chromium, she worked on the new LayoutNG code and added support for list markers.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/clima/&quot;&gt;Caio Lima&lt;/a&gt; a Brazilian developer who recently graduated from the Federal University of Bahia. He participated to our coding experience program and notably worked on BigInt support in JSC.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/obrufau/&quot;&gt;Oriol Brufau&lt;/a&gt; a recent graduate in math from Barcelona who is also involved in the CSSWG and the development of various browser engines. He participated to our coding experience program and implemented the CSS Logical Properties and Values in WebKit and Chromium.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;coding-experience-programs&quot;&gt;Coding Experience Programs&lt;/h3&gt;

&lt;p&gt;Last fall, &lt;a href=&quot;https://sauleau.com/&quot;&gt;Sven Sauleau&lt;/a&gt; joined our coding experience program and started to work on various BigInt/WebAssembly improvements in V8.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;We are thrilled with the web platform achievements we made last semester and we look forward to more work on the web platform in 2019!&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Review of Igalia&apos;s Web Platform activities (H1 2018)</title>
   <link href="https://frederic-wang.fr//2018/07/10/review-of-igalia-s-web-platform-activities-H1-2018/"/>
   <updated>2018-07-10T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2018/07/10/review-of-igalia-s-web-platform-activities-H1-2018</id>
   <content type="html">
&lt;p&gt;This is the semiyearly report to let people know a bit more about Igalia’s activities around &lt;a href=&quot;https://en.wikipedia.org/wiki/Web_platform&quot;&gt;the Web Platform&lt;/a&gt;,
focusing on the activity of the first semester of year 2018.&lt;/p&gt;

&lt;h2 id=&quot;projects&quot;&gt;Projects&lt;/h2&gt;

&lt;h3 id=&quot;javascript&quot;&gt;Javascript&lt;/h3&gt;

&lt;p&gt;Igalia has proposed and developed the specification for &lt;a href=&quot;https://github.com/tc39/proposal-bigint/&quot;&gt;BigInt&lt;/a&gt;, enabling math on arbitrary-sized integers in JavaScript. Igalia has been developing implementations in &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1366287&quot;&gt;SpiderMonkey&lt;/a&gt; and &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=179001&quot;&gt;JSC&lt;/a&gt;, where core patches have landed. Chrome and Node.js shipped implementations of BigInt, and the proposal is at Stage 3 in TC39.&lt;/p&gt;

&lt;p&gt;Igalia is also continuing to develop several features for JavaScript classes, including &lt;a href=&quot;https://github.com/tc39/proposal-class-fields&quot;&gt;class fields&lt;/a&gt;. We developed a prototype implementation of class fields in JSC. We have maintained Stage 3 in TC39 for our specification of class features, including static variants.&lt;/p&gt;

&lt;p&gt;We also participated to &lt;a href=&quot;https://webassembly.org/&quot;&gt;WebAssembly&lt;/a&gt; (now at First Public Working Draft) and &lt;a href=&quot;https://github.com/tc39/proposals/blob/master/ecma402/README.md&quot;&gt;internationalization features&lt;/a&gt; for new features such as Intl.RelativeTimeFormat (currently at Stage 3).&lt;/p&gt;

&lt;p&gt;Finally, we have written more tests for JS language features, performed maintenance and optimization and participated to other spec discussions at TC39. Among performance optimizations, we have contributed a significant optimization to Promise performance to V8.&lt;/p&gt;

&lt;h3 id=&quot;accessibility&quot;&gt;Accessibility&lt;/h3&gt;

&lt;p&gt;Igalia has continued the standardization effort at the W3C. We are pleased to
announce that the following milestones have been reached:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.w3.org/TR/graphics-aria-1.0/&quot;&gt;WAI-ARIA Graphics Module&lt;/a&gt; and &lt;a href=&quot;https://www.w3.org/TR/graphics-aam-1.0/&quot;&gt;Graphics Accessibility API Mappings&lt;/a&gt; moved to proposed recommendation.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.w3.org/TR/accname-1.1/&quot;&gt;Accessible Name and Description Computation&lt;/a&gt; moved to Candidate Recommendation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A new &lt;a href=&quot;https://www.w3.org/2015/10/aria-charter.html&quot;&gt;charter&lt;/a&gt; for the ARIA WG as well as drafts for &lt;a href=&quot;https://w3c.github.io/aria/&quot;&gt;ARIA 1.2&lt;/a&gt; and &lt;a href=&quot;https://w3c.github.io/core-aam/&quot;&gt;Core Accessibility API Mappings 1.2&lt;/a&gt; are in preparation and are expected to be published this summer.&lt;/p&gt;

&lt;p&gt;On the development side, we implemented new ARIA features and fixed several bugs in WebKit and Gecko. We have refined platform-specific tools that are needed to automate accessibility Web Platform Tests (examine the accessibility tree, obtain information about accessible objects, listen for accessibility events, etc) and hope we will be able to integrate them in Web Platform Tests. Finally we continued maintenance of the &lt;a href=&quot;https://help.gnome.org/users/orca/stable/&quot;&gt;Orca&lt;/a&gt; screen reader, in particular fixing some accessibility-event-flood issues in Caja and Nautilus that had significant impact on Orca users.&lt;/p&gt;

&lt;h3 id=&quot;web-platform-predictability&quot;&gt;Web Platform Predictability&lt;/h3&gt;

&lt;p&gt;Thanks to support from &lt;a href=&quot;http://www.bloomberg.com/company/&quot;&gt;Bloomberg&lt;/a&gt;, we were
able to improve interoperability for various Editing/Selection use cases.
For example when &lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=731000&quot;&gt;using backspace to delete text content just after a table&lt;/a&gt; (&lt;a href=&quot;https://github.com/w3c/editing/issues/164&quot;&gt;W3C issue&lt;/a&gt;) or &lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=731913&quot;&gt;deleting a list item inside a content cell&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We were also pleased to continue our collaboration with &lt;a href=&quot;https://www.ampproject.org/&quot;&gt;the AMP project&lt;/a&gt;.
They provide us a list of bugs and enhancement requests
(mostly for the WebKit iOS port) with concrete use cases and repro cases.
We check the status and plans in WebKit, do
debugging/analysis and of course actually submit patches to address
the issues. That’s not always easy (e.g. when it is touching proprietary code
or requires to find some specific reviewers) but at least we make discussions move
forward. The topics are very diverse, it can be about
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=186593&quot;&gt;MessageChannel API&lt;/a&gt;,
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=106133&quot;&gt;CSSOM View&lt;/a&gt;,
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=177684&quot;&gt;CSS transitions&lt;/a&gt;,
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=170784&quot;&gt;CSS animations&lt;/a&gt;,
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=149264&quot;&gt;iOS frame scrolling&lt;/a&gt;
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=183586&quot;&gt;custom elements&lt;/a&gt; or
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=165627&quot;&gt;navigating special links&lt;/a&gt;
and many others.&lt;/p&gt;

&lt;p&gt;In general, our projects are always a good opportunity to write new
&lt;a href=&quot;https://github.com/web-platform-tests/wpt&quot;&gt;Web Platform Tests&lt;/a&gt; import them
in WebKit/Chromium/Mozilla or improve the testing infrastructure. We have been able
to work on tests for several specifications we work on.&lt;/p&gt;

&lt;h3 id=&quot;css&quot;&gt;CSS&lt;/h3&gt;

&lt;p&gt;Thanks to support from &lt;a href=&quot;http://www.bloomberg.com/company/&quot;&gt;Bloomberg&lt;/a&gt; we’ve been pursuing our activities around CSS:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;CSS Grid Layout: we &lt;a href=&quot;https://blogs.igalia.com/mrego/2018/04/04/getting-rid-of-grid-prefix-on-css-grid-layout-gutter-properties/&quot;&gt;removed “grid-“ prefix from gutter properties&lt;/a&gt; and added support percentage to column-gap property in Multicolumn. We worked on &lt;a href=&quot;https://blogs.igalia.com/jfernandez/2017/05/03/can-i-use-css-box-alignment/&quot;&gt;baseline alignment&lt;/a&gt;. Finally we are now improving the memory structures of the implementation in order to make bigger grids possible.&lt;/li&gt;
  &lt;li&gt;Composition underline is no longer always black in Chromium, it uses now the &lt;a href=&quot;https://twitter.com/regocas/status/978638089781465088&quot;&gt;current text color for by default&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;CSS Containment: We updated Chromium implementation to align with the spec and fixed several bugs.&lt;/li&gt;
  &lt;li&gt;CSS Text 3: We started to implement the new &lt;a href=&quot;https://drafts.csswg.org/css-text-3/#valdef-overflow-wrap-break-spaces&quot;&gt;CSS value ‘break-spaces’&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We also got more involved in the CSS Working Group, in particular participating to the &lt;a href=&quot;https://blogs.igalia.com/mrego/2018/04/16/csswg-f2f-berlin-2018/&quot;&gt;face-to-face meeting in Berlin&lt;/a&gt; and will attend &lt;a href=&quot;https://www.w3.org/wiki/TPAC/2018&quot;&gt;TPAC’s meeting in October&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;webkit&quot;&gt;WebKit&lt;/h3&gt;

&lt;p&gt;We have also continued improving the web platform implementation of some Linux ports of WebKit (namely &lt;a href=&quot;https://webkitgtk.org/&quot;&gt;GTK&lt;/a&gt; and &lt;a href=&quot;https://www.igalia.com/wpe/&quot;&gt;WPE&lt;/a&gt;). A lot of this work was possible thanks to the financial support of &lt;a href=&quot;https://www.metrological.com/index.html&quot;&gt;Metrological&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We improved &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/WebDriver&quot;&gt;Web Driver&lt;/a&gt; support and made it work with WPE too.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API&quot;&gt;Web Animations&lt;/a&gt; are now enabled.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API&quot;&gt;Service Workers&lt;/a&gt; are now &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=178576&quot;&gt;enabled behind an experimental features flag&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=182424&quot;&gt;We implemented most&lt;/a&gt; of the missing functionality of &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap&quot;&gt;ImageBitmap&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas&quot;&gt;OffscreenCanvas&lt;/a&gt; is now &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=183720&quot;&gt;mostly implemented&lt;/a&gt;, but pending review.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/web-platform-tests/wpt&quot;&gt;Web Platform Tests&lt;/a&gt; integration: We landed a patch to &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=183356&quot;&gt;make possible to run tests against the official Web Platform Tests repository&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API&quot;&gt;WebRTC&lt;/a&gt;: We made the raspberry pi work with Firefox and Chrome properly and started pushing upstream all the branch. We have already upstreamed all the changes required in the current WebKit classes, the libwebrtc compilation and the getUserMedia support. We have two main pending patches: PeerConnection support and EnumerateDevices support.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Media_Source_Extensions_API&quot;&gt;Media Source Extensions&lt;/a&gt;: We refined our implementation and fixed several bugs ; dealing with the corresponding issues on the gstreamer side.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/WebVR_API&quot;&gt;WebVR&lt;/a&gt;: Most of the API (85%) is now implemented using OpenVR and we can already get the &lt;a href=&quot;https://www.youtube.com/watch?v=QS5uJdqvuD8&quot;&gt;tracking information&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;other-activities&quot;&gt;Other activities&lt;/h2&gt;

&lt;h3 id=&quot;preparation-of-web-engines-hackfest-2018&quot;&gt;Preparation of Web Engines Hackfest 2018&lt;/h3&gt;

&lt;p&gt;Igalia has been organizing and hosting the &lt;a href=&quot;https://webengineshackfest.org/&quot;&gt;Web Engines Hackfest&lt;/a&gt; since 2009, a three days event where Web Platform developers can meet, discuss and work together. We are still working on the list of invited, &lt;a href=&quot;https://webengineshackfest.org/#sponsors&quot;&gt;sponsors&lt;/a&gt; and talks but you can already save the date: It will happen from 1st to 3rd of October in A Coruña!&lt;/p&gt;

&lt;h3 id=&quot;new-igalians&quot;&gt;New Igalians&lt;/h3&gt;

&lt;p&gt;This semester, new developers have joined Igalia to pursue the Web platform effort:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/rbuis/&quot;&gt;Rob Buis&lt;/a&gt;, a Dutch developer currently living in Germany. He is a well-known member of the Chromium community and is currently helping on the web platform implementation in WebKit.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/qzhang/&quot;&gt;Qiuyi Zhang (Joyee)&lt;/a&gt;, based in China is a prominent member of the Node.js community who is now also assisting our compilers team on V8 developments.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/dinfuehr/&quot;&gt;Dominik Infuer&lt;/a&gt;, an Austrian specialist in compilers and programming language implementation who is currently helping on our JSC effort.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;coding-experience-programs&quot;&gt;Coding Experience Programs&lt;/h3&gt;

&lt;p&gt;Two students have started a &lt;a href=&quot;https://www.igalia.com/about-us/coding-experience&quot;&gt;coding experience program&lt;/a&gt; some weeks ago:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Oriol Brufau, a recent graduate in math from Spain who has been an active collaborator of the CSS Working Group and a contributor to the Mozilla project. He is working on the CSS Logical Properties and Values specification, implementing it in Chromium implementation.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Darshan Kadu, a computer science student from India, who contributed to GIMP and Blender. He is working on Web Platform Tests with focus on WebKit’s infrastructure and the GTK &amp;amp; WPE ports in particular.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additionally, &lt;a href=&quot;https://github.com/caiolima&quot;&gt;Caio Lima&lt;/a&gt; is continuing his coding experience in Igalia and is among other things working on implementing BigInt in JSC.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Thank you for reading this blog post and we look forward to more work on the web platform this semester!&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>BlinkOn 9: Working on the Web Platform from a cooperative</title>
   <link href="https://frederic-wang.fr//2018/04/26/blink-on-9-working-on-the-web-platform-from-a-cooperative/"/>
   <updated>2018-04-26T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2018/04/26/blink-on-9-working-on-the-web-platform-from-a-cooperative</id>
   <content type="html">
&lt;p&gt;Last week, I attended &lt;a href=&quot;https://bit.ly/blinkon9-info&quot;&gt;BlinkOn 9&lt;/a&gt;. I was very happy to
spend some time with my colleagues working on Chromium, including a new
developer who will join my team next week (to be announced soon!).&lt;/p&gt;

&lt;p&gt;This edition had the usual format with presentations, brainstorming,
lightning talks and informal chats with Chromium developers. I attended several
interesting presentations on web platform standardization,
implementation and testing.
It was also great to talk to Googlers in order to coordinate on some of
Igalia’s projects such as
&lt;a href=&quot;https://frederic-wang.fr/amp-and-igalia-working-together-to-improve-the-web-platform.html&quot;&gt;the collaboration with AMP&lt;/a&gt; or
&lt;a href=&quot;https://mathml.igalia.com/&quot;&gt;MathML in Chromium&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In the previous edition, I realized that one can propose non-technical
talks (e.g. the one about &lt;a href=&quot;https://docs.google.com/presentation/d/1gZtzemj6g28G_cxm098m4UjdRCvkadk5oIWHdVZvPUM&quot;&gt;inclusion and diversity&lt;/a&gt;) and some people seemed
curious about Igalia. Hence I proposed a presentation
“&lt;a href=&quot;https://people.igalia.com/fwang/blink-on-9/slides/?showNotes=true&quot;&gt;Working on the Web Platform from a Cooperative&lt;/a&gt;” that gives:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;An introduction to Igalia and its activities.&lt;/li&gt;
  &lt;li&gt;A description of our non-hierarchical model and benefits it brings.&lt;/li&gt;
  &lt;li&gt;An overview of Igalia’s contribution to the Web Platform.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img alt=&quot;Presenting my talk in West Sycamore&quot; src=&quot;https://frederic-wang.fr/images/blinkon9-igalia-talk.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;From the feedback I got, people appreciated the presentation and liked to get more
insight on Igalia. Unfortunately, I was not able to record
the talk due to technical issues. Of course, thirty minutes is a bit short to
develop all the ideas and reply properly to all the questions. But for those who
are interested here are more pointers:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;About “equal salary” VS “cost of living”, you might want to read
Andy Wingo’s blog posts “&lt;a href=&quot;https://wingolog.org/archives/2013/06/25/time-for-money&quot;&gt;time for money&lt;/a&gt;” and “&lt;a href=&quot;https://wingolog.org/archives/2016/03/24/a-simple-local-solution-to-the-pay-gap&quot;&gt;a simple (local) solution to the pay gap&lt;/a&gt;”.
Several years ago, Robert O’Callahan had already wondered
&lt;a href=&quot;https://robert.ocallahan.org/2011/08/cost-of-living.html&quot;&gt;whether it really made sense to take into account the cost of living to
determine salaries&lt;/a&gt;.
Personally, I believe that as long as our “target salary” is high enough
for all places where we work, we don’t really need to worry about this
issue and can instead spend time focusing on more interesting agreements
to keep making Igalia a great working place.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;About dependency on the customers, see the last
paragraph of “work groups” in Andy’s blog post “&lt;a href=&quot;https://wingolog.org/archives/2013/06/13/but-that-would-be-anarchy&quot;&gt;but that would be anarchy!&lt;/a&gt;” especially
treating customers as partners. As I said during the talk, as long as we
have enough customers we have some freedom to accept contracts that are more
interesting for our strategy and aligned with our values or negociate
improvements to existing contracts ; without worrying about unstability
and uncertainty.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;About the meaning of “Igalia”, the simple answer is
“it does not mean anything”. If you join Igalia and get the opportunity to
learn about the company history, there is a more complete answer about how
the name was found…&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Regarding founders of Igalia in 2001: &lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/dape/&quot;&gt;Dape&lt;/a&gt; (who attended BlinkOn), &lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/alex/&quot;&gt;Alex&lt;/a&gt;, &lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/juanjo/&quot;&gt;Juanjo&lt;/a&gt;, &lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/xavi/&quot;&gt;Xavi&lt;/a&gt;, &lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/berto/&quot;&gt;Berto&lt;/a&gt; and &lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/chema/&quot;&gt;Chema&lt;/a&gt; are indeed still
working at Igalia and in general, very few people have left Igalia since its creation.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally we had two related tricky questions from Google employees:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;How do you sync with the browser vendors’ own agenda?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;What can Google (or any other browser vendor) could do to facilitate involvements of third-party contributors?&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One could enumerate different situations but unfortunately there is not a
generic answer. In some cases collaboration worked very well and was
quite successful.
In other cases, things were more complicated and we had to “fight” to
convince browser vendors to keep some existing code or accept new features.&lt;/p&gt;

&lt;p&gt;Communication is very important. We try to sync with browser vendors using video conferencing or by attending conferences, but some companies/teams are more or less inclined to reveal information (especially when strategic products
are involved). In general, I have the impression that the more the teams work
close to the Web Platform,
the more they are used to the democratic and open-source
culture and welcome third-party contributions.&lt;/p&gt;

&lt;p&gt;Although the ideal is to work upstream, we have recently been developing skills
to manage separate forks and rebase them regularly against the main branch. This
is a good option to find a balance between the request of the customer to implement
features and the need of the browser vendors to focus on their own tasks.
&lt;a href=&quot;https://github.com/Igalia/chromium/&quot;&gt;Chromium for Wayland&lt;/a&gt; is a good
example of that approach.&lt;/p&gt;

&lt;p&gt;Hence probably one way to help third-party contributors is to improve
communication. We had some issues with developers not even willing to talk to us
or not taking time to review or comment on our patches/CLs. If browser vendors
could indicate that they don’t like an approach as soon as possible or that
they won’t accept patches until some refactoring is complete, that would help
us a lot to discuss with clients, properly schedule our tasks and consider the
option of an experimental branch.&lt;/p&gt;

&lt;p&gt;Another way to help third-party contributors would be to advertize more
that such contributions are actually possible. Indeed, many people think that
“everything is implemented by browser vendors” which can make difficult to
find clients for web platform development. When companies rant about Google
not implementing feature X, fixing bug Y or participating to standard Z, instead
of ignoring them or denying the importance of the request, it would probably be
more constructive to mention that they can actually pay consulting companies to
do that job. As I indicated in the talk, we recently had such successful
collaborations with &lt;a href=&quot;https://www.bloomberg.com/&quot;&gt;Bloomberg&lt;/a&gt;,
&lt;a href=&quot;https://www.metrological.com/&quot;&gt;Metrological&lt;/a&gt; or
&lt;a href=&quot;https://www.ampproject.org/&quot;&gt;AMP&lt;/a&gt; and we would be happy to find more!&lt;/p&gt;

&lt;p&gt;There are probably more to reply to these questions, but that’s my quick
thought on the matter for now. I’ll try discussing with my
colleagues and see if we have more ideas to share.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Review of Igalia&apos;s Web Platform activities (H2 2017)</title>
   <link href="https://frederic-wang.fr//2018/01/12/review-of-igalia-s-web-platform-activities-H2-2017/"/>
   <updated>2018-01-12T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2018/01/12/review-of-igalia-s-web-platform-activities-H2-2017</id>
   <content type="html">
&lt;p&gt;Last september, I published a first &lt;a href=&quot;https://frederic-wang.fr/review-of-igalia-s-web-platform-activities-H1-2017.html&quot;&gt;blog post&lt;/a&gt; to let people know a bit more about Igalia’s activities around the Web platform, with a plan to repeat such a review each semester. The present blog post focuses on the activity of the second semester of 2017.&lt;/p&gt;

&lt;h2 id=&quot;accessibility&quot;&gt;Accessibility&lt;/h2&gt;

&lt;p&gt;As part of &lt;a href=&quot;https://www.igalia.com/nc/igalia-247/news/item/our-commitment-to-diversity-and-inclusion&quot;&gt;Igalia’s commitment to diversity and inclusion&lt;/a&gt;, we continue our effort to standardize and implement accessibility technologies. More specifically, Igalian &lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/jdiggs/&quot;&gt;Joanmarie Diggs&lt;/a&gt; continues to serve as chair of the W3C’s &lt;a href=&quot;https://www.w3.org/WAI/ARIA/&quot;&gt;ARIA working group&lt;/a&gt; and as an editor of &lt;a href=&quot;https://www.w3.org/TR/wai-aria/&quot;&gt;Accessible Rich Internet Applications (WAI-ARIA) 1.1&lt;/a&gt;, &lt;a href=&quot;https://www.w3.org/TR/core-aam/&quot;&gt;Core Accessibility API Mappings 1.1&lt;/a&gt;, &lt;a href=&quot;https://www.w3.org/TR/dpub-aria/&quot;&gt;Digital Publishing WAI-ARIA Module 1.0&lt;/a&gt;, &lt;a href=&quot;https://www.w3.org/TR/dpub-aam/&quot;&gt;Digital Publishing Accessibility API Mappings 1.0&lt;/a&gt; all of which &lt;a href=&quot;https://lists.w3.org/Archives/Public/w3c-wai-ig/2017OctDec/0239.html&quot;&gt;became W3C Recommandations in December&lt;/a&gt;! Work on versions 1.2 of ARIA and the Core AAM will begin in January. Stay tuned for the First Public Working Drafts.&lt;/p&gt;

&lt;p&gt;We also contributed patches to fix several issues in the ARIA implementations of WebKit and Gecko and implemented support for the new DPub ARIA roles. We expect to continue this collaboration with Apple and Mozilla next year as well as to resume more active maintenance of &lt;a href=&quot;https://help.gnome.org/users/orca/stable/&quot;&gt;Orca&lt;/a&gt;, the screen reader used to access graphical desktop environments in GNU/Linux.&lt;/p&gt;

&lt;p&gt;Last but not least, progress continues on switching to &lt;a href=&quot;https://github.com/w3c/web-platform-tests&quot;&gt;Web Platform Tests&lt;/a&gt; for ARIA and “Accessibility API Mappings” tests. This task is challenging because, unlike other aspects of the Web Platform, testing accessibility mappings cannot be done by solely examining what is rendered by the user agent. Instead, an additional tool, an “&lt;a href=&quot;https://spec-ops.github.io/atta-api/index.html&quot;&gt;Accessible Technology Test Adapter&lt;/a&gt;” (ATTA) must be also be run. ATTAs work in a similar fashion to assistive technologies such as screen readers, using the implemented platform accessibility API to query information about elements and reporting what it obtains back to WPT which in turn determines if a test passed or failed. As a result, the tests are currently officially &lt;a href=&quot;http://web-platform-tests.org/writing-tests/manual.html&quot;&gt;manual&lt;/a&gt; while the platform ATTAs continue to be developed and refined. We hope to make sufficient progress during 2018 that ATTA integration into WPT can begin.&lt;/p&gt;

&lt;h2 id=&quot;css&quot;&gt;CSS&lt;/h2&gt;

&lt;p&gt;This semester, we were glad to receive &lt;a href=&quot;http://www.bloomberg.com/company/&quot;&gt;Bloomberg&lt;/a&gt;’s support again to pursue our activities around CSS. After a long commitment to CSS and a lot of feedback to Editors, &lt;a href=&quot;https://twitter.com/regocas/status/908604005999357952&quot;&gt;several of our members finally joined the Working Group&lt;/a&gt;! Incidentally and as mentioned in a &lt;a href=&quot;https://frederic-wang.fr/recent-browser-events.html&quot;&gt;previous blog post&lt;/a&gt;, during the &lt;a href=&quot;https://wiki.csswg.org/planning/paris-2017&quot;&gt;CSS Working Group face-to-face meeting in Paris&lt;/a&gt; we got the opportunity to answer Microsoft’s questions regarding &lt;a href=&quot;https://alistapart.com/article/the-story-of-css-grid-from-its-creators&quot;&gt;The Story of CSS Grid, from Its Creators&lt;/a&gt; (see also the &lt;a href=&quot;https://www.youtube.com/watch?v=J9uaT9dggZE&quot;&gt;video&lt;/a&gt;). You might want to take a look at our own videos for CSS Grid Layout, regarding &lt;a href=&quot;https://www.dropbox.com/s/co24b12wd81zaau/201709_gridlayout_alignment.mp4?dl=0&quot;&gt;alignment and placement&lt;/a&gt; and &lt;a href=&quot;https://matrix.igalia.com/_matrix/media/v1/download/igalia.com/AEMEmqJXZvPAQGjlXFiCyceW&quot;&gt;easy design&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;On the development side, we maintained and fixed bugs in Grid Layout implementation for Blink and WebKit. We also implemented alignment of positioned items in Blink and WebKit. We have several improvements and bug fixes for editing/selection from Bloomberg’s downstream branch that we’ve already upstreamed or plan to upstream. Finally, it’s worth mentioning that the &lt;a href=&quot;https://blogs.igalia.com/mrego/2018/01/11/display-contents-is-coming/&quot;&gt;work done on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;display: contents&lt;/code&gt;&lt;/a&gt; by our former coding experience student &lt;a href=&quot;https://twitter.com/ecbos_&quot;&gt;Emilio Cobos&lt;/a&gt; was taken over and completed by antiik (for WebKit) and rune (for Blink) and is now enabled by default! We plan to pursue these developments next year and have various ideas. One of them is improving the way grids are stored in memory to allow huge grids (e.g. spreadsheet).&lt;/p&gt;

&lt;h2 id=&quot;web-platform-predictability&quot;&gt;Web Platform Predictability&lt;/h2&gt;

&lt;p&gt;One of the area where we would like to increase our activity is &lt;a href=&quot;https://www.chromium.org/blink/platform-predictability&quot;&gt;Web Platform Predictability&lt;/a&gt;. This is obviously essential for our users but is also instrumental for a company like Igalia making developments on all the open source Javascript and Web engines, to ensure that our work is implemented consistently across all platforms. This semester, we were able to put more effort on this thanks to financial support from &lt;a href=&quot;http://www.bloomberg.com/company/&quot;&gt;Bloomberg&lt;/a&gt; and &lt;a href=&quot;https://www.ampproject.org/&quot;&gt;Google AMP&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We have implemented more
&lt;a href=&quot;https://www.dropbox.com/s/k9y5wxw4mdrr41p/201708-sandboxing.mp4&quot;&gt;frame sandboxing attributes WebKit&lt;/a&gt;
to improve user safety and make control of sandboxed documents more flexible.
We improved the
&lt;a href=&quot;https://html.spec.whatwg.org/#sandboxed-navigation-browsing-context-flag&quot;&gt;sandboxed navigation browser context flag&lt;/a&gt; and implemented the new
&lt;a href=&quot;https://html.spec.whatwg.org/#attr-iframe-sandbox-allow-popups-to-escape-sandbox&quot;&gt;allow-popup-to-escape-sandbox&lt;/a&gt;, &lt;a href=&quot;https://html.spec.whatwg.org/#attr-iframe-sandbox-allow-top-navigation-by-user-activation&quot;&gt;allow-top-navigation-without-user-activation&lt;/a&gt;, and &lt;a href=&quot;https://html.spec.whatwg.org/#attr-iframe-sandbox-allow-modals&quot;&gt;allow-modals&lt;/a&gt; values for the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sandbox&lt;/code&gt; attribute.&lt;/p&gt;

&lt;p&gt;Currently, &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=149264&quot;&gt;HTML frame scrolling&lt;/a&gt; is not implemented in WebKit/iOS. As a consequence, one has to use the non-standard &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-webkit-overflow-scrolling: touch&lt;/code&gt; property on overflow nodes to emulate scrollable elements. In parallel to the progresses toward using more standard HTML frame scrolling we have also worked on annoying issues related to overflow nodes, including
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=175135&quot;&gt;flickering/jittering of “position: fixed” nodes&lt;/a&gt; or &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=178789&quot;&gt;broken Find UI&lt;/a&gt; or a &lt;a href=&quot;https://github.com/ampproject/amphtml/issues/11829&quot;&gt;regression causing content to disappear&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Another important task as part of our CSS effort was to address compatibility issues between the different browsers. For example we fixed editing bugs related to HTML List items: &lt;a href=&quot;https://webkit.org/b/174593&quot;&gt;WebKit’s Bug 174593&lt;/a&gt;/&lt;a href=&quot;https://crbug.com/744936&quot;&gt;Chromium’s Issue 744936&lt;/a&gt; and &lt;a href=&quot;https://webkit.org/b/173148&quot;&gt;WebKit’s Bug 173148&lt;/a&gt;/&lt;a href=&quot;https://crbug.com/731621&quot;&gt;Chromium’s Issue 731621&lt;/a&gt;. Inconsistencies in web engines regarding selection with floats have also been detected and we submitted the first patches for &lt;a href=&quot;https://webkit.org/b/176096&quot;&gt;WebKit&lt;/a&gt; and &lt;a href=&quot;https://crbug.com/643106&quot;&gt;Blink&lt;/a&gt;. Finally, we are currently improving line-breaking behavior in &lt;a href=&quot;https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/fP1jDcQu68g/qSjd8EI8BQAJ&quot;&gt;Blink&lt;/a&gt; and &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=177327&quot;&gt;WebKit&lt;/a&gt;, which implies the implementation of new CSS values and properties defined in the last draft of the CSS Text 3 specification.&lt;/p&gt;

&lt;p&gt;We expect to continue this effort on Web Platform Predictability next year and we are discussing more ideas e.g. &lt;a href=&quot;https://github.com/WICG/webpackage&quot;&gt;WebPackage&lt;/a&gt; or &lt;a href=&quot;https://drafts.csswg.org/css-flexbox/&quot;&gt;flexbox&lt;/a&gt; compatibility issues. For sure, &lt;a href=&quot;https://github.com/w3c/web-platform-tests&quot;&gt;Web Platform Tests&lt;/a&gt; are an important aspect to ensure cross-platform inter-operability and we would like to help improving synchronization with the conformance tests of browser repositories. This includes the accessibility tests mentioned above.&lt;/p&gt;

&lt;h2 id=&quot;mathml&quot;&gt;MathML&lt;/h2&gt;

&lt;p&gt;Last November, we launched a &lt;a href=&quot;https://mathml.igalia.com/&quot;&gt;fundraising Campaign&lt;/a&gt; to implement MathML in Chromium and presented it during Frankfurt Book Fair and TPAC. We have gotten very positive feedback so far with encouragement from people excited about this project. We strongly believe the native MathML implementation in the browsers will bring about a huge impact to STEM education across the globe and all the incumbent industries will benefit from the technology. As &lt;a href=&quot;https://twitter.com/RickByers/status/928305865555296256&quot;&gt;pointed out by Rick Byers&lt;/a&gt;, the web platform is a commons and we believe that a more collective commitment and contribution are essential for making this world a better place!&lt;/p&gt;

&lt;p&gt;While waiting for progress on Chromium’s side, we have provided minimal maintenance for MathML in WebKit:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;We fixed all the debug ASSERTs reported on Bugzilla.&lt;/li&gt;
  &lt;li&gt;We did follow-up code clean up and refactoring.&lt;/li&gt;
  &lt;li&gt;We imported Web Platform tests in WebKit.&lt;/li&gt;
  &lt;li&gt;We performed review of MathML patches.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Regarding the last point, we would like to thank Minsheng Liu, a new volunteer who has started to contribute patches to WebKit to fix issues with MathML operators. He is willing to continue to work on MathML development in 2018 as well so stay tuned for more improvements!&lt;/p&gt;

&lt;h2 id=&quot;javascript&quot;&gt;Javascript&lt;/h2&gt;

&lt;p&gt;During the second semester of 2017, we worked on the design, standardization and implementation of several JavaScript features thanks to sponsorship from &lt;a href=&quot;http://www.bloomberg.com/company/&quot;&gt;Bloomberg&lt;/a&gt; and &lt;a href=&quot;https://www.mozilla.org/&quot;&gt;Mozilla&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One of the new features we focused on recently is &lt;a href=&quot;https://github.com/tc39/proposal-bigint&quot;&gt;BigInt&lt;/a&gt;. We are working on an implementation of BigInt in SpiderMonkey, which is currently feature-complete but requires more optimization and cleanup. We wrote corresponding &lt;a href=&quot;https://github.com/tc39/test262/&quot;&gt;test262&lt;/a&gt; conformance tests, which are mostly complete and upstreamed. Next semester, we intend to finish that work while our coding experience student &lt;a href=&quot;https://github.com/caiolima&quot;&gt;Caio Lima&lt;/a&gt; continues work on a BigInt implementation on JSC, which has already started to land. Google also decided to implement that feature in V8 based on the specification we wrote. The BigInt specification that we wrote reached Stage 3 of TC39 standardization. We plan to keep working on these two BigInt implementations, making specification tweaks as needed, with an aim towards reaching Stage 4 at TC39 for the BigInt proposal in 2018.&lt;/p&gt;

&lt;p&gt;Igalia is also proposing &lt;a href=&quot;https://github.com/tc39/proposal-class-fields&quot;&gt;class fields&lt;/a&gt; and &lt;a href=&quot;http://github.com/tc39/proposal-private-methods&quot;&gt;private methods&lt;/a&gt; for JavaScript. Similarly to BigInt, we were able to move them to Stage 3 and we are working to move them to stage 4. Our plan is to write test262 tests for private methods and work on an implementation in a JavaScript engine early next year.&lt;/p&gt;

&lt;p&gt;Igalia implemented and shipped &lt;a href=&quot;https://jakearchibald.com/2017/async-iterators-and-generators/&quot;&gt;async iterators and generators&lt;/a&gt; in Chrome 63, providing a convenient syntax for exposing and using asynchronous data streams, e.g., HTML streams. Additionally, we shipped a major performance optimization for Promises and async functions in V8.&lt;/p&gt;

&lt;p&gt;We implemented and shipped two internationalization features in Chrome, &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules&quot;&gt;Intl.PluralRules&lt;/a&gt; and &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/formatToParts&quot;&gt;Intl.NumberFormat.prototype.formatToParts&lt;/a&gt;. To push the specifications of internationalization features forwards, we have been editing various other internationalization-related specifications such as &lt;a href=&quot;https://github.com/tc39/proposal-intl-relative-time/&quot;&gt;Intl.RelativeTimeFormat&lt;/a&gt;, &lt;a href=&quot;https://github.com/tc39/proposal-intl-locale/&quot;&gt;Intl.Locale&lt;/a&gt; and &lt;a href=&quot;https://github.com/tc39/proposal-intl-list-format&quot;&gt;Intl.ListFormat&lt;/a&gt;; we also convened and led the first of what will be a monthly meeting of internationalization experts to propose and refine further API details.&lt;/p&gt;

&lt;p&gt;Finally, Igalia has also been formalizing WebAssembly’s &lt;a href=&quot;https://littledan.github.io/spec/document/js-api/&quot;&gt;JavaScript API specification&lt;/a&gt;, which reached the W3C first public working draft stage, and plans to go on to improve testing of that specification as the next step once further editorial issues are fixed.&lt;/p&gt;

&lt;h2 id=&quot;miscellaneous&quot;&gt;Miscellaneous&lt;/h2&gt;

&lt;p&gt;Thanks to sponsorship from &lt;a href=&quot;http://mozilla.org/&quot;&gt;Mozilla&lt;/a&gt; we have continued our involvement in the &lt;a href=&quot;https://wiki.mozilla.org/Platform/GFX/Quantum_Render&quot;&gt;Quantum Render project&lt;/a&gt; with the goal of using Servo’s WebRender in Firefox.&lt;/p&gt;

&lt;p&gt;Support from &lt;a href=&quot;https://www.metrological.com/index.html&quot;&gt;Metrological&lt;/a&gt; has also given us the opportunity to implement more web standards from some Linux ports of WebKit (&lt;a href=&quot;https://webkitgtk.org/&quot;&gt;GTK&lt;/a&gt; and &lt;a href=&quot;https://www.igalia.com/wpe/&quot;&gt;WPE&lt;/a&gt;, including:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;WebRTC&lt;/li&gt;
  &lt;li&gt;WebM&lt;/li&gt;
  &lt;li&gt;WebVR&lt;/li&gt;
  &lt;li&gt;Web Crypto&lt;/li&gt;
  &lt;li&gt;Web Driver&lt;/li&gt;
  &lt;li&gt;WebP animations support&lt;/li&gt;
  &lt;li&gt;HTML interactive form validation&lt;/li&gt;
  &lt;li&gt;MSE&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Thanks for reading and we look forward to more work on the web platform in 2018. Onwards and upwards!&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Recent Browser Events</title>
   <link href="https://frederic-wang.fr//2017/10/23/recent-browser-events/"/>
   <updated>2017-10-23T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2017/10/23/recent-browser-events</id>
   <content type="html">
&lt;h2 id=&quot;tldr&quot;&gt;TL;DR&lt;/h2&gt;

&lt;p&gt;At Igalia, we attend many browser events. This is a quick summary of some
recents conferences I participated to… or that gave me the opportunity to meet
Igalians in Paris 😉.&lt;/p&gt;

&lt;h2 id=&quot;week-31-paris---css-wg-f2f---w3c&quot;&gt;Week 31: Paris - CSS WG F2F - W3C&lt;/h2&gt;

&lt;p&gt;My teammate &lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/svillar/&quot;&gt;Sergio&lt;/a&gt; attended the &lt;a href=&quot;https://wiki.csswg.org/planning/paris-2017&quot;&gt;CSS WG F2F meeting&lt;/a&gt; as an observer. On Tuesday morning, I also made an appearance
(but it was so brief that
&lt;a href=&quot;https://fr.wikisource.org/wiki/Une_saison_en_enfer&quot;&gt;ceux que j’ai rencontrés ne m’ont peut-être pas vu&lt;/a&gt;).
Together with other browser vendors and WG members,
Sergio gave an interview regarding &lt;a href=&quot;https://alistapart.com/article/the-story-of-css-grid-from-its-creators&quot;&gt;the successful story of CSS Grid Layout&lt;/a&gt;.
By the way, given our
implementation work in WebKit and Blink, Igalia finally decided
to &lt;a href=&quot;https://twitter.com/regocas/status/908604005999357952&quot;&gt;join the CSS Working Group&lt;/a&gt; 😊.
Of course, during that week I had dinner with
Sergio and it was nice to chat with my colleague in a French restaurant
of &lt;a href=&quot;https://en.wikipedia.org/wiki/Montmartre&quot;&gt;Montmartre&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;week-38-tokyo---blinkon-8---google&quot;&gt;Week 38: Tokyo - BlinkOn 8 - Google&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/jaragunde/&quot;&gt;Jacobo&lt;/a&gt;,
&lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/gkim/&quot;&gt;Gyuyoung&lt;/a&gt; and I
attended &lt;a href=&quot;https://www.youtube.com/playlist?list=PL9ioqAuyl6UK7Z0HHswBM5JgAp-izn_3S&quot;&gt;BlinkOn 8&lt;/a&gt;. I had nice discussions and listened to
interesting talks about a wide range of topics (Layout NG,
Accessibility, CSS, Fonts,
Web Predictability &amp;amp; Standards, etc). It was a pleasure to finally meet in persons
some developers I had been in touch with during my projects on
&lt;a href=&quot;https://github.com/Igalia/chromium#chromium-for-wayland&quot;&gt;Ozone/Wayland&lt;/a&gt; and
WebKit/iOS.
For the lightning talks, we presented our activities
on &lt;a href=&quot;https://blogs.igalia.com/jaragunde/files/2017/09/chromium-on-embedded-linux.pdf&quot;&gt;embedded linux platforms&lt;/a&gt; and the &lt;a href=&quot;https://people.igalia.com/fwang/blink-on-8/lightning-talk-frederic-wang-igalia-contribution-to-the-web-platform.pdf&quot;&gt;Web Platform&lt;/a&gt;. Incidentally, it was great to see Igalia’s work
mentioned during the
&lt;a href=&quot;https://docs.google.com/presentation/d/11rr_vo7UNS6icihnWZMx45O4y5JiSegZKYLQKA1LAdo/present&quot;&gt;Next Generation Rendering Engine session&lt;/a&gt;.
Obviously, I had the opportunity to visit places and taste Japanese food in
&lt;a href=&quot;https://en.wikipedia.org/wiki/Asakusa&quot;&gt;Asakusa&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Ueno&quot;&gt;Ueno&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Roppongi&quot;&gt;Roppongi&lt;/a&gt; 😋.&lt;/p&gt;

&lt;h2 id=&quot;week-40-a-coruña---web-engines-hackfest---igalia&quot;&gt;Week 40: A Coruña - Web Engines Hackfest - Igalia&lt;/h2&gt;

&lt;p&gt;I attended
&lt;a href=&quot;https://webengineshackfest.org/&quot;&gt;one of my favorite events&lt;/a&gt;, that gathers
the whole browser community during three days for
&lt;a href=&quot;https://github.com/Igalia/webengineshackfest/wiki#web-engines-hackfest-2017&quot;&gt;technical presentations, breakout sessions, hacking and galician food&lt;/a&gt;. This year, we had many
&lt;a href=&quot;https://webengineshackfest.org/#sponsors&quot;&gt;sponsors&lt;/a&gt;
and attendees. It is good to see that the event is becoming more
and more popular! It was long overdue, but I was finally able to make
&lt;a href=&quot;https://github.com/google/brotli&quot;&gt;Brotli&lt;/a&gt;
and &lt;a href=&quot;https://github.com/google/woff2&quot;&gt;WOFF2&lt;/a&gt; installable as system libraries
on Linux and usable by WebKitGTK+ 😊. I opened &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1405703&quot;&gt;similar&lt;/a&gt; &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1405704&quot;&gt;bugs&lt;/a&gt; in Gecko and the same could be done in Chromium. Among the things I enjoyed,
I met &lt;a href=&quot;https://mozillians.org/en-US/u/jfkthame&quot;&gt;Jonathan Kew&lt;/a&gt; in person and heard more about &lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/agomes/&quot;&gt;Antonio&lt;/a&gt; and &lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/msisov/&quot;&gt;Maksim&lt;/a&gt;’s &lt;a href=&quot;https://www.youtube.com/watch?v=efmYPFHnaSM&quot;&gt;progress on Ozone/Wayland&lt;/a&gt;.
As usual, it was nice to share time with colleagues, attend the assembly meeting,
play &lt;a href=&quot;https://en.wikipedia.org/wiki/Association_football&quot;&gt;football&lt;/a&gt; matches, have meals, visit &lt;a href=&quot;https://en.wikipedia.org/wiki/Asturias&quot;&gt;Asturias&lt;/a&gt;… and tell one’s story 😉.&lt;/p&gt;

&lt;h2 id=&quot;week-41-san-jose---webkit-contributors-meeting---apple&quot;&gt;Week 41: &lt;del&gt;San Jose - WebKit Contributors Meeting - Apple&lt;/del&gt;&lt;/h2&gt;

&lt;p&gt;In the past months, I have mostly been working on WebKit at Igalia and
I would have been happy to see my fellow WebKit developers.
However, given the events in Japan and Spain, I was not willing to make another
trip to the USA just after. Hence I had to miss the
WebKit Contributors Meeting again this year 😞.
Fortunately,
my colleagues &lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/alex/&quot;&gt;Alex&lt;/a&gt;,
&lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/mcatanzaro/&quot;&gt;Michael&lt;/a&gt; and
&lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/zdobersek/&quot;&gt;Žan&lt;/a&gt;
were present. Igalia is an important contributor
to WebKit and we will continue to send people and propose some talks next year.&lt;/p&gt;

&lt;h2 id=&quot;week-42-paris---monthly-speaker-series---mozilla&quot;&gt;Week 42: Paris - Monthly Speaker Series - Mozilla&lt;/h2&gt;

&lt;p&gt;This Wednesday, I attended a conference on
&lt;a href=&quot;https://air.mozilla.org/privacy-as-a-competitive-advantage-with-gry-hasselbalch/&quot;&gt;Privacy as a Competitive Advantage&lt;/a&gt; in Mozilla’s office. It was
nice
to hear about the increasing interest on privacy and to see the
regulation made by the European Union in that direction.
My colleague &lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/pnormand/&quot;&gt;Philippe&lt;/a&gt; was visiting the office
to work with some Mozilla developers on one of our project, so I was also able
to meet him in the conference room. Actually, Mozilla employees were kind enough
to let me stay at the office after the conference… Hence I was able to work on Apple’s Web Engine on a &lt;a href=&quot;https://frederic-wang.fr/amp-and-igalia-working-together-to-improve-the-web-platform.html&quot;&gt;project sponsored by Google&lt;/a&gt; at the Mozilla office… probably something you can only do at Igalia 😉. Last but not least, &lt;a href=&quot;https://www.igalia.com/igalia-247/igalian/item/gemont/&quot;&gt;Guillaume&lt;/a&gt; was also in holidays in Paris this week, so I let you imagine
what happens when three French guys meet (hint: it involves food 😋).&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Review of Igalia&apos;s Web Platform activities (H1 2017)</title>
   <link href="https://frederic-wang.fr//2017/09/07/review-of-igalia-s-web-platform-activities-H1-2017/"/>
   <updated>2017-09-07T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2017/09/07/review-of-igalia-s-web-platform-activities-H1-2017</id>
   <content type="html">
&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;For many years &lt;a href=&quot;http://igalia.com/&quot;&gt;Igalia&lt;/a&gt; has been committed to and dedicated efforts to the improvement of Web Platform in all open-source Web Engines (Chromium, WebKit, Servo, Gecko) and JavaScript implementations (V8, SpiderMonkey, ChakraCore, JSC). We have been working in the implementation and standardization of some important technologies (CSS Grid/Flexbox, ECMAScript, WebRTC, WebVR, ARIA, MathML, etc). This blog post contains a review of these activities performed during the first half (and a bit more) of 2017.&lt;/p&gt;

&lt;h2 id=&quot;projects&quot;&gt;Projects&lt;/h2&gt;

&lt;h3 id=&quot;css&quot;&gt;CSS&lt;/h3&gt;

&lt;p&gt;A few years ago &lt;a href=&quot;http://www.bloomberg.com/company/&quot;&gt;Bloomberg&lt;/a&gt; and Igalia started a collaboration to implement a new layout model for the Web Platform. Bloomberg had complex layout requirements and what the Web provided was not enough and caused performance issues. &lt;a href=&quot;https://drafts.csswg.org/css-grid/&quot;&gt;CSS Grid Layout&lt;/a&gt; seemed to be the right choice, a feature that would provide such complex designs with more flexibility than the currently available methods.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://blogs.igalia.com/mrego/2017/03/16/css-grid-layout-is-here-to-stay/&quot;&gt;We’ve been implementing CSS Grid Layout in Blink and WebKit&lt;/a&gt;, initially behind some flags as an experimental feature. This year, after some coordination effort to ensure interoperability (talking to the different parties involved like browser vendors, the CSS Working Group and the web authors community), it has been shipped by default in Chrome 58 and Safari 10.1. This is a huge step for the layout on the web, and modern websites will benefit from this new model and enjoy all the features provided by CSS Grid Layout spec.&lt;/p&gt;

&lt;p&gt;Since the CSS Grid Layout shared the same alignment properties as the CSS Flexible Box feature, a new spec has been defined to generalize alignment for all the layout models. We started implementing this new spec as part of our work on Grid, &lt;a href=&quot;https://blogs.igalia.com/jfernandez/2017/05/03/can-i-use-css-box-alignment/&quot;&gt;being Grid the first layout model supporting it&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Finally, we worked on other minor CSS features in Blink such as &lt;a href=&quot;https://blogs.igalia.com/mrego/2017/01/09/coloring-the-insertion-caret/&quot;&gt;caret-color&lt;/a&gt; or &lt;a href=&quot;https://blogs.igalia.com/mrego/2017/05/03/adding-focus-within-selector-to-chromium/&quot;&gt;:focus-within&lt;/a&gt; and also several interoperability issues related to Editing and Selection.&lt;/p&gt;

&lt;h3 id=&quot;mathml&quot;&gt;MathML&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.w3.org/Math/&quot;&gt;MathML&lt;/a&gt; is a W3C recommendation to represent mathematical formulae that has been included in many other standards such as ISO/IEC, HTML5, ebook and office formats. There are many tools available to handle it, including various assistive technologies as well as generators from the popular LaTeX typesetting system.&lt;/p&gt;

&lt;p&gt;After the improvements we performed in &lt;a href=&quot;https://webkit.org/blog/6803/improvements-in-mathml-rendering/&quot;&gt;WebKit’s MathML implementation&lt;/a&gt;, we have regularly been in contact with Google to see how we can implement MathML in Chromium. 
Early this year, we had several meetings with Google’s layout team to discuss this in further details. We agreed that MathML is an important feature to consider for users and that the right approach would be to rely on the new &lt;a href=&quot;https://docs.google.com/document/d/1uxbDh4uONFQOiGuiumlJBLGgO4KDWB8ZEkp7Rd47fw4/&quot;&gt;LayoutNG&lt;/a&gt; model currently being implemented. We created a prototype for a &lt;a href=&quot;https://github.com/emilio/chromium/commits/mathml-ng&quot;&gt;small LayoutNG-based MathML implementation&lt;/a&gt; as a proof-of-concept and as a basis for future technical discussions. We are &lt;a href=&quot;https://twitter.com/regocas/status/869871891628126209&quot;&gt;going to follow-up on this after the end of Q3&lt;/a&gt;, once Chromium’s layout team has made more progress on LayoutNG.&lt;/p&gt;

&lt;h3 id=&quot;servo&quot;&gt;Servo&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://servo.org/&quot;&gt;Servo&lt;/a&gt; is Mozilla’s next-generation web content engine based on Rust, a language that guarantees memory safety. Servo relies on a Rust project called WebRender which replaces the typical rasterizer and compositor duo in the web browser stack. WebRender makes extensive use of GPU batching to achieve very exciting performance improvements in common web pages. Mozilla has decided to make WebRender part of the &lt;a href=&quot;https://wiki.mozilla.org/Platform/GFX/Quantum_Render&quot;&gt;Quantum Render&lt;/a&gt; project.&lt;/p&gt;

&lt;p&gt;We’ve had the opportunity to collaborate with Mozilla for a few years now, focusing on the graphics stack. Our work has focused on bringing full support for CSS stacking and clipping to WebRender, so that it will be available in both Servo and Gecko. This has involved creating a data structure similar to what WebKit calls the “scroll tree” in WebRender. The scroll tree divides the scene into independently scrolled elements, clipped elements, and various transformation spaces defined by CSS transforms. The tree allows WebRender to handle page interaction independently of page layout, allowing maximum performance and responsiveness.&lt;/p&gt;

&lt;h3 id=&quot;webrtc&quot;&gt;WebRTC&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://webrtc.org/&quot;&gt;WebRTC&lt;/a&gt; is a collection of communications protocols and APIs that enable real-time communication over peer-to-peer connections. Typical use cases include video conferencing, file transfer, chat, or desktop sharing. Igalia has been working on the WebRTC implementation in WebKit and this development is currently sponsored by &lt;a href=&quot;https://www.metrological.com/index.html&quot;&gt;Metrological&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This year we have continued the implementation effort in WebKit for the &lt;a href=&quot;https://webkitgtk.org/&quot;&gt;WebKitGTK&lt;/a&gt; and &lt;a href=&quot;https://www.igalia.com/wpe/&quot;&gt;WebKit WPE&lt;/a&gt; ports, as well as the maintenance of two test servers for WebRTC: Ericsson’s p2p and Google’s &lt;a href=&quot;https://github.com/webrtc/apprtc&quot;&gt;apprtc&lt;/a&gt;. Finally, a lot of progress has been done to add support for &lt;a href=&quot;https://jitsi.org/&quot;&gt;Jitsi&lt;/a&gt; using the existing OpenWebRTC backend.&lt;/p&gt;

&lt;p&gt;Since OpenWebRTC development is not an active project anymore and given libwebrtc is gaining traction in both Blink and the WebRTC implementation of WebKit for Apple software, we are taking the first steps to replace the original WebRTC implementation in WebKitGTK based on OpenWebRTC, with a new one based on libwebrtc. Hopefully, this way we will share more code between platforms and get more robust support of WebRTC for the end users. GStreamer integration in this new implementation is an issue we will have to study, as it’s not built in libwebrtc. libwebrtc offers many services, but not every WebRTC implementation uses all of them. This seems to be the case for the Apple WebRTC implementation, and it may become our case too if we need tighter integration with GStreamer or hardware decoding.&lt;/p&gt;

&lt;h3 id=&quot;webvr&quot;&gt;WebVR&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://w3c.github.io/webvr/&quot;&gt;WebVR&lt;/a&gt; is an API that provides support for virtual reality devices in Web engines. Implementation and devices are currently actively developed by browser vendors and it looks like it is going to be a huge thing. Igalia has started to investigate on that topic to see how we can join that effort. This year, we have been in discussions with Mozilla, Google and Apple to see how we could help in the implementation of WebVR on Linux. We decided to start experimenting an implementation within WebKitGTK. We &lt;a href=&quot;https://lists.webkit.org/pipermail/webkit-dev/2017-August/029372.html&quot;&gt;announced our intention on the webkit-dev mailing list&lt;/a&gt; and got encouraging feedback from Apple and the WebKit community.&lt;/p&gt;

&lt;h3 id=&quot;aria&quot;&gt;ARIA&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.w3.org/WAI/intro/aria&quot;&gt;ARIA&lt;/a&gt; defines a way to make Web content and Web applications more accessible to people with disabilities. Igalia strengthened its ongoing committment to the W3C: Joanmarie Diggs joined Richard Schwerdtfeger as a co-Chair of the W3C’s &lt;a href=&quot;https://www.w3.org/WAI/ARIA/&quot;&gt;ARIA working group&lt;/a&gt;, and became editor of the &lt;a href=&quot;https://w3c.github.io/aria/core-aam/core-aam.html&quot;&gt;Core Accessibility API Mappings&lt;/a&gt;, [Digital Publishing Accessibility API Mappings] (https://w3c.github.io/aria/dpub-aam/dpub-aam.html), and &lt;a href=&quot;https://w3c.github.io/aria/accname-aam/accname-aam.html&quot;&gt;Accessible Name and Description: Computation and API Mappings&lt;/a&gt; specifications. Her main focus over the past six months has been to get &lt;a href=&quot;https://w3c.github.io/aria/aria/aria.html&quot;&gt;ARIA 1.1&lt;/a&gt; transitioned to Proposed Recommendation through a combination of implementation and bugfixing in WebKit and Gecko, creation of automated testing tools to verify platform accessibility API exposure in GNU/Linux and macOS, and working with fellow Working Group members to ensure the platform mappings stated in the various “AAM” specs are complete and accurate. We will provide more information about these activities after ARIA 1.1 and the related AAM specs are further along on their respective REC tracks.&lt;/p&gt;

&lt;h3 id=&quot;web-platform-predictability-for-webkit&quot;&gt;Web Platform Predictability for WebKit&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.ampproject.org/&quot;&gt;The AMP Project&lt;/a&gt; has recently sponsored Igalia to improve WebKit’s implementation of the Web platform. We have worked on many issues, the main ones being:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Frame sandboxing: Implementing sandbox values to allow trusted third-party resources to open unsandboxed popups or restrict unsafe operations of malicious ones.&lt;/li&gt;
  &lt;li&gt;Frame scrolling on iOS: Addressing issues with scrollable nodes; trying to move to a more standard and interoperable approach with scrollable iframes.&lt;/li&gt;
  &lt;li&gt;Root scroller: Finding a solution to the old interoperability issue about how to scroll the main frame; considering a new rootScroller API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This project aligns with &lt;a href=&quot;https://www.chromium.org/blink/platform-predictability&quot;&gt;Web Platform Predictability&lt;/a&gt; which aims at making the Web more predictable for developers by improving interoperability, ensuring version compatibility and reducing footguns. It has been a good opportunity to collaborate with Google and Apple on improving the Web. You can find further details in &lt;a href=&quot;https://frederic-wang.fr/amp-and-igalia-working-together-to-improve-the-web-platform.html&quot;&gt;this blog post&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;javascript&quot;&gt;JavaScript&lt;/h3&gt;

&lt;p&gt;Igalia has been involved in design, standardization and implementation of several JavaScript features in collaboration
with Bloomberg and Mozilla.&lt;/p&gt;

&lt;p&gt;In implementation, Bloomberg has been sponsoring implementation of modern JavaScript features in V8, SpiderMonkey, JSC and ChakraCore, in collaboration with the open source community:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Implementation of many ES6 features in V8, such as &lt;a href=&quot;https://wingolog.org/archives/2013/05/08/generators-in-v8&quot;&gt;generators&lt;/a&gt;, destructuring binding and arrow functions&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://blogs.igalia.com/compilers/2016/05/23/awaiting-the-future-of-javascript-in-v8/&quot;&gt;Async/await&lt;/a&gt; and &lt;a href=&quot;https://jakearchibald.com/2017/async-iterators-and-generators/&quot;&gt;async iterators and generators&lt;/a&gt; in V8 and some work in JSC&lt;/li&gt;
  &lt;li&gt;Optimizing SpiderMonkey generators&lt;/li&gt;
  &lt;li&gt;Ongoing implementation of &lt;a href=&quot;https://github.com/tc39/proposal-bigint&quot;&gt;BigInt&lt;/a&gt; in SpiderMonkey and class field declarations in JSC&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the design/standardization side, Igalia is active in TC39 and with Bloomberg’s support&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Arbitrary precision integers (BigInt)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/tc39/proposal-class-fields&quot;&gt;Class field declarations&lt;/a&gt;, &lt;a href=&quot;http://github.com/tc39/proposal-private-methods&quot;&gt;private methods&lt;/a&gt; and decorators&lt;/li&gt;
  &lt;li&gt;New RegExp features such as &lt;a href=&quot;https://github.com/tc39/proposal-regexp-named-groups/&quot;&gt;named capture groups&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In partnership with Mozilla, Igalia has been involved in the specification of various JavaScript standard library features for internationalization, in specification, implementation in V8, code reviews in other JavaScript engines,
as well as working with the underlying ICU library.&lt;/p&gt;

&lt;h2 id=&quot;other-activities&quot;&gt;Other activities&lt;/h2&gt;

&lt;h3 id=&quot;preparation-of-web-engines-hackfest-2017&quot;&gt;Preparation of Web Engines Hackfest 2017&lt;/h3&gt;

&lt;p&gt;Igalia has been organizing and hosting the &lt;a href=&quot;https://webengineshackfest.org/&quot;&gt;Web Engines Hackfest&lt;/a&gt; since 2009. This event under an unconference format has been a great opportunity for Web Engines developers to meet, discuss and work together on the web platform and on web engines in general. We announced &lt;a href=&quot;https://blogs.igalia.com/mrego/2017/04/05/announcing-a-new-edition-of-the-web-engines-hackfest/&quot;&gt;the 2017 edition&lt;/a&gt; and &lt;a href=&quot;https://webengineshackfest.org/#attendees&quot;&gt;many developers already confirmed their attendance&lt;/a&gt;. We would like to thank &lt;a href=&quot;https://webengineshackfest.org/#sponsors&quot;&gt;our sponsors&lt;/a&gt; for supporting this event and we are looking forward to seeing you in October!&lt;/p&gt;

&lt;h3 id=&quot;coding-experience&quot;&gt;Coding Experience&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://emiliocobos.me/about/&quot;&gt;Emilio Cobos&lt;/a&gt; has completed his &lt;a href=&quot;https://www.igalia.com/about-us/coding-experience&quot;&gt;coding experience program&lt;/a&gt; on implementation of web standards. He has been working in the implementation of “display: contents” in &lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=657748&quot;&gt;Blink&lt;/a&gt; but some work is pending due to unresolved CSS WG issues. He also started the corresponding work in WebKit but implementation is still very partial. It has been a pleasure to mentor a skilled hacker like Emilio and we wish him the best for his future projects!&lt;/p&gt;

&lt;h3 id=&quot;new-igalians&quot;&gt;New Igalians&lt;/h3&gt;

&lt;p&gt;During this semester we have been glad to welcome new igalians who will help us to pursue Web platform developments:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/dehrenberg/&quot;&gt;Daniel Ehrenberg&lt;/a&gt; joined Igalia in January. He is an active contributor to the V8 JavaScript engine and has been representing Igalia at the ECMAScript TC39 meetings.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/aboya/&quot;&gt;Alicia Boya&lt;/a&gt; joined Igalia in March. She has experience in many areas of computing, including web development, computer graphics, networks, security, and software design with performance which we believe will be valuable for our Web platform activities.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/ms2ger/&quot;&gt;Ms2ger&lt;/a&gt; joined Igalia in July. He is a well-known hacker of the Mozilla community and has wide experience in both Gecko and Servo. He has noticeably worked in DOM implementation and web platform test automation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h1&gt;

&lt;p&gt;Igalia has been involved in a wide range of Web Platform technologies going from Javascript and layout engines to accessibility or multimedia features. Efforts have been made in all parts of the process:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Participation to standardization bodies (&lt;a href=&quot;https://www.w3.org/Consortium/Member/Testimonial/#t1506&quot;&gt;W3C&lt;/a&gt;, &lt;a href=&quot;https://www.ecma-international.org/memento/TC39.htm&quot;&gt;TC39&lt;/a&gt;).&lt;/li&gt;
  &lt;li&gt;Elaboration of conformance tests (&lt;a href=&quot;https://github.com/w3c/web-platform-tests&quot;&gt;web-platform-tests&lt;/a&gt; &lt;a href=&quot;https://github.com/tc39/test262&quot;&gt;test262&lt;/a&gt;).&lt;/li&gt;
  &lt;li&gt;Implementation and bug fixes in all open source web engines.&lt;/li&gt;
  &lt;li&gt;Discussion with users, browser vendors and other companies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Although, some of this work has been sponsored by Google or Mozilla, it is important to highlight how external companies (other than browser vendors) can make good contributions to the Web Platform, playing an important role on its evolution. &lt;a href=&quot;https://twitter.com/alanstearns&quot;&gt;Alan Stearns&lt;/a&gt; already pointed out the &lt;a href=&quot;https://www.youtube.com/watch?v=4ggNcqdwT-Y&quot;&gt;responsibility of the Web Plaform users on the evolution of CSS&lt;/a&gt; while &lt;a href=&quot;https://rachelandrew.co.uk/&quot;&gt;Rachel Andrew&lt;/a&gt; emphasized &lt;a href=&quot;https://rachelandrew.co.uk/speaking/event/cssconfeu-2017&quot;&gt;how any company or web author can effectively contribute to the W3C in many ways&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As mentioned in this blog post, &lt;a href=&quot;http://www.bloomberg.com/company/&quot;&gt;Bloomberg&lt;/a&gt; is an important contributor of &lt;a href=&quot;https://www.techatbloomberg.com/blog/bloombergs-2016-open-source-contributions-5-top-projects/&quot;&gt;several open source projects&lt;/a&gt; and they’ve been a key player in the development of CSS Grid Layout or Javascript. Similarly, &lt;a href=&quot;https://www.metrological.com/index.html&quot;&gt;Metrological&lt;/a&gt;’s support has been instrumental for the implementation of WebRTC in WebKit. We believe others could follow their examples and we are looking forward to seeing more companies sponsoring Web Platform developments!&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>The AMP Project and Igalia working together to improve WebKit and the Web Platform</title>
   <link href="https://frederic-wang.fr//2017/08/30/amp-and-igalia-working-together-to-improve-the-web-platform/"/>
   <updated>2017-08-30T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2017/08/30/amp-and-igalia-working-together-to-improve-the-web-platform</id>
   <content type="html">
&lt;h2 id=&quot;tldr&quot;&gt;TL;DR&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://www.ampproject.org/&quot;&gt;The AMP Project&lt;/a&gt; and
&lt;a href=&quot;https://www.igalia.com/&quot;&gt;Igalia&lt;/a&gt;
have recently been collaborating to
improve &lt;a href=&quot;http://webkit.org/&quot;&gt;WebKit&lt;/a&gt;’s implementation of
the &lt;a href=&quot;https://platform.html5.org/&quot;&gt;Web platform&lt;/a&gt;.
Both teams are committed to make the Web better and we expect
that all developers and users will benefit from this effort.
In this blog post, we review some of the bug fixes and features currently being
considered:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Frame sandboxing&lt;/strong&gt;: Implementing sandbox values to allow trusted
third-party resources to open unsandboxed popups
or restrict unsafe operations of malicious ones.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Frame scrolling on iOS&lt;/strong&gt;: Trying to move to a more standard and
 interoperable approach via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;iframe&lt;/code&gt; elements; addressing miscellaneous
 issues with scrollable nodes (e.g. visual artifacts while scrolling, view
 not scrolled when using “Find Text”…).&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Root scroller&lt;/strong&gt;: Finding a solution to the
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=5991&quot;&gt;old interoperability issue&lt;/a&gt;
about how to scroll the main frame; considering a
&lt;a href=&quot;https://github.com/bokand/NonDocumentRootScroller&quot;&gt;new rootScroller API&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some demo pages for &lt;a href=&quot;https://webkit.org/demos/frames/&quot;&gt;frame sandboxing and scrolling&lt;/a&gt; are also available if you wish to test features discussed in this blog post.&lt;/p&gt;

&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;AMP is an open-source project to enable websites and ads that are consistently fast, beautiful and high-performing across devices and distribution platforms.
Several interoperability bugs and missing features in WebKit have
caused problems to AMP users and to Web developers in general. Although
it is possible to add platform-specific workarounds to AMP, the best way to
help the Web Platform community is to directly fix these issues in WebKit,
so that everybody can benefit from these improvements.&lt;/p&gt;

&lt;p&gt;Igalia is a consulting company with a team dedicated to Web Platform
developments in
all open-source Web Engines (Chromium, WebKit, Servo, Gecko) working
in the implementation and standardization of miscellaneous technologies
(CSS Grid/flexbox, ECMAScript, WebRTC, WebVR, ARIA, MathML, etc).
Given this expertise,
the AMP Project sponsored Igalia so that they can lead these
developments in WebKit. It is worth noting that this project aligns with the
&lt;a href=&quot;https://www.chromium.org/blink/platform-predictability&quot;&gt;Web Predictability effort&lt;/a&gt; supported by both Google and Igalia, which aims at making the Web more
predictable for developers. In particular, the following aspects are considered:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Interoperability: Effort is made to write
&lt;a href=&quot;https://github.com/w3c/web-platform-tests&quot;&gt;Web Platform Tests&lt;/a&gt; (WPT), to follow
&lt;a href=&quot;https://platform.html5.org/&quot;&gt;Web standards&lt;/a&gt; and ensure consistent behaviors
between web engines or operating systems.&lt;/li&gt;
  &lt;li&gt;Compatibility: Changes are carefully analyzed using telemetry techniques or
user feedback in order to avoid breaking compatibility with previous versions
of WebKit.&lt;/li&gt;
  &lt;li&gt;Reducing footguns: Removals of non-standard features (e.g. CSS vendor prefixes) are attempted while new features are carefully introduced.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below we provide further description of the WebKit
improvements, showing concretely how the above principles are followed.&lt;/p&gt;

&lt;h2 id=&quot;frame-sandboxing&quot;&gt;Frame sandboxing&lt;/h2&gt;

&lt;p&gt;A &lt;a href=&quot;https://html.spec.whatwg.org/#attr-iframe-sandbox&quot;&gt;sandbox&lt;/a&gt; attribute can
be specified on the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;iframe&lt;/code&gt; element in order to enable a set of
restrictions on any content it hosts.
These conditions can be relaxed by specifying a list of values such as
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;allow-scripts&lt;/code&gt; (to allow javascript execution in the frame) or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;allow-popups&lt;/code&gt;
(to allow the frame to open popups). By default, the same restrictions apply
to a popup opened by a sandboxed frame.&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
    &lt;div style=&quot;width: 300px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img src=&quot;https://frederic-wang.fr/images/iframe-sandboxing.svg&quot; alt=&quot;iframe sandboxing&quot; width=&quot;300&quot; height=&quot;200&quot; /&gt;&lt;/div&gt;
    &lt;div&gt;&lt;small&gt;Figure 1: Example of sandboxed frames (Can they navigate their top frame or open popups? Are such popups also sandboxed?)&lt;/small&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;However, sometimes this behavior is not wanted. Consider for example the case
of an
advertisement inside a sandboxed frame. If a popup is opened from this frame
then it is likely that a non-sandboxed context is desired on the landing page.
In order to handle this use case, a new &lt;a href=&quot;https://html.spec.whatwg.org/#attr-iframe-sandbox-allow-popups-to-escape-sandbox&quot;&gt;allow-popups-to-escape-sandbox&lt;/a&gt; value
has been introduced. The value is now supported in &lt;a href=&quot;https://developer.apple.com/safari/technology-preview/release-notes/#r34&quot;&gt;Safari Technology Preview 34&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While performing that work, it was noticed that some WPT tests for the sandbox
attribute were still failing. It turns out that WebKit does not really
follow the &lt;a href=&quot;https://html.spec.whatwg.org/multipage/browsers.html#allowed-to-navigate&quot;&gt;rules to allow navigation&lt;/a&gt;. More specifically, navigating a top context
is never allowed when such context corresponds to an opened popup.
&lt;a href=&quot;https://trac.webkit.org/changeset/218921&quot;&gt;We have made some changes to WebKit&lt;/a&gt;
so that it behaves more closely to the specification. This is integrated into &lt;a href=&quot;https://developer.apple.com/safari/technology-preview/release-notes/#r35&quot;&gt;Safari Technology Preview 35&lt;/a&gt; and you can for example
try &lt;a href=&quot;http://w3c-test.org/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html&quot;&gt;this W3C test&lt;/a&gt;. Note that this test requires to change preferences to allow popups.&lt;/p&gt;

&lt;p&gt;It is worth noting that web engines may slightly depart from the specification
regarding the previously mentioned rules. In particular, WebKit checks a
same-origin condition to be sure that one frame is allowed to navigate another
one.
WebKit always has contained
a special case to ignore this condition when a sandboxed frame with
the
&lt;a href=&quot;https://html.spec.whatwg.org/#attr-iframe-sandbox-allow-top-navigation&quot;&gt;allow-top-navigation&lt;/a&gt; flag
tries and navigate its top frame. This feature, sometimes known 
as “frame busting,” has been used by third-party resources
to perform malicious auto-redirecting.
As a consequence, Chromium developers proposed to restrict
frame busting to the case where the navigation is triggered by a user gesture.&lt;/p&gt;

&lt;p&gt;According to &lt;a href=&quot;https://www.chromestatus.com/metrics/feature/timeline/popularity/1752&quot;&gt;Chromium’s telemetry&lt;/a&gt; frame busting without a user gesture is very rare.
But when experimenting with the &lt;a href=&quot;https://github.com/WICG/interventions/issues/16&quot;&gt;behavior change of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;allow-top-navigation&lt;/code&gt;&lt;/a&gt; several regressions were reported.
Hence it was instead decided to introduce the
&lt;a href=&quot;https://html.spec.whatwg.org/#attr-iframe-sandbox-allow-top-navigation-by-user-activation&quot;&gt;allow-top-navigation-by-user-activation&lt;/a&gt; flag in order to provide this improved
safety context while still preserving backward compatibility.
We implemented this feature in WebKit and it is now available in &lt;a href=&quot;https://developer.apple.com/safari/technology-preview/release-notes/#r37&quot;&gt;Safari Technology Preview 37&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Finally, another proposed security improvement is to use an
&lt;a href=&quot;https://html.spec.whatwg.org/#attr-iframe-sandbox-allow-modals&quot;&gt;allow-modals&lt;/a&gt;
flag
to explicitly allow sandboxed frames to display modal dialogs (with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;alert&lt;/code&gt;,
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;prompt&lt;/code&gt;, etc). That is, the default behavior for sandboxed frames will be
to forbid such modal dialogs. Again, such a change of behavior must be done with
care. Experiments in Chromium showed that the
&lt;a href=&quot;https://www.chromestatus.com/metrics/feature/timeline/popularity/767&quot;&gt;usage of modal dialogs in sandboxed frames&lt;/a&gt; is very low and no users complained.
Hence we
&lt;a href=&quot;https://trac.webkit.org/changeset/221193&quot;&gt;implemented that behavior in WebKit&lt;/a&gt;
and the feature should arrive in Safari Technology Preview soon.&lt;/p&gt;

&lt;p&gt;Check out the
&lt;a href=&quot;https://webkit.org/demos/frames/sandboxing/&quot;&gt;frame sandboxing demos&lt;/a&gt; if
if you want to test the new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;allow-popup-to-escape-sandbox&lt;/code&gt;,
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;allow-top-navigation-without-user-activation&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;allow-modals&lt;/code&gt; flags.&lt;/p&gt;

&lt;h2 id=&quot;frame-scrolling-on-ios&quot;&gt;Frame scrolling on iOS&lt;/h2&gt;

&lt;p&gt;Apple’s UI choice was to (almost) always “flatten” (expand) frames so that
users do not require to scroll them. The rationale for this is that it avoids to
be trapped into hierarchy of nested frames. Changing that behavior is likely
to cause a big backward compatibility issue on iOS
so for now we proposed a less radical solution:
Add a heuristic to support the case of “fullscreen” iframes used by the AMP
Project. Note that such exceptions already exist in WebKit, e.g. to
avoid making &lt;a href=&quot;http://accessibilitytips.com/2008/03/04/positioning-content-offscreen/&quot;&gt;offscreen content&lt;/a&gt; visible.&lt;/p&gt;

&lt;p&gt;We thus &lt;a href=&quot;https://trac.webkit.org/changeset/218480&quot;&gt;added the following heuristic&lt;/a&gt; into
WebKit Nightly: do not flatten
out-of-flow iframes (e.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;position: absolute&lt;/code&gt;) that have viewport units
(e.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vw&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vh&lt;/code&gt;). This includes the case of the “fullscreen” iframe previously
mentioned. For now it is still under a developer flag so that WebKit developers
can control when they want to enable it. Of course, if this is successful we
might consider more advanced heuristics.&lt;/p&gt;

&lt;p&gt;The fact that &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=149264&quot;&gt;frames are never scrollable in iOS&lt;/a&gt; is an obvious interoperability
issue. As a workaround, it is possible to emulate such “scrollable nodes”
behavior using
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;overflow: scroll&lt;/code&gt; nodes with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-webkit-overflow-scrolling: touch&lt;/code&gt;
property set. This is not really ideal for our Web Predictability goal as we
would like to get rid of browser vendor prefixes. Also, in practice such
workarounds lead to even more problems in AMP as explained in these
&lt;a href=&quot;https://medium.com/@dvoytenko/amp-ios-scrolling-and-position-fixed-b854a5a0d451&quot;&gt;blog&lt;/a&gt;
&lt;a href=&quot;https://hackernoon.com/amp-ios-scrolling-and-position-fixed-redo-the-wrapper-approach-8874f0ee7876&quot;&gt;posts&lt;/a&gt;. That’s why implementing scrolling of frames is
one of the main goals of this project and
significant steps have already been made in that direction.&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
    &lt;div style=&quot;width: 400px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;a href=&quot;https://frederic-wang.fr/images/scrolling-classes.svg&quot;&gt;&lt;img src=&quot;https://frederic-wang.fr/images/scrolling-classes.svg&quot; alt=&quot;Class Hierarchy&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
    &lt;div&gt;&lt;small&gt;Figure 2: C++ classes involved in frame scrolling&lt;/small&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The (relatively complex) class hierarchy involved in frame scrolling is
summarized in Figure 2. The frame flattening heuristic mentioned above is
handled in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebCore::RenderIFrame&lt;/code&gt; class (in purple).
The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebCore::ScrollingTreeFrameScrollingNodeIOS&lt;/code&gt; and
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebCore::ScrollingTreeOverflowScrollingNodeIOS&lt;/code&gt; classes from the
scrolling tree (in blue) are used to scroll, respectively,
the main frame and overflow nodes on iOS. Scrolling of
non-main frames will obviously have some code to share with the former, but
it will also have some parts in common with the latter. For example,
passing an extra &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;UIScrollView&lt;/code&gt; layer is needed instead of relying on the one
contained in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WKWebView&lt;/code&gt; of the main frame. An important
step is thus to introduce a special class for scrolling inner frames that
would share some logic from the two other classes and
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=174097&quot;&gt;some refactoring to&lt;/a&gt; &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=174130&quot;&gt;ensure optimal code reuse&lt;/a&gt;.
Similar refactoring has been done for scrolling node states (in red)
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=174134&quot;&gt;to move the scrolling layer parameter into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebCore::ScrollingStateNode&lt;/code&gt;&lt;/a&gt; instead of having separate members
for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebCore::ScrollingStateOverflowScrollingNode&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebCore::ScrollingStateFrameScrollingNode&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The scrolling coordinator classes (in green) are also important, for example to
handle hit testing. At the moment, this is not really implemented for
overflow nodes but it might be important to have it for scrollable frames.
Again, one sees that some logic is shared for asynchronous scrolling on macOS (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebCore::ScrollingCoordinatorMac&lt;/code&gt;) and iOS (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebCore::ScrollingCoordinatorIOS&lt;/code&gt;)
in ancestor classes. Indeed, our effort to make frames scrollable on iOS
is also opening the possibility of
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=171667&quot;&gt;asynchronous scrolling of frames on macOS&lt;/a&gt;, something that is currently not implemented.&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
   &lt;div style=&quot;width: 500px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;a target=&quot;_blank&quot; href=&quot;https://player.vimeo.com/video/225557385&quot;&gt;&lt;img src=&quot;https://frederic-wang.fr/images/video-ios-frame-scrolling.png&quot; alt=&quot;Class Hierarchy&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
    &lt;div&gt;&lt;small&gt;Figure 4: Video of this &lt;a href=&quot;https://webkit.org/demos/frames/scrollable-iframes.html&quot;&gt;demo page&lt;/a&gt; on WebKit iOS with experimental patches to make frame scrollables (2017/07/10)&lt;/small&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Finally, some more work is necessary in the render classes (purple) to ensure
that the layer hierarchies are correctly built. Patches
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=173833&quot;&gt;have been uploaded&lt;/a&gt;
and you can view the result on the video of Figure 4.
Notice that this work has not been reviewed yet and
there are known bugs, for example with
overlapping elements (hit testing not implemented) or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;position: fixed&lt;/code&gt;
elements.&lt;/p&gt;

&lt;p&gt;Various other scrolling bugs were reported, analyzed and sometimes fixed by
Apple. The switch from overflow nodes to scrollable iframes is unlikely to
address them. For example, the “Find Text” operation in iOS has
advanced features done by the UI process (highlight, smart magnification) but
the &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=163911&quot;&gt;scrolling operation needed only works for the main frame&lt;/a&gt;. It looks like this could be fixed
by unifying a bit the scrolling code path with macOS. There are also
several &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=154399&quot;&gt;jump and flickering bugs&lt;/a&gt; with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;position: fixed&lt;/code&gt; nodes. Finally, Apple fixed
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=162499&quot;&gt;inconsistent scrolling inertia&lt;/a&gt;
used for the main frame and the one used for inner scrollable nodes by
making the former the same as the latter.&lt;/p&gt;

&lt;h2 id=&quot;root-scroller&quot;&gt;Root Scroller&lt;/h2&gt;

&lt;p&gt;The CSSOM View specification &lt;a href=&quot;https://drafts.csswg.org/cssom-view/#extension-to-the-element-interface&quot;&gt;extends the DOM element with some scrolling properties&lt;/a&gt;.
That specification indicates that the element to consider to scroll the main view
is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;document.body&lt;/code&gt; in quirks mode while it is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;document.documentElement&lt;/code&gt;
in no-quirks mode. This is the behavior that has always been followed
by browsers like Firefox or Interner Explorer. However, WebKit-based browsers
always treat &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;document.body&lt;/code&gt; as the root scroller. This interoperability issue
has been a big problem for web developers.
One convenient workaround was to introduce the
&lt;a href=&quot;https://drafts.csswg.org/cssom-view/#dom-document-scrollingelement&quot;&gt;document.scrollingElement&lt;/a&gt; which returns the element to use for scrolling the main
view (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;document.body&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;document.documentElement&lt;/code&gt;) and was recently
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=143609&quot;&gt;implemented in WebKit&lt;/a&gt;.
Use this
&lt;a href=&quot;https://webkit.org/demos/frames/scrollingElement.html&quot;&gt;test page&lt;/a&gt;
to verify whether your browser supports the
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;document.scrollingElement&lt;/code&gt; property and which DOM element is used to scroll
the main view in no-quirks mode.&lt;/p&gt;

&lt;p&gt;Nevertheless, this does not solve the issue with existing web pages.
Chromium’s Web Platform Predictability team has made a huge communication effort
with Web authors and developers which has
drastically reduced the use of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;document.body&lt;/code&gt; in no-quirks mode. For instance,
Chromium’s telemetry on Figure 3 indicates that the percentage of
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;document.body.scrollTop&lt;/code&gt; in no-quirks pages has gone
from 18% down to 0.0003% during the past three years. Hence the Chromium team
is now considering &lt;a href=&quot;https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/X64Sg16RhT4&quot;&gt;shipping the standard behavior&lt;/a&gt;.&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
    &lt;div style=&quot;width: 400px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;a href=&quot;https://www.chromestatus.com/metrics/feature/popularity#ScrollTopBodyNotQuirksMode&quot;&gt;&lt;img width=&quot;400&quot; src=&quot;https://frederic-wang.fr/images/ScrollTopBodyNotQuirksMode.png&quot; alt=&quot;UseCounter for ScrollTopBodyNotQuirksMode&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
    &lt;div&gt;&lt;small&gt;Figure 3: Use of &lt;code&gt;document.body.scrollTop&lt;/code&gt; in no-quirks mode over time (Chromium&apos;s UseCounter)&lt;/small&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In WebKit, the issue has been known for a long time and an
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=106133&quot;&gt;old attempt to fix it was reverted for causing regressions&lt;/a&gt;. For now, we imported
the &lt;a href=&quot;https://trac.webkit.org/changeset/215726/&quot;&gt;CSSOM View tests&lt;/a&gt; and just
marked the one related to the scrolling element as failing. An analysis
of the situation has been left on
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=5991#c14&quot;&gt;WebKit’s bug&lt;/a&gt;; Depending on
how things evolve on Chromium’s side we could consider the discussion and
implementation work in WebKit.&lt;/p&gt;

&lt;p&gt;Related to that work, a
&lt;a href=&quot;https://github.com/bokand/NonDocumentRootScroller&quot;&gt;new API&lt;/a&gt; is being proposed
to set the root scroller to an arbitrary scrolling element, giving
more flexibility to authors of Web applications. Today, this is unfortunately
not possible
without losing some of the special features of the main view (e.g. on iOS,
Safari’s URL bar is hidden when scrolling the main view
to maximize the screen space). Such
API is currently being experimented in Chromium and we plan to
investigate whether this can be implemented in WebKit too.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;In the past months, The AMP Project and Igalia have worked on analyzing some
interoperability issue and fixing them in WebKit. Many improvements for
frame sandboxing are going to be available soon.
Significant progress has also been
made for frame scrolling on iOS and collaboration continues with
Apple reviewers to ensure that the work will be integrated in future versions of
WebKit. Improvements to “root scrolling” are also being considered although they
are pending on the evolution of the issues on Chromium’s side. All these
efforts are expected to be useful for WebKit users and the Web platform
in general.&lt;/p&gt;

&lt;div&gt;
&lt;div style=&quot;width: 364px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;a href=&quot;http://www.igalia.com&quot;&gt;&lt;img src=&quot;https://frederic-wang.fr/images/igalia-logo-364x130.png&quot; alt=&quot;Igalia Logo&quot; width=&quot;364&quot; height=&quot;130&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;width: 400px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;a href=&quot;https://www.ampproject.org/&quot;&gt;&lt;img src=&quot;https://frederic-wang.fr/images/amp-logo-400x210.png&quot; alt=&quot;AMP Logo&quot; width=&quot;400&quot; height=&quot;210&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Last but not least, I would like to thank Apple engineers Simon Fraser,
Chris Dumez, and Youenn Fablet for their reviews and help, as well as Google
and the AMP team for supporting that project.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>MathZilla collection ported to WebExtensions</title>
   <link href="https://frederic-wang.fr//2017/04/29/mathzilla-collection-ported-to-webextensions/"/>
   <updated>2017-04-29T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2017/04/29/mathzilla-collection-ported-to-webextensions</id>
   <content type="html">
&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/collections/fred_wang/mathzilla/&quot;&gt;MathZilla&lt;/a&gt;
is a collection of MathML-related add-ons for Mozilla
applications. It provides nice features such as
forcing native MathML rendering (e.g. on Wikipedia),
using Web fonts to render MathML or
providing a context menu item to copy math formulas into the clipboard.&lt;/p&gt;

&lt;p&gt;Initially written as a single
&lt;a href=&quot;https://developer.mozilla.org/en-US/Add-ons/Overlay_Extensions&quot;&gt;XUL overlay extension&lt;/a&gt; (with even binary code for the LaTeX-to-MathML converter)
it grows up as a collection of restartless add-ons using
&lt;a href=&quot;https://developer.mozilla.org/en-US/Add-ons/Bootstrapped_extensions&quot;&gt;bootstrapped&lt;/a&gt;
or &lt;a href=&quot;https://developer.mozilla.org/en-US/Add-ons/SDK&quot;&gt;SDK-based&lt;/a&gt; extensions,
following the evolution of Mozilla’s recommendations.
Also, SDK-based extensions were first generated using
a Python program called
&lt;a href=&quot;https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/cfx&quot;&gt;cfx&lt;/a&gt;
before Mozilla recommended to switch to a JS-based replacement called
&lt;a href=&quot;https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm&quot;&gt;jpm&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Mozilla &lt;a href=&quot;https://blog.mozilla.org/addons/2015/08/21/the-future-of-developing-firefox-add-ons/&quot;&gt;announced some time ago&lt;/a&gt; that they will transition to the
&lt;a href=&quot;https://developer.mozilla.org/en-US/Add-ons/WebExtensions&quot;&gt;WebExtensions&lt;/a&gt;
format. On the one hand this sounds bad because developers have to re-write
their legacy add-ons again and actually
be sure that the transition is even possible or does break anything.
On the other hand it is good for long-term interoperability since e.g.
Chromium browsers or Microsoft Edge support that format. My colleague
Michael Catanzaro also mentioned in a recent blog post &lt;a href=&quot;https://blogs.gnome.org/mcatanzaro/2017/03/23/a-web-browser-for-awesome-people-epiphany-3-24/&quot;&gt;that WebExtensions are considered for Epiphany too&lt;/a&gt;. It is not clear what Mozilla’s plan is for
&lt;a href=&quot;https://wiki.mozilla.org/Add-ons/2017#Thunderbird&quot;&gt;Thunderbird&lt;/a&gt; or
&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1320556&quot;&gt;SeaMonkey&lt;/a&gt; but hopefully
they will use that format too (in the past I was suggested to
&lt;a href=&quot;https://github.com/fred-wang/Mathzilla/issues/27&quot;&gt;make the MathZilla add-ons compatible with SeaMonkey&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recently, Mozilla announced their &lt;a href=&quot;https://blog.mozilla.org/addons/2017/02/16/the-road-to-firefox-57-compatibility-milestones/&quot;&gt;plans for Firefox 57&lt;/a&gt; which
is basically to allow only add-ons written as WebExtensions&lt;/strong&gt;. This means I had
to re-write the Mathzilla add-ons again or they will stop working at the end of the
year. In general, I believe the features have been preserved although &lt;strong&gt;there might be some small behavior changes or minor bugs due to the WebExtensions format&lt;/strong&gt;. Please check the GitHub bug trackers and release notes for known
issues and report any other problems you find.
Finally, I reorganized a bit the git repositories and add-on names.
Here is the updated list (some add-ons are still being reviewed by Mozilla):&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/fred-wang/MathFonts/tree/master/webextension&quot;&gt;MathML Fonts&lt;/a&gt; (&lt;strong&gt;~2300 users&lt;/strong&gt;) - Provide &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Mozilla/MathML_Project/Fonts&quot;&gt;MathML fonts&lt;/a&gt; as Web fonts, which is useful when they can not
be installed (e.g. Firefox for Android).&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/fred-wang/webextension-native-mathml&quot;&gt;Native MathML&lt;/a&gt; (&lt;strong&gt;~1400 users&lt;/strong&gt;) - Force MathJax/KaTeX/MediaWiki to use native MathML rendering.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/fred-wang/webextension-mathml-copy&quot;&gt;MathML Copy&lt;/a&gt; (&lt;strong&gt;~500 users&lt;/strong&gt;) - Add context menu items to copy a MathML formula or other annotations attached to it (e.g. LaTeX) into the clipboard.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/fred-wang/TeXZilla/tree/master/webextension&quot;&gt;TeXZilla&lt;/a&gt; (&lt;strong&gt;~500 users&lt;/strong&gt;) - Add-on giving access to TeXZilla, a Unicode TeX-to-MathML converter.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/fred-wang/webextension-mathml-font-settings&quot;&gt;MathML Font Settings&lt;/a&gt; (&lt;strong&gt;~300 users&lt;/strong&gt;) - Add context menu items to configure MathML font settings. Note that in recent Mozilla versions the advanced font preferences menu allows to configure “Fonts for Mathematics”.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/fred-wang/webextension-presentation-mathml-polyfill&quot;&gt;Presentation MathML Polyfill&lt;/a&gt; (&lt;strong&gt;~200 users&lt;/strong&gt;) - Add support for some advanced presentation MathML features (currently using David Carlisle’s “mml3ff” XSLT stylesheet).&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/fred-wang/webextension-content-mathml-polyfill&quot;&gt;Content MathML Polyfill&lt;/a&gt; (&lt;strong&gt;~200 users&lt;/strong&gt;) - Add support for some content MathML features (currently using David Carlisle’s “ctop” XSLT stylesheet).&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/fred-wang/webextension-mathml-zoom&quot;&gt;MathML Zoom&lt;/a&gt; (&lt;strong&gt;~100 users&lt;/strong&gt;) - Allow zooming of mathematical formulas.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/fred-wang/webextension-mathml-view-source/&quot;&gt;MathML View Source&lt;/a&gt; (&lt;strong&gt;experimental&lt;/strong&gt;) - This is a re-writing of Mozilla’s ‘view MathML source’ feature with better syntax highlighting and serialization. The idea originated from &lt;a href=&quot;https://groups.google.com/forum/#!topic/mozilla.dev.tech.mathml/S0CdPUJuQnY&quot;&gt;this thread&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/fred-wang/webextension-image-to-mathml&quot;&gt;Image To MathML&lt;/a&gt; (&lt;strong&gt;experimental&lt;/strong&gt;) - Try and convert images of mathematical formulas into MathML. It has &lt;a href=&quot;https://github.com/fred-wang/webextension-image-to-mathml/issues/1&quot;&gt;not been ported to WebExtensions yet&lt;/a&gt; and I do not plan to do it in the short term.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a conclusion, &lt;strong&gt;I’d like to thank all the MathZilla users for their kind comments, bug reporting and financial support&lt;/strong&gt;. The next step will probably be to ensure addons work in more browsers but that will be for another time ;-)&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Mus Window System</title>
   <link href="https://frederic-wang.fr//2017/01/23/mus-window-system/"/>
   <updated>2017-01-23T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2017/01/23/mus-window-system</id>
   <content type="html">
&lt;p&gt;&lt;ins style=&quot;color: orange&quot;&gt;Update 2017/02/01: The day I published this blog post, the old mus client library was &lt;a href=&quot;https://codereview.chromium.org/2651593002&quot;&gt;removed&lt;/a&gt;. Some stack traces were taken during the analysis Antonio &amp;amp; I made in fall 2016, but they are now obsolete. I’m updating the blog in order to try and clarify things and fix possible inaccuracies.&lt;/ins&gt;&lt;/p&gt;

&lt;h1 id=&quot;tl-dr&quot;&gt;TL; DR&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Igalia has recently been working on &lt;a href=&quot;https://www.reddit.com/r/blinkon7/comments/5p5w28/desktop_chrome_waylandozone/&quot;&gt;making Chromium Desktop run natively on Ozone/Wayland&lt;/a&gt;&lt;/strong&gt; thanks to support from &lt;a href=&quot;https://www.renesas.com/&quot;&gt;Renesas&lt;/a&gt;.
This is however still experimental and there is a lot of UI work to do.
In order to &lt;strong&gt;facilitate discussion at BlinkOn7&lt;/strong&gt; and more specifically how
browser windows are managed, we started an &lt;strong&gt;analysis of the Chromium Window
system&lt;/strong&gt;. An overview is provided in this blog post.&lt;/p&gt;

&lt;h1 id=&quot;introduction&quot;&gt;Introduction&lt;/h1&gt;

&lt;p&gt;Antonio described how we were able to get &lt;a href=&quot;https://blogs.igalia.com/tonikitoo/2016/11/14/chromium-ozone-wayland-and-beyond/&quot;&gt;upstream Chromium running on Linux/Ozone/Wayland&lt;/a&gt; last year. However for that purpose the browser
windows were really embedded in the “ash” environment (with additional widgets)
which was itself drawn in an Ozone/Wayland window. This configuration is
obviously not ideal but it at least allowed us to do some initial experiments
and to present demos of &lt;a href=&quot;https://frederic-wang.fr/chromium-on-r-car-m3.html&quot;&gt;Chromium running on R-Car M3&lt;/a&gt; at &lt;a href=&quot;https://www.igalia.com/nc/igalia-247/news/item/igalia-to-attend-ces-las-vegas-2017/&quot;&gt;CES 2017&lt;/a&gt;. If you are interested you can
check our &lt;a href=&quot;https://github.com/Igalia/ces-demos-2017&quot;&gt;ces-demos-2017&lt;/a&gt;
and &lt;a href=&quot;https://github.com/Igalia/meta-browser&quot;&gt;meta-browser&lt;/a&gt; repositories on
GitHub. Our next goal is to have all the browser windows handled as native
Ozone/Wayland windows.&lt;/p&gt;

&lt;p&gt;In a &lt;a href=&quot;https://frederic-wang.fr/analysis-of-ozone-wayland.html&quot;&gt;previous blog post&lt;/a&gt;, I gave an overview of the architecture of &lt;a href=&quot;https://chromium.googlesource.com/chromium/src/+/master/docs/ozone_overview.md&quot;&gt;Ozone&lt;/a&gt;. In particular, I described classes used to handle Ozone windows for the &lt;a href=&quot;https://en.wikipedia.org/wiki/X_Window_System&quot;&gt;X11&lt;/a&gt; or &lt;a href=&quot;https://en.wikipedia.org/wiki/Wayland_\(display_server_protocol\)&quot;&gt;Wayland&lt;/a&gt; platforms. However, this was only a small part of the picture and to understand things globally one really has to take into account the classes for the Aura window system and Mus window client &amp;amp; server.&lt;/p&gt;

&lt;h1 id=&quot;window-related-classes&quot;&gt;Window-related Classes&lt;/h1&gt;

&lt;h2 id=&quot;class-hierarchy&quot;&gt;Class Hierarchy&lt;/h2&gt;

&lt;p&gt;A large number of C++ classes and types are involved in the chromium window
system. The following diagram provides an overview of the class hierarchy. It
can merely be divided into four parts:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;In blue, the native Ozone Windows and their host class in Aura.&lt;/li&gt;
  &lt;li&gt;In red and orange, the Aura Window Tree.&lt;/li&gt;
  &lt;li&gt;In purple, the Mus Window Tree (client-side). &lt;ins style=&quot;color: orange&quot;&gt;Update 2017/02/01: These classes have been &lt;a href=&quot;https://codereview.chromium.org/2651593002&quot;&gt;removed&lt;/a&gt;.&lt;/ins&gt;&lt;/li&gt;
  &lt;li&gt;In green and brown, the Mus Window Tree (server-side) and its associated
factories.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://frederic-wang.fr/images/windowing-system.svg&quot;&gt;&lt;img src=&quot;https://frederic-wang.fr/images/windowing-system.svg&quot; alt=&quot;Windowing System&quot; style=&quot;width: 100%&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I used the following convention which is more or less based on UML:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Rectangles represent classes/interfaces while ellipses represent enums, types,
defines etc. You can click them to access the corresponding C++ source file.&lt;/li&gt;
  &lt;li&gt;Inheritance is indicated by a white arrow to the base class from the derived
class. For implementation of Mojo interfaces, dashed white arrows are used.&lt;/li&gt;
  &lt;li&gt;Other associations are represented by an arrow with open or diamond head.
They mean that the origin of the arrow has a member involving one or more
instances of the pointed class, you can hover over the arrow head to
see the name of that class member.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;native-ozone-windows-blue&quot;&gt;Native Ozone Windows (blue)&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/platform_window/platform_window.h&quot;&gt;ui::PlatformWindow&lt;/a&gt; is an abstract class representing a single window
in the underlying platform windowing system. Examples of implementations include &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/platform_window/x11/x11_window_ozone.h&quot;&gt;ui::X11WindowOzone&lt;/a&gt; or &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/platform/wayland/wayland_window.h&quot;&gt;ui::WaylandWindow&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::PlatformWindow&lt;/code&gt; can be stored in a
&lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/ws/platform_display_default.h&quot;&gt;ui::ws::PlatformDisplayDefault&lt;/a&gt; which implements the
&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/platform_window/platform_window_delegate.h&quot;&gt;ui::PlatformWindowDelegate&lt;/a&gt; interface too. This in turn allows to use
platform windows as &lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/ws/display.h&quot;&gt;ui::ws::Display&lt;/a&gt;. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::ws::Display&lt;/code&gt; also has an associated delegate class.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/window_tree_host.h&quot;&gt;aura::WindowTreeHost&lt;/a&gt; is a generic class that hosts an embedded &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura:Window&lt;/code&gt;
root and bridges between the native window and that embedded root window.
One can register instance of &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/window_tree_host_observer.h&quot;&gt;aura::WindowTreeHostObserver&lt;/a&gt; as observers. There are
various implementations of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeHost&lt;/code&gt; but we only consider
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeHostPlatform&lt;/code&gt; here.&lt;/p&gt;

&lt;p&gt;Native &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::PlatformWindow&lt;/code&gt; windows are stored in an instance of
&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/window_tree_host_platform.h&quot;&gt;aura::WindowTreeHostPlatform&lt;/a&gt; which also holds the &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/gfx/native_widget_types.h&quot;&gt;gfx::AcceleratedWidget&lt;/a&gt; to paint on.
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeHostPlatform&lt;/code&gt; implements the
&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/platform_window/platform_window_delegate.h&quot;&gt;ui::PlatformWindowDelegate&lt;/a&gt; so that it can listen events from the
underlying &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::PlatformWindow&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/mus/window_tree_host_mus.h&quot;&gt;aura::WindowTreeHostMus&lt;/a&gt; is a derived class of &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/window_tree_host_platform.h&quot;&gt;aura::WindowTreeHostPlatform&lt;/a&gt; that has additional logic make it usable in mus. One can listen changes from
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeHostMus&lt;/code&gt; by implementing the
&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/mus/window_tree_host_mus_delegate.h&quot;&gt;aura::WindowTreeHostMusDelegate&lt;/a&gt; interface.&lt;/p&gt;

&lt;h2 id=&quot;aura-windows-orange&quot;&gt;Aura Windows (orange)&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/window.h&quot;&gt;aura::Window&lt;/a&gt; represents
windows in Aura. One can communicate with instances of that class using
a &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/window_delegate.h&amp;quot; color=&amp;quot;green&amp;quot; fontcolor=&amp;quot;green&amp;quot;&quot;&gt;aura::WindowDelegate&lt;/a&gt;. It is also possible to listen for events by registering a list of &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/window_observer.h&quot;&gt;aura::WindowObserver&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/window_port.h&quot;&gt;aura::WindowPort&lt;/a&gt;
defines an interface to enable &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/window.h&quot;&gt;aura::Window&lt;/a&gt; to be used either with mus via &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/mus/window_mus.h&quot;&gt;aura::WindowMus&lt;/a&gt; or with the classical
environment via &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/window_port_local.h&quot;&gt;aura::WindowPortLocal&lt;/a&gt;. Here, we only consider the former.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WindowPortMus&lt;/code&gt; holds a reference to a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeClient&lt;/code&gt;. All the
changes to the former are forwarded to the latter so that we are sure they
are propagated to the server. Conversely, changes received by
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeClient&lt;/code&gt; are sent back to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WindowPortMus&lt;/code&gt;. However,
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeClient&lt;/code&gt; uses an intermediary &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/mus/window_mus.h&quot;&gt;aura::WindowMus&lt;/a&gt; class for that purpose to avoid
that the changes are submitted again to the server.&lt;/p&gt;

&lt;h2 id=&quot;aura-window-tree-client-red&quot;&gt;Aura Window Tree Client (red)&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/mus/window_tree_client.h&quot;&gt;aura::WindowTreeClient&lt;/a&gt; is an implementation of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowManager&lt;/code&gt; and
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowTreeClient&lt;/code&gt; Mojo interfaces for Aura.
As in previous classes, we can associate to it a &lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/aura/mus/window_tree_client_delegate.h&quot;&gt;aura::WindowTreeClientDelegate&lt;/a&gt; or register a list of &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/mus/window_tree_client_observer.h&quot;&gt;aura::WindowTreeClientObserver&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeClient&lt;/code&gt; also implements the
&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/aura/mus/window_manager_delegate.h&quot;&gt;aura::WindowManagerClient&lt;/a&gt; interface and has as an associated
&lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/public/cpp/window_manager_delegate.h&quot;&gt;aura::WindowManagerDelegate&lt;/a&gt;.
It has a set of roots &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowPortMus&lt;/code&gt; which serve
as an intermediary to the actual &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura:Window&lt;/code&gt; instances.&lt;/p&gt;

&lt;p&gt;In order to use an Aura Window Tree Client, you first create it using a Mojo
connector, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeClientDelegate&lt;/code&gt; as well as optional
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowManagerDelegate&lt;/code&gt; and Mojo interface request for
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowTreeClient&lt;/code&gt;. After that you need to call
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ConnectViaWindowTreeFactory&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ConnectAsWindowManager&lt;/code&gt; to connect
to the Window server and create the corresponding &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowTree&lt;/code&gt;
connection. Obviously, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AddObserver&lt;/code&gt; can be used to add observers.&lt;/p&gt;

&lt;p&gt;Finally, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CreateWindowPortForTopLevel&lt;/code&gt; function can be used to request
the server to create a new top level window and associate a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WindowPortMus&lt;/code&gt;
to it.&lt;/p&gt;

&lt;h2 id=&quot;mus-window-tree-client-purple&quot;&gt;Mus Window Tree Client (purple)&lt;/h2&gt;

&lt;p&gt;&lt;ins style=&quot;color: orange&quot;&gt;Update 2017/02/01: These classes have been &lt;a href=&quot;https://codereview.chromium.org/2651593002&quot;&gt;removed&lt;/a&gt;.&lt;/ins&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/public/cpp/window_tree_client.h&quot;&gt;ui::WindowTreeClient&lt;/a&gt; is the equivalent of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura:WindowTreeClient&lt;/code&gt; in mus.
It implements the
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowManager&lt;/code&gt; and
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowTreeClient&lt;/code&gt; Mojo interfaces.
It derives from &lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/public/cpp/window_manager_delegate.h&quot;&gt;ui::WindowManagerClient&lt;/a&gt;, has a list of
&lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/public/cpp/window_tree_client_observer.h&quot;&gt;ui::WindowTreeClientObserver&lt;/a&gt; and
is associated to &lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/public/cpp/window_manager_delegate.h&quot;&gt;ui::WindowManagerDelegate&lt;/a&gt; and
&lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/public/cpp/window_tree_client_delegate.h&quot;&gt;ui::WindowTreeClientDelegate&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Regarding windows, they are simpler than in Aura since we only have one class &lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/public/cpp/window_tree_client.h&quot;&gt;ui::Window&lt;/a&gt; class. In a similar way as Aura, we can register
&lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/public/cpp/window_observer.h&quot;&gt;ui::WindowObserver&lt;/a&gt;. We can also add &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::Window&lt;/code&gt; as root windows or embedded
windows of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::WindowTreeClient&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In order to use a Mus Window Tree Client, you first create it using a
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::WindowTreeClientDelegate&lt;/code&gt; as well as optional
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::WindowManagerDelegate&lt;/code&gt; and Mojo interface request for
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowTreeClient&lt;/code&gt;. After that you need to call
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ConnectViaWindowTreeFactory&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ConnectAsWindowManager&lt;/code&gt; to connect
to the Window server and create the corresponding &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowTree&lt;/code&gt;
connection. Obviously, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AddObserver&lt;/code&gt; can be used to add observers.&lt;/p&gt;

&lt;p&gt;Finally, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NewTopLevelWindow&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NewWindow&lt;/code&gt; functions
can be used to create new
windows. This will cause the corresponding functions to be called on the
connected &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowTree&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;mus-window-tree-server-green-and-brown&quot;&gt;Mus Window Tree Server (green and brown)&lt;/h2&gt;

&lt;p&gt;We just saw the Aura and Mus window tree clients. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::ws::WindowTree&lt;/code&gt; Mojo
interface is used to for the window tree server and is implemented in
&lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/ws/window_tree.h&quot;&gt;ui::ws::WindowTree&lt;/a&gt;. In order to create window trees, we can use
either the &lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/ws/window_manager_window_tree_factory.h&quot;&gt;ui::ws::WindowManagerWindowTreeFactory&lt;/a&gt; or the
&lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/ws/window_tree_factory.h&amp;quot;  color=&amp;quot;green&amp;quot; fontcolor=&amp;quot;green&amp;quot;&quot;&gt;ui::ws::WindowTreeFactory&lt;/a&gt; which are available
through the corresponding &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowManagerWindowTreeFactory&lt;/code&gt; and
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowTreeFactory&lt;/code&gt; Mojo interfaces.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/ws/window_tree_host_factory.h&quot;&gt;ui::ws::WindowTreeHostFactory&lt;/a&gt; implements the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::ws::WindowTreeHostFactory&lt;/code&gt; Mojo interface. It allows to create
&lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/window_tree_host.mojom&quot;&gt;ui::mojom::WindowTreeHost&lt;/a&gt;, more precisely &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::ws::Display&lt;/code&gt; implementing that
interface. Under the hood, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::ws::Display&lt;/code&gt; created that way actually have an
associated &lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/ws/display_binding.h&quot;&gt;ws::DisplayBinding&lt;/a&gt; creating a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::ws::WindowTree&lt;/code&gt;. Of course, the display
also has a native window associated to it.&lt;/p&gt;

&lt;h2 id=&quot;mojo-window-tree-apis-pink&quot;&gt;Mojo Window Tree APIs (pink)&lt;/h2&gt;

&lt;p&gt;&lt;ins style=&quot;color: orange&quot;&gt;Update 2017/02/01: The Mus client has been &lt;a href=&quot;https://codereview.chromium.org/2651593002&quot;&gt;removed&lt;/a&gt;. This section only applies to the Aura client.&lt;/ins&gt;&lt;/p&gt;

&lt;p&gt;As we have just seen in previous sections the Aura and Mus window systems are
very similar and in particular implement the same Mojo
&lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/public/interfaces/window_manager.mojom&quot;&gt;ui::mojom::WindowManager&lt;/a&gt;
and &lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/public/interfaces/window_tree.mojom&quot;&gt;ui::mojom::WindowTreeClient&lt;/a&gt; interfaces. In particular:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowManager::WmCreateTopLevelWindow&lt;/code&gt; function can
be used to create a new top level window. This results in a new windows
(&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::Window&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::Window&lt;/code&gt;) being added to the set of embedded windows.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowManager::WmNewDisplayAdded&lt;/code&gt; function is invoked when
a new display is added. This results in a new  window being added to the set
of window roots (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowMus&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::Window&lt;/code&gt;).&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowTreeClient::OnEmbed&lt;/code&gt; function is invoked when
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Embed&lt;/code&gt; is called on the connected &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowTree&lt;/code&gt;.
The window parameter will be set as the window root
(&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura:WindowMus&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui:Window&lt;/code&gt;). Note that we assume that the set
of roots is empty when such an embedding happens.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that for Aura Window Tree Client, the creation of new
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowMus&lt;/code&gt; window roots implies the creation of the associated
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeHostMus&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowPortMus&lt;/code&gt;. The creation of the new
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura:Window&lt;/code&gt; window by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WmCreateTopLevelWindow&lt;/code&gt; is left to the
corresponding implementation in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowManagerDelegate&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;On the server side, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::ws::WindowTree&lt;/code&gt; implements the
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowTree&lt;/code&gt; mojo interface. In particular:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowTree::Embed&lt;/code&gt; function can be used to embed a
WindowTreeClient at a given window. This will result of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;OnEmbed&lt;/code&gt; being called
on the window tree client.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowTree::NewWindow&lt;/code&gt; function can be used to create a new
window. It will call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;OnChangeCompleted&lt;/code&gt; on the window tree client.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::mojom::WindowTree::NewTopLevelWindow&lt;/code&gt; function can be used to
request the window manager to create a new top level window.
It will call &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;OnTopLevelCreated&lt;/code&gt; (or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;OnChangeCompleted&lt;/code&gt; in case of failure)
on the window tree client.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;analysis-of-window-creation&quot;&gt;Analysis of Window Creation&lt;/h1&gt;

&lt;h2 id=&quot;chromemash&quot;&gt;Chrome/Mash&lt;/h2&gt;

&lt;p&gt;In our project, we are interested in how Chrome/Mash windows are created. When
the chrome browser process is launched, it takes the regular content/browser
startup path. That means in
&lt;a href=&quot;https://cs.chromium.org/chromium/src/chrome/app/chrome_main.cc&quot;&gt;chrome/app/chrome_main.cc&lt;/a&gt;
it does not take the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;::MainMash&lt;/code&gt; path, but instead &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;content::ContentMain&lt;/code&gt;.
This is the call stack of Chrome window creation within the mash shell:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;#1 0x7f7104e9fd02 ui::WindowTreeClient::NewTopLevelWindow()
#2 0x5647d0ed9067 BrowserFrameMus::BrowserFrameMus()
#3 0x5647d09c4a47 NativeBrowserFrameFactory::Create()
#4 0x5647d096bbc0 BrowserFrame::InitBrowserFrame()
#5 0x5647d0877b8a BrowserWindow::CreateBrowserWindow()
#6 0x5647d07d5a48 Browser::Browser()
...
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;ins style=&quot;color: orange&quot;&gt;Update 2017/02/01: This has changed since the time when the stack trace was taken. The BrowserFrameMus constructor now creates a views:DesktopNativeWidgetAura and thus an aura::Window.&lt;/ins&gt;&lt;/p&gt;

&lt;p&gt;The outtermost window created when one executes &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chrome --mash&lt;/code&gt; happens as
follows. When the UI service starts (see &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Service::OnStart&lt;/code&gt; in
&lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/service.cc&quot;&gt;services/ui/service.cc&lt;/a&gt;), an instance of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WindowServer&lt;/code&gt; is created. This creations triggers the
creation of a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GpuServiceProxy&lt;/code&gt; instance. See related snippets below:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;void Service::OnStart() {
  (...)
  // Gpu must be running before the PlatformScreen can be initialized.
  window_server_.reset(new ws::WindowServer(this));
  (..)
}

WindowServer::WindowServer(WindowServerDelegate* delegate)
: delegate_(delegate),
  (..)
  gpu_proxy_(new GpuServiceProxy(this)),
  (..)
{ }
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GpuServiceProxy&lt;/code&gt;, then, starts off the GPU service initialization. By the time
the GPU connection is established, the following callback is called: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GpuServiceProxy::OnInternalGpuChannelEstablished&lt;/code&gt;. This calls back to
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WindowServer::OnGpuChannelEstablished&lt;/code&gt;, which calls
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Service::StartDisplayInit&lt;/code&gt;. The later schedules a call to
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PlatformScreenStub::FixedSizeScreenConfiguration&lt;/code&gt;. This finally triggers the
creation of an Ozone top level window via an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::ws::Display&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;#0 base::debug::StackTrace::StackTrace()
#1 ui::(anonymous namespace)::OzonePlatformX11::CreatePlatformWindow()
#2 ui::ws::PlatformDisplayDefault::Init()
#3 ui::ws::Display::Init()
#4 ui::ws::DisplayManager::OnDisplayAdded()
#5 ui::ws::PlatformScreenStub::FixedSizeScreenConfiguration()
(..)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;ins style=&quot;color: orange&quot;&gt;On the client-side, the addition of a new display will cause &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeClient::WmNewDisplayAdded&lt;/code&gt; to be called and will eventually lead to the creation of an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeHostMus&lt;/code&gt; with the corresponding display id. As shown on the graph, this class derives from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeHost&lt;/code&gt; and hence instantiates an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::Window&lt;/code&gt;.&lt;/ins&gt;&lt;/p&gt;

&lt;h2 id=&quot;mus-demo&quot;&gt;Mus demo&lt;/h2&gt;

&lt;p&gt;The Chromium source code contains a small
&lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/demo/mus_demo.cc&quot;&gt;mus demo&lt;/a&gt;
that is also useful do experiments. The demo is implemented via a class with the
following inheritance:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;class MusDemo : public service_manager::Service,
                public aura::WindowTreeClientDelegate,
                public aura::WindowManagerDelegate
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;i.e. it can be started as Mus service and handles some events from
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura:WindowTreeClient&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowManager&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;When the demo service is launched, it creates a new Aura environment and an
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeClient&lt;/code&gt;, it does the Mojo request to create an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::WindowTree&lt;/code&gt;
and then performs the connection:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;#0 aura::WindowTreeClient::ConnectAsWindowManager()
#1 ui::demo::MusDemo::OnStart()
#2 service_manager::ServiceContext::OnStart()
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Similarly to Chrome/Mash, a new display and its associated native window is
created by the UI:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;#0 ui::ws::WindowTree::AddRootForWindowManager()
#1 ui::ws::Display::CreateWindowManagerDisplayRootFromFactory()
#2 ui::ws::Display::InitWindowManagerDisplayRoots()
#3 ui::ws::PlatformDisplayDefault::OnAcceleratedWidgetAvailable()
#4 ui::X11WindowBase::Create()
#5 ui::(anonymous namespace)::OzonePlatformX11::CreatePlatformWindow()
#6 ui::ws::PlatformDisplayDefault::Init()
#7 ui::ws::Display::Init()
#8 ui::ws::DisplayManager::OnDisplayAdded()
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The Aura Window Tree Client listens the changes and eventually
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeClient::WmNewDisplayAdded&lt;/code&gt; is called. It then informs its
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MusDemo&lt;/code&gt; delegate so that the display is &lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/demo/mus_demo.cc?q=MusDemo::OnWmWillCreateDisplay&quot;&gt;added to the screen display list&lt;/a&gt;…&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;#0 DisplayList::AddDisplay
#1 ui::demo::MusDemo::OnWmWillCreateDisplay
#2 aura::WindowTreeClient::WmNewDisplayAddedImpl
#3 aura::WindowTreeClient::WmNewDisplayAdded
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;…and &lt;a href=&quot;https://cs.chromium.org/chromium/src/services/ui/demo/mus_demo.cc?q=MusDemo::OnWmNewDisplay&quot;&gt;the animated bitmap window is added to the Window Tree&lt;/a&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;#0  ui::demo::MusDemo::OnWmNewDisplay
#1  aura::WindowTreeClient::WmNewDisplayAddedImpl
#2  aura::WindowTreeClient::WmNewDisplayAdded
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;ins style=&quot;color: orange&quot;&gt;Update 2017/02/01: Again, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeClient::WmNewDisplayAdded&lt;/code&gt; will lead to the creation of an aura Window.&lt;/ins&gt;&lt;/p&gt;

&lt;h1 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h1&gt;

&lt;p&gt;Currently, both Chrome/Mash or Mus demo create a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ui::ws::Display&lt;/code&gt;
containing a native Ozone window. The Mus demo class uses the Aura
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WindowTreeClient&lt;/code&gt; to track the creation of that display and pass it to the
Mus Demo class. The actual chrome browser window is created inside the native
Mash window using a Mus &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WindowTreeClient&lt;/code&gt;. Again, this is not what we want
since each chrome browser should have its own native window. It will be
interesting to first experiment multiple native windows with the Mus demo.&lt;/p&gt;

&lt;p&gt;&lt;ins style=&quot;color: orange&quot;&gt;Update 2017/02/01: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;aura::WindowTreeClient&lt;/code&gt; is now always used to create Aura Windows for both external windows (corresponding to a display &amp;amp; a native window) and internal windows. However, we still want all chrome browser to be external windows.&lt;/ins&gt;&lt;/p&gt;

&lt;div&gt;
&lt;div style=&quot;width: 364px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;a href=&quot;http://www.igalia.com&quot;&gt;&lt;img src=&quot;https://frederic-wang.fr/images/igalia-logo-364x130.png&quot; width=&quot;364&quot; height=&quot;130&quot; alt=&quot;Igalia Logo&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;width: 763px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;a href=&quot;https://www.renesas.com/en-eu/&quot;&gt;&lt;img src=&quot;https://frederic-wang.fr/images/renesas_logomark_l.jpg&quot; width=&quot;763&quot; height=&quot;130&quot; alt=&quot;Renesas Logo&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;It seems that the Ozone/Mash work has been mostly done with ChromeOS in mind
and will probably need some adjustments to make things work on desktop Linux.
We are very willing to discuss this and other steps for
&lt;a href=&quot;https://www.reddit.com/r/blinkon7/comments/5p5w28/desktop_chrome_waylandozone/&quot;&gt;Desktop Chrome Wayland/Ozone&lt;/a&gt; in details with
Google engineers. &lt;strong&gt;Antonio will attend BlinkOn7 next week and will be very
happy to talk with you so do not hesitate to get in touch!&lt;/strong&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>¡Igalia is hiring!</title>
   <link href="https://frederic-wang.fr//2016/12/22/igalia-is-hiring/"/>
   <updated>2016-12-22T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2016/12/22/igalia-is-hiring</id>
   <content type="html">
&lt;p&gt;If you read this blog, you probably know that I joined &lt;a href=&quot;https://www.igalia.com/&quot;&gt;Igalia&lt;/a&gt; early this year, where I have been involved in projects related to free software and web engines. You may however not be aware that Igalia has a flat &amp;amp; cooperative structure where all decisions (projects, events, recruitments, company agreements etc) are voted by members of an assembly. In my opinion such an organization allows to take better decisions and to avoid frustrations, compared to more traditional hierarchical organizations.&lt;/p&gt;

&lt;p&gt;After several months as a staff, I finally applied to become an assembly member and my application was approved in November! Hence I attended my first assembly last week where I got access to all the internal information and was also able to vote… In particular, we approved the opening of two &lt;a href=&quot;https://www.igalia.com/nc/igalia-247/news/item/we-are-hiring/&quot;&gt;new job positions&lt;/a&gt;. If you are interested in state-of-the-art free software projects and if you are willing to join a company with great human values, you should definitely consider applying!&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>STIX Two in Gecko and WebKit</title>
   <link href="https://frederic-wang.fr//2016/12/10/stix-two-in-gecko-and-webkit/"/>
   <updated>2016-12-10T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2016/12/10/stix-two-in-gecko-and-webkit</id>
   <content type="html">
&lt;p&gt;On the 1st of December, the &lt;a href=&quot;http://stixfonts.org/&quot;&gt;STIX Fonts project&lt;/a&gt;
announced the release of STIX 2. If you never heard about this project, it is
described &lt;a href=&quot;http://stixfonts.org/abt_geninfo.html&quot;&gt;as follows&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The mission of the Scientific and Technical Information Exchange (STIX) font creation project is the preparation of a comprehensive set of fonts that serve the scientific and engineering community in the process from manuscript creation through final publication, both in electronic and print formats.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This sounds a very exciting goal but the way it has been achieved has
made the STIX project infamous for its
&lt;a href=&quot;https://en.wikipedia.org/wiki/STIX_Fonts_project#Development_process&quot;&gt;numerous delays&lt;/a&gt;,
for its &lt;a href=&quot;https://sourceforge.net/p/stixfonts/tracking/2/&quot;&gt;poor&lt;/a&gt; or
&lt;a href=&quot;https://sourceforge.net/p/stixfonts/tracking/45/&quot;&gt;confusing&lt;/a&gt; packaging,
for delivering math fonts with
&lt;a href=&quot;https://sourceforge.net/p/stixfonts/tracking/59/&quot;&gt;too&lt;/a&gt;
&lt;a href=&quot;https://sourceforge.net/p/stixfonts/tracking/49/&quot;&gt;many&lt;/a&gt;
&lt;a href=&quot;https://sourceforge.net/p/stixfonts/tracking/33/&quot;&gt;bugs&lt;/a&gt; to be usable,
for its lack of
openness &amp;amp; &lt;a href=&quot;https://sourceforge.net/p/stixfonts/tracking/74/&quot;&gt;communication&lt;/a&gt;,
for its bad handling of third-party
feedback &amp;amp; &lt;a href=&quot;https://github.com/khaledhosny/xits-math&quot;&gt;contribution&lt;/a&gt;…&lt;/p&gt;

&lt;p&gt;Because of these laborious travels towards unsatisfactory releases, some
snarky people claim that the project was actually named after
&lt;em&gt;Styx&lt;/em&gt; (&lt;a href=&quot;https://en.wiktionary.org/wiki/%CE%A3%CF%84%CF%8D%CE%BE&quot;&gt;Στύξ&lt;/a&gt;)
the river from Greek mythology that one has to cross to enter the Underworld.
Or that the &lt;a href=&quot;http://stixfonts.org/proj_timeline.html&quot;&gt;story of the project&lt;/a&gt;
is summarized by Baudelaire’s verses from
&lt;a href=&quot;http://fleursdumal.org/poem/163&quot;&gt;L’Irrémédiable&lt;/a&gt;:&lt;/p&gt;

&lt;div lang=&quot;fr&quot;&gt;
&lt;blockquote&gt;
Une Idée, une Forme, un Être&lt;br /&gt;
Parti de l’azur et tombé&lt;br /&gt;
Dans un Styx bourbeux et plombé&lt;br /&gt;
Où nul œil du Ciel ne pénètre ;&lt;br /&gt;
&lt;/blockquote&gt;
&lt;/div&gt;

&lt;p&gt;More seriously, the good news is that the STIX
Consortium &lt;em&gt;finally&lt;/em&gt; released text fonts with a beautiful design and a
companion math font that is usable in math rendering engines such as
Word Processors, LaTeX and Web Engines. Indeed,
WebKit and Gecko have supported OpenType-based MathML layout for more
than three years (with
&lt;a href=&quot;https://frederic-wang.fr/mathml-improvements-in-webkit.html&quot;&gt;recent&lt;/a&gt;
&lt;a href=&quot;https://frederic-wang.fr/fonts-at-the-web-engines-hackfest-2016.html&quot;&gt;improvements&lt;/a&gt; by Igalia) and STIX Two now has correct OpenType data and metrics!&lt;/p&gt;

&lt;p&gt;Of course, the STIX Consortium did not
address all the technical or organizational issues
that have made its reputation but I count on
&lt;a href=&quot;https://twitter.com/KhaledGhetas&quot;&gt;Khaled Hosny&lt;/a&gt; to maintain
his more open &lt;a href=&quot;https://github.com/khaledhosny/xits-math&quot;&gt;XITS fork&lt;/a&gt;
with enhancements that have been ignored for STIX Two
(e.g. Arabic and RTL features) or
with fixes of
&lt;a href=&quot;https://sourceforge.net/p/stixfonts/tracking/milestone/Release%202.0.0/&quot;&gt;already reported bugs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As &lt;a href=&quot;https://en.wikipedia.org/wiki/Jacques_Distler&quot;&gt;Jacques Distler&lt;/a&gt; wrote in a &lt;a href=&quot;https://golem.ph.utexas.edu/~distler/blog/archives/002926.html#MMLf1&quot;&gt;recent blog post&lt;/a&gt;,
OS vendors should ideally bundle the STIX Two fonts in their default
installation. For now, users can
&lt;a href=&quot;http://sourceforge.net/projects/stixfonts/files/Current%20Release/STIXv2.0.0.zip/download&quot;&gt;download&lt;/a&gt; and install the OTF fonts themselves.
Note however that the STIX Two archive contains WOFF and WOFF2 fonts that page
authors can &lt;a href=&quot;https://fred-wang.github.io/MathFonts/&quot;&gt;use as web fonts&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I just landed patches in &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1322743&quot;&gt;Gecko&lt;/a&gt;
and &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=165676&quot;&gt;WebKit&lt;/a&gt; so that future
releases will
try and find STIX Two on your system for MathML rendering. However, you
can already do the proper font configuration via the preference
menu of your browser:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;For Gecko-based applications (e.g. Firefox, Seamonkey or Thunderbird),
go to the font preference and select &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;STIX Two Math&lt;/code&gt; as the
“font for mathematics”.&lt;/li&gt;
  &lt;li&gt;For WebKit-based applications (e.g. Epiphany or Safari)
add the following rule to your user stylesheet:
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;math { font-family: &quot;STIX Two Math&quot;; }&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally, here is a screenshot of MathML formulas rendered by
&lt;a href=&quot;https://www.mozilla.org/en-US/firefox/&quot;&gt;Firefox&lt;/a&gt; 49 using STIX Two:&lt;/p&gt;

&lt;div style=&quot;text-align: center; width: 500px; margin-left: auto; margin-right: auto;&quot;&gt;
  &lt;a href=&quot;https://frederic-wang.fr/images/stix-two-firefox-49.png&quot;&gt;&lt;img width=&quot;500&quot; src=&quot;https://frederic-wang.fr/images/stix-two-firefox-49.png&quot; alt=&quot;Screenshot of MathML formulas rendered by Firefox using STIX 2&quot; /&gt;&lt;/a&gt;
  &lt;small&gt;&lt;/small&gt;
&lt;/div&gt;

&lt;p&gt;And the same page rendered by
&lt;a href=&quot;https://wiki.gnome.org/Apps/Web/&quot;&gt;Epiphany&lt;/a&gt; 3.22.3:&lt;/p&gt;

&lt;div style=&quot;text-align: center; width: 500px; margin-left: auto; margin-right: auto;&quot;&gt;
  &lt;a href=&quot;https://frederic-wang.fr/images/stix-two-epiphany-3.22.3.png&quot;&gt;&lt;img width=&quot;500&quot; src=&quot;https://frederic-wang.fr/images/stix-two-epiphany-3.22.3.png&quot; alt=&quot;Screenshot of MathML formulas rendered by Epiphany using STIX 2&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Chromium on R-Car M3 &amp; AGL/Wayland</title>
   <link href="https://frederic-wang.fr//2016/12/03/chromium-on-r-car-m3/"/>
   <updated>2016-12-03T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2016/12/03/chromium-on-r-car-m3</id>
   <content type="html">
&lt;p&gt;As my fellow igalian
&lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/agomes/&quot;&gt;Antonio Gomes&lt;/a&gt;
explained
&lt;a href=&quot;https://blogs.igalia.com/tonikitoo/2016/11/14/chromium-ozone-wayland-and-beyond/&quot;&gt;on his blog&lt;/a&gt;, we have recenly been working on making the master
branch of Chromium run on Linux Desktop using the upstream
&lt;a href=&quot;https://chromium.googlesource.com/chromium/src/+/master/docs/ozone_overview.md&quot;&gt;Ozone/Wayland backend&lt;/a&gt;.
This effort is supported by &lt;a href=&quot;https://www.renesas.com/&quot;&gt;Renesas&lt;/a&gt; and they were
interested to rely on these recent developments to showcase
Chromium running on the latest generation of their
&lt;a href=&quot;https://www.renesas.com/en-us/solutions/automotive/products.html&quot;&gt;R-Car systems-on-chip for automotive applications&lt;/a&gt;. Ideally, they were willing to see this
happening for the
&lt;a href=&quot;https://www.automotivelinux.org/&quot;&gt;Automotive Grade Linux&lt;/a&gt; distribution.&lt;/p&gt;

&lt;div&gt;
&lt;div style=&quot;width: 364px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;a href=&quot;http://www.igalia.com&quot;&gt;&lt;img src=&quot;https://frederic-wang.fr/images/igalia-logo-364x130.png&quot; width=&quot;364&quot; height=&quot;130&quot; alt=&quot;Igalia Logo&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;width: 763px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;a href=&quot;https://www.renesas.com/en-eu/&quot;&gt;&lt;img src=&quot;https://frederic-wang.fr/images/renesas_logomark_l.jpg&quot; width=&quot;763&quot; height=&quot;130&quot; alt=&quot;Renesas Logo&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Luckily, support for
&lt;a href=&quot;https://www.renesas.com/en-us/solutions/automotive/products/rcar-m3.html&quot;&gt;R-Car M3&lt;/a&gt; was
already available in the development branch of AGL and
the &lt;a href=&quot;https://wiki.automotivelinux.org/start/building_for_the_renesas_r-car_m2&quot;&gt;AGL instructions for R-Car M2&lt;/a&gt; actually worked pretty well for M3 too
&lt;em&gt;mutatis mutandis&lt;/em&gt;. There is also an
&lt;a href=&quot;https://github.com/OSSystems/meta-browser&quot;&gt;OpenEmbedded/Yocto BSP layer for Chromium&lt;/a&gt; but unfortunately Wayland is only supported up to m48 (using the Ozone backend from &lt;a href=&quot;https://github.com/01org/ozone-wayland&quot;&gt;Intel’s fork&lt;/a&gt;) and X11
is only supported up to m52. Hence we created a (for-now-private) fork of
meta-browser that:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Uses the latest development version of Chromium, in particular the
Linux/Ozone/Mash/Wayland support Igalia has been working on recently.&lt;/li&gt;
  &lt;li&gt;Relies on the new GN build system rather than the deprecated GYP one.&lt;/li&gt;
  &lt;li&gt;Supports the ARM64 architecture instead of just ARM32.&lt;/li&gt;
  &lt;li&gt;Installs more resources such as &lt;a href=&quot;https://chromium.googlesource.com/chromium/src/+/master/services/service_manager/README.md&quot;&gt;Mojo service manifests&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Applies more patches (e.g. build fixes or the workaround for &lt;a href=&quot;https://codereview.chromium.org/2485673002/&quot;&gt;issue 2485673002&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Renesas also provided us some R-Car M3 boards.
I received my package this week and hence
was able to start playing with it on Wednesday. Again, the
&lt;a href=&quot;https://wiki.automotivelinux.org/start/building_for_the_renesas_r-car_m2&quot;&gt;AGL instructions for R-Car M2&lt;/a&gt; apply well to M3 and the
&lt;a href=&quot;http://www.elinux.org/R-Car/Boards/M3SK&quot;&gt;elinux page&lt;/a&gt; is very helpful to
understand the various parts of the board. After having started AGL on the
board and opened a Weston terminal (using mouse &amp;amp; keyboard as on the video or
using ssh) I was able to run chromium via the following command:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;/usr/bin/chromium/chrome --mash --ozone-plaform=wayland \
                         --user-data-dir=/tmp/user-data-dir \
                         --no-sandbox
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The first line is the usual command currently used to execute
Ozone/Mash/Wayland. The second line works around the fact that the AGL demo is
running as root. The third line disables &lt;a href=&quot;https://chromium.googlesource.com/chromium/src/+/master/docs/linux_sandboxing.md#Sandbox-types-summary&quot;&gt;sandbox&lt;/a&gt;
because the deprecated setuid sandbox does not work with Ozone and the newer
user namespaces sandbox is not supported by the AGL kernel.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://player.vimeo.com/video/194030827&quot;&gt;following video&lt;/a&gt; a gives an
overview of the hardware preparation as well as some basic tests with
&lt;a href=&quot;http://bouncyballs.org/&quot;&gt;bouncyballs.org&lt;/a&gt; and
&lt;a href=&quot;http://webengineshackfest.org/&quot;&gt;webengineshackfest.org&lt;/a&gt;:&lt;/p&gt;

&lt;div style=&quot;width: 640px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/194030827&quot; width=&quot;640&quot; height=&quot;360&quot; frameborder=&quot;0&quot; webkitallowfullscreen=&quot;&quot; mozallowfullscreen=&quot;&quot; allowfullscreen=&quot;&quot;&gt;&lt;p&gt;&lt;a href=&quot;https://vimeo.com/194030827&quot;&gt;chromium-57-r-car-M3-2016-12-02&lt;/a&gt; from &lt;a href=&quot;https://vimeo.com/user41690319&quot;&gt;Fr&amp;eacute;d&amp;eacute;ric Wang&lt;/a&gt; on &lt;a href=&quot;https://vimeo.com&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;You can see that chromium runs relatively smoothly but we will do more testing
to confirm these initial experiments. Also, we find the general issues with
Linux/Ozone/Mash (internal VS external windows, no fullscreen, keyboard
restricted to US layout, unwanted ChromeOS widgets etc) but we expect to
continue to collaborate with Google to fix these bugs!&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Analysis of Ozone Wayland</title>
   <link href="https://frederic-wang.fr//2016/10/25/analysis-of-ozone-wayland/"/>
   <updated>2016-10-25T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2016/10/25/analysis-of-ozone-wayland</id>
   <content type="html">
&lt;h1 id=&quot;introduction&quot;&gt;Introduction&lt;/h1&gt;

&lt;p&gt;In the past two months, I have been working with my colleague
&lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/agomes/&quot;&gt;Antonio Gomes&lt;/a&gt; on
a Chromium project supported by
&lt;a href=&quot;https://www.renesas.com/en-eu/&quot;&gt;Renesas&lt;/a&gt;. &lt;strong&gt;The goal
is to have Chrome running on Wayland with accelerated rendering happening in a
separate GPU process&lt;/strong&gt;. Intel has done a great job to
develop a &lt;a href=&quot;https://github.com/01org/ozone-wayland&quot;&gt;specific Wayland platform&lt;/a&gt;
for &lt;a href=&quot;https://www.chromium.org/developers/design-documents/ozone&quot;&gt;Ozone&lt;/a&gt; but
unfortunately the code
&lt;a href=&quot;https://groups.google.com/a/chromium.org/d/msg/ozone-dev/ptwW3pVpUYs/aXEZet-dAgAJ&quot;&gt;only works for older releases of Chromium and is not fully upstreamed yet&lt;/a&gt;.
In theory, &lt;a href=&quot;https://www.chromium.org/developers/design-documents/ozone&quot;&gt;easy out-of-tree platforms&lt;/a&gt; was one of the guiding principles of Ozone but in
practice &lt;a href=&quot;https://groups.google.com/a/chromium.org/forum/#!topic/ozone-dev/5lRcidwo7ik&quot;&gt;we had to fix many build and run time
errors for Ozone&lt;/a&gt;, even though we were working upstream. More generally,
it is very challenging to keep in sync with all the refactoring work happening
upstream and some work is definitely required to align Intel’s code with
Google’s goals.&lt;/p&gt;

&lt;p&gt;To summarize the situation briefly, &lt;strong&gt;if we follow Intel’s approach then the
currently upstreamed Wayland code only
compiles for ChromeOS&lt;/strong&gt; (i.e. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;target_os=&quot;chromeos&quot;&lt;/code&gt; in your build config)
not for standard Linux
build of Chrome. You can &lt;strong&gt;only have accelerated rendering at the price of
removing separation of UI/GPU processes&lt;/strong&gt; (i.e. via the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--in-process-gpu&lt;/code&gt;
switch). If you keep the default behavior of having the UI and GPU components
running in separate processes then accelerated rendering fails. A fallback
to software rendering is then attempted but it in turn fails
in &lt;a href=&quot;https://cs.chromium.org/chromium/src/content/browser/compositor/gpu_process_transport_factory.cc?dr=C&amp;amp;q=content/browser/compositor/gpu_process_transport_factory.cc&quot;&gt;gpu_process_transport_factory.cc&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When Antonio joined Igalia, he
&lt;a href=&quot;https://blogs.igalia.com/tonikitoo/2016/05/18/chromium-content_shell-running-on-wayland-desktop-weston-compositor/&quot;&gt;did some experiments on Ozone/Wayland&lt;/a&gt; and wrote a quick workaround
to make the software rendering fallback work when UI and GPU are in separate
processes. He was also able to run standard Linux build of Chrome on Wayland
by upstreaming more code from Intel. He also noticed that in Google’s code,
only GL drawing is happening in the GPU component (i.e. Wayland objects are
owned by the UI, contrary to Intel’s approach) which is the reason why
accelerated rendering fails in separate-process mode.
&lt;strong&gt;After discussion with Google developers it however became clear that
they would prefer a different approach&lt;/strong&gt;
that is consistent with two features they are working on:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.chromium.org/developers/mus-ash&quot;&gt;Mus-ash&lt;/a&gt;, a project to separate
the window management and shell functionality of ash from the chrome browser
process.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.chromium.org/developers/design-documents/mojo&quot;&gt;Mojo&lt;/a&gt;, a new
API for inter-process communication.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;During the project, &lt;strong&gt;we were able to get chrome running on Wayland using
the Mus code path, either on ChromeOS or on standard Linux build&lt;/strong&gt;.
For that code path, GPU and UI components are
&lt;a href=&quot;https://bugs.chromium.org/p/chromium/issues/detail?id=611505&quot;&gt;currently running in the same process&lt;/a&gt; so as discussed above accelerated rendering works for Wayland. However, the plan for mus is to move these two components into separate
processes and hence we need to adapt the Wayland code in
order to allow communication between the GPU (doing GL drawings) and the UI
(owning Wayland objects).&lt;/p&gt;

&lt;p&gt;I’ll let Antonio describe more precisely on
&lt;a href=&quot;https://blogs.igalia.com/tonikitoo/&quot;&gt;his blog&lt;/a&gt; the work we have been
doing to get &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chrome --mash&lt;/code&gt; running on Wayland.
In this blog post, I’m aligning with Google’s goal and hence I’m focusing on
this Mus code path. I’m going to give a quick overview of the structure of
Ozone and more specifically what is used by the Wayland platform to perform
accelerated rendering.&lt;/p&gt;

&lt;h1 id=&quot;ozone-architecture&quot;&gt;Ozone Architecture&lt;/h1&gt;

&lt;h2 id=&quot;ozone-platform&quot;&gt;Ozone Platform&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/public/ozone_platform.h&quot;&gt;OzonePlatform&lt;/a&gt;
is the main Ozone interface used to instantiate and initialize an Ozone
platform (X11, Wayland, DRM/GBM…). It provides factory getters for helper
classes (SurfaceFactoryOzone, PlatformWindow…).&lt;/p&gt;

&lt;p&gt;The goal is to have OzonePlatform::InitializeForUI and
OzonePlatform::InitializeForGPU called from different processes as well as two
different Mojo connectors for the UI and GPU services respectively.
However at the time of writing, the two components are only in
different threads &lt;em&gt;in the same process&lt;/em&gt;. There is also only one Mojo connector
available: The one for the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;service:ui&lt;/code&gt; service, passed to
OzonePlatform::InitializeForUI.&lt;/p&gt;

&lt;p&gt;Two important implementations to consider in this project are &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/platform/wayland/ozone_platform_wayland.cc&quot;&gt;OzonePlatformWayland&lt;/a&gt; (the one we work on) and &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/platform/drm/ozone_platform_gbm.cc&quot;&gt;OzonePlatformGbm&lt;/a&gt; (the one that seems the best maintained and tested upstream).&lt;/p&gt;

&lt;h2 id=&quot;native-display-delegate&quot;&gt;Native Display Delegate&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/display/types/native_display_delegate.h?q=NativeDisplayDelegate&quot;&gt;NativeDisplayDelegate&lt;/a&gt; is used to perform display configuration. The DRM/GBM platform has its own &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/platform/drm/host/drm_native_display_delegate.h&quot;&gt;DrmNativeDisplayDelegate&lt;/a&gt; implementation. For the Wayland platform, we do not actually need real display devices, so we just do as for X11 and use the &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/display/fake_display_delegate.h&quot;&gt;FakeDisplayDelegate&lt;/a&gt; class. See
&lt;a href=&quot;https://codereview.chromium.org/2389053003/&quot;&gt;Issue 2389053003&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;window&quot;&gt;Window&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/gfx/native_widget_types.h?q=AcceleratedWidget&quot;&gt;AcceleratedWidget&lt;/a&gt; is just a platform-specific object representing a surface on which compositors can paint pixels.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/platform_window/platform_window.h&quot;&gt;PlatformWindow&lt;/a&gt; represents a single window in the underlying platform windowing system with the usual property: It can be minimized, maximized, closed, put in fullscreen, etc&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/platform_window_delegate.h&quot;&gt;PlatformWindowDelegate&lt;/a&gt;. This is just a delegate to which the PlatformWindow sends events like e.g. OnBoundsChanged.&lt;/p&gt;

&lt;p&gt;The implementations of PlatformWindow used for the Wayland and DRM/GBM platforms are respectively &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/platform/wayland/wayland_window.h&quot;&gt;WaylandWindow&lt;/a&gt; and &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/platform/drm/gpu/drm_window.h&quot;&gt;DrmWindow&lt;/a&gt;. At the moment, several features in WaylandWindow are not fully implemented but the minimal code to paint content into the window is present.&lt;/p&gt;

&lt;h2 id=&quot;surface-and-opengl&quot;&gt;Surface and OpenGL&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/public/surface_factory_ozone.h&quot;&gt;SurfaceFactoryOzone&lt;/a&gt; provides surface to be used to paint on a window.
The implementations for the Wayland and DRM/GBM platforms are respectively &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/platform/wayland/wayland_surface_factory.h&quot;&gt;WaylandSurfaceFactory&lt;/a&gt; and &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/platform/drm/gpu/gbm_surface_factory.h&quot;&gt;GbmSurfaceFactory&lt;/a&gt;. There are two options:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Accelerated drawing (GL path). This is done via a &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/public/gl_ozone.h&quot;&gt;GLOzone&lt;/a&gt; instance returned by SurfaceFactoryOzone::GetGLOzone&lt;/li&gt;
  &lt;li&gt;Software Drawing (Skia). This is done via a &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/public/surface_ozone_canvas.h&quot;&gt;SurfaceOzoneCanvas&lt;/a&gt; instance returned by SurfaceFactoryOzone::CreateCanvasForWidget.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this project, we focus on accelerated rendering and on EGL, so we consider the &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/common/gl_ozone_egl.h&quot;&gt;GLOzoneEGL&lt;/a&gt; class. The following virtual pure functions must be implemented in derived class:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;GLOzoneEGL::LoadGLES2Bindings, performing the GL initalization. In general, &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/common/egl_util.cc?q=LoadDefaultEGLGLES2Bindings&quot;&gt;the default works well&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;GLOzoneEGL::CreateOffscreenGLSurface returning an offscreen &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/gl/gl_surface.h&quot;&gt;GLSurface&lt;/a&gt; of the specified dimension. It seems that it is mostly needed to create a dummy zero-dimensional offscreen surface during initialization. Hence the &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/gl/gl_surface_egl.h?q=SurfacelessEGL&quot;&gt;generic SurfacelessEGL&lt;/a&gt; should work fine.
See &lt;a href=&quot;https://codereview.chromium.org/2387063002/&quot;&gt;Issue 2387063002&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;GLOzoneEGL::GetNativeDisplay returns the EGL display connection to use.&lt;/li&gt;
  &lt;li&gt;GLOzoneEGL::CreateViewGLSurface returns a new &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/gl/gl_surface.h&quot;&gt;GLSurface&lt;/a&gt; associated to a gfx::AcceleratedWidget.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SurfaceFactoryOzone also provides functions to create &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/public/native_pixmap.h&quot;&gt;NativePixmap&lt;/a&gt;, which represents a  buffer that can be directly imported via GL for rendering, or exported via dma-buf fds. The DRM/GBM platform implements it and uses &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/platform/drm/gpu/gbm_buffer.h?q=GbmPixmap&quot;&gt;GbmPixmap&lt;/a&gt;. For now, such pixmap objects are not needed by the Wayland platform so the SurfaceFactoryOzone function members are not implemented.&lt;/p&gt;

&lt;p&gt;The instances of GLSurface returned by CreateViewGLSurface for the Wayland and DRM/GBM platforms are respectively &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/platform/wayland/gl_surface_wayland.h&quot;&gt;GLSurfaceWayland&lt;/a&gt; and &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/platform/drm/gpu/gbm_surface.h&quot;&gt;GbmSurface&lt;/a&gt;. GLSurfaceWayland is just a &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/gl/gl_surface_egl.h?q=NativeViewGLSurfaceEGL&quot;&gt;gl::NativeViewGLSurfaceEGL&lt;/a&gt; associated to a window created by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wl_egl_window_create&lt;/code&gt;. GbmSurface instead provides surface-like
semantics by deriving from &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/platform/drm/gpu/gbm_surfaceless.h&quot;&gt;GbmSurfaceless&lt;/a&gt; itself deriving from &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/gl/gl_surface_egl.h?q=SurfacelessEGL&quot;&gt;gl::SurfacelessEGL&lt;/a&gt;. Internally, a framebuffer is bound automatically for GL drawing in the GPU and the result are exported to the UI via pixmaps.&lt;/p&gt;

&lt;h1 id=&quot;wayland-platform&quot;&gt;Wayland Platform&lt;/h1&gt;

&lt;h2 id=&quot;wayland-connection&quot;&gt;Wayland Connection&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/platform/wayland/wayland_connection.h&quot;&gt;WaylandConnection&lt;/a&gt; is a class specific to the Wayland platform that helps to instantiate all the objects necessary to communicate with the Wayland display server.&lt;/p&gt;

&lt;p&gt;It also manages a map from gfx::AcceleratedWidget instances to WaylandWindow instances that you can modify with the public GetWindow, AddWindow and RemoveWindow function members.&lt;/p&gt;

&lt;h2 id=&quot;wayland-platform-initialization&quot;&gt;Wayland Platform Initialization&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;OzonePlatformWayland::InitializeUI is called from the UI thread. It creates
instances of WaylandConnection and WaylandSurfaceFactory as members of
OzonePlatformWayland. The Mojo connection of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;service:ui&lt;/code&gt; service is
discarded.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;OzonePlatformWayland::InitializeGPU in the same process but a different
thread. The WaylandConnection and WaylandSurfaceFactory members previously
created are hence accessible from the GPU thread too. Nothing is done by
this initialization function.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;wayland-window&quot;&gt;Wayland Window&lt;/h2&gt;

&lt;p&gt;A &lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/platform/wayland/wayland_window.h&quot;&gt;WaylandWindow&lt;/a&gt; is tied to a WaylandConnection and takes care of registering and
unregistering itself to that WaylandConnection. It is merely a wrapper to
native Wayland surfaces (wl_surface and xdg_surface) with additional window
bounds. It also maintains communication with the PlatformWindowDelegate.&lt;/p&gt;

&lt;h2 id=&quot;wayland-surface-and-opengl&quot;&gt;Wayland Surface and OpenGL&lt;/h2&gt;

&lt;p&gt;Currently, the constructor of
&lt;a href=&quot;https://cs.chromium.org/chromium/src/ui/ozone/platform/wayland/wayland_surface_factory.h&quot;&gt;WaylandSurfaceFactory&lt;/a&gt; receives the
WaylandConnection. Because we want the UI process to hold the WaylandConnection
and the GPU process to use WaylandSurfaceFactory for the GL rendering, the
current setup will not work after mus is split. Instead, we should pass it the
Mojo connector of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;service:gpu&lt;/code&gt; service in order to indirectly communicate with
the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;service:ui&lt;/code&gt; service (for testing purpose, we can for now just use the Mojo
connector of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;service:ui&lt;/code&gt; service passed to OzonePlatformWayland::InitializeUI).&lt;/p&gt;

&lt;p&gt;The WaylandSurfaceFactory::CreateCanvasForWidget function and the WaylandCanvasSurface instance created require the WaylandConnection. However, they are used for software rendering so we can ignore them for now.&lt;/p&gt;

&lt;p&gt;GLOzoneEGL::LoadGLES2Bindings and GLOzoneEGL::CreateOffscreenGLSurface do not seem fundamental here and they do not need any Wayland-specific code. Hence we can probably just keep the current default implementations.&lt;/p&gt;

&lt;p&gt;At the moment GLOzoneEGLWayland::GetNativeDisplay just returns a native display provided by the WaylandConnection. It seems that we will not be able to do so when the WaylandConnection is no longer available on the GPU side. Probably we should just do like GLOzoneEGLGbm and return EGL_DEFAULT_DISPLAY.&lt;/p&gt;

&lt;p&gt;The remaining GLOzoneEGLWayland::CreateViewGLSurface uses WaylandConnection::GetWindow to retrieve the WaylandWindow associated to AcceleratedWidget to draw on.
This window provides a wl_surface and sizes that can be passed to wl_egl_window_create to create an egl_window. Then as said in the previous paragraph, a GLSurfaceWayland instance is created which is merely a gl::NativeViewGLSurfaceEGL associated to the egl_window.&lt;/p&gt;

&lt;h1 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h1&gt;

&lt;p&gt;In this blog post, an overview of the Ozone Architecture was provided, with
focus on the Wayland platform. It also contains
an analysis of how we could get accelerated rendering in a separate GPU process
aligned with Google’s goals (Mus+ash and Mojo) and hence have it
well-integrated with upstream code.&lt;/p&gt;

&lt;p&gt;The main problem is that &lt;strong&gt;the GLOzoneEGLWayland code
is very tied to the Wayland native objects&lt;/strong&gt; (connection, surface, window…).
We should instead only provide a Mojo connector to the GLOzoneEGLWayland
class and hence to the GLSurfaceWayland class it constructs.
Instances of WaylandWindow and WaylandConnector will only live on the UI side
while the GL classes will live on the GPU side.&lt;/p&gt;

&lt;p&gt;The GLSurfaceWayland should be rewritten to derive from SurfacelessEGL instead
of NativeViewGLSurfaceEGL. &lt;strong&gt;We would then follow what is done in GbmSurface&lt;/strong&gt;
to provide some surface-like semantics but without the need to have a real
egl_window object. Under the hood, the GL drawings will be performed on
a framebuffer.&lt;/p&gt;

&lt;p&gt;We should then &lt;strong&gt;find a way to export those framebuffers to the UI component via
the Mojo connector&lt;/strong&gt;. Again, following the DRM/GBM code with this NativePixmap
objects seems the right option. At the end, the UI would convert the buffers
into wl_buffers that can finally be attach to the wl_surface of the WaylandWindow.&lt;/p&gt;

&lt;p&gt;During the past two months we have been maintaining the upstream Ozone code and
made the Wayland platform work again. &lt;strong&gt;Try bots now build and run tests for the
Wayland platform&lt;/strong&gt; and we expect that such continuous testing will make the whole
thing more robust. We have also been working on &lt;strong&gt;making Linux desktop work
with the Mus+ash code path&lt;/strong&gt; and started
&lt;strong&gt;encouraging experiments of Mojo communication between the UI and GPU
components of the Wayland platform&lt;/strong&gt;.&lt;/p&gt;

&lt;div&gt;
&lt;div style=&quot;width: 364px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;a href=&quot;http://www.igalia.com&quot;&gt;&lt;img src=&quot;https://frederic-wang.fr/images/igalia-logo-364x130.png&quot; width=&quot;364&quot; height=&quot;130&quot; alt=&quot;Igalia Logo&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;width: 763px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;a href=&quot;https://www.renesas.com/en-eu/&quot;&gt;&lt;img src=&quot;https://frederic-wang.fr/images/renesas_logomark_l.jpg&quot; width=&quot;763&quot; height=&quot;130&quot; alt=&quot;Renesas Logo&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;It is really great to work with Antonio on this project and we are looking
forward to continuing the collaboration on this with Google and Ozone
developers. Last but not least, I would like to
&lt;strong&gt;thank Renesas for supporting Igalia in this work to add Wayland support to chromium&lt;/strong&gt;.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Fonts at the Web Engines Hackfest 2016</title>
   <link href="https://frederic-wang.fr//2016/10/06/fonts-at-the-web-engines-hackfest-2016/"/>
   <updated>2016-10-06T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2016/10/06/fonts-at-the-web-engines-hackfest-2016</id>
   <content type="html">
&lt;p&gt;Last week I travelled to
&lt;a href=&quot;https://en.wikipedia.org/wiki/Galicia_%28Spain%29&quot;&gt;Galicia&lt;/a&gt; for one of the
regular gatherings organized by &lt;a href=&quot;http://igalia.com/&quot;&gt;Igalia&lt;/a&gt;. It was a great
pleasure
to meet again all the Igalians and friends. Moreover, this time was a bit
special since we celebrated our &lt;a href=&quot;https://www.igalia.com/nc/igalia-247/news/item/igalia-celebrates-our-15th-anniversary/&quot;&gt;15th anniversary&lt;/a&gt; :-)&lt;/p&gt;

&lt;div style=&quot;width: 600px; margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;
&lt;div style=&quot;width: 500px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;a href=&quot;https://secure.flickr.com/photos/bertogg/29962370082/&quot; title=&quot;Igalia Summit October 2016&quot;&gt;&lt;img src=&quot;https://c3.staticflickr.com/9/8554/29962370082_024203fd6f.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;Igalia Summit October 2016&quot; /&gt;&lt;/a&gt;&lt;/div&gt; &lt;small&gt;Photo by &lt;a href=&quot;https://secure.flickr.com/photos/bertogg/&quot;&gt;Alberto Garcia&lt;/a&gt; licensed under &lt;a href=&quot;http://creativecommons.org/licenses/by-sa/2.0/&quot;&gt;CC BY-SA 2.0&lt;/a&gt;.&lt;/small&gt;&lt;/div&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/bertogg/29962370082/in/photostream/&quot; title=&quot;Igalia Summit October 2016&quot;&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;I also attended the third edition of the
&lt;a href=&quot;http://www.webengineshackfest.org/&quot;&gt;Web Engines Hackfest&lt;/a&gt;,
sponsored by Igalia,
&lt;a href=&quot;https://www.collabora.com/&quot;&gt;Collabora&lt;/a&gt; and &lt;a href=&quot;https://www.mozilla.org/&quot;&gt;Mozilla&lt;/a&gt;.
This year, we had various participants from the Web Platform including folks from
Apple, Collabora, Google, Igalia, Huawei, Mozilla or Red Hat.
For my first hackfest as an Igalian, I invited some experts on fonts &amp;amp;
math rendering to collaborate
on OpenType MATH support HarfBuzz and its use in math rendering engines.
In this blog post, I am going to focus on the work I have made
with &lt;a href=&quot;http://behdad.org/&quot;&gt;Behdad Esfahbod&lt;/a&gt; and
&lt;a href=&quot;http://khaledhosny.org/&quot;&gt;Khaled Hosny&lt;/a&gt;. I think it was again a great and
productive hackfest and I am looking forward to attending the next edition!&lt;/p&gt;

&lt;h2 id=&quot;opentype-math-in-harfbuzz&quot;&gt;OpenType MATH in HarfBuzz&lt;/h2&gt;

&lt;div style=&quot;width: 600px; margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;
&lt;div style=&quot;width: 500px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;a href=&quot;https://www.flickr.com/photos/webhackfest/30112185606/in/album-72157673583191111/&quot; title=&quot;Behdad talking about HarfBuzz&quot;&gt;&lt;img src=&quot;https://c7.staticflickr.com/6/5279/30112185606_c3c14fcd66.jpg&quot; width=&quot;500&quot; height=&quot;281&quot; alt=&quot;Web Engines Hackfest, main room&quot; /&gt;&lt;/a&gt;&lt;/div&gt; &lt;small&gt;Photo by &lt;a href=&quot;https://www.flickr.com/photos/webhackfest/&quot;&gt;@webengineshackfest&lt;/a&gt; licensed under &lt;a href=&quot;http://creativecommons.org/licenses/by-sa/2.0/&quot;&gt;CC BY-SA 2.0&lt;/a&gt;.&lt;/small&gt;&lt;/div&gt;

&lt;p&gt;Behdad &lt;a href=&quot;https://github.com/Igalia/webengineshackfest/wiki#scheduling&quot;&gt;gave a talk&lt;/a&gt; with a nice overview of the work accomplished in
&lt;a href=&quot;https://freedesktop.org/wiki/Software/HarfBuzz/&quot;&gt;HarfBuzz&lt;/a&gt; during ten years.
One thing appearing recently in HarfBuzz is the need for APIs to parse
OpenType tables on all platforms. As part of my job at Igalia, I had started
to experiment adding support for the
&lt;a href=&quot;https://frederic-wang.fr/opentype-math-in-harfbuzz.html&quot;&gt;MATH table&lt;/a&gt;
some months ago and it was
nice to have Behdad finally available to review, fix and improve commits.&lt;/p&gt;

&lt;p&gt;When I talked to Mozilla employee
&lt;a href=&quot;http://blog.karlt.net&quot;&gt;Karl Tomlinson&lt;/a&gt;, it became apparent that
the simple shaping API for stretchy operators proposed
&lt;a href=&quot;https://frederic-wang.fr/opentype-math-in-harfbuzz.html&quot;&gt;in my blog post&lt;/a&gt;
would not cover all the special cases currently implemented in Gecko. Moreover,
this shaping API is also very similar to another one existing in HarfBuzz for
non-math script so we would have to decide the best way to share the logic.&lt;/p&gt;

&lt;p&gt;As a consequence, we decided for now to focus on providing an API to access all
the data of the MATH table. After the Web Engines Hackfest,
&lt;a href=&quot;https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-math.h&quot;&gt;such a math API&lt;/a&gt; is now integrated into the development
repository of HarfBuzz and will available in version 1.3.3 :-)&lt;/p&gt;

&lt;h2 id=&quot;mathml-in-web-rendering-engines&quot;&gt;MathML in Web Rendering Engines&lt;/h2&gt;

&lt;p&gt;Currently, several math rendering engines have their own code to parse the data
of the OpenType MATH table. But many of them actually use HarfBuzz for normal
text shaping and hence could just rely on the new math API the math rendering
too.
Before the hackfest, Khaled already had tested my work-in-progress branch with
&lt;a href=&quot;https://github.com/khaledhosny/libmathview/&quot;&gt;libmathview&lt;/a&gt; and I had done the
same for &lt;a href=&quot;https://github.com/fred-wang/chromium.src/tree/mathml&quot;&gt;Igalia’s Chromium MathML branch&lt;/a&gt;.&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
   &lt;div style=&quot;width: 600px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img src=&quot;https://frederic-wang.fr/images/mathml-fraction-parameters-test.png&quot; width=&quot;600&quot; height=&quot;464&quot; alt=&quot;MathML Fraction parameters test&quot; /&gt;&lt;/div&gt;
   &lt;small&gt;MathML test for OpenType MATH Fraction parameters in Gecko, Blink and WebKit.&lt;/small&gt;
&lt;/div&gt;

&lt;p&gt;Once the new API landed into HarfBuzz, Khaled was also able to use it for the
&lt;a href=&quot;https://en.wikipedia.org/wiki/XeTeX&quot;&gt;XeTeX&lt;/a&gt; typesetting system.
I also started to experiment this
for &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1305977&quot;&gt;Gecko&lt;/a&gt; and
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=162671&quot;&gt;WebKit&lt;/a&gt;.
This seems to work pretty well and we get consistent results for
Gecko, Blink and WebKit! Some random thoughts:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The math data is exposed through a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hb_font_t&lt;/code&gt; which contains the text size.
This means that the various values are now directly resolved and returned as a
&lt;a href=&quot;https://en.wikipedia.org/wiki/Fixed-point_arithmetic&quot;&gt;fixed-point number&lt;/a&gt;
which should allow to avoid rounding errors we may currently have in
Gecko or WebKit when multiplying by float factors.&lt;/li&gt;
  &lt;li&gt;HarfBuzz has some magic to automatically handle invalid offsets and sizes
that greatly simplifies the code, compared to what exist in Gecko and WebKit.&lt;/li&gt;
  &lt;li&gt;Contrary to Gecko’s implementation, HarfBuzz does not cache the latest
result for glyph-specific data. Maybe we want to keep that?&lt;/li&gt;
  &lt;li&gt;The WebKit changes were tested on the GTK port, where HarfBuzz is enabled.
Other ports may still need to use the existing parsing code from the
WebKit tree. Perhaps
Apple should consider adding support for the OpenType MATH table to
&lt;a href=&quot;https://developer.apple.com/reference/coretext&quot;&gt;CoreText&lt;/a&gt;?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;brotliwoff2ots-libraries&quot;&gt;Brotli/WOFF2/OTS libraries&lt;/h2&gt;

&lt;div style=&quot;width: 600px; margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;
&lt;div style=&quot;width: 500px; margin-left: auto; margin-right: auto;&quot;&gt;&lt;a href=&quot;https://www.flickr.com/photos/webhackfest/30147116385/in/album-72157673583191111/&quot; title=&quot;Web Engines Hackfest, main room&quot;&gt;&lt;img src=&quot;https://c2.staticflickr.com/6/5232/30147116385_06a307626b.jpg&quot; width=&quot;500&quot; height=&quot;281&quot; alt=&quot;Web Engines Hackfest, main room&quot; /&gt;&lt;/a&gt;&lt;/div&gt; &lt;small&gt;Photo by &lt;a href=&quot;https://www.flickr.com/photos/webhackfest/&quot;&gt;@webengineshackfest&lt;/a&gt; licensed under &lt;a href=&quot;http://creativecommons.org/licenses/by-sa/2.0/&quot;&gt;CC BY-SA 2.0&lt;/a&gt;.&lt;/small&gt;&lt;/div&gt;

&lt;p&gt;We also updated the copies of WOFF2 and OTS
libraries in &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=162608&quot;&gt;WebKit&lt;/a&gt; and
&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1305944&quot;&gt;Gecko&lt;/a&gt; respectively.
This improves one &lt;a href=&quot;https://www.w3.org/TR/WOFF2/#conform-mustNotRejectIncorrectTotalSize&quot;&gt;requirement from the WOFF2 specification&lt;/a&gt; and allows to
&lt;a href=&quot;http://test.csswg.org/harness/test/woff2_dev/single/header-totalsfntsize-001/&quot;&gt;pass the corresponding conformance test&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Gecko, WebKit and Chromium bundle their own copy of the Brotli, WOFF2
or OTS libraries in their source repositories. However:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;We have to use more or less automated mechanisms to keep these bundled copies
up-to-date. This is especially annoying for Brotli and WOFF2 since they are
still in development and we must be sure to always integrate the latest security
fixes. Also, we get compiler warnings or coding style errors that do not exist
upstream and that must be disabled or patched until they are fixed upstream
and imported again.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;This obviously is not an optimal sharing of system library and may increase
the size of binaries.
Using shared libraries is what maintainers of Linux (or other
FLOSS systems) generally ask and this was raised during the WebKitGTK+
session. Similarly, we should really use the system Brotli/WOFF2 bundled in
future releases of Apple’s operating systems.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are several issues that make hard for package maintainers to
provide these libraries: no released binaries or release tags, no proper build
system to generate shared libraries, use of git submodule to include one library source
code into another etc Things have
gotten a bit better for Brotli and I was able to
&lt;a href=&quot;https://github.com/google/brotli/pull/421&quot;&gt;tweak the CMake script to produce shared libraries&lt;/a&gt;. For WOFF2,
&lt;a href=&quot;https://github.com/google/woff2/issues/40&quot;&gt;issue 40&lt;/a&gt; and
&lt;a href=&quot;https://github.com/google/woff2/issues/49&quot;&gt;issue 49&lt;/a&gt; have been inactive but
hopefully these will be addressed in the future…&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>MathML Improvements in WebKit</title>
   <link href="https://frederic-wang.fr//2016/07/13/mathml-improvements-in-webkit/"/>
   <updated>2016-07-13T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2016/07/13/mathml-improvements-in-webkit</id>
   <content type="html">
&lt;p&gt;In a &lt;a href=&quot;https://frederic-wang.fr/mathml-refactoring-in-webkit.html&quot;&gt;previous blog post&lt;/a&gt;, I explained the work made by &lt;a href=&quot;http://igalia.com/&quot;&gt;Igalia&lt;/a&gt;’s
web platform team to refactor WebKit’s
MathML layout classes. I stated that although some rendering improvements were
a nice side effect, the main goal of &lt;a href=&quot;https://trac.webkit.org/wiki/MathML/Early_2016_Refactoring#Phase1&quot;&gt;the first phase&lt;/a&gt; was really to clean the code up so
that it is easier for developers to work on MathML in the future. Indeed this
&lt;em&gt;really&lt;/em&gt; made things easier to review: Quite unexpectedly to me,
&lt;a href=&quot;https://trac.webkit.org/wiki/MathML/Early_2016_Refactoring#Phase2&quot;&gt;the second phase&lt;/a&gt;
only took 4 days to be upstreamed… Kudos to
&lt;a href=&quot;http://whtconstruct.blogspot.fr/&quot;&gt;Brent Fulgham&lt;/a&gt; for having reviewed so many
patches in such a short period of time!&lt;/p&gt;

&lt;p&gt;In this blog post, I am going to give an overview of the improvements made
during these two first phases taking &lt;a href=&quot;https://trac.webkit.org/changeset/203109&quot;&gt;changeset r203109&lt;/a&gt; as a reference. The changes will be available in &lt;a href=&quot;https://webkitgtk.org/&quot;&gt;WebKitGTK+ 2.14&lt;/a&gt; in September and are likely to be included this month in the next &lt;a href=&quot;https://developer.apple.com/safari/technology-preview/&quot;&gt;Safari Technology Preview&lt;/a&gt;.
It definitely remains more work to do such as
&lt;a href=&quot;https://trac.webkit.org/wiki/MathML/Early_2016_Refactoring#Phase3&quot;&gt;the third phase&lt;/a&gt; or other rendering improvements, but I believe we have already made a big
step forward!&lt;/p&gt;

&lt;h3 id=&quot;mathematical-fonts&quot;&gt;Mathematical Fonts&lt;/h3&gt;

&lt;p&gt;Two years ago, basic support for operator stretching via the OpenType MATH
table was added to WebKit. During the refactoring, we improved that support
and also made use of more parameters to improve the math layout (see section
about OpenType MATH parameters below). While
&lt;a href=&quot;http://www.gust.org.pl/projects/e-foundry/lm-math&quot;&gt;Latin Modern Math&lt;/a&gt; will be used in most screenshots, the following one shows that you can
use any &lt;a href=&quot;http://trac.webkit.org/wiki/MathML/Fonts&quot;&gt;math fonts&lt;/a&gt;. By default
WebKit will try and use one of these fonts but if none are available or if you
force a non-math &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;font-family&lt;/code&gt; then the rendering quality may not be good.&lt;/p&gt;

&lt;p&gt;The following screenshot gives the rendering for various fonts.
For the last one
we used the value &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sans-serif&lt;/code&gt; to illustrate issues with non-math fonts
(displaystyle integral too small, mathvariant italic glyphs taken from another
font, missing italic correction etc).&lt;/p&gt;

&lt;div style=&quot;text-align: center; width: 500px; margin-left: auto; margin-right: auto;&quot;&gt;
  &lt;a href=&quot;https://frederic-wang.fr/images/webkitgtk-r203109-fonts.png&quot;&gt;&lt;img width=&quot;500&quot; src=&quot;https://frederic-wang.fr/images/webkitgtk-r203109-fonts.png&quot; alt=&quot;Screenshots of a formula with various fonts&quot; /&gt;&lt;/a&gt;
  &lt;small&gt;
  Integral obtained by &lt;a href=&quot;https://en.wikipedia.org/wiki/Methods_of_contour_integration&quot;&gt;contour integration&lt;/a&gt;&lt;br /&gt;
  WebKitGTK+ r203109 with various font-family values.&lt;br /&gt;
  From top to bottom:
  &lt;a href=&quot;http://www.gust.org.pl/projects/e-foundry/tg-math/download/index_html#Schola_Math&quot;&gt;TeX Gyre Schola&lt;/a&gt;, &lt;a href=&quot;http://www.gust.org.pl/projects/e-foundry/lm-math&quot;&gt;Latin Modern&lt;/a&gt;, &lt;a href=&quot;https://github.com/dejavu-fonts/dejavu-fonts&quot;&gt;DejaVu Math&lt;/a&gt;, &lt;a href=&quot;http://stixfonts.org/&quot;&gt;STIX&lt;/a&gt;,
and &lt;code&gt;sans-serif&lt;/code&gt;.&lt;/small&gt;
&lt;/div&gt;

&lt;h3 id=&quot;the-href-attribute&quot;&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;href&lt;/code&gt; Attribute&lt;/h3&gt;

&lt;p&gt;This new feature is obvious: You can now create a hyperlink for any part
of a mathematical formula! Here is a screenshot of the MathML Torture Test 21
with additional links, as displayed in WebKit r203109. Click the image to load
the test case in your browser and test it.&lt;/p&gt;

&lt;div style=&quot;text-align: center; width: 378px; margin-left: auto; margin-right: auto;&quot;&gt;
  &lt;a href=&quot;https://bug-85733-attachments.webkit.org/attachment.cgi?id=274756&quot;&gt;&lt;img width=&quot;378&quot; src=&quot;https://frederic-wang.fr/images/r203109-latin-modern-math-href.png&quot; alt=&quot;Screenshot of MathML Torture test 21 with hyperlinks&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;h3 id=&quot;the-mathvariant-attribute&quot;&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mathvariant&lt;/code&gt; Attribute&lt;/h3&gt;

&lt;p&gt;Unicode contains &lt;a href=&quot;https://en.wikipedia.org/wiki/Mathematical_Alphanumeric_Symbols&quot;&gt;Mathematical Alphanumeric Symbols&lt;/a&gt; to convey special meaning such as &lt;a href=&quot;https://en.wikipedia.org/wiki/Blackboard_bold&quot;&gt;double-struck&lt;/a&gt; or specific &lt;a href=&quot;https://www.w3.org/TR/arabic-math/#N10951&quot;&gt;Arabic styles&lt;/a&gt;. Characters for these symbols are generally provided by
&lt;a href=&quot;http://fred-wang.github.io/MathFonts/&quot;&gt;math fonts&lt;/a&gt;.
In MathML, mathematical variables are automatically rendered using the
italic characters from this Unicode block. One can also access these characters
via the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mathvariant&lt;/code&gt; attribute and that attribute is actually used by many
LaTeX-to-MathML converters.&lt;/p&gt;

&lt;p&gt;In the following screenshot, you can see that the letters f, x and y are now
drawn with this special mathematical italic glyphs and that WebKit uses the
conventional fraktur style for the Lie algebra g. Note that the prime is still too
small because WebKit does not make use of the &lt;a href=&quot;https://www.microsoft.com/typography/otspec/features_pt.htm#ssty&quot;&gt;ssty feature&lt;/a&gt; yet.&lt;/p&gt;

&lt;div style=&quot;text-align: center; width: 500px; margin-left: auto; margin-right: auto;&quot;&gt;
  &lt;a href=&quot;https://frederic-wang.fr/images/safari9-vs-r203109-latin-modern-math-lie-algebra-mathvariant.png&quot;&gt;&lt;img width=&quot;500&quot; src=&quot;https://frederic-wang.fr/images/safari9-vs-r203109-latin-modern-math-lie-algebra-mathvariant.png&quot; alt=&quot;Screenshot of Wikipedia article on Lie Algebra&quot; /&gt;&lt;/a&gt;
  &lt;small&gt;Homomorphism of &lt;a href=&quot;https://en.wikipedia.org/wiki/Lie_algebra&quot;&gt;Lie algebra&lt;/a&gt;&lt;br /&gt;
  Top: Safari 9.1.1. Bottom: Safari r203109.&lt;/small&gt;
&lt;/div&gt;

&lt;h3 id=&quot;operators-and-spacing&quot;&gt;Operators and Spacing&lt;/h3&gt;

&lt;p&gt;As said in my previous blog post, the rendering of large and stretchy operators
have been rewritten a lot and as a consequence the rendering has improved.
Also, I mentioned that &lt;a href=&quot;https://wikimedia.org/api/rest_v1/media/math/render/svg/5d166c08a30ad598edc84d0bbe0223be8bcc5a6d&quot;&gt;the width of operators may depend on their height&lt;/a&gt;. This may cause accumulated approximations
during the computation of preferred widths. The old flexbox-based implementation
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=107613&quot;&gt;incorrectly forced layout during preferred computation&lt;/a&gt; to avoid that but a quick
workaround for that security concern caused the approximate
preferred widths to be used for the logical widths. With our new implementation,
the logical width is now correctly calculated.
Finally, we added partial support for the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mpadded&lt;/code&gt; element
which is often used to tweak spacing in mathematical formulas.&lt;/p&gt;

&lt;p&gt;The screenshot below illustrates the fix for a
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=151916&quot;&gt;serious regression with large operator&lt;/a&gt; (summation symbol) as well as improvements in the rendering of
stretchy operators (horizontal braces). Note that the formula has a hack with
a zero-width &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mpadded&lt;/code&gt; element which used to cause improper spacing
(large gap between the group of a’s and the group of b’s).&lt;/p&gt;

&lt;div style=&quot;text-align: center; width: 500px; margin-left: auto; margin-right: auto;&quot;&gt;
  &lt;a href=&quot;https://frederic-wang.fr/images/safari9-vs-r203109-latin-modern-math-torture-test-operator-and-spacing.png&quot;&gt;&lt;img width=&quot;500&quot; src=&quot;https://frederic-wang.fr/images/safari9-vs-r203109-latin-modern-math-torture-test-operator-and-spacing.png&quot; alt=&quot;Screenshot from Mozilla&apos;s MathML torture test using Safari 9.1.1 or the the current refactoring&quot; /&gt;&lt;/a&gt;
  &lt;small&gt;Tests 21 and 22 from the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Mozilla_MathML_Project/MathML_Torture_Test&quot;&gt;MathML torture test&lt;/a&gt;&lt;br /&gt;
  Left: Safari 9.1.1. Right: Safari r203109.&lt;/small&gt;
&lt;/div&gt;

&lt;p&gt;The following screenshot shows how incorrect width computations used to cause
excessive spacing after the stretchy radical and slash symbols:&lt;/p&gt;

&lt;div style=&quot;text-align: center; width: 484px; margin-left: auto; margin-right: auto;&quot;&gt;
&lt;a href=&quot;https://frederic-wang.fr/images/safari9-vs-r203109-latin-modern-math-trigonometric-functions-width.png&quot;&gt;&lt;img width=&quot;484&quot; src=&quot;https://frederic-wang.fr/images/safari9-vs-r203109-latin-modern-math-trigonometric-functions-width.png&quot; alt=&quot;Screenshot of Wikipedia article on Trigonometric Functions&quot; /&gt;&lt;/a&gt;
  &lt;small&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Trigonometric_functions&quot;&gt;Sine of 1 degree&lt;/a&gt;&lt;br /&gt;
  Top: Safari 9.1.1. Bottom: Safari r203109.&lt;/small&gt;
&lt;/div&gt;

&lt;h3 id=&quot;the-displaystyle-property&quot;&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;displaystyle&lt;/code&gt; Property&lt;/h3&gt;

&lt;p&gt;Mathematical formulas can be integrated inside a paragraph of text (inline math
in TeX terminology) or displayed in its own horizontally centered paragraph
(display math in TeX terminology). In the latter case, the formula is in
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;displaystyle&lt;/code&gt; and does not have any restrictions on vertical spacing.
In the former case, the layout of the mathematical formula is modified a bit to
optimize this vertical spacing and to better integrate within the surrounding text.
The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;displaystyle&lt;/code&gt; property can also be set using the corresponding attribute or
can change automatically in subformulas (e.g. in fractions).&lt;/p&gt;

&lt;p&gt;In the following screenshot the fix for the large operator regression is
obvious but you can also notice that the summation is now slightly different
for the definition of a Bézier curve (top) and for the one of
a rational Bézier curve
(bottom). For example, to save some vertical space in the fractions, the
sigma symbol is drawn smaller and the scripts attached to it are moved on
its right. However, the script size could still be improved when we implement
the &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=151916&quot;&gt;scriptlevel&lt;/a&gt; property.&lt;/p&gt;

&lt;div style=&quot;text-align: center; width: 500px; margin-left: auto; margin-right: auto;&quot;&gt;
  &lt;a href=&quot;https://frederic-wang.fr/images/safari9-vs-r203109-latin-modern-math-bezier-displaystyle.png&quot;&gt;&lt;img width=&quot;500&quot; src=&quot;https://frederic-wang.fr/images/safari9-vs-r203109-latin-modern-math-bezier-displaystyle.png&quot; alt=&quot;Screenshot of Wikipedia article on Bézier Curves&quot; /&gt;&lt;/a&gt;
  &lt;small&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/B%C3%A9zier_curve&quot;&gt;Definitions of Bézier Curve&lt;/a&gt;&lt;br /&gt;
  Left: Safari 9.1.1. Right: Safari r203109.&lt;/small&gt;
&lt;/div&gt;

&lt;h3 id=&quot;opentype-math-parameters&quot;&gt;OpenType MATH Parameters&lt;/h3&gt;

&lt;p&gt;Many new &lt;a href=&quot;https://trac.webkit.org/wiki/MathML/Fonts#OpenFontFormatfeatures&quot;&gt;OpenType MATH features&lt;/a&gt; have been implemented following the
&lt;a href=&quot;http://www.mathml-association.org/MathMLinHTML5/&quot;&gt;MathML in HTML5 Implementation Note&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Use of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AxisHeight&lt;/code&gt; parameter to set vertical position of fractions,
tables and symmetric operators.&lt;/li&gt;
  &lt;li&gt;Use of layout constants for radicals (some of them were already used),
scripts and fractions. This improves math spacing and positioning and allows
to adjust them according to value of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;displaystyle&lt;/code&gt; property discussed
in the previous section.&lt;/li&gt;
  &lt;li&gt;Use of the italic correction of large operator glyph to set the position of
subscripts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The screenshots below illustrate some of these improvements. For the first one,
the use of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AxisHeight&lt;/code&gt; allows to better align the fraction bar with the plus
sign. For the second one, the use of layout constants for scripts as well
as the italic correction of the integral improves the placement of limits.&lt;/p&gt;

&lt;div style=&quot;text-align: center; width: 498px; margin-left: auto; margin-right: auto;&quot;&gt;
  &lt;a href=&quot;https://frederic-wang.fr/images/safari9-vs-r203109-latin-modern-math-continued-fraction-axis-height.png&quot;&gt;&lt;img width=&quot;498&quot; src=&quot;https://frederic-wang.fr/images/safari9-vs-r203109-latin-modern-math-continued-fraction-axis-height.png&quot; alt=&quot;Screenshot of Wikipedia article on the Continued Fractions&quot; /&gt;&lt;/a&gt;
  &lt;small&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Generalized_continued_fraction&quot;&gt;Generalized Continued Fraction&lt;/a&gt;&lt;br /&gt;
  Top: Safari 9.1.1. Bottom: Safari r203109.&lt;/small&gt;
&lt;/div&gt;

&lt;div style=&quot;text-align: center; width: 378px; margin-left: auto; margin-right: auto;&quot;&gt;
  &lt;a href=&quot;https://frederic-wang.fr/images/safari9-vs-r203109-latin-modern-math-gamma-function-scripts.png&quot;&gt;&lt;img width=&quot;378&quot; src=&quot;https://frederic-wang.fr/images/safari9-vs-r203109-latin-modern-math-gamma-function-scripts.png&quot; alt=&quot;Screenshot of Wikipedia article on the Gamma Function&quot; /&gt;&lt;/a&gt;
  &lt;small&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Gamma_function&quot;&gt;Definition of the Gamma Function&lt;/a&gt;&lt;br /&gt;
  Top: Safari 9.1.1. Bottom: Safari r203109.&lt;/small&gt;
&lt;/div&gt;

&lt;h3 id=&quot;right-to-left-radicals&quot;&gt;Right-to-left radicals&lt;/h3&gt;

&lt;p&gt;One of the advantage of the old flexbox-based implementation is that
right-to-left layout was available for free. This support has of course been
preserved in the new implementation. We also added a simple workaround to mirror
radicals using a scale transform
as shown in the screenshot below. However, general
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=130840&quot;&gt;glyph-level mirroring&lt;/a&gt; is still
missing.&lt;/p&gt;

&lt;div style=&quot;text-align: center; width: 500px; margin-left: auto; margin-right: auto;&quot;&gt;
  &lt;a href=&quot;https://frederic-wang.fr/images/safari9-vs-r203109-latin-modern-math-torture-test-rtl.png&quot;&gt;&lt;img width=&quot;500&quot; src=&quot;https://frederic-wang.fr/images/safari9-vs-r203109-latin-modern-math-torture-test-rtl.png&quot; alt=&quot;Screenshot of Wikipedia article on Lie Algebra&quot; /&gt;&lt;/a&gt;
  &lt;small&gt;Test 13 from the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Mozilla_MathML_Project/MathML_Torture_Test&quot;&gt;MathML torture test (Machrek Style)&lt;/a&gt;&lt;br /&gt;
  Top: Safari 9.1.1. Bottom: Safari r203109.&lt;/small&gt;
&lt;/div&gt;

&lt;h3 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;Igalia’s web platform team has been able to follow the
&lt;a href=&quot;http://www.mathml-association.org/MathMLinHTML5/&quot;&gt;MathML in HTML5 Implementation Note&lt;/a&gt; in order to significantly improve the rendering of mathematical
expressions in WebKit. More work remains to do but
we will definitely appreciate any feedback that can
help improving native MathML support in web engines.
We are also excited to continue work and collaboration at the next
&lt;a href=&quot;http://www.webengineshackfest.org/&quot;&gt;Web Engines Hackfest&lt;/a&gt;!&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>MathML Refactoring in WebKit</title>
   <link href="https://frederic-wang.fr//2016/07/09/mathml-refactoring-in-webkit/"/>
   <updated>2016-07-09T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2016/07/09/mathml-refactoring-in-webkit</id>
   <content type="html">
&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;If you follow WebKit developments, you are certainly aware that
&lt;a href=&quot;http://igalia.com/&quot;&gt;Igalia&lt;/a&gt; has been working on WebKit’s
MathML implementation for some time. More recently, effort has been made to
&lt;a href=&quot;https://trac.webkit.org/wiki/MathML/Early_2016_Refactoring&quot;&gt;write a clean implementation&lt;/a&gt;
addressing issues reported by WebKit reviewers in the past.
After joining Igalia in March, I have been in charge of
getting this work reviewed and merged into WebKit’s development branch.
In the past four months, we have been successful in upstreaming the
&lt;a href=&quot;https://trac.webkit.org/wiki/MathML/Early_2016_Refactoring#Phase1&quot;&gt;first phase&lt;/a&gt;
of the refactoring and the work accomplished is described in this blog post.&lt;/p&gt;

&lt;div style=&quot;text-align: center; width: 500px; margin-left: auto; margin-right: auto;&quot; id=&quot;safari9VSrefactoring&quot;&gt;
  &lt;a href=&quot;https://frederic-wang.fr/images/safari9-vs-refactoring-latin-modern-math.png&quot;&gt;&lt;img width=&quot;500&quot; src=&quot;https://frederic-wang.fr/images/safari9-vs-refactoring-latin-modern-math.png&quot; alt=&quot;Screenshot from Mozilla&apos;s MathML torture test using Safari 9.1.1 or the the current refactoring&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
  &lt;small&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Mozilla_MathML_Project/MathML_Torture_Test&quot;&gt;MathML torture tests&lt;/a&gt; with the &lt;a href=&quot;http://www.gust.org.pl/projects/e-foundry/lm-math&quot;&gt;Latin Modern Math font&lt;/a&gt;&lt;br /&gt;
  Left: Safari 9.1.1. Right: Current MathML branch.&lt;/small&gt;
&lt;/div&gt;

&lt;p&gt;Note that the focus was on code refactoring so the improvement may not be obvious
for non-developers. Nevertheless many issues have already been fixed as a
consequence of that work: math italic, position of scripts,
stretchy and large operators, rendering update and more.
More importantly, this preliminary step opens the way for
&lt;a href=&quot;http://www.mathml-association.org/MathMLinHTML5/&quot;&gt;beautiful math rendering based on TeX rules and the OpenType MATH table&lt;/a&gt;. Rendering improvements and
implementation of new features have already started in the
&lt;a href=&quot;https://trac.webkit.org/wiki/MathML/Early_2016_Refactoring#Phase2&quot;&gt;next phase&lt;/a&gt;
of the refactoring, so stay tuned…&lt;/p&gt;

&lt;h2 id=&quot;design-issues&quot;&gt;Design Issues&lt;/h2&gt;

&lt;p&gt;As explained in a &lt;a href=&quot;https://frederic-wang.fr/mathml-at-the-web-engines-hackfest-2015.html&quot;&gt;previous report&lt;/a&gt;, the main design issues in the
flexbox-based implementation released in 2013
can essentially be summarized in three points:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;WebKit’s code to stretch operator was not efficient at all and was limited to some basic fences buildable via Unicode characters.&lt;/li&gt;
  &lt;li&gt;WebKit’s MathML code violated many layout invariants, making the code unreliable.&lt;/li&gt;
  &lt;li&gt;WebKit’s MathML code relied heavily on the C++ renderer classes for flexboxes and had to manage too many anonymous renderers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For the first point, the performance issue had been fixed by Igalia developers
right after the initial feedback from WebKit developers and
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=155434&quot;&gt;we improved that again&lt;/a&gt;
during our refactoring.
Partial support for the OpenType MATH table was added during
&lt;a href=&quot;http://www.ulule.com/mathematics-ebooks/&quot;&gt;my crowdfunding project&lt;/a&gt; and allowed
to stretch more operators with the help of math fonts. For the second point,
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=107613&quot;&gt;the main issue&lt;/a&gt; was also
fixed right after the initial feedback. However one could still have some
doubts regarding the layout steps, given the complexity implied by the third
point. That last issue was still problematic so far and addressing it was the
main achievement of our refactoring.&lt;/p&gt;

&lt;p&gt;Technically, the dependence on flexbox is unnecessary and the implementation
actually only used a limited set of flexbox features. Thus executing the whole
flexbox code was overkill. It can also be a burden for
people working on other places of the layout code. For example
&lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/jfernandez/&quot;&gt;Javi Fernández&lt;/a&gt; has worked on improving the
&lt;a href=&quot;http://blogs.igalia.com/jfernandez/2015/01/12/box-alignment-and-grid-layout-ii/&quot;&gt;box alignments&lt;/a&gt; in the past
and he had hard time fixing the &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=138095&quot;&gt;MathML code impacted by his changes&lt;/a&gt;. This is probably the cause of the
&lt;a href=&quot;https://webkit.org/b/151916&quot;&gt;bad position of the summation symbol&lt;/a&gt;
that can be seen in the &lt;a href=&quot;#safari9VSrefactoring&quot;&gt;screenshot above&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;From the layout perspective, most of the rendering logic was
implemented in the flexbox classes and the MathML “renderer” classes were really
just managing the creation and update of anonymous nodes and style.
Although this sounds good code
reuse it actually made impossible to understand how and when layout steps
happen or to add more advanced features.
The new implementation replaced this manipulation of the render tree with
simple arithmetic calculations on box metrics which is safer and more reliable.
Also, complex renderers such as
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLScripts&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLRoot&lt;/code&gt;
actually achieve better rendering quality with less code!&lt;/p&gt;

&lt;p&gt;As an example of the complexity, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLUnderOver&lt;/code&gt; can behave as a
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLScripts&lt;/code&gt;
in some situation so we really want the former class to reuse the
latter class. As we will see below the old implementation of the two renderers
were quite different: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLUnderOver&lt;/code&gt; only relied on setting column
direction in the user agent stylesheet while &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLScripts&lt;/code&gt; created
a complex render tree structures with anonymous style. Hence it seemed difficult
to share the two cases or to handle DOM changes causing to move from one
case to the other one. With our new implementation, this is simply reduced to
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=155542&quot;&gt;simple C++ inheritance&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When I started to work on WebKit some years ago,
I made the mistake of continuing with
the existing approach. The implementation of &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=99618&quot;&gt;multiscripts&lt;/a&gt; or &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=44208&quot;&gt;automatic italic mathvariant&lt;/a&gt; added more anonymous objects
and made the situation even worse. After the end of my crowdfunding project,
&lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/alex/&quot;&gt;Alex Castro&lt;/a&gt;
did more cleanup and tried to implement important features such as
&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=133845&quot;&gt;displaystyle&lt;/a&gt;
but he also soon realized that it was too hard to work with the current code
base…&lt;/p&gt;

&lt;h2 id=&quot;layout-refactoring&quot;&gt;Layout Refactoring&lt;/h2&gt;

&lt;p&gt;In order to solve the issues discussed in the previous section,
Javi and Alex worked on a new MathML branch where the first step was to remove
the inheritance on the flexbox layout classes.
During the Web Engines Hackfest 2015, I collaborated with the Igalia’s
web platform team
team to continue the work on this branch. In a second step, we rewrote many
MathML renderer functions so that they stop creating anonymous nodes or style.
We obtained very encouraging results: The implementation looked much
simpler and much more understandable!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://lists.webkit.org/pipermail/webkit-dev/2015-December/027840.html&quot;&gt;Alex announced the initial plan on the webkit-dev mailing list&lt;/a&gt;. He started opening bugs
and attaching patches to merge the first step.
However, that step still required many of the flexbox logic and so made code
hard to understand for reviewers. Hence when I joined Igalia four months ago
Alex asked me to try and see how to reorganize patches so that the two initial
steps can be submitted in one go.
This corresponds to the first phase mentioned in the introduction. As indicated
on the &lt;a href=&quot;https://trac.webkit.org/wiki/MathML/Early_2016_Refactoring&quot;&gt;wiki page&lt;/a&gt;,
the layout refactoring consisted in rewriting the following member functions
of each renderer class:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;computePreferredLogicalWidths: calculate preferred widths, based on the
preferred widths of child renderers.&lt;/li&gt;
  &lt;li&gt;layoutBlock: set final position and size of child renderers.&lt;/li&gt;
  &lt;li&gt;firstLineBaseLine: calculate the ascent of the renderer.&lt;/li&gt;
  &lt;li&gt;paint (optional): perform special painting such as fraction bars.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Refactored renderers no longer rely on any flexbox code nor anonymous
renderers and the functions mentioned above essentially perform arithmetic
computations. By reading the code, one can be sure that we follow
standard layout rules and that we do not perform unnecessary reflow.
Moreover, the &lt;a href=&quot;http://www.mathml-association.org/MathMLinHTML5/S3.html&quot;&gt;rules specific to math rendering&lt;/a&gt; are only located in the MathML renderers and can be
better understood. Details for each class are provided in the next subsections.
After all the layout functions were rewritten and the code managing the
render tree structure removed, we were able to make the
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLBlock&lt;/code&gt; class
inherit from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderBlock&lt;/code&gt; instead of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderFlexibleBox&lt;/code&gt;.
Many of the bugs could
then be immediately closed or otherwise fixed with small follow-up patches.&lt;/p&gt;

&lt;h3 id=&quot;spacing&quot;&gt;Spacing&lt;/h3&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLSpace&lt;/code&gt; is a simple class inserting blank boxes for adjusting
  spacing of math formulas.
  Obviously, we do not need any of the complexity of flexbox so it was
  straightforward to write the layout functions.&lt;/p&gt;

&lt;div style=&quot;text-align: center&quot;&gt;
     &lt;math display=&quot;block&quot;&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mspace width=&quot;3em&quot; /&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/math&gt;
     &lt;small&gt;Large space between 3 and x.&lt;/small&gt;
  &lt;/div&gt;

&lt;h3 id=&quot;grouping&quot;&gt;Grouping&lt;/h3&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLRow&lt;/code&gt; performs rendering of a row of math items.
  Since WebKit does not support linebreaking in MathML at the
  moment, this is just putting child boxes on a same baseline.
  One specificity is that some operators can be stretched vertically and so
  &lt;a href=&quot;https://wikimedia.org/api/rest_v1/media/math/render/svg/5d166c08a30ad598edc84d0bbe0223be8bcc5a6d&quot;&gt;their width may depend on their height&lt;/a&gt;.&lt;/p&gt;

&lt;div style=&quot;text-align: center&quot;&gt;
     &lt;math display=&quot;block&quot;&gt;
       &lt;mrow&gt;
         &lt;mo&gt;{&lt;/mo&gt;
         &lt;mfrac&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mfrac&gt;
         &lt;msup&gt;
           &lt;mi&gt;x&lt;/mi&gt;
           &lt;mn&gt;3&lt;/mn&gt;
         &lt;/msup&gt;
       &lt;/mrow&gt;
     &lt;/math&gt;
     &lt;small&gt;Row containing a stretched brace, a fraction and a scripted element.&lt;/small&gt;
  &lt;/div&gt;

&lt;p&gt;Again, flexbox features are useless here. With the old code, it was
  not clear whether we were violating the CSS invariant with preferred and
  logical widths and which kind of relayout or render tree changes would happen
  when doing the stretch call. By properly implementing the layout functions
  previously mentioned all of this became much more trustable.&lt;/p&gt;

&lt;h3 id=&quot;fractions&quot;&gt;Fractions&lt;/h3&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLFraction&lt;/code&gt; draws a fraction with numerator and denominator.&lt;/p&gt;

&lt;div style=&quot;text-align: center&quot;&gt;
     &lt;math display=&quot;block&quot;&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;/math&gt;
     &lt;small&gt;Simple fraction.&lt;/small&gt;
  &lt;/div&gt;

&lt;p&gt;This used to be implemented using a column direction for the fraction element.
  Numerator and denominator were wrapped into anonymous nodes with additional
  style to leave space for the fraction bar and to adjust the horizontal
  alignments.&lt;/p&gt;

&lt;pre&gt;RenderMathMLFraction (flexbox with column direction)
  RenderMathMLBlock (anonymous flexbox)
    RenderMathMLRow (numerator)
      ...
  RenderMathMLBlock (anonymous flexbox)
    RenderMathMLRow (denominator)
      ...
&lt;/pre&gt;

&lt;p&gt;It was relatively easy to implement this without any anonymous nodes and again
  the use of flexbox did not sound justified.
  For example, to calculate the preferred width we just take the maximum
  of the preferred widths of the numerator and denominator.
  For the layout, the calculation of the logical width is similar and we
  calculate the horizontal coordinates of numerator and denominator so that
  their centers are aligned. Vertical metrics are similarly calculated
  from the vertical metrics of the numerator and denominator.
  During that step, we also fixed some bugs with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;linethickness&lt;/code&gt; attribute and
  added support for some OpenType MATH table constants.&lt;/p&gt;

&lt;h3 id=&quot;scripts-above-and-below&quot;&gt;Scripts above and below&lt;/h3&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLUnderOver&lt;/code&gt; is used to attach some scripts above and below a base.
  Each child can itself be a horizontal stretchy operator.&lt;/p&gt;

&lt;div style=&quot;text-align: center&quot;&gt;
     &lt;math display=&quot;block&quot;&gt;&lt;mover&gt;&lt;mtext&gt;base&lt;/mtext&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;/mover&gt;&lt;/math&gt;
     &lt;small&gt;Base with stretchy arrow over it.&lt;/small&gt;
  &lt;/div&gt;

&lt;p&gt;This was implemented in the user agent stylesheet by using
  flexboxes with column direction for the corresponding MathML elements and
  the C++ class had
  additional rules to fire the stretching. So the problems and solutions for
  this class were essentially a mixed of the cases of
  &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLFraction&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLRow&lt;/code&gt; we just discussed.&lt;/p&gt;

&lt;h3 id=&quot;subscripts-and-superscripts&quot;&gt;Subscripts and Superscripts&lt;/h3&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLScripts&lt;/code&gt; is used for a base with some arbitrary number of scripts.
  All the scripts can have different positions (pre, post, sub, super) and
  metrics (width, ascent and descent). We must avoid collisions and take care
  of horizontal and vertical alignements.&lt;/p&gt;

&lt;div style=&quot;text-align: center&quot;&gt;
     &lt;math display=&quot;block&quot;&gt;
       &lt;mmultiscripts&gt;
         &lt;mtext&gt;base&lt;/mtext&gt;
         &lt;mi&gt;a&lt;/mi&gt;
         &lt;mi&gt;b&lt;/mi&gt;
         &lt;mi&gt;c&lt;/mi&gt;
         &lt;none /&gt;
         &lt;mprescripts /&gt;
         &lt;none /&gt;
         &lt;mi&gt;d&lt;/mi&gt;
         &lt;mi&gt;e&lt;/mi&gt;
         &lt;mi&gt;f&lt;/mi&gt;
       &lt;/mmultiscripts&gt;
     &lt;/math&gt;
     &lt;small&gt;Base with pre and post scripts.&lt;/small&gt;
  &lt;/div&gt;

&lt;p&gt;The old code used a complex render tree with additional style to achieve the
  best possible result.
  However, the quality was still bad as you can see for the script
  attached to
  the integral in the &lt;a href=&quot;#safari9VSrefactoring&quot;&gt;screenshot above&lt;/a&gt;.
  Managing the render tree was a nightmare: Just to give the idea, additional
  anonymous node and style were used to allow horizontal and vertical
  adjustments (similar to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLFraction&lt;/code&gt; above) and prescripts had
  negative order property so that they were positioned before the base.&lt;/p&gt;

&lt;pre&gt;RenderMathMLScripts
    Base Wrapper (anonymous flexbox)
      RenderMathMLRow (base)
        ...
    SubSupPair Wrapper (anonymous flexbox with column direction)
      RenderMathMLRow (post-subscript)
        ...
      RenderMathMLRow (subperscript)
        ...
    SubSupPair Wrapper (anonymous flexbox with column direction)
      RenderMathMLRow (post-subscript)
        ...
      RenderMathMLRow (post-superscript)
        ...
    ... (more postscripts)
    RenderMathMLBlock (prescripts separator)
    SubSupPair Wrapper (anonymous flexbox with column direction and order -1)
      RenderMathMLRow (pre-subscript)
        ...
      RenderMathMLRow (pre-subperscript)
        ...
    SubSupPair Wrapper (anonymous flexbox with column direction and order -1)
      RenderMathMLRow (pre-subscript)
        ...
      RenderMathMLRow (pre-superscript)
        ...
    ... (more prescripts)
&lt;/pre&gt;

&lt;p&gt;Rules from TeX and the OpenType MATH table are
  relatively complex and we decided to implement them directly in the new
  refactoring as otherwise it was impossible to get decent quality. The code is
  still complex but we now have clear rules, we only perform simple
  calculations and the render tree structure matches the DOM tree.&lt;/p&gt;

&lt;h3 id=&quot;enclosing-notations&quot;&gt;“Enclosing” Notations&lt;/h3&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLMenclose&lt;/code&gt; is a row of math items with some additional notations.
  &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=85729&quot;&gt;Gurpreet Kaur implemented this element two years ago&lt;/a&gt;
  but she followed the same approch, combining anonymous nodes and style for
  some simple notations and special painting for others.&lt;/p&gt;

&lt;div style=&quot;text-align: center&quot;&gt;
     &lt;math display=&quot;block&quot;&gt;
       &lt;menclose notation=&quot;circle updiagonalstrike&quot;&gt;
         &lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;
       &lt;/menclose&gt;
     &lt;/math&gt;
     &lt;small&gt;circle and strike notations&lt;/small&gt;
  &lt;/div&gt;

&lt;p&gt;During the refactoring, the code has been completely
  rewritten so that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLMenclose&lt;/code&gt; is now essentially a derived class
  of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLRow&lt;/code&gt;
  with the measuring and painting functions adjusted to take into account the
  additional notations. During that refactoring, we also
  &lt;a href=&quot;https://lists.webkit.org/pipermail/webkit-dev/2016-March/028064.html&quot;&gt;removed support for unused radical notation&lt;/a&gt;, which was implemented using an anonymous
  &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLSquareRoot&lt;/code&gt; (see Radicals section below).&lt;/p&gt;

&lt;h3 id=&quot;helper-classes-for-operators&quot;&gt;Helper Classes for Operators&lt;/h3&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLOperator&lt;/code&gt; class is used for math operators.
  It was quite complex class and we decided to extract from it two features that
  are unrelated to layout:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;The &lt;a href=&quot;https://www.w3.org/TR/MathML3/appendixc.html&quot;&gt;MathML operator dictionary&lt;/a&gt; and corresponding search functions have been moved into a
  &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MathOperatorDictionary&lt;/code&gt; class.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Selection, measuring and drawing of stretchy operators have been moved into a
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MathOperator&lt;/code&gt; class. This is essentially
the &lt;a href=&quot;https://frederic-wang.fr/opentype-math-in-harfbuzz.html&quot;&gt;low-level text shaping being implemented in HarfBuzz&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The remaining code was indeed the real layout part but the mess with
  anonymous node and style was only removed later (see Text Classes below).
  Although it seems we just needed to move the code out of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLOperator&lt;/code&gt;
  into those new classes, the case of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MathOperator&lt;/code&gt; was particularly difficult.
  We had to split the effort into several small steps to make review possible
  and also fixed many issues due to the entanglement and confusion of these
  three different features of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLOperator&lt;/code&gt; class…
  The work done for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MathOperator&lt;/code&gt; actually improved the rendering
  of stretchy operators as you can see for the horizontal braces in the
  &lt;a href=&quot;#safari9VSrefactoring&quot;&gt;screenshot above&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;radicals&quot;&gt;Radicals&lt;/h3&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLRoot&lt;/code&gt; is used for square root or arbitrary N-th root.
  Many of the TeX and OpenType MATH table rules
  were already used by the old implementation with anonymous
  nodes and style. However, there were bugs difficult to fix related to
  &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=143397&quot;&gt;zooming&lt;/a&gt;,
  &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=134018&quot;&gt;child removal&lt;/a&gt; or
  &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=134020&quot;&gt;style change&lt;/a&gt; due to the
  management of the anonymous &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLOperator&lt;/code&gt; to draw the radical sign.&lt;/p&gt;

&lt;div style=&quot;text-align: center&quot;&gt;
     &lt;math display=&quot;block&quot;&gt;
       &lt;msqrt&gt;
         &lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;
       &lt;/msqrt&gt;
       &lt;mo&gt;+&lt;/mo&gt;
       &lt;mroot&gt;
         &lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;
         &lt;mn&gt;3&lt;/mn&gt;
       &lt;/mroot&gt;
     &lt;/math&gt;
     &lt;small&gt;square and cube roots&lt;/small&gt;
  &lt;/div&gt;

&lt;p&gt;The old implementation actually had two classes for the square and general
  cases (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLSquareRoot&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLRoot&lt;/code&gt;). The usual
  technique
  with various anonymous wrappers and style was used.
  After the refactoring, we were able to merge everything in a single
  &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLRoot&lt;/code&gt;
  class. Because the square root behaves as an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mrow&lt;/code&gt;, we also made that class
  derive from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLRow&lt;/code&gt; to reuse as much code as possible.
  Here is are how the render trees used to look like:&lt;/p&gt;

&lt;pre&gt;RenderMathMLSquareRoot
  RenderMathMLBlock (anonymous used for metric adjustements)
    RenderMathMLRadicalOperator (anonymous used for the radical symbol)
      ...
  RenderMathMLRootWrapper (anonymous used for the children)
    RenderMathMLRow (child 1)
      ...
    RenderMathMLRow (child 2)
      ...
    ...
    RenderMathMLRow (child N)
      ...

RenderMathMLRoot
  RenderMathMLRootWrapper (anonymous for the index)
    ...
  RenderMathMLBlock (anonymous used for metric adjustements)
     RenderMathMLRadicalOperator (anonymous used for the radical symbol)
       ...
  RenderMathMLRootWrapper (anonymous for the base)
    ...
&lt;/pre&gt;

&lt;p&gt;Again, we rewrote the implementation using only simple box positioning.
  The difficult part was to get rid of the anonymous
  &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLRadicalOperator&lt;/code&gt; to draw the radical symbol. This class was
  derived from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLOperator&lt;/code&gt; and extended it with some fallback drawing
  when math fonts were not available. After having extracted stretchy operator
  shaping from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLOperator&lt;/code&gt; it became possible to use the
  &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MathOperator&lt;/code&gt;
  helper class to draw the radical symbol. We implemented the fallback for
  missing math fonts the same as Gecko: Use a scale transform to stretch
  the base glyph for U+221A SQUARE ROOT. As a bonus, we used such transform to
  implement glyph mirroring, as required to draw right-to-left radicals in
  some Arabic mathematical notations.&lt;/p&gt;

&lt;h3 id=&quot;text-classes&quot;&gt;Text Classes&lt;/h3&gt;

&lt;p&gt;These classes are containers for math text such as variables or
  operators. There is a generic &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLToken&lt;/code&gt; class and
  a derived class &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLOperator&lt;/code&gt; adding features
  specific to operators such as spacing, dictionary property, stretching…
  Anonymous wrappers and style were used to implement
  &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=44208&quot;&gt;automatic italic mathvariant&lt;/a&gt;
  or &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=115787&quot;&gt;operator spacing&lt;/a&gt;. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderText&lt;/code&gt; child
  of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLOperator&lt;/code&gt; was (re)built as an anonymous text node
  so that is was possible to
  convert U+002D HYPHEN-MINUS into U+2212 MINUS SIGN
  or to provide some text for anonymous operators created by
  &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLFenced&lt;/code&gt; (see Unchanged Classes section).&lt;/p&gt;

&lt;pre&gt;RenderMathMLToken (e.g. mi element)
  RenderMathMLBlock (anonymous flexbox used to apply CSS italic)
    RenderBlock (anonymous created elsewhere to honor CSS rules)
      RenderText
        text run &quot;x&quot;

RenderMathMLOperator (mo element)
   RenderMathMLBlock (anonymous flexbox used for spacing)
    RenderBlock (anonymous created elsewhere to honor CSS rules)
      RenderText (anonymous destroyed and built again)
         text run &quot;−&quot;
&lt;/pre&gt;

&lt;p&gt;We did a big refactoring to remove all the anonymous nodes
  created by the MathML renderer classes.
  Just like for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MathOperator&lt;/code&gt;, we had to be careful and submit
  various small pieces as the text rendering was quite sensible to code change.&lt;/p&gt;

&lt;p&gt;The simplified operator spacing that was supported by WebKit was easy to
  implement with the new approach.
  To do automatic italic mathvariant, we modified the paint function to use
  &lt;a href=&quot;https://en.wikipedia.org/wiki/Mathematical_Alphanumeric_Symbols&quot;&gt;Mathematical Alphanumeric Symbols&lt;/a&gt; instead of CSS italic as you can notice for the
  variables displayed in the
  &lt;a href=&quot;#safari9VSrefactoring&quot;&gt;screenshot above&lt;/a&gt;. Hence we could
  remove the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLBlock&lt;/code&gt; anonymous wrapper.&lt;/p&gt;

&lt;p&gt;The use of an anonymous node for the text prevented it to appear in the dumped
  render tree of layout tests and also
  required some hacks in the accessibility code
  to expose that text. In order to address the cases of
  the minus sign and of mfenced operators,
  we decided to use our new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MathOperator&lt;/code&gt; class again.
  Indeed &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MathOperator&lt;/code&gt; is actually also able to draw unstretched operators
  made of a single character and this works for the minus sign and for mfenced
  operators used in practice.&lt;/p&gt;

&lt;h3 id=&quot;unchanged-classes&quot;&gt;Unchanged Classes&lt;/h3&gt;

&lt;p&gt;Two classes have not been modified but such modifications were not needed to
  remove the dependency on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderFlexibleBox&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLFenced&lt;/code&gt; is used for an mrow-like element that is
&lt;a href=&quot;https://www.w3.org/TR/MathML/chapter3.html#presm.mfenced&quot;&gt;defined in the MathML specification&lt;/a&gt; as strictly equivalent
   to constructions with rows and operators.
   It is implemented as a derived class
   of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLRow&lt;/code&gt; and creates anonymous &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLOperators&lt;/code&gt;. This is the
   only remaining class that modifies the render tree structure. Note that
   prominent MathML websites and generators do not use the mfenced element,
   so it is not a big concern.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLTable&lt;/code&gt; is used for table layout. It is just derived from
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderTable&lt;/code&gt;, not &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderFlexibleBox&lt;/code&gt;. We did not change anything for now
but we considered creating our own
implementation in order to make our code independent from HTML table,
to support MathML-specific table features and to make it better integrated
with the rest of the MathML code.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;accessibility&quot;&gt;Accessibility&lt;/h2&gt;

&lt;p&gt;Even if our main focus was on rendering, the changes we made also had impact on
the MathML accessibility code. Indeed, the accessibility tree is generated
from the MathML renderer classes: Since we changed the latter during the
refactoring, we also had to adjust the accessibility code. Fortunately,
we are lucky to have &lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/jdiggs/&quot;&gt;Joanmarie Diggs&lt;/a&gt; in our team and she was able to provide some help here.&lt;/p&gt;

&lt;p&gt;First, the accessibility code exposes the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;linethickness&lt;/code&gt; of fractions to
implement Apple’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AXMathLineThickness&lt;/code&gt; attribute. In practice, this is really
necessary to know whether the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;linethickness&lt;/code&gt; is null or not
(e.g.
&lt;a href=&quot;https://en.wikipedia.org/wiki/Binomial_coefficient&quot;&gt;binomial coefficient&lt;/a&gt; VS
the &lt;a href=&quot;https://en.wikipedia.org/wiki/Legendre_symbol&quot;&gt;Legendre symbol&lt;/a&gt;).
Apple’s unit test seemed to expose the ratio between the actual thickness and
the default thickness but the accessibility code really just reads the actual
thickness calculated by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLFraction&lt;/code&gt;.
Our fix and improvement for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;linethickness&lt;/code&gt; made the Apple’s unit test fail so we
had to adjust &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLFraction&lt;/code&gt; to expose the value expected by that test.&lt;/p&gt;

&lt;p&gt;In general, the accessibility code does not care about anonymous nodes
created for layout purpose and there was some code to avoid exposing
them in the accessibility tree. So removing all the anonymous during the
layout refactoring was actually a good and safe thing to do. There were some
helper functions to implement Apple’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AXMathRootRadicand&lt;/code&gt; and
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AXMathRootIndex&lt;/code&gt; attributes that had to be adjusted, though. These functions
used to do some work to skip the anonymous wrappers and we were actually able
to simplify them.&lt;/p&gt;

&lt;p&gt;There was also some specific code for the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLOperators&lt;/code&gt; and their
anonymous &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderText&lt;/code&gt; that were necessary to expose the text content.
Actually, there was an &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=139582&quot;&gt;old bug&lt;/a&gt;
in the accessibility code and the anonymous
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLOperators&lt;/code&gt; created by mfenced were not correctly exposed. The
unit test
we had for mfenced operators was only checking the text content but it was still
passing and so the regression had never been detected before. After
the layout refactoring we removed the anonymous &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderText&lt;/code&gt; of mfenced
operators and so broke that test…
We thus spent some time to fix the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RenderMathMLOperator&lt;/code&gt; code. Essentially,
we removed all the old hacks and only left a specific handling for mfenced
operators. We also used this opportunity to improve and extend our MathML
accessibility tests.&lt;/p&gt;

&lt;p&gt;Finally, the MathML accessibility code was directly implemented into a generic
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AccessibilityRenderObject&lt;/code&gt; class. There was some functions to access
math nodes and properties but also specific cases scattered all over the code
(anonymous boxes, mfenced operators, math roles etc). In order to
facilitate future work and maintenance we decided to move all the
MathML code into a new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AccessibilityMathMLElement&lt;/code&gt; class. Hence the work implied
by the layout refactoring actually encouraged us to improve the organization and
testing of our accessibility code!&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;In the past four months, Igalia’s web platform team has successfully upstreamed
the refactoring of WebKit’s MathML renderer classes and we are now very confident
about the quality of the layout code.
In addition to the people mentioned above I would personally like to thank
everybody who helped with this work.
More specifically, I am very grateful to other people from Igalia
(&lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/mrobinson/&quot;&gt;Martin Robinson&lt;/a&gt;,
&lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/svillar/&quot;&gt;Sergio Villar&lt;/a&gt; and
&lt;a href=&quot;https://www.igalia.com/nc/igalia-247/igalian/item/mrego/&quot;&gt;Manuel Rego&lt;/a&gt;)
or Apple (&lt;a href=&quot;http://whtconstruct.blogspot.fr/&quot;&gt;Brent Fulgham&lt;/a&gt;
and &lt;a href=&quot;https://en.wikipedia.org/wiki/Darin_Adler&quot;&gt;Darin Adler&lt;/a&gt;) who have
spent some time to review patches.
As a nice side effect of this work,
mathematical formulas look better and the accessibility code has been improved.
More is happenning in the
&lt;a href=&quot;https://trac.webkit.org/wiki/MathML/Early_2016_Refactoring&quot;&gt;next two phases&lt;/a&gt;.
We are looking forward to continuing
implementation of Web standards and collaboration with browser vendors
at the next &lt;a href=&quot;http://www.webengineshackfest.org/&quot;&gt;Web Engines Hackfest&lt;/a&gt;!&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>OpenType MATH in HarfBuzz</title>
   <link href="https://frederic-wang.fr//2016/04/16/opentype-math-in-harfbuzz/"/>
   <updated>2016-04-16T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2016/04/16/opentype-math-in-harfbuzz</id>
   <content type="html">
&lt;div id=&quot;p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text&quot;&gt;TL;DR:&lt;/span&gt;&lt;/p&gt;
&lt;ul id=&quot;I1&quot; class=&quot;ltx_itemize&quot;&gt;
&lt;li id=&quot;I1.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;&lt;span class=&quot;ltx_text&quot;&gt;•&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text&quot;&gt;Work is in progress to add OpenType MATH support in
HarfBuzz and will be instrumental for many math rendering engines relying
on that library, including browsers.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;&lt;span class=&quot;ltx_text&quot;&gt;•&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text&quot;&gt;For stretchy operators, an efficient way to determine the required number
of glyphs and their overlaps has been implemented and is described here.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&quot;p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In the context of &lt;a href=&quot;http://www.igalia.com/webkit/&quot; title=&quot;&quot; class=&quot;ltx_ref&quot;&gt;Igalia browser team&lt;/a&gt;
effort to implement
&lt;a href=&quot;http://www.mathml-association.org/MathMLinHTML5/&quot; title=&quot;&quot; class=&quot;ltx_ref&quot;&gt;MathML support using TeX rules and OpenType features&lt;/a&gt;,
I have started implementation of
&lt;a href=&quot;https://github.com/behdad/HarfBuzz/issues/235&quot; title=&quot;&quot; class=&quot;ltx_ref&quot;&gt;OpenType MATH support in HarfBuzz&lt;/a&gt;. This table &lt;a href=&quot;https://blogs.msdn.microsoft.com/murrays/2014/04/27/opentype-math-tables/&quot; title=&quot;&quot; class=&quot;ltx_ref&quot;&gt;from the OpenType standard&lt;/a&gt; is made of three subtables:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p3&quot; class=&quot;ltx_para&quot;&gt;
&lt;ul id=&quot;I2&quot; class=&quot;ltx_itemize&quot;&gt;
&lt;li id=&quot;I2.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;I2.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The &lt;span class=&quot;ltx_text ltx_font_typewriter&quot;&gt;MathConstants&lt;/span&gt; table, which contains layout constants. For example, the thickness of the fraction bar of &lt;math id=&quot;I2.i1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\frac{a}{b}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mfrac&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mfrac&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\frac{a}{b}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I2.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;I2.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The &lt;span class=&quot;ltx_text ltx_font_typewriter&quot;&gt;MathGlyphInfo&lt;/span&gt; table, which contains glyph properties. For instance, the italic correction indicating how slanted an integral is e.g. to properly place the subscript in &lt;math id=&quot;I2.i2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\displaystyle\displaystyle\int_{D}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mstyle displaystyle=&quot;true&quot;&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∫&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/msub&gt;&lt;/mstyle&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\displaystyle\displaystyle\int_{D}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I2.i3&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;I2.i3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The &lt;span class=&quot;ltx_text ltx_font_typewriter&quot;&gt;MathVariants&lt;/span&gt; table, which provides larger size variants for a base glyph or data to build a glyph assembly. For example, either a larger parenthesis or a assembly of U+239B, U+239C, U+239D to write something like:&lt;/p&gt;
&lt;table id=&quot;S0.Ex1&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\left(\frac{\frac{\frac{a}{b}}{\frac{c}{d}}}{\frac{\frac{e}{f}}{\frac{g}{h}}}\right.&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mfrac&gt;&lt;mfrac&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mfrac&gt;&lt;mfrac&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mfrac&gt;&lt;/mfrac&gt;&lt;mfrac&gt;&lt;mfrac&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;/mfrac&gt;&lt;mfrac&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;mi&gt;h&lt;/mi&gt;&lt;/mfrac&gt;&lt;/mfrac&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\left(\frac{\frac{\frac{a}{b}}{\frac{c}{d}}}{\frac{\frac{e}{f}}{\frac{g}{h}}}\right.&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&quot;p4&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Code to parse this table was added to Gecko and WebKit two years ago. The
existing code to build glyph assembly in these Web engines was adapted
to use the &lt;span class=&quot;ltx_text ltx_font_typewriter&quot;&gt;MathVariants&lt;/span&gt; data instead of only private tables. However, as
we will see below the &lt;span class=&quot;ltx_text ltx_font_typewriter&quot;&gt;MathVariants&lt;/span&gt; data to build glyph assembly is more
general, with arbitrary number of glyphs or with additional constraints on
glyph overlaps. Also
there are various fallback mechanisms
for old fonts and other bugs that I think we could get rid of
when we move to OpenType MATH fonts only.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p5&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In order to add MathML support in Blink, it is very easy to
&lt;a href=&quot;https://github.com/fred-wang/chromium.src/compare/master...fred-wang:MATH&quot; title=&quot;&quot; class=&quot;ltx_ref&quot;&gt;import the OpenType MATH parsing code from WebKit&lt;/a&gt;. However, after discussions
with some Google developers,
it seems that the best option is to directly add support
for this table in HarfBuzz. Since this library is used by Gecko, by WebKit
(at least the GTK port) and by many other applications such as Servo, XeTeX or
LibreOffice it make senses to share the implementation to improve math rendering
everywhere.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p6&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The idea for HarfBuzz is to add an API to&lt;/p&gt;
&lt;ol id=&quot;I3&quot; class=&quot;ltx_enumerate&quot;&gt;
&lt;li id=&quot;I3.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;1.&lt;/span&gt; 
&lt;div id=&quot;I3.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Expose data from the &lt;span class=&quot;ltx_text ltx_font_typewriter&quot;&gt;MathConstants&lt;/span&gt; and &lt;span class=&quot;ltx_text ltx_font_typewriter&quot;&gt;MathGlyphInfo&lt;/span&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I3.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;2.&lt;/span&gt; 
&lt;div id=&quot;I3.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Shape stretchy operators to some target size with the help of the
&lt;span class=&quot;ltx_text ltx_font_typewriter&quot;&gt;MathVariants&lt;/span&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p class=&quot;ltx_p&quot;&gt;It is then up to a higher-level math rendering engine
(e.g. TeX or MathML rendering engines) to beautifully display mathematical
formulas using this API. The design choice for exposing &lt;span class=&quot;ltx_text ltx_font_typewriter&quot;&gt;MathConstants&lt;/span&gt; and
&lt;span class=&quot;ltx_text ltx_font_typewriter&quot;&gt;MathGlyphInfo&lt;/span&gt; is almost obvious from the reading of the MATH table
specification. The choice for the shaping API is a bit more complex and
discussions is still in progress. For example because we want to accept
stretching after glyph-level mirroring (e.g. to draw RTL clockwise integrals) we
should accept any glyph and not just an input Unicode strings as it is the case
for other HarfBuzz shaping functions. This shaping also depends on a stretching
direction (horizontal/vertical) or on a target size (and Gecko even currently
has various ways to approximate that target size). Finally,
we should also have a way to expose italic correction for a glyph assembly
or to approximate preferred width for Web rendering engines.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p7&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;As I mentioned at the beginning, the data and algorithm to build glyph assembly
is the most complex part of the OpenType MATH and deserves a special interest.
The idea is that you have a list of &lt;math id=&quot;p7.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;n\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; glyphs available to build
the assembly. For each
&lt;math id=&quot;p7.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;0\leq i\leq n-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0\leq i\leq n-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
the glyph &lt;math id=&quot;p7.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;g_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;g_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has advance &lt;math id=&quot;p7.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in the stretch direction. Each &lt;math id=&quot;p7.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;g_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;g_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has
straight connector part at its start (of length &lt;math id=&quot;p7.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;s_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;s_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) and at its end
(of length &lt;math id=&quot;p7.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;e_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;e_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) so that we can align the glyphs on the stretch axis and glue
them together. Also, some of the glyphs are “extenders” which means that
they can be repeated 0, 1 or more times to make the assembly as large as
possible. Finally,
the end/start connectors of consecutive glyphs must overlap by at least a fixed
value &lt;math id=&quot;p7.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;o_{\mathrm{min}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o_{\mathrm{min}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to avoid gaps at some resolutions but of course without
exceeding the length of the corresponding connectors. This gives some
flexibility to adjust the size of the assembly and get closer to the target
size &lt;math id=&quot;p7.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;t&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;t&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;figure id=&quot;S0.F1&quot; class=&quot;ltx_figure&quot;&gt;&lt;svg id=&quot;S0.F1.pic1&quot; class=&quot;ltx_picture ltx_centering&quot; height=&quot;294.73&quot; overflow=&quot;visible&quot; version=&quot;1.1&quot; viewBox=&quot;-4.43 -232.91 450.39 294.73&quot; width=&quot;450.39&quot;&gt;&lt;g transform=&quot;matrix(1 0 0 -1 0 -171.09)&quot;&gt;&lt;g stroke=&quot;#000000&quot;&gt;&lt;g fill=&quot;#000000&quot;&gt;&lt;g stroke-width=&quot;0.4pt&quot; color=&quot;#000000&quot;&gt;&lt;g stroke=&quot;#0000FF&quot;&gt;&lt;g fill=&quot;#0000FF&quot;&gt;&lt;g stroke=&quot;#E6E6FF&quot; color=&quot;#0000FF&quot;&gt;&lt;g fill=&quot;#E6E6FF&quot;&gt;&lt;path d=&quot;M 59.06 59.06 L 177.17 59.06 L 177.17 -59.06 L 59.06 -59.06 Z M 0 2.95 L 59.06 2.95 L 59.06 -2.95 L 0 -2.95 Z M 177.17 2.95 L 236.22 2.95 L 236.22 -2.95 L 177.17 -2.95 Z&quot; style=&quot;stroke:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;path d=&quot;M 118.11 0&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;g transform=&quot;matrix(1 0 0 1 110.02 -2.71)&quot; color=&quot;#0000FF&quot;&gt;&lt;g class=&quot;ltx_svg_fog&quot; transform=&quot;matrix(1 0 0 -1 0 12.45)&quot;&gt;&lt;switch&gt;&lt;foreignObject color=&quot;#0000FF&quot; height=&quot;100%&quot; overflow=&quot;visible&quot; width=&quot;16.19&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;S0.F1.pic1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;g_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;g_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;&lt;/foreignObject&gt;&lt;/switch&gt;&lt;/g&gt;&lt;/g&gt;&lt;g stroke-width=&quot;0.32pt&quot; color=&quot;#0000FF&quot;&gt;&lt;g stroke-dasharray=&quot;none&quot; stroke-dashoffset=&quot;0.0pt&quot;&gt;&lt;g stroke-linecap=&quot;round&quot;&gt;&lt;g stroke-linejoin=&quot;round&quot;&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;path d=&quot;M 0.64 -88.58 L 29.53 -88.58 L 58.42 -88.58&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;g transform=&quot;matrix(-1 0 0 -1 0.64 -88.58)&quot; color=&quot;#0000FF&quot;&gt;&lt;path d=&quot;M -1.66 2.21 C -1.52 1.38 0 0.14 0.42 0 C 0 -0.14 -1.52 -1.38 -1.66 -2.21&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g transform=&quot;matrix(1 0 0 1 58.42 -88.58)&quot; color=&quot;#0000FF&quot;&gt;&lt;path d=&quot;M -1.66 2.21 C -1.52 1.38 0 0.14 0.42 0 C 0 -0.14 -1.52 -1.38 -1.66 -2.21&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g transform=&quot;matrix(1 0 0 1 21.43 -103.16)&quot; color=&quot;#0000FF&quot;&gt;&lt;g class=&quot;ltx_svg_fog&quot; transform=&quot;matrix(1 0 0 -1 0 12.45)&quot;&gt;&lt;switch&gt;&lt;foreignObject color=&quot;#0000FF&quot; height=&quot;100%&quot; overflow=&quot;visible&quot; width=&quot;16.19&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;S0.F1.pic1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;s_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;s_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;&lt;/foreignObject&gt;&lt;/switch&gt;&lt;/g&gt;&lt;/g&gt;&lt;path d=&quot;M 177.8 -88.58 L 206.69 -88.58 L 235.58 -88.58&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;g transform=&quot;matrix(-1 0 0 -1 177.8 -88.58)&quot; color=&quot;#0000FF&quot;&gt;&lt;path d=&quot;M -1.66 2.21 C -1.52 1.38 0 0.14 0.42 0 C 0 -0.14 -1.52 -1.38 -1.66 -2.21&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g transform=&quot;matrix(1 0 0 1 235.58 -88.58)&quot; color=&quot;#0000FF&quot;&gt;&lt;path d=&quot;M -1.66 2.21 C -1.52 1.38 0 0.14 0.42 0 C 0 -0.14 -1.52 -1.38 -1.66 -2.21&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g transform=&quot;matrix(1 0 0 1 198.6 -103.16)&quot; color=&quot;#0000FF&quot;&gt;&lt;g class=&quot;ltx_svg_fog&quot; transform=&quot;matrix(1 0 0 -1 0 12.45)&quot;&gt;&lt;switch&gt;&lt;foreignObject color=&quot;#0000FF&quot; height=&quot;100%&quot; overflow=&quot;visible&quot; width=&quot;16.19&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;S0.F1.pic1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;e_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;e_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;&lt;/foreignObject&gt;&lt;/switch&gt;&lt;/g&gt;&lt;/g&gt;&lt;path d=&quot;M 0.64 -177.17 L 118.11 -177.17 L 235.58 -177.17&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;g transform=&quot;matrix(-1 0 0 -1 0.64 -177.17)&quot; color=&quot;#0000FF&quot;&gt;&lt;path d=&quot;M -1.66 2.21 C -1.52 1.38 0 0.14 0.42 0 C 0 -0.14 -1.52 -1.38 -1.66 -2.21&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g transform=&quot;matrix(1 0 0 1 235.58 -177.17)&quot; color=&quot;#0000FF&quot;&gt;&lt;path d=&quot;M -1.66 2.21 C -1.52 1.38 0 0.14 0.42 0 C 0 -0.14 -1.52 -1.38 -1.66 -2.21&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g transform=&quot;matrix(1 0 0 1 110.02 -191.74)&quot; color=&quot;#0000FF&quot;&gt;&lt;g class=&quot;ltx_svg_fog&quot; transform=&quot;matrix(1 0 0 -1 0 12.45)&quot;&gt;&lt;switch&gt;&lt;foreignObject color=&quot;#0000FF&quot; height=&quot;100%&quot; overflow=&quot;visible&quot; width=&quot;16.19&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;S0.F1.pic1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;&lt;/foreignObject&gt;&lt;/switch&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g stroke=&quot;#FF0000&quot;&gt;&lt;g fill=&quot;#FF0000&quot;&gt;&lt;g stroke=&quot;#FFE6E6&quot; color=&quot;#FF0000&quot;&gt;&lt;g fill=&quot;#FFE6E6&quot;&gt;&lt;path d=&quot;M 265.75 29.53 L 383.86 29.53 L 383.86 -88.58 L 265.75 -88.58 Z M 206.69 -26.57 L 265.75 -26.57 L 265.75 -32.48 L 206.69 -32.48 Z M 383.86 -26.57 L 442.91 -26.57 L 442.91 -32.48 L 383.86 -32.48 Z&quot; style=&quot;stroke:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;path d=&quot;M 324.8 -29.53&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;g transform=&quot;matrix(1 0 0 1 310.9 -32.24)&quot; color=&quot;#FF0000&quot;&gt;&lt;g class=&quot;ltx_svg_fog&quot; transform=&quot;matrix(1 0 0 -1 0 12.45)&quot;&gt;&lt;switch&gt;&lt;foreignObject color=&quot;#FF0000&quot; height=&quot;100%&quot; overflow=&quot;visible&quot; width=&quot;27.81&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;S0.F1.pic1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;g_{i+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;g_{i+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;&lt;/foreignObject&gt;&lt;/switch&gt;&lt;/g&gt;&lt;/g&gt;&lt;path d=&quot;M 207.33 -118.11 L 236.22 -118.11 L 265.11 -118.11&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;g transform=&quot;matrix(-1 0 0 -1 207.33 -118.11)&quot; color=&quot;#FF0000&quot;&gt;&lt;path d=&quot;M -1.66 2.21 C -1.52 1.38 0 0.14 0.42 0 C 0 -0.14 -1.52 -1.38 -1.66 -2.21&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g transform=&quot;matrix(1 0 0 1 265.11 -118.11)&quot; color=&quot;#FF0000&quot;&gt;&lt;path d=&quot;M -1.66 2.21 C -1.52 1.38 0 0.14 0.42 0 C 0 -0.14 -1.52 -1.38 -1.66 -2.21&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g transform=&quot;matrix(1 0 0 1 222.31 -132.68)&quot; color=&quot;#FF0000&quot;&gt;&lt;g class=&quot;ltx_svg_fog&quot; transform=&quot;matrix(1 0 0 -1 0 12.45)&quot;&gt;&lt;switch&gt;&lt;foreignObject color=&quot;#FF0000&quot; height=&quot;100%&quot; overflow=&quot;visible&quot; width=&quot;27.81&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;S0.F1.pic1.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;s_{i+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;s_{i+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;&lt;/foreignObject&gt;&lt;/switch&gt;&lt;/g&gt;&lt;/g&gt;&lt;path d=&quot;M 384.49 -118.11 L 413.39 -118.11 L 442.28 -118.11&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;g transform=&quot;matrix(-1 0 0 -1 384.49 -118.11)&quot; color=&quot;#FF0000&quot;&gt;&lt;path d=&quot;M -1.66 2.21 C -1.52 1.38 0 0.14 0.42 0 C 0 -0.14 -1.52 -1.38 -1.66 -2.21&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g transform=&quot;matrix(1 0 0 1 442.28 -118.11)&quot; color=&quot;#FF0000&quot;&gt;&lt;path d=&quot;M -1.66 2.21 C -1.52 1.38 0 0.14 0.42 0 C 0 -0.14 -1.52 -1.38 -1.66 -2.21&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g transform=&quot;matrix(1 0 0 1 399.48 -132.68)&quot; color=&quot;#FF0000&quot;&gt;&lt;g class=&quot;ltx_svg_fog&quot; transform=&quot;matrix(1 0 0 -1 0 12.45)&quot;&gt;&lt;switch&gt;&lt;foreignObject color=&quot;#FF0000&quot; height=&quot;100%&quot; overflow=&quot;visible&quot; width=&quot;27.81&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;S0.F1.pic1.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;e_{i+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;e_{i+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;&lt;/foreignObject&gt;&lt;/switch&gt;&lt;/g&gt;&lt;/g&gt;&lt;path d=&quot;M 207.33 -206.69 L 324.8 -206.69 L 442.28 -206.69&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;g transform=&quot;matrix(-1 0 0 -1 207.33 -206.69)&quot; color=&quot;#FF0000&quot;&gt;&lt;path d=&quot;M -1.66 2.21 C -1.52 1.38 0 0.14 0.42 0 C 0 -0.14 -1.52 -1.38 -1.66 -2.21&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g transform=&quot;matrix(1 0 0 1 442.28 -206.69)&quot; color=&quot;#FF0000&quot;&gt;&lt;path d=&quot;M -1.66 2.21 C -1.52 1.38 0 0.14 0.42 0 C 0 -0.14 -1.52 -1.38 -1.66 -2.21&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g transform=&quot;matrix(1 0 0 1 310.9 -221.27)&quot; color=&quot;#FF0000&quot;&gt;&lt;g class=&quot;ltx_svg_fog&quot; transform=&quot;matrix(1 0 0 -1 0 12.45)&quot;&gt;&lt;switch&gt;&lt;foreignObject color=&quot;#FF0000&quot; height=&quot;100%&quot; overflow=&quot;visible&quot; width=&quot;27.81&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;S0.F1.pic1.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{i+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{i+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;&lt;/foreignObject&gt;&lt;/switch&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;path d=&quot;M 207.33 -14.76 L 221.46 -14.76 L 235.58 -14.76&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;g transform=&quot;matrix(-1 0 0 -1 207.33 -14.76)&quot;&gt;&lt;path d=&quot;M -1.66 2.21 C -1.52 1.38 0 0.14 0.42 0 C 0 -0.14 -1.52 -1.38 -1.66 -2.21&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g transform=&quot;matrix(1 0 0 1 235.58 -14.76)&quot;&gt;&lt;path d=&quot;M -1.66 2.21 C -1.52 1.38 0 0.14 0.42 0 C 0 -0.14 -1.52 -1.38 -1.66 -2.21&quot; style=&quot;fill:none&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g transform=&quot;matrix(1 0 0 1 201.74 -29.34)&quot;&gt;&lt;g class=&quot;ltx_svg_fog&quot; transform=&quot;matrix(1 0 0 -1 0 12.45)&quot;&gt;&lt;switch&gt;&lt;foreignObject color=&quot;#000000&quot; height=&quot;100%&quot; overflow=&quot;visible&quot; width=&quot;39.43&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;S0.F1.pic1.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;o_{i,i+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o_{i,i+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;&lt;/foreignObject&gt;&lt;/switch&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;
&lt;figcaption class=&quot;ltx_caption ltx_centering&quot;&gt;&lt;span class=&quot;ltx_tag ltx_tag_figure&quot;&gt;Figure 1: &lt;/span&gt;Two adjacent glyphs in an assembly&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;div id=&quot;p8&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;To ensure that the width/height is distributed equally and the symmetry of the
shape is preserved, the MATH table specification suggests the following iterative
algorithm to determine the number of extenders and the connector overlaps
to reach a minimal target size &lt;math id=&quot;p8.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;t&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;t&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p9&quot; class=&quot;ltx_para&quot;&gt;
&lt;ol id=&quot;I4&quot; class=&quot;ltx_enumerate&quot;&gt;
&lt;li id=&quot;I4.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;1.&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I4.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Assemble all parts by overlapping connectors by maximum amount, and
removing all extenders. This gives the smallest possible result.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I4.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;2.&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I4.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Determine how much extra width/height can be distributed into all
connections between neighboring parts. If that is enough to achieve the size
goal, extend each connection equally by changing overlaps of connectors to
finish the job.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I4.i3&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;3.&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I4.i3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;If all connections have been extended to minimum overlap and further
growth is needed, add one of each extender, and repeat the process from the
first step.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div id=&quot;p10&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We note that at each step, each extender is repeated the same number of times
&lt;math id=&quot;p10.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;r\geq 0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r\geq 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So if &lt;math id=&quot;p10.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{\mathrm{Ext}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{\mathrm{Ext}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (respectively &lt;math id=&quot;p10.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{\mathrm{NonExt}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{\mathrm{NonExt}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) is the set of
indices &lt;math id=&quot;p10.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;0\leq i\leq n-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0\leq i\leq n-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p10.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;g_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;g_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an extender
(respectively is not
an extender) we have &lt;math id=&quot;p10.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;r_{i}=r&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r_{i}=r&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (respectively &lt;math id=&quot;p10.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;r_{i}=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r_{i}=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;). The size we can reach
at step &lt;math id=&quot;p10.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;r&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is at most the one obtained with the minimal connector overlap
&lt;math id=&quot;p10.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;o_{\mathrm{min}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o_{\mathrm{min}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; that is
&lt;/p&gt;
&lt;table id=&quot;S0.Ex2&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex2.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\sum_{i=0}^{N-1}\left(\sum_{j=1}^{r_{i}}{a_{i}-o_{\mathrm{min}}}\right)+o_{
\mathrm{min}}=\left(\sum_{i\in I_{\mathrm{NonExt}}}{a_{i}-o_{\mathrm{min}}}
\right)+\left(\sum_{i\in I_{\mathrm{Ext}}}r{(a_{i}-o_{\mathrm{min}})}\right)+o%
_{\mathrm{min}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;munderover&gt;&lt;mo largeop=&quot;true&quot; movablelimits=&quot;false&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/munderover&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;munderover&gt;&lt;mo largeop=&quot;true&quot; movablelimits=&quot;false&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/munderover&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;munder&gt;&lt;mo largeop=&quot;true&quot; movablelimits=&quot;false&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;munder&gt;&lt;mo largeop=&quot;true&quot; movablelimits=&quot;false&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sum_{i=0}^{N-1}\left(\sum_{j=1}^{r_{i}}{a_{i}-o_{\mathrm{min}}}\right)+o_{
\mathrm{min}}=\left(\sum_{i\in I_{\mathrm{NonExt}}}{a_{i}-o_{\mathrm{min}}}
\right)+\left(\sum_{i\in I_{\mathrm{Ext}}}r{(a_{i}-o_{\mathrm{min}})}\right)+o%
_{\mathrm{min}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p11&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We let &lt;math id=&quot;p11.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;N_{\mathrm{Ext}}={|I_{\mathrm{Ext}}|}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N_{\mathrm{Ext}}={|I_{\mathrm{Ext}}|}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p11.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;N_{\mathrm{NonExt}}={|I_{\mathrm{NonExt}}|}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N_{\mathrm{NonExt}}={|I_{\mathrm{NonExt}}|}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be the number of extenders and
non-extenders. We also let
&lt;math id=&quot;p11.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;S_{\mathrm{Ext}}=\sum_{i\in I_{\mathrm{Ext}}}a_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S_{\mathrm{Ext}}=\sum_{i\in I_{\mathrm{Ext}}}a_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p11.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;S_{\mathrm{NonExt}}=\sum_{i\in I_{\mathrm{NonExt}}}a_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S_{\mathrm{NonExt}}=\sum_{i\in I_{\mathrm{NonExt}}}a_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be the sum of advances
for extenders and non-extenders. If we want the advance of the glyph assembly
to reach the minimal size &lt;math id=&quot;p11.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;t&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;t&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then
&lt;/p&gt;
&lt;table id=&quot;S0.Ex3&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex3.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{S_{\mathrm{NonExt}}-o_{\mathrm{min}}\left(N_{\mathrm{NonExt}}-1\right)}+{r%
\left(S_{\mathrm{Ext}}-o_{\mathrm{min}}N_{\mathrm{Ext}}\right)}\geq t&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{S_{\mathrm{NonExt}}-o_{\mathrm{min}}\left(N_{\mathrm{NonExt}}-1\right)}+{r%
\left(S_{\mathrm{Ext}}-o_{\mathrm{min}}N_{\mathrm{Ext}}\right)}\geq t&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p12&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We can assume &lt;math id=&quot;p12.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;S_{\mathrm{Ext}}-o_{\mathrm{min}}N_{\mathrm{Ext}}&amp;gt;0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S_{\mathrm{Ext}}-o_{\mathrm{min}}N_{\mathrm{Ext}}&amp;gt;0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or otherwise we
would have the extreme case where the overlap takes at least the full
advance of each extender. Then we obtain
&lt;/p&gt;
&lt;table id=&quot;S0.Ex4&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex4.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;r\geq r_{\mathrm{min}}=\max\left(0,\left\lceil\frac{t-{S_{\mathrm{NonExt}}+o_{
\mathrm{min}}\left(N_{\mathrm{NonExt}}-1\right)}}{S_{\mathrm{Ext}}-o_{\mathrm{
min}}N_{\mathrm{Ext}}}\right\rceil\right)&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;⌈&lt;/mo&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;mo&gt;⌉&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r\geq r_{\mathrm{min}}=\max\left(0,\left\lceil\frac{t-{S_{\mathrm{NonExt}}+o_{
\mathrm{min}}\left(N_{\mathrm{NonExt}}-1\right)}}{S_{\mathrm{Ext}}-o_{\mathrm{
min}}N_{\mathrm{Ext}}}\right\rceil\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p13&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;This provides a first simplification of the algorithm sketched in the
MATH table specification:
Directly start iteration at step &lt;math id=&quot;p13.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;r_{\mathrm{min}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r_{\mathrm{min}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Note that at each step we
start at &lt;em class=&quot;ltx_emph&quot;&gt;possibly different&lt;/em&gt; maximum overlaps and decrease all of them
by a same value. It is not clear what to do when one of the overlap reaches
&lt;math id=&quot;p13.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;o_{\mathrm{min}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o_{\mathrm{min}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; while others can still be decreased. However, the sketched
algorithm says all the connectors should reach minimum overlap before
the next increment of &lt;math id=&quot;p13.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;r&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
which means the target size will indeed be reached at step &lt;math id=&quot;p13.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;r_{\mathrm{min}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r_{\mathrm{min}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p14&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;One possible interpretation is to stop overlap decreasing for the adjacent
connectors that reached minimum overlap
and to continue uniform decreasing for the others until
all the connectors reach minimum overlap. In that case we may lose equal
distribution or symmetry. In practice, this should probably not matter much.
So we propose instead the dual option which should behave more or less the
same in most cases: Start with all overlaps set to &lt;math id=&quot;p14.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;o_{\mathrm{min}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o_{\mathrm{min}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and increase
them evenly to reach a same value &lt;math id=&quot;p14.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;o&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. By the same reasoning as above we want
the inequality
&lt;/p&gt;
&lt;table id=&quot;S0.Ex5&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex5.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{S_{\mathrm{NonExt}}-o\left(N_{\mathrm{NonExt}}-1\right)}+{r_{\mathrm{min}}
\left(S_{\mathrm{Ext}}-oN_{\mathrm{Ext}}\right)}\geq t&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{S_{\mathrm{NonExt}}-o\left(N_{\mathrm{NonExt}}-1\right)}+{r_{\mathrm{min}}
\left(S_{\mathrm{Ext}}-oN_{\mathrm{Ext}}\right)}\geq t&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;which can be rewritten
&lt;/p&gt;
&lt;table id=&quot;S0.Ex6&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex6.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;S_{\mathrm{NonExt}}+r_{\mathrm{min}}S_{\mathrm{Ext}}-{o\left(N_{\mathrm{NonExt%
}}+{r_{\mathrm{min}}N_{\mathrm{Ext}}}-1\right)}\geq t&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S_{\mathrm{NonExt}}+r_{\mathrm{min}}S_{\mathrm{Ext}}-{o\left(N_{\mathrm{NonExt%
}}+{r_{\mathrm{min}}N_{\mathrm{Ext}}}-1\right)}\geq t&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p15&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We note that &lt;math id=&quot;p15.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;N=N_{\mathrm{NonExt}}+{r_{\mathrm{min}}N_{\mathrm{Ext}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N=N_{\mathrm{NonExt}}+{r_{\mathrm{min}}N_{\mathrm{Ext}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is just the exact
number of glyphs used in the assembly. If there is only a single glyph, then the
overlap value is irrelevant so we can assume
&lt;math id=&quot;p15.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;N_{\mathrm{NonExt}}+{rN_{\mathrm{Ext}}}-1=N-1\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N_{\mathrm{NonExt}}+{rN_{\mathrm{Ext}}}-1=N-1\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This provides the
greatest theorical value for the overlap &lt;math id=&quot;p15.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;o&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:
&lt;/p&gt;
&lt;table id=&quot;S0.Ex7&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex7.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;o_{\mathrm{min}}\leq o\leq o_{\mathrm{max}}^{\mathrm{theorical}}=\frac{S_{
\mathrm{NonExt}}+r_{\mathrm{min}}S_{\mathrm{Ext}}-t}{N_{\mathrm{NonExt}}+{r_{
\mathrm{min}}N_{\mathrm{Ext}}}-1}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mi&gt;theorical&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o_{\mathrm{min}}\leq o\leq o_{\mathrm{max}}^{\mathrm{theorical}}=\frac{S_{
\mathrm{NonExt}}+r_{\mathrm{min}}S_{\mathrm{Ext}}-t}{N_{\mathrm{NonExt}}+{r_{
\mathrm{min}}N_{\mathrm{Ext}}}-1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p16&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Of course, we also have to take into account the limit imposed by the start and
end connector lengths. So &lt;math id=&quot;p16.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;o_{\mathrm{max}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o_{\mathrm{max}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; must also be at most
&lt;math id=&quot;p16.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\min{(e_{i},s_{i+1})}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\min{(e_{i},s_{i+1})}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for &lt;math id=&quot;p16.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;0\leq i\leq n-2&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0\leq i\leq n-2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. But if &lt;math id=&quot;p16.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;r_{\mathrm{min}}\geq 2&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r_{\mathrm{min}}\geq 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
then extender copies are connected and so &lt;math id=&quot;p16.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;o_{\mathrm{max}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o_{\mathrm{max}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; must also be at most
&lt;math id=&quot;p16.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\min{(e_{i},s_{i})}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\min{(e_{i},s_{i})}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for &lt;math id=&quot;p16.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;i\in I_{\mathrm{Ext}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;i\in I_{\mathrm{Ext}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. To summarize, &lt;math id=&quot;p16.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;o_{\mathrm{max}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o_{\mathrm{max}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is
the minimum of &lt;math id=&quot;p16.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;o_{\mathrm{max}}^{\mathrm{theorical}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mi&gt;theorical&lt;/mi&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o_{\mathrm{max}}^{\mathrm{theorical}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, of &lt;math id=&quot;p16.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;e_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;e_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for &lt;math id=&quot;p16.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;0\leq i\leq n-2&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0\leq i\leq n-2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
of &lt;math id=&quot;p16.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;s_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;s_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; &lt;math id=&quot;p16.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;1\leq i\leq n-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq i\leq n-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and possibly of &lt;math id=&quot;p16.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;e_{0}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;e_{0}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (if &lt;math id=&quot;p16.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;0\in I_{\mathrm{Ext}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0\in I_{\mathrm{Ext}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;)
and of of &lt;math id=&quot;p16.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;s_{n-1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;s_{n-1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (if &lt;math id=&quot;p16.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;{n-1}\in I_{\mathrm{Ext}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{n-1}\in I_{\mathrm{Ext}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p17&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;With the algorithm described above
&lt;math id=&quot;p17.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;N_{\mathrm{Ext}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N_{\mathrm{Ext}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;p17.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;N_{\mathrm{NonExt}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N_{\mathrm{NonExt}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;p17.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;S_{\mathrm{Ext}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S_{\mathrm{Ext}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;p17.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;S_{\mathrm{NonExt}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S_{\mathrm{NonExt}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and &lt;math id=&quot;p17.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;r_{\mathrm{min}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r_{\mathrm{min}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p17.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;o_{\mathrm{max}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o_{\mathrm{max}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can all be obtained using simple loops
on the glyphs &lt;math id=&quot;p17.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;g_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;g_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and so the complexity is &lt;math id=&quot;p17.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;O(n)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O(n)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. In practice &lt;math id=&quot;p17.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is small: For
existing fonts, assemblies are made of at most three non-extenders and two extenders that is
&lt;math id=&quot;p17.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;n\leq 5&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\leq 5&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (incidentally, Gecko and WebKit do not currently support larger values of &lt;math id=&quot;p17.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;).
This means that all the operations described above can be considered to have
constant complexity. This is much better than a naive implementation of the
iterative algorithm sketched in the OpenType MATH table specification which
seems to require at worst
&lt;/p&gt;
&lt;table id=&quot;S0.Ex8&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex8.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\sum_{r=0}^{r_{\mathrm{min}}-1}{N_{\mathrm{NonExt}}+rN_{\mathrm{Ext}}}=N_{
\mathrm{NonExt}}r_{\mathrm{min}}+\frac{r_{\mathrm{min}}\left(r_{\mathrm{min}}-%
1\right)}{2}N_{\mathrm{Ext}}={O(n\times r_{\mathrm{min}}^{2})}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;munderover&gt;&lt;mo largeop=&quot;true&quot; movablelimits=&quot;false&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/munderover&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;NonExt&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;Ext&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sum_{r=0}^{r_{\mathrm{min}}-1}{N_{\mathrm{NonExt}}+rN_{\mathrm{Ext}}}=N_{
\mathrm{NonExt}}r_{\mathrm{min}}+\frac{r_{\mathrm{min}}\left(r_{\mathrm{min}}-%
1\right)}{2}N_{\mathrm{Ext}}={O(n\times r_{\mathrm{min}}^{2})}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;and at least &lt;math id=&quot;p17.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Omega(r_{\mathrm{min}})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Ω&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Omega(r_{\mathrm{min}})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p18&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;One of issue is that the number of extender repetitions &lt;math id=&quot;p18.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;r_{\mathrm{min}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r_{\mathrm{min}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
the number of glyphs in the assembly &lt;math id=&quot;p18.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;N&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can
become arbitrary large since the target size &lt;math id=&quot;p18.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;t&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;t&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can take large values
e.g. if one writes
&lt;span class=&quot;ltx_text ltx_font_typewriter&quot;&gt;\underbrace{\hspace{65535em}}&lt;/span&gt;
in LaTeX. The improvement proposed here does not solve that issue since setting
the coordinates of each glyph in the assembly and painting them
require &lt;math id=&quot;p18.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Theta(N)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Θ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Theta(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; operations as well as
(in the case of HarfBuzz) a glyph buffer of size
&lt;math id=&quot;p18.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;N&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. However, such large stretchy operators do not
happen in real-life mathematical formulas. Hence to avoid possible hangs in
Web engines a solution is to impose a maximum limit &lt;math id=&quot;p18.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;N_{\mathrm{max}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N_{\mathrm{max}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for the
number of glyph in the assembly so that the complexity is limited by the
size of the DOM tree. Currently, the proposal for HarfBuzz is
&lt;math id=&quot;p18.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;N_{\mathrm{max}}=128&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;128&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N_{\mathrm{max}}=128&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This means that if each assembly glyph is 1em large
you won’t be able to draw stretchy operators of size more than 128em, which
sounds a quite reasonable bound.
With the above proposal, &lt;math id=&quot;p18.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;r_{\mathrm{min}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r_{\mathrm{min}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
&lt;math id=&quot;p18.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;N&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be determined very quickly and the cases &lt;math id=&quot;p18.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;N\geq N_{\mathrm{max}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N\geq N_{\mathrm{max}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; rejected, so that we avoid losing time with such edge cases…&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p19&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Finally, because in our proposal we use the same overlap &lt;math id=&quot;p19.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;o&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; everywhere
an alternative for HarfBuzz would be to set the output buffer size to
&lt;math id=&quot;p19.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (i.e. ignore &lt;math id=&quot;p19.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;r-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; copies of each extender and only keep the first one).
This will leave gaps that the client can fix by repeating extenders
as long as &lt;math id=&quot;p19.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;o&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is also provided. Then HarfBuzz math shaping can be done
with a complexity in time and space of just &lt;math id=&quot;p19.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;O(n)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O(n)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and it will be up to the
client to optimize or limit the painting of extenders for large values of &lt;math id=&quot;p19.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;N&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;…&lt;/p&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>MathML at the Web Engines Hackfest 2015</title>
   <link href="https://frederic-wang.fr//2015/12/20/mathml-at-the-web-engines-hackfest-2015/"/>
   <updated>2015-12-20T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2015/12/20/mathml-at-the-web-engines-hackfest-2015</id>
   <content type="html">
&lt;h2 id=&quot;hackfest&quot;&gt;Hackfest&lt;/h2&gt;

&lt;p&gt;Two weeks ago, I travelled to Spain to participate to the second &lt;a href=&quot;http://www.webengineshackfest.org/&quot;&gt;Web Engines
Hackfest&lt;/a&gt; which was sponsored by 
&lt;a href=&quot;http://www.igalia.com/&quot;&gt;Igalia&lt;/a&gt; and &lt;a href=&quot;https://www.collabora.com/&quot;&gt;Collabora&lt;/a&gt;.
Such an event has been organized by Igalia since 2009 and used to be focused on
WebkitGTK+. It is great to see that it has now been extended to any Web engines &amp;amp;
platforms and that a large percentage of non-igalian developers has been
involved this year. If you did not get the opportunity to attend this event
or if you are curious about what happened there, take a look at the
&lt;a href=&quot;https://github.com/Igalia/webengineshackfest/wiki&quot;&gt;wiki page&lt;/a&gt; or
&lt;a href=&quot;https://www.flickr.com/photos/webhackfest/sets/72157660108679713/&quot;&gt;flickr album&lt;/a&gt;.&lt;/p&gt;

&lt;div style=&quot;width: 500px; margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;
&lt;a href=&quot;https://www.flickr.com/photos/webhackfest/23662778162/in/album-72157660108679713/&quot; title=&quot;Last day of the hackfest&quot;&gt;&lt;img src=&quot;https://farm6.staticflickr.com/5659/23662778162_34eff30b58.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;Last day of the hackfest&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;Photo from &lt;a href=&quot;https://www.flickr.com/photos/webhackfest/&quot;&gt;@webengineshackfest&lt;/a&gt; licensed under
&lt;a href=&quot;http://creativecommons.org/licenses/by-sa/2.0/&quot;&gt;
&lt;img alt=&quot;Creative Commons Attribution-ShareAlike&quot; src=&quot;https://i.creativecommons.org/l/by-sa/2.0/80x15.png&quot; style=&quot;border: 0;&quot; /&gt;&lt;/a&gt;&lt;/small&gt;&lt;/div&gt;

&lt;p&gt;I really like this kind of hacking-oriented and participant-driven event where developers can meet face to face, organize themselves in small collaboration
groups to efficiently make progress on a task or give passionate talk about
what they have recently been working on.
The only small bemol I have is that it is still mainly focused on WebKit/Blink
developments. Probably, the lack of Mozilla/Microsoft participants is
probably due to
&lt;a href=&quot;https://wiki.mozilla.org/Coincidental_work_weeks/2014_Portland&quot;&gt;Mozilla Coincidental&lt;/a&gt;
&lt;a href=&quot;https://wiki.mozilla.org/Coincidental_work_weeks/2015_Orlando&quot;&gt;Work Weeks&lt;/a&gt;
happening at the same period and to the proprietary nature of
&lt;a href=&quot;https://blogs.windows.com/msedgedev/tag/edgehtml/&quot;&gt;EdgeHTML&lt;/a&gt;
(although &lt;a href=&quot;https://blogs.windows.com/msedgedev/2015/12/05/open-source-chakra-core/&quot;&gt;this is changing&lt;/a&gt;?). However, I am
confident that Igalia will try and address this issue and I am looking
forward to coming back next year!&lt;/p&gt;

&lt;h2 id=&quot;mathml-developments&quot;&gt;MathML developments&lt;/h2&gt;

&lt;p&gt;This year, Igalia developer &lt;a href=&quot;http://www.igalia.com/nc/igalia-247/igalian/item/alex/&quot;&gt;Alejandro G. Castro&lt;/a&gt; wanted to work with me on WebKit’s MathML layout code and more specifically on his &lt;a href=&quot;https://github.com/alexgcastro/webkit/tree/MathMLLayout&quot;&gt;MathML refactoring branch&lt;/a&gt;. Indeed, as many people (including Google developers) who have tried to work on WebKit’s code in the past, he arrived to the conclusion that the WebKit’s MathML layout code has many design issues that make it a burden for the rest of the layout team and too complex to allow future improvements. I was quite excited about the work he has done with &lt;a href=&quot;http://www.igalia.com/nc/igalia-247/igalian/item/jfernandez/&quot;&gt;Javier Fernández&lt;/a&gt; to try and move to a simple box model closer to what exists in Gecko and thus I actually extended my stay to work one whole week with them. We already submitted 
&lt;a href=&quot;https://lists.webkit.org/pipermail/webkit-dev/2015-December/027840.html&quot;&gt;our proposal to the webkit-dev mailing list&lt;/a&gt; and received positive feedback, so we
will now start merging what is ready.
At the end of the week, we were quite satisfied about the new approach and confident it will facilitate future maintenance and developements :-)&lt;/p&gt;

&lt;div style=&quot;width: 500px; margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;
&lt;a href=&quot;https://www.flickr.com/photos/webhackfest/23403316889/&quot; title=&quot;Main room&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/709/23403316889_a32cffd144.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;Main room&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;Photo from &lt;a href=&quot;https://www.flickr.com/photos/webhackfest/&quot;&gt;@webengineshackfest&lt;/a&gt; licensed under
&lt;a href=&quot;http://creativecommons.org/licenses/by-sa/2.0/&quot;&gt;
&lt;img alt=&quot;Creative Commons Attribution-ShareAlike&quot; src=&quot;https://i.creativecommons.org/l/by-sa/2.0/80x15.png&quot; style=&quot;border: 0;&quot; /&gt;&lt;/a&gt;&lt;/small&gt;&lt;/div&gt;

&lt;p&gt;While reading a &lt;a href=&quot;https://lists.w3.org/Archives/Public/www-math/2015Dec/0000.html&quot;&gt;recent thread on the Math WG mailing list&lt;/a&gt;, I realized that many MathML people have only vague understanding of why Google (or to be more accurate, the 3 or 4 engineers who really spent some time reviewing and testing the WebKit code) considered the implementation to be unsafe and not ready for release. Even worse, 
&lt;a href=&quot;https://kwarc.info/people/mkohlhase&quot;&gt;Michael Kholhase&lt;/a&gt; pointed out that for someone totally ignorant of the technical implementation details, the communication made some years ago around the “flexbox-based approach” gave the impression that it was “the right way” (indeed, it somewhat did improve the initial implementation) and the rationale to change that approach was not obvious. So let’s just try and give a quick overview of the main problems, even if I doubt someone can have good understanding of the situation without diving into the C++ code:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;WebKit’s code to stretch operator was not efficient at all and was limited to
some basic fences buildable via Unicode characters.&lt;/li&gt;
  &lt;li&gt;WebKit’s MathML code violated many layout invariants, making the code unreliable.&lt;/li&gt;
  &lt;li&gt;WebKit’s MathML code relied heavily on the C++ renderer classes for flexboxes
and has to manage too many anonymous renderers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The main security concerns were addressed a long time ago by &lt;a href=&quot;http://www.igalia.com/nc/igalia-247/igalian/item/mrobinson/&quot;&gt;Martin Robinson&lt;/a&gt; and me. Glyph assembly for stretchy operators are now drawn using low-level font painting primitive instead of creating one renderer object for each piece and the preferred width for them no longer depends on vertical metrics (although we still need some work to obtain Gecko’s good operator spacing). Also, during my &lt;a href=&quot;http://www.ulule.com/mathematics-ebooks/&quot;&gt;crowdfunding project&lt;/a&gt;, I implemented partial support for the &lt;a href=&quot;https://www.microsoft.com/typography/otspec/math.htm&quot;&gt;OpenType MATH table&lt;/a&gt; in WebKit and more specifically the MathVariant subtable, which allows to directly use construction of stretchy operators specified by the font designer and not only the few Unicode constructions.&lt;/p&gt;

&lt;p&gt;However, the MathML layout code still modifies the renderer tree to force the presence of anonymous renderers and still applies specific CSS rules to them. It is also spending too much time trying to adapt the parent flexbox renderer class which has at the same time too much features for what is needed for MathML (essentially automatic box alignment) and not enough to get exact placement and measuring needed for high-quality rendering (the TeXBook rules are more complex, taking into account various parameters for box shifts, drops, gaps etc).&lt;/p&gt;

&lt;p&gt;During the hackfest, we started to rewrite a clean implementation of some MathML renderer classes similar to Gecko’s one and based on the &lt;a href=&quot;http://www.mathml-association.org/MathMLinHTML5/&quot;&gt;MathML in HTML5 implementation note&lt;/a&gt;.
The code now becomes very simple and understandable. It can be summarized into four main functions. For instance, to draw a fraction we need:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;computePreferredLogicalWidths&lt;/code&gt; which sets the preferred width of the
fraction during the first layout pass, by considering the widest between numerator and denominator.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;layoutBlock&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;firstLineBaseline&lt;/code&gt; which calculate the final
width/height/ascent of the fraction element and position the numerator and
denominator.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;paint&lt;/code&gt; which draws the fraction bar.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Perhaps, the best example to illustrate how the complexity has been reduced 
is the case of the renderer of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mmultiscripts&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;msub&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;msup&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;msubsup&lt;/code&gt; elements
(attaching an arbitrary number of subscripts and superscripts before or after a
base). In the current WebKit implementation, we have to create three anonymous wrappers
(a first one for the base, a second one for prescripts and a third one for postscripts) and an anonymous wrapper
for each subscript/superscript pair, add alignment styles for these wrappers
and spend a lot of time
maintaining the integrity of the renderer tree when dynamic changes happen.
With the new code, we just need to do arithmetic calculations to position the
base and script boxes. This is somewhat more complex than the fraction example above but still, it remains arithmetic calculations and we can not reduce any further if we wish quality comparable to TeXBook / MATH rules.
We actually take into account many parameters
from the OpenType MATH table to get much better placement of scripts. We were able to fix &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=130325&quot;&gt;bug 130325&lt;/a&gt; in about twenty minutes instead of fighting with a CSS “negative margin” hack on anonymous renderers.&lt;/p&gt;

&lt;h2 id=&quot;mathml-dicussions&quot;&gt;MathML dicussions&lt;/h2&gt;

&lt;p&gt;The first day of the hackfest we also had an interesting “breakout session” to define the tasks to work on during the hackfest. Alejandro briefly presented the status of his refactoring branch and his plan for the hackfest. As said in the previous section, we have been quite successful in following this plan: Although it is not fully complete yet, we expect to merge the current changes soon. &lt;a href=&quot;https://twitter.com/abrax5&quot;&gt;Dominik Röttsches&lt;/a&gt; who works on Blink’s font and layout modules was present at the MathML session and it was a good opportunity to discuss the future of MathML in Chrome. I gave him some references regarding the OpenType MATH table, math fonts and the &lt;a href=&quot;http://www.mathml-association.org/MathMLinHTML5/&quot;&gt;MathML in HTML5 implementation note&lt;/a&gt;. Dominik said he will forward the references to his colleagues working on layout so that we can have deeper technical dicussion about MathML in Blink in the long term. Also, I mentioned &lt;a href=&quot;https://github.com/googlei18n/noto-fonts/issues/330&quot;&gt;noto-fonts issue 330&lt;/a&gt;, which will be important for math rendering in Android and actually does not depend on the MathML issue, so that’s certainly something we could focus on in the short term.&lt;/p&gt;

&lt;div style=&quot;width: 500px; margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;
&lt;a href=&quot;https://www.flickr.com/photos/webhackfest/23144428143/&quot; title=&quot;Álex and Fred during the MathML breakout session&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/775/23144428143_1e0fa79fcc.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;Álex and Fred during the MathML breakout session&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;Photo from &lt;a href=&quot;https://www.flickr.com/photos/webhackfest/&quot;&gt;@webengineshackfest&lt;/a&gt; licensed under
&lt;a href=&quot;http://creativecommons.org/licenses/by-sa/2.0/&quot;&gt;
&lt;img alt=&quot;Creative Commons Attribution-ShareAlike&quot; src=&quot;https://i.creativecommons.org/l/by-sa/2.0/80x15.png&quot; style=&quot;border: 0;&quot; /&gt;&lt;/a&gt;&lt;/small&gt;&lt;/div&gt;

&lt;p&gt;Alejandro also proposed to me to prepare a talk about &lt;a href=&quot;http://www.webengineshackfest.org/slides/mathml-in-web-engines-by-frederic-wang/mathml/&quot;&gt;MathML in Web Engines&lt;/a&gt; and exciting stuff happening with the &lt;a href=&quot;http://mathml-association.org/&quot;&gt;MathML Association&lt;/a&gt;. I thus gave a brief overview of MathML and presented some demos of native support in Gecko. I also explained how we are trying to start a constructive approach to solve miscommunication between users, spec authors and implementers ; and gather technical and financial resources to obtain a proper solution. In a slightly more technical part, I presented Microsoft’s OpenType MATH table and how it can be used for math rendering (and MathML in particular). Finally, I proposed my personal roadmap for MathML in Web engines. Although I do not believe I am a really great speaker, I received positive feedback from attendees. One of the thing I realized is that I do not know anything about the status and plan in EdgeHTML and so overlooked to mention it in my presentation. Its proprietary nature makes hard for external people to contribute to a MathML implementation and the fact that Microsoft is moving away from ActiveX &lt;i&gt;de facto&lt;/i&gt; excludes &lt;a href=&quot;http://www.dessci.com/en/products/mathplayer/&quot;&gt;third-party plugin for good and fast math rendering&lt;/a&gt; in the future. After I went back to Paris, I thus wrote to Microsoft employee &lt;a href=&quot;https://www.christianheilmann.com/&quot;&gt;Christian Heilmann&lt;/a&gt; (previously working for Mozilla), mentioning at least the
&lt;a href=&quot;http://www.mathml-association.org/MathMLinHTML5/&quot;&gt;MathML in HTML5 Implementation Note&lt;/a&gt; and its &lt;a href=&quot;http://tests.mathml-association.org/&quot;&gt;test suite&lt;/a&gt; as a starting point. MathML is currently on the &lt;a href=&quot;https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/filters/top&quot;&gt;first page of the most voted feature requested for Microsoft Edge&lt;/a&gt; and given the new direction taken with Microsoft Edge,
I hope we could start a discussion on MathML in EdgeHTML…&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;This was a great hackfest and I’d like to thank again all the participants and sponsors
for making it possible! As Alejandro wrote to me, “I think we have started a very interesting work regarding MathML and web engines in the future.”. The short term plan is now to land the WebKit MathML refactoring started during the hackfest and to finish the work. I hope people now understand the importance of fonts with an OpenType MATH table for good mathematical rendering and we will continue to encourage browser vendors and font designers to make such fonts wide spread.&lt;/p&gt;

&lt;p&gt;The new approach for WebKit MathML support gives good reason to be optmimistic
in the long term and we hope we will be able to get high-quality rendering.
The fact that the new approach addresses all the issues formulated by Google and that we started a dialogue on math rendering, gives several options for MathML in Blink. It remains to get Microsoft involved in implementing its own OpenType table in EdgeHTML. Overall, I believe that we can now have a very constructive discussion with the individuals/companies who really want native math support, with the Math WG members willing to have their specification implemented in browsers and with the browser vendors who want a math implementation which is good, clean and compatible with the rest of their code base. Hopefully, the &lt;a href=&quot;http://mathml-association.org/&quot;&gt;MathML Association&lt;/a&gt; will be instrumental in achieving that. If everybody get involved,
2016 will definitely be an exciting year for native MathML in Web engines!&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>The canonical well-ordering of α×α (part 2)</title>
   <link href="https://frederic-wang.fr//2015/01/31/canonical-well-ordering-of-alpha-times-alpha-part-2/"/>
   <updated>2015-01-31T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2015/01/31/canonical-well-ordering-of-alpha-times-alpha-part-2</id>
   <content type="html">
&lt;div id=&quot;p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In a my previous blog post, I discussed the canonical well-ordering on
&lt;math id=&quot;p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\times\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\times\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and stated theorem &lt;a href=&quot;#S0.Thmtheorem5&quot; title=&quot;Theorem 0.5. ‣ The canonical well-ordering of ×αα (part 2)&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.5&lt;/span&gt;&lt;/a&gt; below to calculate its
order-type &lt;math id=&quot;p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Subsequent corollaries provided a bound for
&lt;math id=&quot;p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, its fixed points and a proof that infinite cardinals were
among these fixed points (and so that cardinal addition and multiplication
is trivial).
In this second part, I’m going to provide the proof of this theorem.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;First, we note that for all &lt;math id=&quot;p2.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, there is only one order-type for
&lt;math id=&quot;p2.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;n\times n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\times n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, since
the notion of cardinal and ordinal is the same for finite sets.
So indeed
&lt;/p&gt;
&lt;table id=&quot;S0.Ex1&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall n&amp;lt;\omega,\gamma(n)={|n\times n|}=n^{2}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall n&amp;lt;\omega,\gamma(n)={|n\times n|}=n^{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;and taking the limit, we get our first infinite fixed point:&lt;/p&gt;
&lt;table id=&quot;S0.Ex2&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex2.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\omega)=\sup_{n&amp;lt;\omega}{\gamma(n)}=\omega&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;munder&gt;&lt;mo movablelimits=&quot;false&quot;&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\omega)=\sup_{n&amp;lt;\omega}{\gamma(n)}=\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p3&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;For all &lt;math id=&quot;p3.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the ordering on
&lt;math id=&quot;p3.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;{(\alpha+1)}\times{(\alpha+1)}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(\alpha+1)}\times{(\alpha+1)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is as follows: first the
elements of &lt;math id=&quot;p3.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\times\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\times\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; ordered as &lt;math id=&quot;p3.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, followed by
the elements &lt;math id=&quot;p3.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;(\xi,\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(\xi,\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for &lt;math id=&quot;p3.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;0\leq\xi&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0\leq\xi&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, followed by
the elements &lt;math id=&quot;p3.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;(\alpha,\xi)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(\alpha,\xi)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for &lt;math id=&quot;p3.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;0\leq\xi\leq\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0\leq\xi\leq\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence&lt;/p&gt;
&lt;table id=&quot;S0.Ex3&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex3.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall\alpha,{\gamma(\alpha+1)}={\gamma(\alpha)}+\alpha\cdot 2+1&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall\alpha,{\gamma(\alpha+1)}={\gamma(\alpha)}+\alpha\cdot 2+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p4&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;From this, we can try to calculate the next values of &lt;math id=&quot;p4.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; after &lt;math id=&quot;p4.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;
&lt;table id=&quot;S0.Ex4&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex4.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega+1)}=\omega+{\omega\cdot 2}+1={\omega\cdot 3}+1&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega+1)}=\omega+{\omega\cdot 2}+1={\omega\cdot 3}+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;table id=&quot;S0.Ex5&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex5.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega+2)}={\omega\cdot 3+1}+\omega+1+\omega+1+1={\omega\cdot 5}+2&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega+2)}={\omega\cdot 3+1}+\omega+1+\omega+1+1={\omega\cdot 5}+2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The important point is &lt;math id=&quot;p4.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;1+\omega=\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1+\omega=\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; ; in general we will use
several times the property
&lt;math id=&quot;p4.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha+\omega^{\beta}=\omega^{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha+\omega^{\beta}=\omega^{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if &lt;math id=&quot;p4.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\omega^{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\omega^{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
By a simple recurrence (see proposition &lt;a href=&quot;#S0.Thmtheorem1&quot; title=&quot;Proposition 0.1. ‣ The canonical well-ordering of ×αα (part 2)&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.1&lt;/span&gt;&lt;/a&gt;),
we can generalize the expression to arbitrary &lt;math id=&quot;p4.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;
&lt;table id=&quot;S0.Ex6&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex6.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega+n)}=\omega\left(2n+1\right)+n&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega+n)}=\omega\left(2n+1\right)+n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;and so taking the limit&lt;/p&gt;
&lt;table id=&quot;S0.Ex7&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex7.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega\cdot 2)}=\omega^{2}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega\cdot 2)}=\omega^{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;which is a limit ordinal not fixed by &lt;math id=&quot;p4.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
We note another point that will be used later: taking the limit
“eliminates” the smallest terms.
More generally, we can perform the same calculation, starting from any
arbitrary &lt;math id=&quot;p4.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\geq\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\geq\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem1&quot; class=&quot;ltx_theorem ltx_theorem_proposition&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Proposition 0.1&lt;/span&gt;.&lt;/h6&gt;
&lt;div id=&quot;S0.Thmtheorem1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;For any limit ordinal &lt;math id=&quot;S0.Thmtheorem1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;S0.Thmtheorem1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;1\leq n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn mathvariant=&quot;normal&quot;&gt;1&lt;/mn&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we have&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex8&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex8.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha+n)=\gamma(\alpha)+{\alpha\cdot{2n}}+n&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha+n)=\gamma(\alpha)+{\alpha\cdot{2n}}+n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;ltx_proof&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_italic ltx_title_proof&quot;&gt;Proof.&lt;/h6&gt;
&lt;div id=&quot;p5&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;For &lt;math id=&quot;p5.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;n=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; this is the relation for &lt;math id=&quot;p5.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha+1)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha+1)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; explained
above. If the relation is true for &lt;math id=&quot;p5.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then&lt;/p&gt;
&lt;table id=&quot;S0.Ex9&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex9.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha+n+1)=\gamma(\alpha+n)+{\left(\alpha+n\right)\cdot 2}+1&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha+n+1)=\gamma(\alpha+n)+{\left(\alpha+n\right)\cdot 2}+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;table id=&quot;S0.Ex10&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex10.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha+n+1)=\gamma(\alpha)+{\alpha\cdot{2n}}+n+\alpha+n+\alpha+n+1&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha+n+1)=\gamma(\alpha)+{\alpha\cdot{2n}}+n+\alpha+n+\alpha+n+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;and since &lt;math id=&quot;p5.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\geq\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\geq\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we have &lt;math id=&quot;p5.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;n+\alpha=\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n+\alpha=\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so&lt;/p&gt;
&lt;table id=&quot;S0.Ex11&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex11.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha+n+1)=\gamma(\alpha)+{\alpha\cdot{(2n+1)}}+n+1&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha+n+1)=\gamma(\alpha)+{\alpha\cdot{(2n+1)}}+n+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Which shows the result at step &lt;math id=&quot;p5.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;n+1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
∎&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p6&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;As above, we can take the limit and say
&lt;math id=&quot;p6.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\alpha+\omega)}=\sup_{n&amp;lt;\omega}{\gamma(\alpha+n)}=\gamma(\alpha)+%
\alpha\cdot\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\alpha+\omega)}=\sup_{n&amp;lt;\omega}{\gamma(\alpha+n)}=\gamma(\alpha)+%
\alpha\cdot\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which is consistent with
&lt;math id=&quot;p6.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega\cdot 2)}=\omega+\omega^{2}=\omega^{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega\cdot 2)}=\omega+\omega^{2}=\omega^{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. However, if we
consider the Cantor Normal Form
&lt;math id=&quot;p6.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha=\omega^{\beta_{1}}n_{1}+...+\omega^{\beta_{k}}n_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha=\omega^{\beta_{1}}n_{1}+...+\omega^{\beta_{k}}n_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
then for all &lt;math id=&quot;p6.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we have can use the fact that “&lt;math id=&quot;p6.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\beta_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\beta_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; will
eliminate smaller terms on its left” that is
&lt;math id=&quot;p6.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\cdot n=\omega^{\beta_{1}}{(n_{1}n)}+\omega^{\beta_{2}}n_{2}+...+\omega^%
{\beta_{k}}n_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\cdot n=\omega^{\beta_{1}}{(n_{1}n)}+\omega^{\beta_{2}}n_{2}+...+\omega^%
{\beta_{k}}n_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then using the
fact that “taking the limit eliminates the smallest terms” we get
&lt;math id=&quot;p6.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\cdot\omega=\sup_{n&amp;lt;\omega}\alpha\cdot n=\omega^{\beta_{1}+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\cdot\omega=\sup_{n&amp;lt;\omega}\alpha\cdot n=\omega^{\beta_{1}+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So actually, we have a nicer formula where
&lt;math id=&quot;p6.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\cdot\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\cdot\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is put in Cantor Normal Form:&lt;/p&gt;
&lt;table id=&quot;S0.Ex12&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex12.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall\alpha\geq\omega,{\gamma(\alpha+\omega)}=\gamma(\alpha)+\omega^{\log_{%
\omega}(\alpha)+1}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall\alpha\geq\omega,{\gamma(\alpha+\omega)}=\gamma(\alpha)+\omega^{\log_{%
\omega}(\alpha)+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;This can be generalized by the following proposition:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem2&quot; class=&quot;ltx_theorem ltx_theorem_proposition&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Proposition 0.2&lt;/span&gt;.&lt;/h6&gt;
&lt;div id=&quot;S0.Thmtheorem2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;For any &lt;math id=&quot;S0.Thmtheorem2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\geq\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;≥&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\geq\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;S0.Thmtheorem2.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;≥&lt;/mo&gt;&lt;mn mathvariant=&quot;normal&quot;&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;S0.Thmtheorem2.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{\omega}(\alpha)+1\geq\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo mathvariant=&quot;italic&quot;&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;+&lt;/mo&gt;&lt;mn mathvariant=&quot;normal&quot;&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;≥&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{\omega}(\alpha)+1\geq\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we have&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex13&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex13.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\alpha+\omega^{\beta})}=\gamma(\alpha)+\omega^{\log_{\omega}(\alpha)+\beta}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\alpha+\omega^{\beta})}=\gamma(\alpha)+\omega^{\log_{\omega}(\alpha)+\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;ltx_proof&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_italic ltx_title_proof&quot;&gt;Proof.&lt;/h6&gt;
&lt;div id=&quot;p7&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We prove by induction on &lt;math id=&quot;p7.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; that for all such &lt;math id=&quot;p7.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
the expression is true. We just verified &lt;math id=&quot;p7.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and the
limit case is obvious by continuity of &lt;math id=&quot;p7.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and of the sum/exponentiation
in the second variable. For the successor step, if
&lt;math id=&quot;p7.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{\omega}(\alpha)+1\geq\beta+1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{\omega}(\alpha)+1\geq\beta+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then
a fortiori
&lt;math id=&quot;p7.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall 1\leq n&amp;lt;\omega,\log_{\omega}(\alpha+\omega^{\beta}\cdot n)+1\geq\beta+%
1\geq\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall 1\leq n&amp;lt;\omega,\log_{\omega}(\alpha+\omega^{\beta}\cdot n)+1\geq\beta+%
1\geq\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
We can then use the induction hypothesis to prove by induction on
&lt;math id=&quot;p7.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;1\leq n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; that
&lt;math id=&quot;p7.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\alpha+{\omega^{\beta}\cdot n})}=\gamma(\alpha)+\omega^{\log_{\omega}(%
\alpha)+\beta}\cdot n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\alpha+{\omega^{\beta}\cdot n})}=\gamma(\alpha)+\omega^{\log_{\omega}(%
\alpha)+\beta}\cdot n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. For &lt;math id=&quot;p7.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;n=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, this is
just the induction hypothesis of &lt;math id=&quot;p7.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (for the same &lt;math id=&quot;p7.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;!). For the
successor step, we need to use the induction hypothesis of &lt;math id=&quot;p7.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
(for &lt;math id=&quot;p7.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha+\omega^{\beta}\cdot n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha+\omega^{\beta}\cdot n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) which is
&lt;math id=&quot;p7.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\alpha+{\omega^{\beta}\cdot{(n+1)}})}={\gamma(\alpha+{\omega^{\beta}%
\cdot n})}+\omega^{\log_{\omega}(\alpha)+\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\alpha+{\omega^{\beta}\cdot{(n+1)}})}={\gamma(\alpha+{\omega^{\beta}%
\cdot n})}+\omega^{\log_{\omega}(\alpha)+\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Finally,
&lt;math id=&quot;p7.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\alpha+{\omega^{\beta+1}})}={\sup_{1\leq n&amp;lt;\omega}{\gamma(\alpha+{%
\omega^{\beta}\cdot n})}}=\gamma(\alpha)+\omega^{\log_{\omega}(\alpha)+\beta+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\alpha+{\omega^{\beta+1}})}={\sup_{1\leq n&amp;lt;\omega}{\gamma(\alpha+{%
\omega^{\beta}\cdot n})}}=\gamma(\alpha)+\omega^{\log_{\omega}(\alpha)+\beta+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, as wanted.
∎&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p8&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;For all &lt;math id=&quot;p8.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
&lt;math id=&quot;p8.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{\omega}(\omega^{\alpha})+1=\alpha+1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{\omega}(\omega^{\alpha})+1=\alpha+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so the previous
paragraph also gives
&lt;math id=&quot;p8.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\alpha+1})}=\gamma\left(\omega^{\alpha}+\omega^{\alpha+1}%
\right)={\gamma(\omega^{\alpha})}+\omega^{\alpha\cdot 2+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\alpha+1})}=\gamma\left(\omega^{\alpha}+\omega^{\alpha+1}%
\right)={\gamma(\omega^{\alpha})}+\omega^{\alpha\cdot 2+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Then, we find&lt;/p&gt;
&lt;table id=&quot;S0.Ex14&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex14.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\omega^{2})=\omega+\omega^{3}=\omega^{3}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\omega^{2})=\omega+\omega^{3}=\omega^{3}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;table id=&quot;S0.Ex15&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex15.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\omega^{3})=\omega^{3}+\omega^{5}=\omega^{5}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\omega^{3})=\omega^{3}+\omega^{5}=\omega^{5}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;And more generally by induction on &lt;math id=&quot;p8.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we can show that&lt;/p&gt;
&lt;table id=&quot;S0.Ex16&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex16.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\omega^{n+1})=\omega^{2n+1}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\omega^{n+1})=\omega^{2n+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Then we deduce another fixed point&lt;/p&gt;
&lt;table id=&quot;S0.Ex17&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex17.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\omega^{\omega})={\sup_{1\leq n&amp;lt;\omega}\gamma\left({\omega^{n}}\right)}%
=\omega^{\omega}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;munder&gt;&lt;mo movablelimits=&quot;false&quot;&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\omega^{\omega})={\sup_{1\leq n&amp;lt;\omega}\gamma\left({\omega^{n}}\right)}%
=\omega^{\omega}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The following proposition tries to generalize the expression of
&lt;math id=&quot;p8.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\alpha+1})}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\alpha+1})}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem3&quot; class=&quot;ltx_theorem ltx_theorem_proposition&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Proposition 0.3&lt;/span&gt;.&lt;/h6&gt;
&lt;div id=&quot;S0.Thmtheorem3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;For any &lt;math id=&quot;S0.Thmtheorem3.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha,\beta\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;≥&lt;/mo&gt;&lt;mn mathvariant=&quot;normal&quot;&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha,\beta\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
&lt;math id=&quot;S0.Thmtheorem3.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{\omega}(\alpha)&amp;gt;\log_{\omega}(\beta)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo mathvariant=&quot;italic&quot;&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;gt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo mathvariant=&quot;italic&quot;&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{\omega}(\alpha)&amp;gt;\log_{\omega}(\beta)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we have&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex18&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex18.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\alpha+\beta})}={\gamma(\omega^{\alpha})}+\omega^{\alpha\cdot 2%
+\beta}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\alpha+\beta})}={\gamma(\omega^{\alpha})}+\omega^{\alpha\cdot 2%
+\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;ltx_proof&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_italic ltx_title_proof&quot;&gt;Proof.&lt;/h6&gt;
&lt;div id=&quot;p9&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;This is done
by induction on &lt;math id=&quot;p9.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for a fixed &lt;math id=&quot;p9.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We already verified
the case &lt;math id=&quot;p9.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in the previous paragraph and the limit case is obvious
by continuity of &lt;math id=&quot;p9.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and of the sum/exponentiation in the second variable.
For the successor step, we have
&lt;math id=&quot;p9.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\alpha+\beta+1})}={\gamma(\omega^{\alpha+\beta})}+\omega^{{(%
\alpha+\beta)}\cdot 2+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\alpha+\beta+1})}={\gamma(\omega^{\alpha+\beta})}+\omega^{{(%
\alpha+\beta)}\cdot 2+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and by induction
hypothesis, &lt;math id=&quot;p9.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\alpha+\beta})}={\gamma(\omega^{\alpha})}+\omega^{\alpha\cdot 2%
+\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\alpha+\beta})}={\gamma(\omega^{\alpha})}+\omega^{\alpha\cdot 2%
+\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Since &lt;math id=&quot;p9.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{\omega}(\alpha)&amp;gt;\log_{\omega}(\beta+1)=\log_{\omega}(\beta)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{\omega}(\alpha)&amp;gt;\log_{\omega}(\beta+1)=\log_{\omega}(\beta)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we have
&lt;math id=&quot;p9.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;{(\alpha+\beta)}\cdot 2+1=\alpha+\beta+\alpha+\beta+1=\alpha\cdot 2+\beta+1&amp;gt;%
\alpha\cdot 2+\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(\alpha+\beta)}\cdot 2+1=\alpha+\beta+\alpha+\beta+1=\alpha\cdot 2+\beta+1&amp;gt;%
\alpha\cdot 2+\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
&lt;math id=&quot;p9.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\alpha\cdot 2+\beta}+\omega^{\alpha\cdot 2+\beta+1}=\omega^{\alpha%
\cdot 2+\beta+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\alpha\cdot 2+\beta}+\omega^{\alpha\cdot 2+\beta+1}=\omega^{\alpha%
\cdot 2+\beta+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Finally, &lt;math id=&quot;p9.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\alpha+\beta+1})}={\gamma(\omega^{\alpha+\beta})}+\omega^{%
\alpha\cdot 2+\beta+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\alpha+\beta+1})}={\gamma(\omega^{\alpha+\beta})}+\omega^{%
\alpha\cdot 2+\beta+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; as wanted.
∎&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p10&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;For any &lt;math id=&quot;p10.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;1\leq n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and &lt;math id=&quot;p10.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, if &lt;math id=&quot;p10.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;1\leq\beta&amp;lt;\omega^{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq\beta&amp;lt;\omega^{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
then &lt;math id=&quot;p10.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{\omega}(\beta)&amp;lt;\alpha=\log_{\omega}(\omega^{\alpha}\cdot n)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{\omega}(\beta)&amp;lt;\alpha=\log_{\omega}(\omega^{\alpha}\cdot n)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence
proposition &lt;a href=&quot;#S0.Thmtheorem3&quot; title=&quot;Proposition 0.3. ‣ The canonical well-ordering of ×αα (part 2)&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.3&lt;/span&gt;&lt;/a&gt; gives
&lt;math id=&quot;p10.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{{\omega^{\alpha}\cdot n}+\beta})}={\gamma(\omega^{{\omega^{%
\alpha}\cdot n}})}+\omega^{{\omega^{\alpha}\cdot{2n}}+\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{{\omega^{\alpha}\cdot n}+\beta})}={\gamma(\omega^{{\omega^{%
\alpha}\cdot n}})}+\omega^{{\omega^{\alpha}\cdot{2n}}+\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
Then by continuity of &lt;math id=&quot;p10.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and of the sum/exponentiation in the second
variable, we can consider the limit &lt;math id=&quot;p10.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta\rightarrow\omega^{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta\rightarrow\omega^{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to get
&lt;math id=&quot;p10.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{{\omega^{\alpha}\cdot(n+1)}})}={\gamma(\omega^{{\omega^{\alpha%
}\cdot n}})}+\omega^{{\omega^{\alpha}\cdot{(2n+1)}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{{\omega^{\alpha}\cdot(n+1)}})}={\gamma(\omega^{{\omega^{\alpha%
}\cdot n}})}+\omega^{{\omega^{\alpha}\cdot{(2n+1)}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
So continuing our calculation we have&lt;/p&gt;
&lt;table id=&quot;S0.Ex19&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex19.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\omega\cdot 2})}=\omega^{\omega}+\omega^{\omega\cdot 3}=\omega%
^{\omega\cdot 3}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\omega\cdot 2})}=\omega^{\omega}+\omega^{\omega\cdot 3}=\omega%
^{\omega\cdot 3}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;table id=&quot;S0.Ex20&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex20.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\omega\cdot 3})}=\omega^{\omega\cdot 3}+\omega^{\omega\cdot 5}%
=\omega^{\omega\cdot 5}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\omega\cdot 3})}=\omega^{\omega\cdot 3}+\omega^{\omega\cdot 5}%
=\omega^{\omega\cdot 5}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;and taking the limit we find another fixed point&lt;/p&gt;
&lt;table id=&quot;S0.Ex21&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex21.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\omega^{2}})}=\omega^{\omega^{2}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\omega^{2}})}=\omega^{\omega^{2}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;then again&lt;/p&gt;
&lt;table id=&quot;S0.Ex22&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex22.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\omega^{2}\cdot 2})}=\omega^{\omega^{2}}+\omega^{\omega^{2}%
\cdot 3}=\omega^{\omega^{2}\cdot 3}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\omega^{2}\cdot 2})}=\omega^{\omega^{2}}+\omega^{\omega^{2}%
\cdot 3}=\omega^{\omega^{2}\cdot 3}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;table id=&quot;S0.Ex23&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex23.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\omega^{2}\cdot 3})}=\omega^{\omega^{2}\cdot 3}+\omega^{\omega%
^{2}\cdot 5}=\omega^{\omega^{2}\cdot 5}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\omega^{2}\cdot 3})}=\omega^{\omega^{2}\cdot 3}+\omega^{\omega%
^{2}\cdot 5}=\omega^{\omega^{2}\cdot 5}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;and taking the limit we find another fixed point&lt;/p&gt;
&lt;table id=&quot;S0.Ex24&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex24.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\omega^{3}})}=\omega^{\omega^{3}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\omega^{3}})}=\omega^{\omega^{3}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;More generally, we have the following proposition:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem4&quot; class=&quot;ltx_theorem ltx_theorem_proposition&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Proposition 0.4&lt;/span&gt;.&lt;/h6&gt;
&lt;div id=&quot;S0.Thmtheorem4.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;For any ordinal &lt;math id=&quot;S0.Thmtheorem4.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;S0.Thmtheorem4.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;1\leq n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn mathvariant=&quot;normal&quot;&gt;1&lt;/mn&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we have&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex25&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex25.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{{\omega^{\alpha}\cdot n}})}=\omega^{{\omega^{\alpha}\cdot{(2n-%
1)}}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{{\omega^{\alpha}\cdot n}})}=\omega^{{\omega^{\alpha}\cdot{(2n-%
1)}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;ltx_proof&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_italic ltx_title_proof&quot;&gt;Proof.&lt;/h6&gt;
&lt;div id=&quot;p11&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;From the relation &lt;math id=&quot;p11.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{{\omega^{\alpha}\cdot(n+1)}})}={\gamma(\omega^{{\omega^{\alpha%
}\cdot n}})}+\omega^{{\omega^{\alpha}\cdot{(2n+1)}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{{\omega^{\alpha}\cdot(n+1)}})}={\gamma(\omega^{{\omega^{\alpha%
}\cdot n}})}+\omega^{{\omega^{\alpha}\cdot{(2n+1)}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
we deduce by induction on &lt;math id=&quot;p11.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; that&lt;/p&gt;
&lt;table id=&quot;S0.Ex26&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex26.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall n\geq 2,{\gamma(\omega^{{\omega^{\alpha}\cdot n}})}={\gamma(\omega^{{%
\omega^{\alpha}}})}+\omega^{{\omega^{\alpha}\cdot{(2n-1)}}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall n\geq 2,{\gamma(\omega^{{\omega^{\alpha}\cdot n}})}={\gamma(\omega^{{%
\omega^{\alpha}}})}+\omega^{{\omega^{\alpha}\cdot{(2n-1)}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Taking the limit &lt;math id=&quot;p11.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;n\rightarrow\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\rightarrow\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,we obtain&lt;/p&gt;
&lt;table id=&quot;S0.Ex27&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex27.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{{\omega^{\alpha+1}}})}={\gamma(\omega^{{\omega^{\alpha}}})}+%
\omega^{{\omega^{\alpha+1}}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{{\omega^{\alpha+1}}})}={\gamma(\omega^{{\omega^{\alpha}}})}+%
\omega^{{\omega^{\alpha+1}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p12&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We can then show by induction that all the
&lt;math id=&quot;p12.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\omega^{\alpha}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\omega^{\alpha}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are actually fixed points, using the previous
relation at successor step, the continuity of &lt;math id=&quot;p12.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; at limit step
and the fact that &lt;math id=&quot;p12.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\omega)=\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\omega)=\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This means&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p13&quot; class=&quot;ltx_para&quot;&gt;
&lt;table id=&quot;S0.Ex28&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex28.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{{\omega^{\alpha}}})}=\omega^{{\omega^{\alpha}}}=\omega^{{%
\omega^{\alpha}\cdot{(2\times 1-1)}}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{{\omega^{\alpha}}})}=\omega^{{\omega^{\alpha}}}=\omega^{{%
\omega^{\alpha}\cdot{(2\times 1-1)}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p14&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Then for &lt;math id=&quot;p14.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;n\geq 2&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\geq 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we get&lt;/p&gt;
&lt;table id=&quot;S0.Ex29&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex29.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{{\omega^{\alpha}\cdot n}})}={\gamma(\omega^{{\omega^{\alpha}}}%
)}+\omega^{{\omega^{\alpha}\cdot{(2n-1)}}}={\omega^{{\omega^{\alpha}}}}+\omega%
^{{\omega^{\alpha}\cdot{(2n-1)}}}=\omega^{{\omega^{\alpha}\cdot{(2n-1)}}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{{\omega^{\alpha}\cdot n}})}={\gamma(\omega^{{\omega^{\alpha}}}%
)}+\omega^{{\omega^{\alpha}\cdot{(2n-1)}}}={\omega^{{\omega^{\alpha}}}}+\omega%
^{{\omega^{\alpha}\cdot{(2n-1)}}}=\omega^{{\omega^{\alpha}\cdot{(2n-1)}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p15&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;∎&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p16&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Equipped with these four propositions, we have a way to recursively calculate
&lt;math id=&quot;p16.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We are ready to prove the main theorem:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem5&quot; class=&quot;ltx_theorem ltx_theorem_theorem&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Theorem 0.5&lt;/span&gt;.&lt;/h6&gt;
&lt;div id=&quot;S0.Thmtheorem5.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;For all ordinal &lt;math id=&quot;S0.Thmtheorem5.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we denote &lt;math id=&quot;S0.Thmtheorem5.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo mathvariant=&quot;italic&quot;&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the order-type of
the canonical ordering of &lt;math id=&quot;S0.Thmtheorem5.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\times\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;×&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\times\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then &lt;math id=&quot;S0.Thmtheorem5.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be
calculated as follows:&lt;/span&gt;&lt;/p&gt;
&lt;ol id=&quot;I1&quot; class=&quot;ltx_enumerate&quot;&gt;
&lt;li id=&quot;I1.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;1.&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Finite Ordinals:
For any &lt;/span&gt;&lt;math id=&quot;I1.i1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; we have&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex30&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex30.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(n)=n^{2}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(n)=n^{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;2.&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Limit Ordinals:
For any limit ordinal &lt;/span&gt;&lt;math id=&quot;I1.i2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;,&lt;/span&gt;&lt;/p&gt;
&lt;ol id=&quot;I1.I1&quot; class=&quot;ltx_enumerate&quot;&gt;
&lt;li id=&quot;I1.I1.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;(a)&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.I1.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;If &lt;/span&gt;&lt;math id=&quot;I1.I1.i1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha\right)\right)}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha\right)\right)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; does not
divide &lt;/span&gt;&lt;math id=&quot;I1.I1.i1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{\omega}(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{\omega}(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; then&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex31&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex31.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)=\omega^{\log_{\omega}(\alpha)}\cdot\alpha&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)=\omega^{\log_{\omega}(\alpha)}\cdot\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.I1.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;(b)&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.I1.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Otherwise, we write
&lt;/span&gt;&lt;math id=&quot;I1.I1.i2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha={\omega^{\log_{\omega}(\alpha)}n}+\rho&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha={\omega^{\log_{\omega}(\alpha)}n}+\rho&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; for some &lt;/span&gt;&lt;math id=&quot;I1.I1.i2.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;n\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;. If
&lt;/span&gt;&lt;math id=&quot;I1.I1.i2.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;n\geq 2&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\geq 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; then&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex32&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex32.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)=\omega^{\log_{\omega}(\alpha)}\cdot\left({\omega^{\log_{\omega}%
(\alpha)}\cdot{(n-1)}}+\rho\right)&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)=\omega^{\log_{\omega}(\alpha)}\cdot\left({\omega^{\log_{\omega}%
(\alpha)}\cdot{(n-1)}}+\rho\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;(like the first case but we “decrement &lt;/span&gt;&lt;math id=&quot;I1.I1.i2.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; in the second factor”)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.I1.i3&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;(c)&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.I1.i3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Otherwise, &lt;/span&gt;&lt;math id=&quot;I1.I1.i3.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha={\omega^{\log_{\omega}(\alpha)}}+\rho&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha={\omega^{\log_{\omega}(\alpha)}}+\rho&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; and
we write &lt;/span&gt;&lt;math id=&quot;I1.I1.i3.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{\omega}(\alpha)=\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha%
\right)\right)}m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{\omega}(\alpha)=\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha%
\right)\right)}m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;
for some &lt;/span&gt;&lt;math id=&quot;I1.I1.i3.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;m\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;. We have&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex33&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex33.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)=\omega^{\log_{\omega}(\alpha)}\cdot\left(\omega^{\omega^{\log_{%
\omega}\left(\log_{\omega}\left(\alpha\right)\right)}\cdot\left(m-1\right)}+%
\rho\right)&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)=\omega^{\log_{\omega}(\alpha)}\cdot\left(\omega^{\omega^{\log_{%
\omega}\left(\log_{\omega}\left(\alpha\right)\right)}\cdot\left(m-1\right)}+%
\rho\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;(like the first case but we “decrement &lt;/span&gt;&lt;math id=&quot;I1.I1.i3.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; in the second factor”)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i3&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;3.&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Infinite Successor Ordinals:
For any limit ordinal &lt;/span&gt;&lt;math id=&quot;I1.i3.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; and &lt;/span&gt;&lt;math id=&quot;I1.i3.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;1\leq n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; we have&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex34&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex34.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha+n)=\gamma(\alpha)+{\alpha\cdot{2n}}+n&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha+n)=\gamma(\alpha)+{\alpha\cdot{2n}}+n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;where &lt;/span&gt;&lt;math id=&quot;I1.i3.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; is determined as in the previous point.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;ltx_proof&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_italic ltx_title_proof&quot;&gt;Proof.&lt;/h6&gt;
&lt;div id=&quot;p17&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The “Finite Ordinals” has been discussed at the beginning and the
“Infinite Successor Ordinals” is proposition &lt;a href=&quot;#S0.Thmtheorem1&quot; title=&quot;Proposition 0.1. ‣ The canonical well-ordering of ×αα (part 2)&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.1&lt;/span&gt;&lt;/a&gt;.
Now let’s consider the Cantor Normal Form
&lt;math id=&quot;p17.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\beta_{1}}n+...+\omega^{\beta_{k}}n_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\beta_{1}}n+...+\omega^{\beta_{k}}n_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of a limit ordinal
&lt;math id=&quot;p17.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\geq\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\geq\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (so &lt;math id=&quot;p17.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta_{k}\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta_{k}\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p17.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta_{1}=\log_{\omega}(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta_{1}=\log_{\omega}(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;). First,
from proposition &lt;a href=&quot;#S0.Thmtheorem2&quot; title=&quot;Proposition 0.2. ‣ The canonical well-ordering of ×αα (part 2)&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.2&lt;/span&gt;&lt;/a&gt; we can make successively
extract the &lt;math id=&quot;p17.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;n_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; terms &lt;math id=&quot;p17.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\beta_{k}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\beta_{k}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (by left-multiplying them
by &lt;math id=&quot;p17.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\beta_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\beta_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;), then the &lt;math id=&quot;p17.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;n_{k-1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n_{k-1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; terms &lt;math id=&quot;p17.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\beta_{k-1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\beta_{k-1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, …
then the &lt;math id=&quot;p17.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;n_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; terms &lt;math id=&quot;p17.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\beta_{2}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\beta_{2}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and finally
&lt;math id=&quot;p17.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;n-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; terms &lt;math id=&quot;p17.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\beta_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\beta_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We obtain:&lt;/p&gt;
&lt;table id=&quot;S0.Ex35&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex35.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\alpha)}={\gamma(\omega^{\beta_{1}})}+{\omega^{\beta_{1}}\left(\omega^%
{\beta_{1}}{(n-1)}+\omega^{\beta_{2}}n_{2}+\dots+\omega^{\beta_{k}}n_{k}\right)}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\alpha)}={\gamma(\omega^{\beta_{1}})}+{\omega^{\beta_{1}}\left(\omega^%
{\beta_{1}}{(n-1)}+\omega^{\beta_{2}}n_{2}+\dots+\omega^{\beta_{k}}n_{k}\right)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p18&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We now write &lt;math id=&quot;p18.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta_{1}=\omega^{\delta}m+\sigma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta_{1}=\omega^{\delta}m+\sigma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; where
&lt;math id=&quot;p18.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\delta=\log_{\omega}{\beta_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\delta=\log_{\omega}{\beta_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p18.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;m,\sigma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m,\sigma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are the quotient and remainder
of the Euclidean division of &lt;math id=&quot;p18.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by &lt;math id=&quot;p18.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\delta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\delta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We can then use
proposition &lt;a href=&quot;#S0.Thmtheorem3&quot; title=&quot;Proposition 0.3. ‣ The canonical well-ordering of ×αα (part 2)&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.3&lt;/span&gt;&lt;/a&gt; to extract &lt;math id=&quot;p18.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\sigma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sigma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;
&lt;table id=&quot;S0.Ex36&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex36.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\sigma=0\implies{\gamma(\omega^{\beta_{1}})}={\gamma(\omega^{\omega^{\delta}m})}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sigma=0\implies{\gamma(\omega^{\beta_{1}})}={\gamma(\omega^{\omega^{\delta}m})}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;table id=&quot;S0.Ex37&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex37.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\sigma\neq 0\implies{\gamma(\omega^{\beta_{1}})}={\gamma(\omega^{\omega^{%
\delta}m})}+\omega^{\omega^{\delta}\cdot{(2m)}+\sigma}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sigma\neq 0\implies{\gamma(\omega^{\beta_{1}})}={\gamma(\omega^{\omega^{%
\delta}m})}+\omega^{\omega^{\delta}\cdot{(2m)}+\sigma}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p19&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Finally, using proposition &lt;a href=&quot;#S0.Thmtheorem4&quot; title=&quot;Proposition 0.4. ‣ The canonical well-ordering of ×αα (part 2)&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.4&lt;/span&gt;&lt;/a&gt; we obtain&lt;/p&gt;
&lt;table id=&quot;S0.Ex38&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex38.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\omega^{\delta}m})}=\omega^{{\omega^{\delta}\cdot{(2m-1)}}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\omega^{\delta}m})}=\omega^{{\omega^{\delta}\cdot{(2m-1)}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p20&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;p20.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\sigma\neq 0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sigma\neq 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; means that
&lt;math id=&quot;p20.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\delta}=\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha\right)%
\right)}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\delta}=\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha\right)%
\right)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
does not divide
&lt;math id=&quot;p20.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta_{1}={\log_{\omega}(\alpha)}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta_{1}={\log_{\omega}(\alpha)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. In that case,
&lt;math id=&quot;p20.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\omega^{\delta}\cdot{(2m)}+\sigma}&amp;gt;\omega^{{\omega^{\delta}\cdot{(2m-1%
)}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\omega^{\delta}\cdot{(2m)}+\sigma}&amp;gt;\omega^{{\omega^{\delta}\cdot{(2m-1%
)}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and so
&lt;math id=&quot;p20.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\beta_{1}})}=\omega^{\omega^{\delta}\cdot{(2m)}+\sigma}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\beta_{1}})}=\omega^{\omega^{\delta}\cdot{(2m)}+\sigma}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
We note that &lt;math id=&quot;p20.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta_{1}\cdot 2=\omega^{\delta}m+\sigma+\omega^{\delta}m+\sigma=\omega^{%
\delta}{(2m)}+\sigma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta_{1}\cdot 2=\omega^{\delta}m+\sigma+\omega^{\delta}m+\sigma=\omega^{%
\delta}{(2m)}+\sigma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; since the remainder &lt;math id=&quot;p20.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\sigma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sigma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is less than
&lt;math id=&quot;p20.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\delta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\delta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So actually &lt;math id=&quot;p20.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\beta_{1}})}=\omega^{\beta_{1}}\omega^{\beta_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\beta_{1}})}=\omega^{\beta_{1}}\omega^{\beta_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Coming back to the expression
of &lt;math id=&quot;p20.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, this term can be grouped with
&lt;math id=&quot;p20.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\beta_{1}}{(n-1)}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\beta_{1}}{(n-1)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to
recover the Cantor Normal Form of &lt;math id=&quot;p20.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
we finally get &lt;math id=&quot;p20.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)=\omega^{\beta_{1}}\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)=\omega^{\beta_{1}}\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p21&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Otherwise, &lt;math id=&quot;p21.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\sigma=0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sigma=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;p21.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta_{1}=\omega^{\delta}m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta_{1}=\omega^{\delta}m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and&lt;/p&gt;
&lt;table id=&quot;S0.Ex39&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex39.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\beta_{1}})}={\gamma(\omega^{\omega^{\delta}m})}=\omega^{{%
\omega^{\delta}\cdot{(2m-1)}}}={\omega^{\beta_{1}}{\omega^{\omega^{\delta}%
\cdot{(m-1)}}}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\beta_{1}})}={\gamma(\omega^{\omega^{\delta}m})}=\omega^{{%
\omega^{\delta}\cdot{(2m-1)}}}={\omega^{\beta_{1}}{\omega^{\omega^{\delta}%
\cdot{(m-1)}}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p22&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;But then &lt;math id=&quot;p22.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta_{1}=\omega^{\delta}m&amp;gt;{\omega^{\delta}{(m-1)}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta_{1}=\omega^{\delta}m&amp;gt;{\omega^{\delta}{(m-1)}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
&lt;math id=&quot;p22.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\beta_{1}}\omega^{\beta_{1}}&amp;gt;\omega^{\beta_{1}}\omega^{{\omega^{\delta%
}\cdot{(m-1)}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\beta_{1}}\omega^{\beta_{1}}&amp;gt;\omega^{\beta_{1}}\omega^{{\omega^{\delta%
}\cdot{(m-1)}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence if
&lt;math id=&quot;p22.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;n\geq 2&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\geq 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the term
&lt;math id=&quot;p22.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\omega^{\beta_{1}})}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\omega^{\beta_{1}})}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is eliminated in the expression of &lt;math id=&quot;p22.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and it remains&lt;/p&gt;
&lt;table id=&quot;S0.Ex40&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex40.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\alpha)}={\omega^{\beta_{1}}\left(\omega^{\beta_{1}}{(n-1)}+\rho\right)}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\alpha)}={\omega^{\beta_{1}}\left(\omega^{\beta_{1}}{(n-1)}+\rho\right)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;where &lt;math id=&quot;p22.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\rho=\omega^{\beta_{2}}n_{2}+\dots+\omega^{\beta_{k}}n_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\rho=\omega^{\beta_{2}}n_{2}+\dots+\omega^{\beta_{k}}n_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If instead &lt;math id=&quot;p22.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;n=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, then the term
&lt;math id=&quot;p22.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\beta_{1}}{(n-1)}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\beta_{1}}{(n-1)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is zero and it remains&lt;/p&gt;
&lt;table id=&quot;S0.Ex41&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex41.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\alpha)}={\omega^{\beta_{1}}\left(\omega^{{\omega^{\delta}\cdot{(m-1)}%
}}+\omega^{\beta_{2}}n_{2}+\dots+\omega^{\beta_{k}}n_{k}\right)}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\alpha)}={\omega^{\beta_{1}}\left(\omega^{{\omega^{\delta}\cdot{(m-1)}%
}}+\omega^{\beta_{2}}n_{2}+\dots+\omega^{\beta_{k}}n_{k}\right)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p23&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;∎&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>The canonical well-ordering of α×α (part 1)</title>
   <link href="https://frederic-wang.fr//2015/01/30/canonical-well-ordering-of-alpha-times-alpha-part-1/"/>
   <updated>2015-01-30T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2015/01/30/canonical-well-ordering-of-alpha-times-alpha-part-1</id>
   <content type="html">
&lt;div id=&quot;p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;It is well-known that the cartesian product of two infinite sets of cardinality
&lt;math id=&quot;p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\aleph_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\aleph_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is also of cardinality &lt;math id=&quot;p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\aleph_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\aleph_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Equivalently, the set
&lt;math id=&quot;p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega_{\alpha}\times\omega_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega_{\alpha}\times\omega_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be well-ordered in order-type
&lt;math id=&quot;p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. However, the standard ordering on
&lt;math id=&quot;p1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega_{\alpha}\times\omega_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega_{\alpha}\times\omega_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; does
not work, since it is always of order type &lt;math id=&quot;p1.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega_{\alpha}^{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega_{\alpha}^{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Instead, we introduce for each ordinal &lt;math id=&quot;p1.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
the canonical well-ordering of &lt;math id=&quot;p1.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\times\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\times\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; as follows:
&lt;math id=&quot;p1.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;{(\xi_{1},\xi_{2})}\lhd{(\eta_{1},\eta_{2})}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⊲&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;η&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;η&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(\xi_{1},\xi_{2})}\lhd{(\eta_{1},\eta_{2})}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if either
&lt;math id=&quot;p1.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\max{(\xi_{1},\xi_{2})}}&amp;lt;{\max{(\eta_{1},\eta_{2})}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;η&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;η&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\max{(\xi_{1},\xi_{2})}}&amp;lt;{\max{(\eta_{1},\eta_{2})}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or
&lt;math id=&quot;p1.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\max{(\xi_{1},\xi_{2})}}={\max{(\eta_{1},\eta_{2})}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;η&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;η&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\max{(\xi_{1},\xi_{2})}}={\max{(\eta_{1},\eta_{2})}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; but
&lt;math id=&quot;p1.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;(\xi_{1},\xi_{2})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(\xi_{1},\xi_{2})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; precedes &lt;math id=&quot;p1.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;(\eta_{1},\eta_{2})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;η&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;η&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(\eta_{1},\eta_{2})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; lexicographically. If we note
&lt;math id=&quot;p1.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the ordinal isomorphic to that well-ordering ordering,
then we can prove that &lt;math id=&quot;p1.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\omega_{\alpha})=\omega_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\omega_{\alpha})=\omega_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; as wanted
(see Corollary &lt;a href=&quot;#S0.Thmtheorem4&quot; title=&quot;Corollary 0.4. ‣ The canonical well-ordering of ×αα (part 1)&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.4&lt;/span&gt;&lt;/a&gt;).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Jech’s Set Theory
book contains several properties of &lt;math id=&quot;p2.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. For example, &lt;math id=&quot;p2.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
is increasing : for any ordinal &lt;math id=&quot;p2.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
&lt;math id=&quot;p2.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\times\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\times\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a (proper) initial segment of
&lt;math id=&quot;p2.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;{(\alpha+1)}\times{(\alpha+1)}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(\alpha+1)}\times{(\alpha+1)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and of &lt;math id=&quot;p2.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda\times\lambda&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda\times\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
for any limit ordinal &lt;math id=&quot;p2.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda&amp;gt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda&amp;gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. As a consequence,
&lt;math id=&quot;p2.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall\alpha,\alpha\leq\gamma(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall\alpha,\alpha\leq\gamma(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which can also trivially
be seen by the increasing function &lt;math id=&quot;p2.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\xi\mapsto(\xi,0)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mo&gt;↦&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\xi\mapsto(\xi,0)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; from &lt;math id=&quot;p2.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
to &lt;math id=&quot;p2.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\times\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\times\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Also,
&lt;math id=&quot;p2.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall\alpha,\gamma(\alpha)&amp;lt;\gamma(\lambda)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall\alpha,\gamma(\alpha)&amp;lt;\gamma(\lambda)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; implies &lt;math id=&quot;p2.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\sup_{\alpha&amp;lt;\lambda}{\gamma(\alpha)}\leq\gamma(\lambda)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sup_{\alpha&amp;lt;\lambda}{\gamma(\alpha)}\leq\gamma(\lambda)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
This can not be a strict equality,
or otherwise the element &lt;math id=&quot;p2.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;{(\xi,\eta)}\in\lambda\times\lambda&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;η&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(\xi,\eta)}\in\lambda\times\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
corresponding to &lt;math id=&quot;p2.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;\sup_{\alpha&amp;lt;\lambda}{\gamma(\alpha)}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sup_{\alpha&amp;lt;\lambda}{\gamma(\alpha)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; via the
isomorphism between &lt;math id=&quot;p2.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda\times\lambda&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda\times\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p2.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\lambda)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\lambda)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
would be an element larger than all &lt;math id=&quot;p2.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;(\alpha,\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(\alpha,\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for &lt;math id=&quot;p2.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\lambda&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Hence &lt;math id=&quot;p2.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is continuous and by exercise 2.7 of the same
book, &lt;math id=&quot;p2.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has arbitrary large fixed points. Exercise 3.5 shows that
&lt;math id=&quot;p2.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)\leq\omega^{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)\leq\omega^{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p2.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; does not increase
cardinality (see Corollary &lt;a href=&quot;#S0.Thmtheorem2&quot; title=&quot;Corollary 0.2. ‣ The canonical well-ordering of ×αα (part 1)&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.2&lt;/span&gt;&lt;/a&gt; for a much
better upper bound).
Hence starting at any infinite cardinal &lt;math id=&quot;p2.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the construction
of exercise 2.7 provides infinitely many fixed points of &lt;math id=&quot;p2.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; having
cardinality &lt;math id=&quot;p2.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence the infinite fixed points of &lt;math id=&quot;p2.m27&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are not just
cardinals and we can wonder what they are exactly…&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p3&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;I recently tried to solve Exercise I.11.7 of Kunen’s Set Theory book which
suggests a nice characterization of infinite fixed points of &lt;math id=&quot;p3.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:
they are the ordinals of the form &lt;math id=&quot;p3.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\omega^{\alpha}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\omega^{\alpha}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. However, I could not
find a simple proof of this statement so instead I tried to determine the
explicit expression of &lt;math id=&quot;p3.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, from which the result becomes obvious
(see Corollary &lt;a href=&quot;#S0.Thmtheorem3&quot; title=&quot;Corollary 0.3. ‣ The canonical well-ordering of ×αα (part 1)&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.3&lt;/span&gt;&lt;/a&gt;).
My final calculation is summarized in Theorem &lt;a href=&quot;#S0.Thmtheorem1&quot; title=&quot;Theorem 0.1. ‣ The canonical well-ordering of ×αα (part 1)&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.1&lt;/span&gt;&lt;/a&gt;, which provides
a relatively nice expression of &lt;math id=&quot;p3.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Recall that any
&lt;math id=&quot;p3.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be written uniquely as
&lt;math id=&quot;p3.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha=\omega^{\beta}q+\rho&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha=\omega^{\beta}q+\rho&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; where &lt;math id=&quot;p3.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is (following Kunen’s terminology)
the “logarithm in base &lt;math id=&quot;p3.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of &lt;math id=&quot;p3.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;” (that we
will denote &lt;math id=&quot;p3.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{\omega}{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{\omega}{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for &lt;math id=&quot;p3.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\geq\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\geq\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;)
and &lt;math id=&quot;p3.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;q,\rho&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q,\rho&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are the quotient and
remainder of the Euclidean division of &lt;math id=&quot;p3.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by &lt;math id=&quot;p3.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Alternatively,
this can be seen from Cantor’s Normal Form: &lt;math id=&quot;p3.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p3.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;q&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are the exponent
and coefficient of the largest term while &lt;math id=&quot;p3.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;\rho&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\rho&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the sum of terms of smaller
exponents.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem1&quot; class=&quot;ltx_theorem ltx_theorem_theorem&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Theorem 0.1&lt;/span&gt;.&lt;/h6&gt;
&lt;div id=&quot;S0.Thmtheorem1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;For all ordinal &lt;math id=&quot;S0.Thmtheorem1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we denote &lt;math id=&quot;S0.Thmtheorem1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo mathvariant=&quot;italic&quot;&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the order-type of
the canonical ordering of &lt;math id=&quot;S0.Thmtheorem1.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\times\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;×&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\times\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then &lt;math id=&quot;S0.Thmtheorem1.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be
calculated as follows:&lt;/span&gt;&lt;/p&gt;
&lt;ol id=&quot;I1&quot; class=&quot;ltx_enumerate&quot;&gt;
&lt;li id=&quot;I1.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;1.&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Finite Ordinals:
For any &lt;/span&gt;&lt;math id=&quot;I1.i1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; we have&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex1&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(n)=n^{2}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(n)=n^{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;2.&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Limit Ordinals:
For any limit ordinal &lt;/span&gt;&lt;math id=&quot;I1.i2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;,&lt;/span&gt;&lt;/p&gt;
&lt;ol id=&quot;I1.I1&quot; class=&quot;ltx_enumerate&quot;&gt;
&lt;li id=&quot;I1.I1.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;(a)&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.I1.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;If &lt;/span&gt;&lt;math id=&quot;I1.I1.i1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha\right)\right)}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha\right)\right)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; does not
divide &lt;/span&gt;&lt;math id=&quot;I1.I1.i1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{\omega}(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{\omega}(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; then&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex2&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex2.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)=\omega^{\log_{\omega}(\alpha)}\cdot\alpha&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)=\omega^{\log_{\omega}(\alpha)}\cdot\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.I1.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;(b)&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.I1.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Otherwise, we write
&lt;/span&gt;&lt;math id=&quot;I1.I1.i2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha={\omega^{\log_{\omega}(\alpha)}n}+\rho&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha={\omega^{\log_{\omega}(\alpha)}n}+\rho&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; for some &lt;/span&gt;&lt;math id=&quot;I1.I1.i2.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;n\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;. If
&lt;/span&gt;&lt;math id=&quot;I1.I1.i2.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;n\geq 2&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\geq 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; then&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex3&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex3.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)=\omega^{\log_{\omega}(\alpha)}\cdot\left({\omega^{\log_{\omega}%
(\alpha)}\cdot{(n-1)}}+\rho\right)&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)=\omega^{\log_{\omega}(\alpha)}\cdot\left({\omega^{\log_{\omega}%
(\alpha)}\cdot{(n-1)}}+\rho\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;(like the first case but we “decrement &lt;/span&gt;&lt;math id=&quot;I1.I1.i2.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; in the second factor”)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.I1.i3&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;(c)&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.I1.i3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Otherwise, &lt;/span&gt;&lt;math id=&quot;I1.I1.i3.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha={\omega^{\log_{\omega}(\alpha)}}+\rho&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha={\omega^{\log_{\omega}(\alpha)}}+\rho&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; and
we write &lt;/span&gt;&lt;math id=&quot;I1.I1.i3.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{\omega}(\alpha)=\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha%
\right)\right)}m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{\omega}(\alpha)=\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha%
\right)\right)}m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;
for some &lt;/span&gt;&lt;math id=&quot;I1.I1.i3.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;m\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;. We have&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex4&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex4.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)=\omega^{\log_{\omega}(\alpha)}\cdot\left(\omega^{\omega^{\log_{%
\omega}\left(\log_{\omega}\left(\alpha\right)\right)}\cdot\left(m-1\right)}+%
\rho\right)&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)=\omega^{\log_{\omega}(\alpha)}\cdot\left(\omega^{\omega^{\log_{%
\omega}\left(\log_{\omega}\left(\alpha\right)\right)}\cdot\left(m-1\right)}+%
\rho\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;(like the first case but we “decrement &lt;/span&gt;&lt;math id=&quot;I1.I1.i3.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; in the second factor”)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i3&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;3.&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Infinite Successor Ordinals:
For any limit ordinal &lt;/span&gt;&lt;math id=&quot;I1.i3.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; and &lt;/span&gt;&lt;math id=&quot;I1.i3.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;1\leq n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; we have&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex5&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex5.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha+n)=\gamma(\alpha)+{\alpha\cdot{2n}}+n&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha+n)=\gamma(\alpha)+{\alpha\cdot{2n}}+n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;where &lt;/span&gt;&lt;math id=&quot;I1.i3.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; is determined as in the previous point.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;ltx_proof&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_italic ltx_title_proof&quot;&gt;Proof.&lt;/h6&gt;
&lt;div id=&quot;p4&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In a future blog post ;-) ∎&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p5&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;From this theorem, we deduce several corollaries:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem2&quot; class=&quot;ltx_theorem ltx_theorem_corollary&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Corollary 0.2&lt;/span&gt;.&lt;/h6&gt;
&lt;div id=&quot;S0.Thmtheorem2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;For any ordinal &lt;math id=&quot;S0.Thmtheorem2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we have&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem2.p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;table id=&quot;S0.Ex6&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex6.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\leq{\gamma(\alpha)}\leq{{\omega^{\log_{\omega}(\alpha)}\cdot\left({%
\alpha-r}\right)}+{\alpha\cdot{2r}}}\leq\alpha\left(\alpha+r\right)&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\leq{\gamma(\alpha)}\leq{{\omega^{\log_{\omega}(\alpha)}\cdot\left({%
\alpha-r}\right)}+{\alpha\cdot{2r}}}\leq\alpha\left(\alpha+r\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;where &lt;math id=&quot;S0.Thmtheorem2.p2.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;r=\alpha\mod\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo lspace=&quot;2.5pt&quot; mathvariant=&quot;normal&quot; rspace=&quot;2.5pt&quot;&gt;mod&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r=\alpha\mod\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the remainder in the Euclidean division
of &lt;math id=&quot;S0.Thmtheorem2.p2.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by &lt;math id=&quot;S0.Thmtheorem2.p2.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (i.e. the constant term in the Cantor Normal Form).&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;ltx_proof&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_italic ltx_title_proof&quot;&gt;Proof.&lt;/h6&gt;
&lt;div id=&quot;p6&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The “Limit Ordinals” case is &lt;math id=&quot;p6.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;r=0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; i.e. &lt;math id=&quot;p6.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\leq{\gamma(\alpha)}\leq{{\omega^{\log_{\omega}(\alpha)}\cdot\alpha}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\leq{\gamma(\alpha)}\leq{{\omega^{\log_{\omega}(\alpha)}\cdot\alpha}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
which is readily seen by the
previous theorem.
Then we deduce for the “Infinite Successor Ordinals” case:
&lt;math id=&quot;p6.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\gamma(\alpha+n)}=\gamma(\alpha)+{\alpha\cdot{2n}}+n\leq{{\omega^{\log_{%
\omega}(\alpha)}\cdot\alpha}}+{\left(\alpha+n\right)\cdot{2n}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\gamma(\alpha+n)}=\gamma(\alpha)+{\alpha\cdot{2n}}+n\leq{{\omega^{\log_{%
\omega}(\alpha)}\cdot\alpha}}+{\left(\alpha+n\right)\cdot{2n}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
where &lt;math id=&quot;p6.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\log_{\omega}(\alpha+n)}={\log_{\omega}(\alpha)}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\log_{\omega}(\alpha+n)}={\log_{\omega}(\alpha)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p6.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;n=\left(\alpha+n\mod\omega\right)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo lspace=&quot;2.5pt&quot; rspace=&quot;2.5pt&quot;&gt;mod&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n=\left(\alpha+n\mod\omega\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Since &lt;math id=&quot;p6.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\log_{\omega}(\alpha)}\leq\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\log_{\omega}(\alpha)}\leq\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we can write
&lt;math id=&quot;p6.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;{{\omega^{\log_{\omega}(\alpha)}\cdot\left({\alpha-r}\right)}+{\alpha\cdot{2r}%
}}\leq{\alpha\cdot\left(\alpha-r+2r\right)}={\alpha\cdot{(\alpha+r)}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{{\omega^{\log_{\omega}(\alpha)}\cdot\left({\alpha-r}\right)}+{\alpha\cdot{2r}%
}}\leq{\alpha\cdot\left(\alpha-r+2r\right)}={\alpha\cdot{(\alpha+r)}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. ∎&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p7&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Hence the order type of the canonical ordering &lt;math id=&quot;p7.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lhd&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mo&gt;⊲&lt;/mo&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lhd&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of &lt;math id=&quot;p7.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\times\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\times\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
(i.e. &lt;math id=&quot;p7.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)\leq\alpha{(\alpha+\omega)}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)\leq\alpha{(\alpha+\omega)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) is never
significantly bigger than the one of the standard lexical ordering
(i.e. &lt;math id=&quot;p7.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha^{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha^{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;), and even never larger
for limit ordinals. Moreover, for many ordinals &lt;math id=&quot;p7.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
the canonical ordering is of order type &lt;math id=&quot;p7.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:
&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem3&quot; class=&quot;ltx_theorem ltx_theorem_corollary&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Corollary 0.3&lt;/span&gt;.&lt;/h6&gt;
&lt;div id=&quot;S0.Thmtheorem3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;The fixed points of &lt;math id=&quot;S0.Thmtheorem3.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are &lt;math id=&quot;S0.Thmtheorem3.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;0,1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn mathvariant=&quot;normal&quot;&gt;0&lt;/mn&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mn mathvariant=&quot;normal&quot;&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0,1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;S0.Thmtheorem3.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\omega^{\alpha}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\omega^{\alpha}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for
all ordinals &lt;math id=&quot;S0.Thmtheorem3.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;ltx_proof&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_italic ltx_title_proof&quot;&gt;Proof.&lt;/h6&gt;
&lt;div id=&quot;p8&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;For the “Finite Ordinals” case, we have &lt;math id=&quot;p8.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(n)=n^{2}=n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(n)=n^{2}=n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; iff &lt;math id=&quot;p8.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;n=0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or
&lt;math id=&quot;p8.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;n=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. For the “Infinite Successor Ordinals” case, we have
&lt;math id=&quot;p8.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\cdot{2n}&amp;gt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\cdot{2n}&amp;gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if &lt;math id=&quot;p8.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;n\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so &lt;math id=&quot;p8.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha+n)&amp;gt;\alpha+n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha+n)&amp;gt;\alpha+n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Now we look at the three subcases of the “Limit Ordinals” case. For the
first one, we have &lt;math id=&quot;p8.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{\omega}(\alpha)\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{\omega}(\alpha)\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and so &lt;math id=&quot;p8.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\log_{\omega}(\alpha)}\alpha\geq\omega\alpha&amp;gt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\log_{\omega}(\alpha)}\alpha\geq\omega\alpha&amp;gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
For the second one, we note that
&lt;math id=&quot;p8.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\log_{\omega}(\alpha)}2&amp;gt;\log_{\omega}(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\log_{\omega}(\alpha)}2&amp;gt;\log_{\omega}(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
&lt;math id=&quot;p8.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{{\log_{\omega}(\alpha)}2}&amp;gt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{{\log_{\omega}(\alpha)}2}&amp;gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (compare the Cantor Normal Form).
Since &lt;math id=&quot;p8.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;n-1\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n-1\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by assumption, we have &lt;math id=&quot;p8.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)&amp;gt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)&amp;gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Similarly in the third case, if we expand the parenthesis the first term
is &lt;math id=&quot;p8.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; raised to the power
&lt;math id=&quot;p8.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha\right)\right)}\cdot\left%
(2m-1\right)}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha\right)\right)}\cdot\left%
(2m-1\right)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which is stricly greater than
&lt;math id=&quot;p8.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{\omega}(\alpha)=\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha%
\right)\right)}m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{\omega}(\alpha)=\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha%
\right)\right)}m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if &lt;math id=&quot;p8.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;m\geq 2&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m\geq 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Now if &lt;math id=&quot;p8.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;m=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we obtain &lt;math id=&quot;p8.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)={\omega^{\log_{\omega}(\alpha)}+{\omega^{\log_{\omega}(\alpha)}%
\rho}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)={\omega^{\log_{\omega}(\alpha)}+{\omega^{\log_{\omega}(\alpha)}%
\rho}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p8.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha={\omega^{\log_{\omega}(\alpha)}}+\rho&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha={\omega^{\log_{\omega}(\alpha)}}+\rho&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence &lt;math id=&quot;p8.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)&amp;gt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)&amp;gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if
&lt;math id=&quot;p8.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;\rho&amp;gt;0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\rho&amp;gt;0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p8.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)=\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)=\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if &lt;math id=&quot;p8.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;\rho=0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\rho=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Finally for &lt;math id=&quot;p8.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\geq\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\geq\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;p8.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma(\alpha)=\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma(\alpha)=\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; iff
&lt;math id=&quot;p8.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha=\omega^{\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha\right)%
\right)}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha=\omega^{\omega^{\log_{\omega}\left(\log_{\omega}\left(\alpha\right)%
\right)}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; iff
&lt;math id=&quot;p8.m27&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha=\omega^{\omega^{\beta}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha=\omega^{\omega^{\beta}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for some ordinal &lt;math id=&quot;p8.m28&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. ∎&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p9&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Finally, now that we know that infinite fixed points of &lt;math id=&quot;p9.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are of the
form &lt;math id=&quot;p9.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha=\omega^{\omega^{\beta}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha=\omega^{\omega^{\beta}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we only need to verify that infinite
cardinals &lt;math id=&quot;p9.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are of this form to prove that
&lt;math id=&quot;p9.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;{|\kappa\times\kappa|}=\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{|\kappa\times\kappa|}=\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This provides an alternative
(less straightforward) proof of Theorem 3.5 from Jech’s Set Theory book.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem4&quot; class=&quot;ltx_theorem ltx_theorem_corollary&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Corollary 0.4&lt;/span&gt;.&lt;/h6&gt;
&lt;div id=&quot;S0.Thmtheorem4.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Any infinite cardinal &lt;math id=&quot;S0.Thmtheorem4.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a fixed point of &lt;math id=&quot;S0.Thmtheorem4.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Hence for any infinite cardinal &lt;math id=&quot;S0.Thmtheorem4.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa_{1},\kappa_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mn mathvariant=&quot;normal&quot;&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mn mathvariant=&quot;normal&quot;&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa_{1},\kappa_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we have&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex7&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex7.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa_{1}+\kappa_{2}=\kappa_{1}\kappa_{2}={\max(\kappa_{1},\kappa_{2})}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa_{1}+\kappa_{2}=\kappa_{1}\kappa_{2}={\max(\kappa_{1},\kappa_{2})}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;ltx_proof&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_italic ltx_title_proof&quot;&gt;Proof.&lt;/h6&gt;
&lt;div id=&quot;p10&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;For any cardinal infinite cardinal &lt;math id=&quot;p10.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; that is a fixed point of &lt;math id=&quot;p10.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
the canonical well-ordering provides a bijection between &lt;math id=&quot;p10.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p10.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu\times\mu&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu\times\mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; i.e. &lt;math id=&quot;p10.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu^{2}=\mu&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu^{2}=\mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Hence if &lt;math id=&quot;p10.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu_{1}\leq\mu_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu_{1}\leq\mu_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are two fixed points, we have&lt;/p&gt;
&lt;table id=&quot;S0.Ex8&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex8.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu_{2}\leq{\mu_{1}+\mu_{2}}\leq{\mu_{1}\mu_{2}}\leq\mu_{2}^{2}=\mu_{2}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msubsup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu_{2}\leq{\mu_{1}+\mu_{2}}\leq{\mu_{1}\mu_{2}}\leq\mu_{2}^{2}=\mu_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p11&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Suppose that there is a cardinal &lt;math id=&quot;p11.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which is not a fixed point of
&lt;math id=&quot;p11.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and consider the smallest one.
Then any infinite cardinal below &lt;math id=&quot;p11.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a fixed point of &lt;math id=&quot;p11.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and the previous equality is still true below &lt;math id=&quot;p11.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p12&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Suppose &lt;math id=&quot;p12.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa&amp;gt;\omega^{\log_{\omega}{\kappa}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa&amp;gt;\omega^{\log_{\omega}{\kappa}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
write &lt;math id=&quot;p12.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa=\omega^{\log_{\omega}{\kappa}}+\rho&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa=\omega^{\log_{\omega}{\kappa}}+\rho&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; where &lt;math id=&quot;p12.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\rho&amp;lt;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\rho&amp;lt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
corresponds to the remaining terms in Cantor Normal Form. Then
&lt;math id=&quot;p12.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\aleph_{0}\leq\mu_{1}=\left|\omega^{\log_{\omega}{\kappa}}\right|&amp;lt;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\aleph_{0}\leq\mu_{1}=\left|\omega^{\log_{\omega}{\kappa}}\right|&amp;lt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
&lt;math id=&quot;p12.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu_{2}={|\rho|}&amp;lt;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu_{2}={|\rho|}&amp;lt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p12.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu_{1}+\mu_{2}=\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu_{1}+\mu_{2}=\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. But the two first
relations imply
&lt;math id=&quot;p12.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu_{1}+\mu_{2}=\max(\mu_{1},\mu_{2})&amp;lt;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu_{1}+\mu_{2}=\max(\mu_{1},\mu_{2})&amp;lt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which contradicts the third one.
Hence &lt;math id=&quot;p12.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa=\omega^{\log_{\omega}{\kappa}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa=\omega^{\log_{\omega}{\kappa}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p13&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Now suppose
&lt;math id=&quot;p13.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{\omega}{\kappa}&amp;gt;\omega^{\log_{\omega}{\log_{\omega}{\kappa}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{\omega}{\kappa}&amp;gt;\omega^{\log_{\omega}{\log_{\omega}{\kappa}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and write
&lt;math id=&quot;p13.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{\omega}{\kappa}=\omega^{\log_{\omega}{\kappa}}+\rho&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{\omega}{\kappa}=\omega^{\log_{\omega}{\kappa}}+\rho&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; where &lt;math id=&quot;p13.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\rho&amp;lt;\log_{\omega}{\kappa}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\rho&amp;lt;\log_{\omega}{\kappa}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
corresponds to the remaining terms in Cantor Normal Form. Then we have&lt;/p&gt;
&lt;table id=&quot;S0.Ex9&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex9.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa=\omega^{\log_{\omega}{\kappa}}=\omega^{\omega^{\log_{\omega}{\log_{%
\omega}{\kappa}}}}\omega^{\rho}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa=\omega^{\log_{\omega}{\kappa}}=\omega^{\omega^{\log_{\omega}{\log_{%
\omega}{\kappa}}}}\omega^{\rho}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class=&quot;ltx_p&quot;&gt;where &lt;math id=&quot;p13.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\omega^{\log_{\omega}{\log_{\omega}{\kappa}}}}&amp;lt;\omega^{\log_{\omega}{%
\kappa}}=\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\omega^{\log_{\omega}{\log_{\omega}{\kappa}}}}&amp;lt;\omega^{\log_{\omega}{%
\kappa}}=\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p13.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega^{\rho}&amp;lt;\omega^{\log_{\omega}{\kappa}}=\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega^{\rho}&amp;lt;\omega^{\log_{\omega}{\kappa}}=\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; since
&lt;math id=&quot;p13.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha\mapsto\omega^{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;↦&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha\mapsto\omega^{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is strictly increasing. Then
&lt;math id=&quot;p13.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\aleph_{0}\leq\mu_{1}=\left|\omega^{\omega^{\log_{\omega}{\log_{\omega}{\kappa%
}}}}\right|&amp;lt;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\aleph_{0}\leq\mu_{1}=\left|\omega^{\omega^{\log_{\omega}{\log_{\omega}{\kappa%
}}}}\right|&amp;lt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;p13.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu_{2}={|\omega^{\rho}|}&amp;lt;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu_{2}={|\omega^{\rho}|}&amp;lt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p13.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu_{1}\mu_{2}=\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu_{1}\mu_{2}=\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. But
again, the two first relations imply &lt;math id=&quot;p13.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu_{1}\mu_{2}=\max(\mu_{1},\mu_{2})&amp;lt;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu_{1}\mu_{2}=\max(\mu_{1},\mu_{2})&amp;lt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which contradicts the third one.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p14&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Finally,
&lt;math id=&quot;p14.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa=\omega^{\omega^{\log_{\omega}{\log_{\omega}{\kappa}}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa=\omega^{\omega^{\log_{\omega}{\log_{\omega}{\kappa}}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so is a fixed point
of &lt;math id=&quot;p14.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, a contradiction. Hence all the infinite cardinals are
fixed point of &lt;math id=&quot;p14.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so the property stated at the beginning is
true for arbitrary infinite cardinals &lt;math id=&quot;p14.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu_{1},\mu_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu_{1},\mu_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. ∎&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Decomposition of 2D-transform matrices</title>
   <link href="https://frederic-wang.fr//2013/12/01/decomposition-of-2d-transform-matrices/"/>
   <updated>2013-12-01T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2013/12/01/decomposition-of-2d-transform-matrices</id>
   <content type="html">
&lt;script type=&quot;text/javascript&quot;&gt;
       var TransformName = null;
       var CSSdecomposition, SVGdecomposition, MatrixDecomposition;

       function initTransformName()
       {
          // Initialize TransformName with the appropriate CSS property name.
          if (TransformName) return true;
          var test = document.getElementById(&quot;test&quot;);

          var nameList = [&quot;transform&quot;, &quot;-moz-transform&quot;, &quot;-webkit-transform&quot;,
                          &quot;-o-transform&quot;];
          for (var i in nameList) {
            TransformName = nameList[i];
            if (getComputedStyle(test)[TransformName] === &quot;none&quot;) return true;
          }

          return false;
       }

       function radToDeg(a)
       {
         // Radian to degree.
         return 180 * a / Math.PI;
       }

       function mn(x)
       {
         // MathML Number.
         if (x &lt; 0)
           return &quot;&lt;mrow&gt;&lt;mo&gt;&amp;#x2212;&lt;/mo&gt;&lt;mn&gt;&quot;+Math.abs(x)+&quot;&lt;/mn&gt;&lt;/mrow&gt;&quot;;
         return &quot;&lt;mn&gt;&quot;+x+&quot;&lt;/mn&gt;&quot;;
       }

       function trig(func, arg)
       {
         // MathML trigonometric function.
         return &quot;&lt;mrow&gt;&lt;mi&gt;&quot;+func+&quot;&lt;/mi&gt;&lt;mo&gt;&amp;#x2061;&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&quot;+
                mn(arg / Math.PI)+&quot;&lt;mi&gt;&amp;#x3c0;&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&quot;;
       }

       function matrix(a, b, c, d, e, f)
       {
         // MathML 2D matrix.
         return &quot;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mtable&gt;&lt;mtr&gt;&lt;mtd&gt;&quot;+a+&quot;&lt;/mtd&gt;&lt;mtd&gt;&quot;+c+&quot;&lt;/mtd&gt;&lt;mtd&gt;&quot;+e+&quot;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&quot;+b+&quot;&lt;/mtd&gt;&lt;mtd&gt;&quot;+d+&quot;&lt;/mtd&gt;&lt;mtd&gt;&quot;+f+&quot;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&quot;
       }

       function newTranslate(tx, ty)
       {
         // Add a translate.
         if (tx == 0 &amp;&amp; ty == 0) return;
         MatrixDecomposition +=
           matrix(mn(1), mn(0), mn(0), mn(1), mn(tx), mn(ty));
         if (ty == 0) {
           SVGdecomposition += &quot;translate(&quot; + tx + &quot;) &quot;;
           CSSdecomposition += &quot;translate(&quot; + tx + &quot;px) &quot;;
         } else {
           SVGdecomposition += &quot;translate(&quot; + tx + &quot;, &quot; + ty + &quot;) &quot;;
           CSSdecomposition += &quot;translate(&quot; + tx + &quot;px, &quot; + ty + &quot;px) &quot;;
         }
       }

       function newScale(sx, sy)
       {
         // Add a scale.
         if (sx == 1 &amp;&amp; sy == 1) return;
         MatrixDecomposition +=
           matrix(mn(sx), mn(0),
                  mn(0), mn(sy), mn(0), mn(0));
         var s = &quot;scale(&quot; + sx + (sx == sy ? &quot;&quot; : &quot;,&quot; + sy) + &quot;) &quot;;
         SVGdecomposition += s;
         CSSdecomposition += s;
       }

       function newRotate(a)
       {
         // Add a rotation.
         if (a == 0) return &quot;&quot;;
         MatrixDecomposition +=
             matrix(trig(&quot;cos&quot;, a), trig(&quot;sin&quot;, a),
                    trig(&quot;sin&quot;, -a), trig(&quot;cos&quot;, a), mn(0), mn(0));
         a = radToDeg(a);
         SVGdecomposition += &quot;rotate(&quot; + a + &quot;) &quot;;
         CSSdecomposition += &quot;rotate(&quot; + a + &quot;deg) &quot;;
       }

       function newSkewX(a)
       {
         // Add a skewX.
         if (a == 0) return;
         MatrixDecomposition +=
           matrix(mn(1), mn(0),
                  trig(&quot;tan&quot;, a), mn(1), mn(0), mn(0), mn(0));
         a = radToDeg(a);
         SVGdecomposition += &quot;skewX(&quot; + a + &quot;) &quot;;
         CSSdecomposition += &quot;skewX(&quot; + a + &quot;deg) &quot;;
       }

       function newSkewY(a)
       {
         // Add a skewY.
         if (a == 0) return;
         MatrixDecomposition +=
           matrix(mn(1), trig(&quot;tan&quot;, a),
                  mn(0), mn(1), mn(0), mn(0), mn(0));
         a = radToDeg(a);
         SVGdecomposition += &quot;skewY(&quot; + a + &quot;) &quot;;
         CSSdecomposition += &quot;skewY(&quot; + a + &quot;deg) &quot;;
       }
 
       function decompose()
       {
         // Verify if a CSS transform is available.
         if (!initTransformName())
           throw &quot;Your browser does not support CSS transforms.&quot;

         // Apply the transform specified by the user.
         var cssRect1 = document.getElementById(&quot;cssRect1&quot;);
         var CSS2Dtransform = document.getElementById(&quot;CSS2Dtransform&quot;).value;
         cssRect1.style[TransformName] = &quot;none&quot;;
         cssRect1.style[TransformName] = CSS2Dtransform;
         
         // Get the matrix computed by the rendering engine.
         var CSS2Dmatrix = getComputedStyle(cssRect1)[TransformName];
         var regexp = /matrix\((.*),(.*),(.*),(.*),(.*),(.*)\)/;
         var match = regexp.exec(CSS2Dmatrix);
         if (match === null)
            throw &quot;Syntax Error. Please enter a valid CSS 2D transform.&quot;
         var a = parseFloat(match[1]);
         var b = parseFloat(match[2]);
         var c = parseFloat(match[3]);
         var d = parseFloat(match[4]);
         var e = parseFloat(match[5]);
         var f = parseFloat(match[6]);
         document.getElementById(&quot;CSS2Dmatrix&quot;).innerHTML = CSS2Dmatrix;
         document.getElementById(&quot;CSS2DmatrixMathML&quot;).innerHTML =
           &quot;&lt;math display=&apos;block&apos;&gt;&quot; + 
           matrix(mn(a), mn(b), mn(c), mn(d), mn(e), mn(f)) + &quot;&lt;/math&gt;&quot;

         // Apply the decomposition algorithm.
         CSSdecomposition = &quot;&quot;; SVGdecomposition = &quot;&quot;; MatrixDecomposition = &quot;&quot;;
         newTranslate(e, f);

         var Delta = a * d - b * c;

         if (document.getElementById(&quot;decompo&quot;).value == &quot;QR-like&quot;) {
           // Apply the QR-like decomposition.
           if (a != 0 || b != 0) {
             var r = Math.sqrt(a*a+b*b);
             newRotate(b &gt; 0 ? Math.acos(a/r) : -Math.acos(a/r));
             newScale(r, Delta/r);
             newSkewX(Math.atan((a*c+b*d)/(r*r)));
           } else if (c != 0 || d != 0) {
             var s = Math.sqrt(c*c+d*d);
             newRotate(Math.PI/2 - (d &gt; 0 ? Math.acos(-c/s) : -Math.acos(c/s)));
             newScale(Delta/s, s);
             newSkewY(Math.atan((a*c+b*d)/(s*s)));
           } else { // a = b = c = d = 0
             newScale(0, 0);
           }
         } else {
           // Apply the LU-like decomposition.
           if (a != 0) {
             newSkewY(Math.atan(b/a));
             newScale(a, Delta/a);
             newSkewX(Math.atan(c/a));
           } else if (b != 0) {
             newRotate(Math.PI / 2);
             newScale(b, Delta/b);
             newSkewX(Math.atan(d/b));
           } else { // a = b = 0
             newScale(c, d);
             newSkewX(Math.PI/4);
             newScale(0, 1);
           }
         }

         // Display something if the transform is the identity.
         if (MatrixDecomposition === &quot;&quot;) {
           MatrixDecomposition =
             matrix(mn(1), mn(0), mn(0), mn(1), mn(0), mn(0));
           CSSdecomposition = SVGdecomposition = &quot;scale(1)&quot;;
         }

         // Display the result.
         document.getElementById(&quot;SVGdecomposition&quot;).innerHTML =
           SVGdecomposition;
         document.getElementById(&quot;CSSdecomposition&quot;).innerHTML =
           CSSdecomposition;
         document.getElementById(&quot;MatrixDecomposition&quot;).innerHTML =
           &quot;&lt;math display=&apos;block&apos;&gt;&quot;+MatrixDecomposition+&quot;&lt;/math&gt;&quot;

         // Apply the (decomposed) transformation to the SVG and CSS elements.
         document.getElementById(&quot;svgRect&quot;).
           setAttribute(&quot;transform&quot;, SVGdecomposition);
         cssRect2.style[TransformName] = CSSdecomposition;
       }

       function run()
       {
         var error = document.getElementById(&quot;error&quot;);
         try {
           error.innerHTML = &quot;&quot;;
           decompose();
         } catch (e) {
           error.innerHTML = e;
         }
       }

       function update(v)
       {
          if (v === &quot;&quot;) return;
          document.getElementById(&quot;CSS2Dtransform&quot;).value = v;
          run();
       }
    &lt;/script&gt;

&lt;p&gt;I recently took a look at the description of the CSS 2D / SVG transform &lt;code&gt;matrix(a, b, c, d, e, f)&lt;/code&gt; on MDN and I added a &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform#General_Transformation&quot;&gt;concrete example&lt;/a&gt; showing the effect of such a transform on an SVG line, in order to make this clearer for people who are not familiar with affine transformations or matrices.&lt;/p&gt;

&lt;div id=&quot;test&quot; style=&quot;transform: none; -moz-transform: none; -webkit-transform: none; -o-transform: none;&quot;&gt; &lt;/div&gt;

&lt;p&gt;This also recalled me a small algorithm to decompose an arbitrary SVG transform into a composition of basic transforms (Scale, Rotate, Translate and Skew) that I wrote 5 years ago for the Amaya SVG editor. I translated it into Javascript and I make it available here. Feel free to copy it on MDN or anywhere else. The convention used to represent transforms as 3-by-3 matrices is the one of the &lt;a href=&quot;http://www.w3.org/TR/SVG/coords.html#TransformMatrixDefined&quot;&gt;SVG specification&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Live demo&lt;/h2&gt;

&lt;p&gt;Enter the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/transform#CSS_transform_functions&quot;&gt;CSS 2D transform&lt;/a&gt; you want to reduce and decompose or pick one example from the list &lt;select id=&quot;examples&quot; onchange=&quot;update(this.value);&quot;&gt;&lt;option selected=&quot;selected&quot; value=&quot;&quot;&gt;-- select a transform --&lt;/option&gt;&lt;option value=&quot;matrix(1, 0, 0, 1, -40, 0)&quot;&gt;Translate 1&lt;/option&gt;&lt;option value=&quot;matrix(1, 0, 0, 1, 20, -30)&quot;&gt;Translate 2&lt;/option&gt;&lt;option value=&quot;matrix(-2, 0, 0, 1, 0, 0)&quot;&gt;Scale 1&lt;/option&gt;&lt;option value=&quot;matrix(1, 0, 0, .5, 0, 0)&quot;&gt;Scale 2&lt;/option&gt;&lt;option value=&quot;matrix(1.5, 0, 0, 1.5, 0, 0)&quot;&gt;Scale 3&lt;/option&gt;&lt;option value=&quot;matrix(.75, 0, 0, -1.5, 0, 0)&quot;&gt;Scale 4&lt;/option&gt;&lt;option value=&quot;matrix(0, 1, -1, 0, 0, 0)&quot;&gt;Rotate 1&lt;/option&gt;&lt;option value=&quot;matrix(0.7071067811865476, -0.7071067811865475, 0.7071067811865475, 0.7071067811865476, 0, 0)&quot;&gt;Rotate 2&lt;/option&gt;&lt;option value=&quot;matrix(0.5000000000000001, 0.8660254037844386, -0.8660254037844386, 0.5000000000000001, -15.98076211353316, -32.320508075688764)&quot;&gt;Rotate 3&lt;/option&gt;&lt;option value=&quot;matrix(1, 1, 0, 1, 0, 0)&quot;&gt;Skew 1&lt;/option&gt;&lt;option value=&quot;matrix(1, 0, -1, 1, 0, 0)&quot;&gt;Skew 2&lt;/option&gt;&lt;option value=&quot;matrix(15, 3, 10, 2, 40, -5)&quot;&gt;NonInvertible&lt;/option&gt;&lt;option value=&quot;matrix(.5, 0, 0, 1.5, 30, -20)&quot;&gt;Example 1&lt;/option&gt;&lt;option value=&quot;matrix(0, .75, 1.5, 0, 10, 15)&quot;&gt;Example 2&lt;/option&gt;&lt;option value=&quot;matrix(0.5, -1, 1, 0.5, 10, -20)&quot;&gt;Example 3&lt;/option&gt;&lt;option value=&quot;matrix(1, .25, -.125, 2, 20, 5)&quot;&gt;Example 4&lt;/option&gt;&lt;option value=&quot;matrix(1, -.125, .25, 2, 10, 0)&quot;&gt;Example 5&lt;/option&gt;&lt;option value=&quot;matrix(1, 0.17632698070846498, 0.36397023426620234, 1.064177772475912, 0, 0)&quot;&gt;Example 6&lt;/option&gt;&lt;option value=&quot;matrix(0, .5, -1, 1, 10, 5)&quot;&gt;Example 7&lt;/option&gt;&lt;option value=&quot;translate(25px,60px) skewX(20deg) matrix(1,3,.5,.2,1,6) rotate(20deg) translate(-20px,5px) scale(.5, .75)&quot;&gt;Complex 1&lt;/option&gt;&lt;option value=&quot;scale(1,-1) translate(5px,-50px) scale(1,.6) rotate(30deg) scale(.5,1) matrix(2, -.3, .7, 1,90, 20) translate(-17px,33px) skewX(30deg) matrix(1,2,3,4,5,6) skewX(-67deg)&quot;&gt;Complex 2&lt;/option&gt;&lt;option value=&quot;scale(.5,.8) translate(20px,-10px) matrix(-4, 2, 3, -1, -3, 17) matrix(1, 2, 3, 4, 5, 6)&quot;&gt;Complex 3&lt;/option&gt;&lt;option value=&quot;translate(50px,-10px) scaleX(1.1) matrix(0.819152, 0.573576, -0.573576, 0.819152, -20, 15) translateX(-20px) scaleY(.8) rotate(20deg) translateY(15px) scale(1.5,1.1)&quot;&gt;Complex 4&lt;/option&gt; &lt;/select&gt;. You can also choose between LU-like or QR-like decomposition: &lt;select id=&quot;decompo&quot; onchange=&quot;run();&quot;&gt;&lt;option selected=&quot;selected&quot; value=&quot;QR-like&quot;&gt;QR-like&lt;/option&gt;&lt;option value=&quot;LU-like&quot;&gt;LU-like&lt;/option&gt; &lt;/select&gt;.&lt;/p&gt;

&lt;div&gt;&lt;input id=&quot;CSS2Dtransform&quot; onchange=&quot;run()&quot; size=&quot;50&quot; type=&quot;text&quot; value=&quot;matrix(1, 0, 0, 1, 0, 0)&quot; /&gt;&lt;button onclick=&quot;run()&quot;&gt;Reduce and Decompose&lt;/button&gt;&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div style=&quot;width: 200px; height: 200px; background: red; margin: auto;&quot;&gt;
&lt;div style=&quot;transform: translate(50px, 50px);
                  -moz-transform: translate(50px, 50px);
                  -webkit-transform: translate(50px, 50px);
                  -o-transform: translate(50px, 50px);
                  width: 100px; height: 100px;
                  transform-origin: 50px, 50px;
                  -moz-transform-origin: translate(50px, 50px);
                  -webkit-transform-origin: translate(50px, 50px);
                  -o-transform-origin: translate(50px, 50px);&quot;&gt;
&lt;div id=&quot;cssRect1&quot;&gt;
&lt;div style=&quot;width: 100px; height: 100px; background: blue;&quot;&gt;&lt;span style=&quot;font-size: 40px; color: #ff0;&quot;&gt;CSS&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Here is the reduced CSS/SVG matrix as computed by your rendering engine &lt;strong id=&quot;CSS2Dmatrix&quot;&gt;?&lt;/strong&gt; and its matrix representation:&lt;/p&gt;

&lt;p id=&quot;CSS2DmatrixMathML&quot;&gt; &lt;/p&gt;

&lt;p&gt;After simplification (and modulo rounding errors), an SVG decomposition into simple transformations is &lt;strong id=&quot;SVGdecomposition&quot;&gt;?&lt;/strong&gt; and it renders like this:&lt;/p&gt;

&lt;div style=&quot;width: 200px; height: 200px; background: red; margin: auto;&quot;&gt;&lt;svg height=&quot;200px&quot; width=&quot;200px&quot;&gt; &lt;g transform=&quot;translate(100,100)&quot;&gt; &lt;g id=&quot;svgRect&quot;&gt; &lt;g transform=&quot;translate(-50,-50)&quot;&gt; &lt;rect fill=&quot;blue&quot; height=&quot;100px&quot; stroke=&quot;none&quot; width=&quot;100px&quot;&gt;&lt;/rect&gt; &lt;text style=&quot;font-size: 40px; fill: #ff0;&quot; y=&quot;40&quot;&gt;SVG&lt;/text&gt; &lt;/g&gt; &lt;/g&gt; &lt;/g&gt; &lt;/svg&gt;&lt;/div&gt;

&lt;p&gt;After simplification (and modulo rounding errors), a CSS decomposition into simple transformations is &lt;strong id=&quot;CSSdecomposition&quot;&gt;?&lt;/strong&gt; and it renders like this:&lt;/p&gt;

&lt;div style=&quot;width: 200px; height: 200px; background: red; margin: auto;&quot;&gt;
&lt;div style=&quot;transform: translate(50px, 50px);
                  -moz-transform: translate(50px, 50px);
                  -webkit-transform: translate(50px, 50px);
                  -o-transform: translate(50px, 50px);
                  width: 100px; height: 100px;
                  transform-origin: 50px, 50px;
                  -moz-transform-origin: translate(50px, 50px);
                  -webkit-transform-origin: translate(50px, 50px);
                  -o-transform-origin: translate(50px, 50px);&quot;&gt;
&lt;div id=&quot;cssRect2&quot;&gt;
&lt;div style=&quot;width: 100px; height: 100px; background: blue;&quot;&gt;&lt;span style=&quot;font-size: 40px; color: #ff0;&quot;&gt;CSS&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;A matrix decomposition of the original transform is:&lt;/p&gt;

&lt;div id=&quot;MatrixDecomposition&quot;&gt; &lt;/div&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;Mathematical Description&lt;/h2&gt;

&lt;p&gt;The decomposition algorithm is based on the classical &lt;a href=&quot;https://en.wikipedia.org/wiki/LU_decomposition&quot;&gt;LU&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/QR_decomposition&quot;&gt;QR&lt;/a&gt; decompositions. First remember the SVG specification: the transform &lt;code&gt;matrix(a,b,c,d,e,f)&lt;/code&gt; is represented by the matrix&lt;/p&gt;
&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/math&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;and corresponds to the affine transformation&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;↦&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;which shows the classical factorization into a composition of a linear transformation &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/math&gt; and a translation &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/math&gt;. Now let&apos;s focus on the matrix &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/math&gt; and denote &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;Δ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/math&gt; its determinant. We first consider the LDU decomposition. If &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/math&gt;, we can use it as a pivot and apply one step of Gaussian&apos;s elimination:&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;Δ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;and thus the LDU decomposition is&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;Δ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;Hence if &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/math&gt;, the transform &lt;code&gt;matrix(a,b,c,d,e,f)&lt;/code&gt; can be written &lt;code&gt;translate(e,f) skewY(atan(b/a)) scale(a, Δ/a) skewX(c/a)&lt;/code&gt;. If &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/math&gt; and &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/math&gt; then we have &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;Δ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/math&gt; and we can write (this is approximately &quot;LU with full pivoting&quot;):&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;cos&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt;&lt;mi&gt;sin&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;sin&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;cos&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;Δ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;and so the transform becomes &lt;code&gt;translate(e,f) rotate(90°) scale(b, Δ/b) skewX(d/b)&lt;/code&gt;. Finally, if &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/math&gt;, then we already have an LU decomposition and we can just write&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;and so the transform is &lt;code&gt;translate(e,f) scale(c, d) skewX(45°) scale(0, 1)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;As a consequence, we have proved that any transform &lt;code&gt;matrix(a,b,c,d,e,f)&lt;/code&gt; can be decomposed into a product of simple transforms. However, the decomposition is not always what we want, for example &lt;code&gt;scale(2) rotate(30°)&lt;/code&gt; will be decomposed into a product that involves &lt;code&gt;skewX&lt;/code&gt; and &lt;code&gt;skewY&lt;/code&gt; instead of preserving the nice factors.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;We thus consider instead the QR decomposition. If &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;Δ&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/math&gt;, then by applying the Gram–Schmidt process to the columns &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/math&gt; we obtain&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;Δ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;Δ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;r&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;where &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msqrt&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;a&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;b&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/msqrt&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/math&gt;. In that case, the transform becomes &lt;code&gt;translate(e,f) rotate(sign(b) * acos(a/r)) scale(r, Δ/r) skewX(atan((a c + b d)/r^2))&lt;/code&gt;. In particular, a similarity transform preserves orthogonality and length ratio and so &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/math&gt; and &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;Δ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;∣&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;cos&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;r&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/math&gt;. Hence for a similarity transform we get &lt;code&gt;translate(e,f) rotate(sign(b) * acos(a/r)) scale(r)&lt;/code&gt; as wanted. We also note that it is enough to assume the weaker hypothesis &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/math&gt; (that is &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/math&gt; or &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/math&gt;) in the expression above and so the decomposition applies in that case too. Similarly, if we let &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msqrt&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;c&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;d&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/msqrt&gt;&lt;/math&gt; and instead assume &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/math&gt; or &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/math&gt; we get&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;cos&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt;&lt;mi&gt;sin&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;sin&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;cos&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;Δ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mtable rowspacing=&quot;0.5ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt; &lt;mtr&gt;&lt;mtd&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;/&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;s&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mtd&gt; &lt;mtd&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/math&gt;&lt;/p&gt;

&lt;p&gt;Hence in that case the transform is &lt;code&gt;translate(e,f) rotate(90° - sign(d) * acos(-c/s)) scale(Delta/s, s) skewY(atan((a c + b d)/s^2))&lt;/code&gt;. Finally if &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/math&gt;, then the transform is just &lt;code&gt;scale(0,0)&lt;/code&gt;.&lt;/p&gt;

&lt;p id=&quot;error&quot;&gt; &lt;/p&gt;

&lt;p&gt;The decomposition algorithms are now easy to write. We note that none of them gives the best result in all the cases (compare for example how they factor Rotate2 and Skew1). Also, for completeness we have included the noninvertible transforms in our study (that is &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mi&gt;Δ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/math&gt;) but in practice they are not really useful (try NonInvertible).&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Exercises in Set Theory: Iterated Forcing and Martin’s Axiom</title>
   <link href="https://frederic-wang.fr//2013/06/01/iterated-forcing-and-martin-s-axiom/"/>
   <updated>2013-06-01T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2013/06/01/iterated-forcing-and-martin-s-axiom</id>
   <content type="html">
&lt;div id=&quot;p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;New solutions to exercises from Thomas Jech’s book “Set Theory”:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;ul id=&quot;I1&quot; class=&quot;ltx_itemize&quot;&gt;
&lt;li id=&quot;I1.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;I1.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;a href=&quot;/mathematics/set-theory/jech/chapter_16.html&quot;&gt;Chapter 16: Forcing&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&quot;p3&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Last November, I tried to provide
&lt;a href=&quot;/ultrafilters-and-boolean-algebras.html&quot;&gt;some details&lt;/a&gt;
of the proof given in chapter 7,
regarding the fact that the continuum hypothesis implies the
existence of a Ramsey ultrafilter.
Booth actually proved in 1970 that this works assuming only Martin’s Axiom.
The missing argument is actually
given in exercise 16.16. For completeness, I copy the details on this blog
post.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p4&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Remember that the proof involves contructing a sequence
&lt;math id=&quot;p4.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{(X_{\alpha})}_{\alpha&amp;lt;2^{\aleph_{0}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(X_{\alpha})}_{\alpha&amp;lt;2^{\aleph_{0}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of infinite subsets of &lt;math id=&quot;p4.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
The induction hypothesis is that at step &lt;math id=&quot;p4.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;2^{\aleph_{0}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;2^{\aleph_{0}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
for all &lt;math id=&quot;p4.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta_{1},\beta_{2}&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta_{1},\beta_{2}&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we have &lt;math id=&quot;p4.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta_{1}&amp;lt;\beta_{2}\implies X_{\beta_{2}}\setminus X_{\beta_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta_{1}&amp;lt;\beta_{2}\implies X_{\beta_{2}}\setminus X_{\beta_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is finite.
It is then easy to show the result for the successor step,
since the construction satisfies
&lt;math id=&quot;p4.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha+1}\subseteq X_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha+1}\subseteq X_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. However at limit step, to ensure that
&lt;math id=&quot;p4.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}\setminus X_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}\setminus X_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is finite for all &lt;math id=&quot;p4.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the proof
relies on the continunum hypothesis. This is the only place where it is used.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p5&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Assume instead Martin’s Axiom and consider a limit step
&lt;math id=&quot;p5.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;2^{\aleph_{0}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;2^{\aleph_{0}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Define the forcing notion
&lt;math id=&quot;p5.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;P_{\alpha}=\{(s,F):s\in{[\omega]}^{&amp;lt;\omega},F\in{[\alpha]}^{&amp;lt;\omega}\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_{\alpha}=\{(s,F):s\in{[\omega]}^{&amp;lt;\omega},F\in{[\alpha]}^{&amp;lt;\omega}\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and &lt;math id=&quot;p5.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;(s^{\prime},F^{\prime})\leq(s,F)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(s^{\prime},F^{\prime})\leq(s,F)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; iff
&lt;math id=&quot;p5.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;s\subseteq s^{\prime}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;s\subseteq s^{\prime}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;p5.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;F\subseteq F^{\prime}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;F\subseteq F^{\prime}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p5.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;s^{\prime}\setminus s\subseteq X_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;s^{\prime}\setminus s\subseteq X_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
for all &lt;math id=&quot;p5.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta\in F&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta\in F&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
It is clear that the relation is reflexive and antisymmetric. The transitivity
is almost obvious, just note that if &lt;math id=&quot;p5.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;(s_{3},F_{3})\leq(s_{2},F_{2})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(s_{3},F_{3})\leq(s_{2},F_{2})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p5.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;(s_{2},F_{2})\leq(s_{1},F_{1})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(s_{2},F_{2})\leq(s_{1},F_{1})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then
for all &lt;math id=&quot;p5.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta\in F_{1}\subseteq F_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta\in F_{1}\subseteq F_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we have
&lt;math id=&quot;p5.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;s_{3}\setminus s_{1}\subseteq s_{3}\setminus s_{2}\cup s_{2}\setminus s_{1}%
\subseteq X_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;s_{3}\setminus s_{1}\subseteq s_{3}\setminus s_{2}\cup s_{2}\setminus s_{1}%
\subseteq X_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p6&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The forcing notion satisfies ccc or even property (K):
since &lt;math id=&quot;p6.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{[\omega]}^{&amp;lt;\omega}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{[\omega]}^{&amp;lt;\omega}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is countable,
for any uncountable subset &lt;math id=&quot;p6.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;W&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;W&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;W&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; there is &lt;math id=&quot;p6.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;t\in{[\omega]}^{&amp;lt;\omega}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;t\in{[\omega]}^{&amp;lt;\omega}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such
that &lt;math id=&quot;p6.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;Z=\{(s,F)\in W:s=t\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;Z&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;W&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;Z=\{(s,F)\in W:s=t\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is uncountable. Then any
&lt;math id=&quot;p6.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;(t,F_{1}),(t,F_{2})\in Z&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;Z&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(t,F_{1}),(t,F_{2})\in Z&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; have a common refinement &lt;math id=&quot;p6.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;(t,F_{1}\cup F_{2})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(t,F_{1}\cup F_{2})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p7&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;For all &lt;math id=&quot;p7.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, define &lt;math id=&quot;p7.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;D_{n}=\{(s,F):|s|\geq n\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D_{n}=\{(s,F):|s|\geq n\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Let &lt;math id=&quot;p7.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta_{1}&amp;gt;\beta_{2}&amp;gt;...&amp;gt;\beta_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta_{1}&amp;gt;\beta_{2}&amp;gt;...&amp;gt;\beta_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the elements of &lt;math id=&quot;p7.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;F&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;F&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
We show by induction on &lt;math id=&quot;p7.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;1\leq m\leq k&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq m\leq k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; that &lt;math id=&quot;p7.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\bigcap_{i=1}^{m}X_{\beta_{i}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋂&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msubsup&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\bigcap_{i=1}^{m}X_{\beta_{i}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
is infinite. This is true for &lt;math id=&quot;p7.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;m=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by assumption. If it is true for
&lt;math id=&quot;p7.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;m-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p8&quot; class=&quot;ltx_para&quot;&gt;
&lt;table id=&quot;S0.Ex1&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\bigcap_{i=1}^{m-1}X_{\beta_{i}}=\bigcap_{i=1}^{m}X_{\beta_{i}}\cup\bigcap_{i=%
1}^{m}X_{\beta_{i}}\setminus X_{\beta_{m}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;munderover&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; movablelimits=&quot;false&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋂&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/munderover&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;munderover&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; movablelimits=&quot;false&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋂&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/munderover&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mrow&gt;&lt;munderover&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; movablelimits=&quot;false&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋂&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/munderover&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\bigcap_{i=1}^{m-1}X_{\beta_{i}}=\bigcap_{i=1}^{m}X_{\beta_{i}}\cup\bigcap_{i=%
1}^{m}X_{\beta_{i}}\setminus X_{\beta_{m}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p9&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The left hand side is infinite by induction hypothesis. The second term
of the right hand side is included in &lt;math id=&quot;p9.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\beta_{1}}\setminus X_{\beta_{m}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\beta_{1}}\setminus X_{\beta_{m}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and thus
is finite. Hence the first term is infinite and the result is true for &lt;math id=&quot;p9.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Finally, for &lt;math id=&quot;p9.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;m=k&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m=k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we get that
&lt;math id=&quot;p9.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\bigcap_{\beta\in F}X_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋂&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\bigcap_{\beta\in F}X_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is infinite. Pick &lt;math id=&quot;p9.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;x_{1},x_{2},...,x_{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x_{1},x_{2},...,x_{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; distinct
elements from that set and define &lt;math id=&quot;p9.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;(s^{\prime},F^{\prime})=(s\cup\{x_{1},...x_{n}\},F)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(s^{\prime},F^{\prime})=(s\cup\{x_{1},...x_{n}\},F)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
We have &lt;math id=&quot;p9.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;(s^{\prime},F^{\prime})\in D_{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(s^{\prime},F^{\prime})\in D_{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;p9.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;s\subseteq s^{\prime}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;s\subseteq s^{\prime}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;p9.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;F\subseteq F^{\prime}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;F\subseteq F^{\prime}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
for all &lt;math id=&quot;p9.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta\in F&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta\in F&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
&lt;math id=&quot;p9.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;s^{\prime}\setminus s=\{x_{1},...x_{n}\}\subseteq X_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;s^{\prime}\setminus s=\{x_{1},...x_{n}\}\subseteq X_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This shows that
&lt;math id=&quot;p9.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;D_{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D_{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is dense. For each &lt;math id=&quot;p9.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
the set &lt;math id=&quot;p9.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;E_{\beta}=\{(s,F):\beta\in F\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;E_{\beta}=\{(s,F):\beta\in F\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is also dense:
for any &lt;math id=&quot;p9.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;(s,F)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(s,F)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; consider &lt;math id=&quot;p9.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;(s^{\prime},F^{\prime})=(s,F\cup\{\beta\})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(s^{\prime},F^{\prime})=(s,F\cup\{\beta\})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p10&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;By Martin’s Axiom there is a generic filter &lt;math id=&quot;p10.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for the family
&lt;math id=&quot;p10.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\{D_{n}:n&amp;lt;\omega\}\cup\{E_{\beta}:\beta&amp;lt;\alpha\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\{D_{n}:n&amp;lt;\omega\}\cup\{E_{\beta}:\beta&amp;lt;\alpha\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of
size &lt;math id=&quot;p10.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;|\alpha|&amp;lt;2^{\aleph_{0}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;|\alpha|&amp;lt;2^{\aleph_{0}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Let &lt;math id=&quot;p10.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}=\{n&amp;lt;\omega:\exists(s,F)\in G,n\in s\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∃&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}=\{n&amp;lt;\omega:\exists(s,F)\in G,n\in s\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
For all &lt;math id=&quot;p10.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, there is &lt;math id=&quot;p10.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;(s,F)\in G\cap D_{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(s,F)\in G\cap D_{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
&lt;math id=&quot;p10.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;|X_{\alpha}|\geq|s|\geq n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;|X_{\alpha}|\geq|s|\geq n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence &lt;math id=&quot;p10.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is infinite. Let &lt;math id=&quot;p10.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and &lt;math id=&quot;p10.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;(s_{1},F_{1})\in G\cap E_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(s_{1},F_{1})\in G\cap E_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
For any &lt;math id=&quot;p10.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in X_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in X_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, there is &lt;math id=&quot;p10.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;(s_{2},F_{2})\in G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(s_{2},F_{2})\in G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p10.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in s_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in s_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Hence there is &lt;math id=&quot;p10.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;(s_{3},F_{3})\in G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(s_{3},F_{3})\in G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; a refinement of &lt;math id=&quot;p10.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;(s_{1},F_{2}),(s_{2},F_{2})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(s_{1},F_{2}),(s_{2},F_{2})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
We have &lt;math id=&quot;p10.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in s_{2}\subseteq s_{3}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in s_{2}\subseteq s_{3}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p10.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;s_{3}\subseteq s_{1}\subseteq X_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;s_{3}\subseteq s_{1}\subseteq X_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Hence &lt;math id=&quot;p10.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}\setminus X_{\beta}\subseteq s_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}\setminus X_{\beta}\subseteq s_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is finite and the induction
hypothesis is true at step &lt;math id=&quot;p10.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Exercises in Set Theory: Applications of Forcing</title>
   <link href="https://frederic-wang.fr//2013/05/03/applications-of-forcing/"/>
   <updated>2013-05-03T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2013/05/03/applications-of-forcing</id>
   <content type="html">
&lt;div id=&quot;p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;New solutions to exercises from Thomas Jech’s book “Set Theory”:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;ul id=&quot;I1&quot; class=&quot;ltx_itemize&quot;&gt;
&lt;li id=&quot;I1.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;I1.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;a href=&quot;/applications-of-forcing.html&quot;&gt;Chapter 15: Forcing&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&quot;p3&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The exercises from this chapter was a good opportunity to play a bit more
with the forcing method. Exercise 15.15 seemed a straightforward
generalization of &lt;a href=&quot;https://en.wikipedia.org/wiki/Forcing_%28set_theory%29#Easton_forcing&quot; title=&quot;&quot; class=&quot;ltx_ref&quot;&gt;Easton’s forcing&lt;/a&gt; but turned out to be a bit technical.
I realized that the forcing notion used in that exercise provides a
result in ZFC (a bit like Exercises 15.31 and 15.32 allow to prove some
theorems on Boolean Algebras by Forcing).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p4&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Remember that &lt;math id=&quot;p4.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{0}=\aleph_{0},\beth_{1}=2^{\beth_{0}},\beth_{2}=2^{\beth_{1}}...,\beth_%
{\omega}=\sup\beth_{n},...,\beth_{\alpha+1}=2^{\beth_{\alpha}},...&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;sup&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{0}=\aleph_{0},\beth_{1}=2^{\beth_{0}},\beth_{2}=2^{\beth_{1}}...,\beth_%
{\omega}=\sup\beth_{n},...,\beth_{\alpha+1}=2^{\beth_{\alpha}},...&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the normal sequence built by
application of the continuum function at successor step.
One may wonder: is &lt;math id=&quot;p4.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; regular?&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p5&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;First consider the case where &lt;math id=&quot;p5.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is limit. The case &lt;math id=&quot;p5.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha=0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is
clear (&lt;math id=&quot;p5.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{0}=\aleph_{0}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{0}=\aleph_{0}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is regular) so assume &lt;math id=&quot;p5.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;gt;0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;gt;0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
If &lt;math id=&quot;p5.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an inacessible
cardinal, it is easy to prove by induction that for all &lt;math id=&quot;p5.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we
have
&lt;math id=&quot;p5.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{\beta}&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{\beta}&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;: at step &lt;math id=&quot;p5.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta=0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we use that &lt;math id=&quot;p5.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is uncountable,
at successor step that it is strong limit and at limit step that it is
regular. Hence &lt;math id=&quot;p5.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{\alpha}=\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{\alpha}=\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so is regular.
If &lt;math id=&quot;p5.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not a cardinal then
&lt;math id=&quot;p5.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{cf}(\beth_{\alpha})=\operatorname{cf}(\alpha)\leq|\alpha|&amp;lt;\alpha%
\leq\beth_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{cf}(\beth_{\alpha})=\operatorname{cf}(\alpha)\leq|\alpha|&amp;lt;\alpha%
\leq\beth_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
so &lt;math id=&quot;p5.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is singular. If &lt;math id=&quot;p5.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a cardinal but not strong limit
then there is &lt;math id=&quot;p5.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p5.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{\beta}\geq\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{\beta}\geq\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Since
&lt;math id=&quot;p5.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\alpha\leq\beth_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\alpha\leq\beth_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; there is &lt;math id=&quot;p5.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
&lt;math id=&quot;p5.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{\gamma}&amp;gt;\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{\gamma}&amp;gt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then
&lt;math id=&quot;p5.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{\alpha}\geq\beth_{\gamma+1}=2^{\beth_{\gamma}}&amp;gt;2^{\beta}\geq\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{\alpha}\geq\beth_{\gamma+1}=2^{\beth_{\gamma}}&amp;gt;2^{\beta}\geq\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
So &lt;math id=&quot;p5.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{cf}(\beth_{\alpha})=\operatorname{cf}(\alpha)\leq\alpha&amp;lt;\beth_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{cf}(\beth_{\alpha})=\operatorname{cf}(\alpha)\leq\alpha&amp;lt;\beth_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p5.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is singular. Finally, if &lt;math id=&quot;p5.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a singular cardinal,
then again &lt;math id=&quot;p5.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{cf}(\beth_{\alpha})=\operatorname{cf}(\alpha)&amp;lt;\alpha\leq\beth_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{cf}(\beth_{\alpha})=\operatorname{cf}(\alpha)&amp;lt;\alpha\leq\beth_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p5.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is singular.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p6&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;What about the successor case i.e. &lt;math id=&quot;p6.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;?
By Corollary 5.3 from Thomas Jech’s book any &lt;math id=&quot;p6.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we can show
that &lt;math id=&quot;p6.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\aleph_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\aleph_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a regular cardinal. The Generalized
Continuum Hypothesis says that &lt;math id=&quot;p6.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall\alpha,\aleph_{\alpha}=\beth_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall\alpha,\aleph_{\alpha}=\beth_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Since it holds in &lt;math id=&quot;p6.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;L&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;L&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we can not prove in ZFC that for some
&lt;math id=&quot;p6.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;p6.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is singular.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p7&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The generic extension &lt;math id=&quot;p7.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;V[G]\supseteq V&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V[G]\supseteq V&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; constructed in exercise 15.15
satisfies GCH and so it’s another way
to show that &lt;math id=&quot;p7.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can not be proved to be singular for some
&lt;math id=&quot;p7.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. However, it provides a better result: by construction,
&lt;math id=&quot;p7.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;V[G]\models\beth_{\alpha+1}^{V}={(\beth_{\alpha}^{V})}^{+}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⊧&lt;/mo&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V[G]\models\beth_{\alpha+1}^{V}={(\beth_{\alpha}^{V})}^{+}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
&lt;math id=&quot;p7.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;V[G]\models[\beth_{\alpha+1}^{V}\text{ is a regular cardinal}]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⊧&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mtext&gt; is a regular cardinal&lt;/mtext&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V[G]\models[\beth_{\alpha+1}^{V}\text{ is a regular cardinal}]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Since
“regular cardinal” is a &lt;math id=&quot;p7.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Pi_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Π&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Pi_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; notion we deduce that
&lt;math id=&quot;p7.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a regular cardinal in &lt;math id=&quot;p7.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;V&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p8&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Now the question is: is there any “elementary” proof of the fact that
&lt;math id=&quot;p8.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is regular i.e. without using the forcing method?&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p9&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;–update: of course, I forgot to mention that by KÃ¶nig’s theorem,
&lt;math id=&quot;p9.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{\beth_{\alpha}}=\beth_{\alpha+1}\geq\operatorname{cf}(\beth_{\alpha+1})=%
\operatorname{cf}(2^{\beth_{\alpha}})\geq{(\beth_{\alpha})}^{+}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{\beth_{\alpha}}=\beth_{\alpha+1}\geq\operatorname{cf}(\beth_{\alpha+1})=%
\operatorname{cf}(2^{\beth_{\alpha}})\geq{(\beth_{\alpha})}^{+}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
so the singularity of &lt;math id=&quot;p9.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; would imply the failure of the
continuum hypothesis for the cardinal &lt;math id=&quot;p9.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beth_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℶ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beth_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and this is not provable
in ZFC.&lt;/p&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Suslin’s Problem</title>
   <link href="https://frederic-wang.fr//2013/04/04/suslin-s-problem/"/>
   <updated>2013-04-04T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2013/04/04/suslin-s-problem</id>
   <content type="html">
&lt;div id=&quot;p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In a previous blog post, I mentioned the
&lt;a href=&quot;/classical-independence-results.html&quot;&gt;classical independence results&lt;/a&gt; regarding the Axiom of Choice and the Generalized Continuum Hypothesis.
Here, I’m going to talk about a slightly less known
problem that is undecidable in
ZFC. It is about a characterization of the set of reals &lt;math id=&quot;p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{R}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{R}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and its
formulation does not involve at all cardinal arithmetics or the axiom of
choice, but only properties of ordered sets.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;First, the set of rationals &lt;math id=&quot;p2.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;(\mathbb{Q},&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(\mathbb{Q},&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
is well-known to be countable. It is
linearly ordered (for any &lt;math id=&quot;p2.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;x,y\in\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x,y\in\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; either &lt;math id=&quot;p2.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or &lt;math id=&quot;p2.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;y&amp;lt;x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y&amp;lt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;),
unbounded (for any &lt;math id=&quot;p2.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; there is &lt;math id=&quot;p2.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;y_{1},y_{2}\in\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y_{1},y_{2}\in\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
&lt;math id=&quot;p2.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;y_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;y_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p2.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;y_{2}&amp;lt;x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y_{2}&amp;lt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) and dense (for any &lt;math id=&quot;p2.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;x,y\in\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x,y\in\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if &lt;math id=&quot;p2.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we
can find &lt;math id=&quot;p2.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;z\in\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;z\in\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p2.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;z&amp;lt;y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;z&amp;lt;y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;). It turns out that &lt;math id=&quot;p2.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can
be characterized by these order properties:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmlemma1&quot; class=&quot;ltx_theorem ltx_theorem_lemma&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Lemma 0.1&lt;/span&gt;.&lt;/h6&gt;
&lt;div id=&quot;S0.Thmlemma1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Let &lt;math id=&quot;S0.Thmlemma1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;(P,&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(P,&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be a countable, dense, unbounded linearly ordered set. Then
&lt;math id=&quot;S0.Thmlemma1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;(P,&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(P,&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is isomorphic to &lt;math id=&quot;S0.Thmlemma1.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;(\mathbb{Q},&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(\mathbb{Q},&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;ltx_proof&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_italic ltx_title_proof&quot;&gt;Proof.&lt;/h6&gt;
&lt;div id=&quot;p3&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Let &lt;math id=&quot;p3.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;P=\{p_{n}:n\in\mathbb{N}\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P=\{p_{n}:n\in\mathbb{N}\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p3.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{Q}=\{q_{n}:n\in\mathbb{N}\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{Q}=\{q_{n}:n\in\mathbb{N}\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be enumerations of &lt;math id=&quot;p3.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p3.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
We shall construct by induction a sequence
&lt;math id=&quot;p3.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{0}\subseteq f_{1}\subseteq f_{2}\subseteq...&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{0}\subseteq f_{1}\subseteq f_{2}\subseteq...&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of functions such that
for all &lt;math id=&quot;p3.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;n\in\mathbb{N}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\in\mathbb{N}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
&lt;math id=&quot;p3.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{dom}(f_{n})\supseteq\{p_{i}:i&amp;lt;n\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{dom}(f_{n})\supseteq\{p_{i}:i&amp;lt;n\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
&lt;math id=&quot;p3.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{ran}(f_{n})\supseteq\{q_{i}:i&amp;lt;n\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;ran&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{ran}(f_{n})\supseteq\{q_{i}:i&amp;lt;n\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p3.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall x,y\in\operatorname{dom}(f_{n}),x&amp;lt;y\Leftrightarrow f(x)&amp;lt;f(y)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;⇔&lt;/mo&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall x,y\in\operatorname{dom}(f_{n}),x&amp;lt;y\Leftrightarrow f(x)&amp;lt;f(y)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Then &lt;math id=&quot;p3.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;f=\bigcup_{n\in\mathbb{N}}f_{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f=\bigcup_{n\in\mathbb{N}}f_{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a function:
if &lt;math id=&quot;p3.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;(x,y),(x,z)\in f&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(x,y),(x,z)\in f&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then there is &lt;math id=&quot;p3.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; large enough such that
&lt;math id=&quot;p3.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;(x,y),(x,z)\in f_{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(x,y),(x,z)\in f_{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and since &lt;math id=&quot;p3.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a function &lt;math id=&quot;p3.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;y=z&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y=z&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Moreover, &lt;math id=&quot;p3.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{dom}(f)=\bigcup_{n\in\mathbb{N}}\operatorname{dom}(f_{n})=P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{dom}(f)=\bigcup_{n\in\mathbb{N}}\operatorname{dom}(f_{n})=P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p3.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{ran}(f)=\bigcup_{n\in\mathbb{N}}\operatorname{ran}(f_{n})=
\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;ran&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo&gt;ran&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{ran}(f)=\bigcup_{n\in\mathbb{N}}\operatorname{ran}(f_{n})=
\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Finally,
for any &lt;math id=&quot;p3.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;x,y\in P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x,y\in P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; there is &lt;math id=&quot;p3.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; large enough such that
&lt;math id=&quot;p3.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;x,y\in\operatorname{dom}(f_{n})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x,y\in\operatorname{dom}(f_{n})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p3.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;y\Leftrightarrow f_{n}(x)&amp;lt;f_{n}(y)\Leftrightarrow f(x)&amp;lt;f(y)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;⇔&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⇔&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;y\Leftrightarrow f_{n}(x)&amp;lt;f_{n}(y)\Leftrightarrow f(x)&amp;lt;f(y)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence &lt;math id=&quot;p3.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;f&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an isomorphism between &lt;math id=&quot;p3.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;(P,&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(P,&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and &lt;math id=&quot;p3.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;(\mathbb{Q},&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(\mathbb{Q},&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p4&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Thus let &lt;math id=&quot;p4.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{0}=\emptyset&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{0}=\emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If &lt;math id=&quot;p4.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is defined, we construct
&lt;math id=&quot;p4.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{n+1}\supseteq f_{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{n+1}\supseteq f_{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; as follows. Suppose &lt;math id=&quot;p4.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;p_{n}\notin\operatorname{dom}(f_{n})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∉&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p_{n}\notin\operatorname{dom}(f_{n})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If
&lt;math id=&quot;p4.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall i&amp;lt;n,p_{n}&amp;gt;p_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall i&amp;lt;n,p_{n}&amp;gt;p_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then because &lt;math id=&quot;p4.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is unbounded we can consider
the least &lt;math id=&quot;p4.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;n_{0}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n_{0}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p4.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall i&amp;lt;n,f(p_{i})&amp;lt;q_{n_{0}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall i&amp;lt;n,f(p_{i})&amp;lt;q_{n_{0}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and set
&lt;math id=&quot;p4.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{n+1}(p_{n})=q_{n_{0}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{n+1}(p_{n})=q_{n_{0}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Similarly if &lt;math id=&quot;p4.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall i&amp;lt;n,p_{n}&amp;lt;p_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall i&amp;lt;n,p_{n}&amp;lt;p_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Otherwise,
let &lt;math id=&quot;p4.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;i_{1},i_{2}&amp;lt;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;i_{1},i_{2}&amp;lt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p4.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;p_{i_{1}}&amp;lt;p_{n}&amp;lt;p_{i_{2}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p_{i_{1}}&amp;lt;p_{n}&amp;lt;p_{i_{2}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
with &lt;math id=&quot;p4.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;p_{i_{1}},p_{i_{2}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p_{i_{1}},p_{i_{2}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; respectively the largest and smallest possible.
Because &lt;math id=&quot;p4.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is dense we can consider the least &lt;math id=&quot;p4.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;n_{0}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n_{0}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
&lt;math id=&quot;p4.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{n}(p_{i_{1}})&amp;lt;q_{n_{0}}&amp;lt;f_{n}(p_{i_{2}})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{n}(p_{i_{1}})&amp;lt;q_{n_{0}}&amp;lt;f_{n}(p_{i_{2}})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and again set
&lt;math id=&quot;p4.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{n+1}(p_{n})=q_{n_{0}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{n+1}(p_{n})=q_{n_{0}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Similarly, if &lt;math id=&quot;p4.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;n\neq n_{0}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\neq n_{0}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we use the fact that
&lt;math id=&quot;p4.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is unbounded and dense to find &lt;math id=&quot;p4.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;m_{0}\geq n+1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m_{0}\geq n+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; that allows to define
&lt;math id=&quot;p4.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{n+1}(p_{m_{0}})=q_{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{n+1}(p_{m_{0}})=q_{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and ensures &lt;math id=&quot;p4.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{n+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{n+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is order-preserving.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p5&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;∎&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p6&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We now notice that &lt;math id=&quot;p6.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{R}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{R}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is linearly ordered, unbounded, dense and has the
least upper-bound property (that is any nonempty bounded subset of &lt;math id=&quot;p6.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{R}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{R}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has
a least upper-bound). Moreover, the subset &lt;math id=&quot;p6.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is countable and dense in
&lt;math id=&quot;p6.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{R}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{R}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
(that is for any &lt;math id=&quot;p6.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;x,y\in\mathbb{R}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x,y\in\mathbb{R}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p6.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we can find &lt;math id=&quot;p6.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;z\in\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;z\in\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
such that &lt;math id=&quot;p6.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;z&amp;lt;y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;z&amp;lt;y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;). Using the previous lemma, we deduce again that these
order properties give a characterization of the set of reals:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem1&quot; class=&quot;ltx_theorem ltx_theorem_theorem&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Theorem 0.1&lt;/span&gt;.&lt;/h6&gt;
&lt;div id=&quot;S0.Thmtheorem1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Let &lt;math id=&quot;S0.Thmtheorem1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;(R,&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(R,&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be an unbounded, dense and linearly ordered set with the
least upper-bound property. Suppose that &lt;math id=&quot;S0.Thmtheorem1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has a dense countable subset
&lt;math id=&quot;S0.Thmtheorem1.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then &lt;math id=&quot;S0.Thmtheorem1.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;(R,&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(R,&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is isomorphic to &lt;math id=&quot;S0.Thmtheorem1.p1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;(\mathbb{R},&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(\mathbb{R},&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;ltx_proof&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_italic ltx_title_proof&quot;&gt;Proof.&lt;/h6&gt;
&lt;div id=&quot;p7&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;p7.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is countable by assumption and since &lt;math id=&quot;p7.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;P\subseteq R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P\subseteq R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; it is also
linearly ordered. If &lt;math id=&quot;p7.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;x,y\in P\subseteq R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x,y\in P\subseteq R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p7.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then by density
of &lt;math id=&quot;p7.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in &lt;math id=&quot;p7.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; there is &lt;math id=&quot;p7.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;z\in P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;z\in P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p7.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;z&amp;lt;y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;z&amp;lt;y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So &lt;math id=&quot;p7.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is actually
dense. Similarly, if &lt;math id=&quot;p7.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in P\subseteq R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in P\subseteq R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then since &lt;math id=&quot;p7.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is unbounded
there is &lt;math id=&quot;p7.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;y_{1},y_{2}\in R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y_{1},y_{2}\in R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p7.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;y_{2}&amp;lt;x&amp;lt;y_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y_{2}&amp;lt;x&amp;lt;y_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and again
by density of &lt;math id=&quot;p7.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in &lt;math id=&quot;p7.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we can find &lt;math id=&quot;p7.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;z_{1},z_{2}\in P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;z_{1},z_{2}\in P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
&lt;math id=&quot;p7.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;y_{2}&amp;lt;z_{2}&amp;lt;x&amp;lt;z_{1}&amp;lt;y_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y_{2}&amp;lt;z_{2}&amp;lt;x&amp;lt;z_{1}&amp;lt;y_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So &lt;math id=&quot;p7.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is unbounded. By the previous lemma,
there is an isomorphism of ordered sets &lt;math id=&quot;p7.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;f:P\rightarrow\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f:P\rightarrow\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p8&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We define for all &lt;math id=&quot;p8.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
&lt;math id=&quot;p8.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}(x)=\sup_{y\in P;y&amp;lt;x}f(y)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}(x)=\sup_{y\in P;y&amp;lt;x}f(y)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Because &lt;math id=&quot;p8.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is dense in &lt;math id=&quot;p8.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p8.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{R}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{R}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has the least upper bound property this is well-defined.
If &lt;math id=&quot;p8.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then for all &lt;math id=&quot;p8.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;y&amp;lt;x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y&amp;lt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p8.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;y\in P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y\in P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we have
&lt;math id=&quot;p8.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;f(y)&amp;lt;f(x)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f(y)&amp;lt;f(x)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p8.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}(x)\leq f(x)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}(x)\leq f(x)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If &lt;math id=&quot;p8.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}(x)&amp;lt;f(x)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}(x)&amp;lt;f(x)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
we could find (by density of &lt;math id=&quot;p8.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in &lt;math id=&quot;p8.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{R}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{R}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) an element &lt;math id=&quot;p8.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;q\in\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q\in\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such
that &lt;math id=&quot;p8.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}(x)&amp;lt;q&amp;lt;f(x)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}(x)&amp;lt;q&amp;lt;f(x)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. For &lt;math id=&quot;p8.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;p=f^{-1}(q)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p=f^{-1}(q)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we get &lt;math id=&quot;p8.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;p&amp;lt;x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p&amp;lt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
&lt;math id=&quot;p8.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;q=f(p)\leq f_{\star}(x)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q=f(p)\leq f_{\star}(x)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. A contradiction. So &lt;math id=&quot;p8.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;{f_{\star}}_{|P}=f&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mmultiscripts&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;none&gt;&lt;/none&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;none&gt;&lt;/none&gt;&lt;/mmultiscripts&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{f_{\star}}_{|P}=f&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p9&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Let &lt;math id=&quot;p9.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;x,y\in R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x,y\in R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p9.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Because &lt;math id=&quot;p9.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;f&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is increasing we
get &lt;math id=&quot;p9.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}(x)\leq f_{\star}(y)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}(x)\leq f_{\star}(y)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. By density of &lt;math id=&quot;p9.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in &lt;math id=&quot;p9.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we can
find &lt;math id=&quot;p9.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;p_{1},p_{2}\in P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p_{1},p_{2}\in P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p9.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;p_{1}&amp;lt;p_{2}&amp;lt;y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;p_{1}&amp;lt;p_{2}&amp;lt;y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Again, we get
&lt;math id=&quot;p9.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}(x)\leq f_{\star}(p_{1})=p_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}(x)\leq f_{\star}(p_{1})=p_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p9.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;p_{2}=f_{\star}(p_{2})\leq f_{\star}(y)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p_{2}=f_{\star}(p_{2})\leq f_{\star}(y)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence we actually have
&lt;math id=&quot;p9.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}(x)&amp;lt;f_{\star}(y)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}(x)&amp;lt;f_{\star}(y)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. In particular, &lt;math id=&quot;p9.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is one-to-one.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p10&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We shall prove that &lt;math id=&quot;p10.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is surjective. Of course
&lt;math id=&quot;p10.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}(P)=f(P)=\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}(P)=f(P)=\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so let’s consider
&lt;math id=&quot;p10.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;r\in\mathbb{R}\setminus\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r\in\mathbb{R}\setminus\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Define
&lt;math id=&quot;p10.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;x=\sup_{q&amp;lt;r:q\in\mathbb{Q}}f^{-1}(q)\in R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x=\sup_{q&amp;lt;r:q\in\mathbb{Q}}f^{-1}(q)\in R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
This is well-defined because &lt;math id=&quot;p10.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is dense in &lt;math id=&quot;p10.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{R}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{R}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p10.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has the
the least upper bound property. Then for all &lt;math id=&quot;p10.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;q&amp;lt;r&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q&amp;lt;r&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p10.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;q\in\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q\in\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
we have &lt;math id=&quot;p10.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;f^{-1}(q)\leq x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f^{-1}(q)\leq x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by definition.
By density of &lt;math id=&quot;p10.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in &lt;math id=&quot;p10.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{R}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{R}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we can actually find &lt;math id=&quot;p10.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;q^{\prime}\in\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q^{\prime}\in\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
&lt;math id=&quot;p10.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;q&amp;lt;q^{\prime}&amp;lt;r&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q&amp;lt;q^{\prime}&amp;lt;r&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p10.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;f^{-1}(q)&amp;lt;f^{-1}(q^{\prime})\leq x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f^{-1}(q)&amp;lt;f^{-1}(q^{\prime})\leq x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We have
&lt;math id=&quot;p10.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;gt;f^{-1}(q)\in P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;gt;f^{-1}(q)\in P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
&lt;math id=&quot;p10.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}(x)\geq f(f^{-1}(q))=q&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}(x)\geq f(f^{-1}(q))=q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence &lt;math id=&quot;p10.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}(x)\geq r&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}(x)\geq r&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Suppose that &lt;math id=&quot;p10.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;r&amp;lt;f_{\star}(x)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r&amp;lt;f_{\star}(x)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and consider
(by density of &lt;math id=&quot;p10.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in &lt;math id=&quot;p10.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{R}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{R}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) some
&lt;math id=&quot;p10.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;q\in\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q\in\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p10.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;r&amp;lt;q&amp;lt;f_{\star}(x)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r&amp;lt;q&amp;lt;f_{\star}(x)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and let &lt;math id=&quot;p10.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;p=f^{-1}(q)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p=f^{-1}(q)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
If &lt;math id=&quot;p10.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;p&amp;lt;x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p&amp;lt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then there is &lt;math id=&quot;p10.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;q^{\prime}\in\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q^{\prime}\in\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;p10.m27&quot; class=&quot;ltx_Math&quot; alttext=&quot;q^{\prime}&amp;lt;r&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q^{\prime}&amp;lt;r&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, such that
&lt;math id=&quot;p10.m28&quot; class=&quot;ltx_Math&quot; alttext=&quot;p\leq f^{-1}(q^{\prime})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p\leq f^{-1}(q^{\prime})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then &lt;math id=&quot;p10.m29&quot; class=&quot;ltx_Math&quot; alttext=&quot;r&amp;lt;q=f(p)\leq q^{\prime}&amp;lt;r&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r&amp;lt;q=f(p)\leq q^{\prime}&amp;lt;r&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; a contradiction.
If instead &lt;math id=&quot;p10.m30&quot; class=&quot;ltx_Math&quot; alttext=&quot;p\geq x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p\geq x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then
&lt;math id=&quot;p10.m31&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}(x)\leq f_{\star}(p)=q&amp;lt;f_{\star}(x)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}(x)\leq f_{\star}(p)=q&amp;lt;f_{\star}(x)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which is again a
contradiction.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p11&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Finally, let &lt;math id=&quot;p11.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;x,y\in R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x,y\in R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p11.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}(x)&amp;lt;f_{\star}(y)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}(x)&amp;lt;f_{\star}(y)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Because
&lt;math id=&quot;p11.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is totally ordered either &lt;math id=&quot;p11.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or &lt;math id=&quot;p11.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;y&amp;lt;x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y&amp;lt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. But the latter is
impossible since we saw above that it implied &lt;math id=&quot;p11.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}(y)&amp;lt;f_{\star}(x)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}(y)&amp;lt;f_{\star}(x)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Hence &lt;math id=&quot;p11.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{\star}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{\star}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an isomorphism between &lt;math id=&quot;p11.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;(R,&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(R,&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p11.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;(\mathbb{R},&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(\mathbb{R},&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p12&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;∎&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p13&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Now consider a totally ordered set &lt;math id=&quot;p13.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;(R,&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(R,&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. For any &lt;math id=&quot;p13.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;a,b&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a,b&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we define
the open interval &lt;math id=&quot;p13.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;(a,b)=\{x\in R:a&amp;lt;x&amp;lt;b\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(a,b)=\{x\in R:a&amp;lt;x&amp;lt;b\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Suppose
&lt;math id=&quot;p13.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;P=\{p_{n}:n\in\mathbb{N}\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P=\{p_{n}:n\in\mathbb{N}\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a dense subset of &lt;math id=&quot;p13.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
If &lt;math id=&quot;p13.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\left((a_{i},b_{i})\right)}_{i\in I}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\left((a_{i},b_{i})\right)}_{i\in I}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
is a family of pairwise disjoint open intervals
then we can associate to any &lt;math id=&quot;p13.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;(a_{i},b_{i})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(a_{i},b_{i})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the least &lt;math id=&quot;p13.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;n_{i}\in\mathbb{N}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n_{i}\in\mathbb{N}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
&lt;math id=&quot;p13.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;p_{n_{i}}\in(a_{i},b_{i})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p_{n_{i}}\in(a_{i},b_{i})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (by density of &lt;math id=&quot;p13.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in &lt;math id=&quot;p13.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;). Since the family is
disjoint the function &lt;math id=&quot;p13.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;i\mapsto n_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;↦&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;i\mapsto n_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; obtained is one-to-one and so the
family is at most countable. One naturally wonders what happens if we
replace in theorem &lt;a href=&quot;#S0.Thmtheorem1&quot; title=&quot;Theorem 0.1. ‣ Suslin’s Problem&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.1&lt;/span&gt;&lt;/a&gt;
the existence of a countable dense subset by this
weaker property on open intervals:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmproblem1&quot; class=&quot;ltx_theorem ltx_theorem_problem&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Problem 0.1&lt;/span&gt; (Suslin’s Problem).&lt;/h6&gt;
&lt;div id=&quot;S0.Thmproblem1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Let &lt;math id=&quot;S0.Thmproblem1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;(R,&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(R,&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be an unbounded, dense and linearly ordered set with the
least upper-bound property. Suppose that any family of disjoint open
intervals in &lt;math id=&quot;S0.Thmproblem1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is at most countable. Is &lt;math id=&quot;S0.Thmproblem1.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;(R,&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(R,&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; isomorphic to
&lt;math id=&quot;S0.Thmproblem1.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;(\mathbb{R},&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(\mathbb{R},&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;?&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p14&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We have seen how this problem arises from a natural generalization of
a characterization of &lt;math id=&quot;p14.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{R}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{R}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We note that we did not use the Axiom of Choice
in the above analysis and that the problem can be expressed using only
definitions on ordered sets. However, in order to answer Suslin’s Problem
we will need to introduce more concepts. We will assume familiarity with
basic notions of Set Theory like ordinals, cardinals or the Axiom of Choice.
The first five chapters of Thomas Jech’s book ‘‘Set Theory’’ should be enough.
In addition, we will rely on the axiom &lt;math id=&quot;p14.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathrm{MA}_{\aleph_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;MA&lt;/mi&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathrm{MA}_{\aleph_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and on the
Diamond Principle &lt;math id=&quot;p14.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Diamond&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;◇&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Diamond&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, that we define here:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmdefinition1&quot; class=&quot;ltx_theorem ltx_theorem_definition&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Definition 0.1&lt;/span&gt; (Martin’s Axiom &lt;math id=&quot;S0.Thmdefinition1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\aleph_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn mathvariant=&quot;normal&quot;&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\aleph_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, Diamond Principle).&lt;/h6&gt;
&lt;div id=&quot;S0.Thmdefinition1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;S0.Thmdefinition1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathrm{MA}_{\aleph_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;MA&lt;/mi&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathrm{MA}_{\aleph_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; and &lt;math id=&quot;S0.Thmdefinition1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Diamond&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;◇&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Diamond&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are defined as follows:&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmdefinition1.p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;ul id=&quot;I1&quot; class=&quot;ltx_itemize&quot;&gt;
&lt;li id=&quot;I1.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;•&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Let &lt;/span&gt;&lt;math id=&quot;I1.i1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;(P,&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(P,&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; be a partially ordered set. Two elements &lt;/span&gt;&lt;math id=&quot;I1.i1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;x,y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x,y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; are
compatible if there is &lt;/span&gt;&lt;math id=&quot;I1.i1.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;z&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;z&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; such that &lt;/span&gt;&lt;math id=&quot;I1.i1.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;z\leq x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;z\leq x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; and &lt;/span&gt;&lt;math id=&quot;I1.i1.p1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;z\leq y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;z\leq y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;.
Note that comparable implies compatible.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;•&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;I1.i2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; is dense in &lt;/span&gt;&lt;math id=&quot;I1.i2.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; if
for any &lt;/span&gt;&lt;math id=&quot;I1.i2.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;p\in P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p\in P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; there is &lt;/span&gt;&lt;math id=&quot;I1.i2.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;d\in D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;d\in D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; such that &lt;/span&gt;&lt;math id=&quot;I1.i2.p1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;d\leq p&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;d\leq p&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i3&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;•&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;I1.i3.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;G\subseteq P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G\subseteq P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;
is a filter if:&lt;/span&gt;&lt;/p&gt;
&lt;ul id=&quot;I1.I1&quot; class=&quot;ltx_itemize&quot;&gt;
&lt;li id=&quot;I1.I1.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_bold&quot;&gt;–&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.I1.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;I1.I1.i1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;G\neq\emptyset&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G\neq\emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.I1.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_bold&quot;&gt;–&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.I1.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;For any &lt;/span&gt;&lt;math id=&quot;I1.I1.i2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;p,q\in P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p,q\in P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; such that
&lt;/span&gt;&lt;math id=&quot;I1.I1.i2.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;p\leq q&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p\leq q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; and &lt;/span&gt;&lt;math id=&quot;I1.I1.i2.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;p\in G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p\in G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; we have &lt;/span&gt;&lt;math id=&quot;I1.I1.i2.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;q\in G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q\in G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.I1.i3&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_bold&quot;&gt;–&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.I1.i3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Any &lt;/span&gt;&lt;math id=&quot;I1.I1.i3.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;p,q\in G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p,q\in G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; there is &lt;/span&gt;&lt;math id=&quot;I1.I1.i3.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;r\in G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r\in G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; such that &lt;/span&gt;&lt;math id=&quot;I1.I1.i3.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;r\leq p,q&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;r\leq p,q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i4&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;•&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i4.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;I1.i4.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathrm{MA}_{\aleph_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;MA&lt;/mi&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathrm{MA}_{\aleph_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;: Let &lt;/span&gt;&lt;math id=&quot;I1.i4.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;(P,&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(P,&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;
be a partially ordered set such that any subset of paiwise
incompatible elements of &lt;/span&gt;&lt;math id=&quot;I1.i4.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; is at most countable. Then for any
family of at most &lt;/span&gt;&lt;math id=&quot;I1.i4.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\aleph_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\aleph_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; dense subsets there is a filter
&lt;/span&gt;&lt;math id=&quot;I1.i4.p1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;G\subseteq P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G\subseteq P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;
that has a nonempty intersection with each element of this family.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i5&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;•&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i5.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;A set &lt;/span&gt;&lt;math id=&quot;I1.i5.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;C\subseteq\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C\subseteq\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; is closed unbounded if&lt;/span&gt;&lt;/p&gt;
&lt;ul id=&quot;I1.I2&quot; class=&quot;ltx_itemize&quot;&gt;
&lt;li id=&quot;I1.I2.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_bold&quot;&gt;–&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.I2.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;It is unbounded in the sense that
for any &lt;/span&gt;&lt;math id=&quot;I1.I2.i1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; there is &lt;/span&gt;&lt;math id=&quot;I1.I2.i1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta\in C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta\in C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; such that
&lt;/span&gt;&lt;math id=&quot;I1.I2.i1.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.I2.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_bold&quot;&gt;–&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.I2.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;It is closed for the order topology, or equivalently
if for any &lt;/span&gt;&lt;math id=&quot;I1.I2.i2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; and any &lt;/span&gt;&lt;math id=&quot;I1.I2.i2.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;-sequence
&lt;/span&gt;&lt;math id=&quot;I1.I2.i2.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha_{0}&amp;lt;\alpha_{1}&amp;lt;...&amp;lt;\alpha_{\xi}&amp;lt;...&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha_{0}&amp;lt;\alpha_{1}&amp;lt;...&amp;lt;\alpha_{\xi}&amp;lt;...&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;
of elements of &lt;/span&gt;&lt;math id=&quot;I1.I2.i2.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;, &lt;/span&gt;&lt;math id=&quot;I1.I2.i2.p1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lim_{\xi\rightarrow\gamma}\alpha_{\xi}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;lim&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lim_{\xi\rightarrow\gamma}\alpha_{\xi}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; is
in &lt;/span&gt;&lt;math id=&quot;I1.I2.i2.p1.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i6&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;•&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i6.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;A set &lt;/span&gt;&lt;math id=&quot;I1.i6.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;S\subseteq\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S\subseteq\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; is stationary if for any &lt;/span&gt;&lt;math id=&quot;I1.i6.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;
closed unbounded, &lt;/span&gt;&lt;math id=&quot;I1.i6.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;S\cap C\neq\emptyset&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S\cap C\neq\emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i7&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;•&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i7.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;I1.i7.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Diamond&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;◇&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Diamond&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;: There is an &lt;/span&gt;&lt;math id=&quot;I1.i7.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;-sequence of sets
&lt;/span&gt;&lt;math id=&quot;I1.i7.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;S_{\alpha}\subseteq\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S_{\alpha}\subseteq\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; such that for every &lt;/span&gt;&lt;math id=&quot;I1.i7.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;X\subseteq\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X\subseteq\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;
the set &lt;/span&gt;&lt;math id=&quot;I1.i7.p1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\{\alpha&amp;lt;\omega_{1}:X\cap\alpha=S_{\alpha}\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\{\alpha&amp;lt;\omega_{1}:X\cap\alpha=S_{\alpha}\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; is
stationary.
&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p15&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;First we show that if &lt;math id=&quot;p15.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathrm{MA}_{\aleph_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;MA&lt;/mi&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathrm{MA}_{\aleph_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; holds, then we get a positive
answer to Suslin’s problem:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem2&quot; class=&quot;ltx_theorem ltx_theorem_theorem&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Theorem 0.2&lt;/span&gt;.&lt;/h6&gt;
&lt;div id=&quot;S0.Thmtheorem2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Assume Martin’s axiom &lt;math id=&quot;S0.Thmtheorem2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathrm{MA}_{\aleph_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;MA&lt;/mi&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn mathvariant=&quot;normal&quot;&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathrm{MA}_{\aleph_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; holds.
Let &lt;math id=&quot;S0.Thmtheorem2.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;(R,&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(R,&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be an unbounded, dense and linearly ordered set with the
least upper-bound property. Suppose that any disjoint family of open
intervals in &lt;math id=&quot;S0.Thmtheorem2.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is at most countable. Then &lt;math id=&quot;S0.Thmtheorem2.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;(R,&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(R,&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is isomorphic
to &lt;math id=&quot;S0.Thmtheorem2.p1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;(\mathbb{R},&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(\mathbb{R},&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;ltx_proof&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_italic ltx_title_proof&quot;&gt;Proof.&lt;/h6&gt;
&lt;div id=&quot;p16&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Suppose &lt;math id=&quot;p16.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;(R,&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(R,&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not isomorphic to &lt;math id=&quot;p16.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;(\mathbb{R},&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(\mathbb{R},&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and in particular
does not have any countable dense subset (otherwise we could apply
theorem &lt;a href=&quot;#S0.Thmtheorem1&quot; title=&quot;Theorem 0.1. ‣ Suslin’s Problem&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.1&lt;/span&gt;&lt;/a&gt;).
We define closed intervals &lt;math id=&quot;p16.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{\alpha}\subseteq R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{\alpha}\subseteq R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by induction on
&lt;math id=&quot;p16.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If &lt;math id=&quot;p16.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{\beta}=[a_{\beta},b_{\beta}]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{\beta}=[a_{\beta},b_{\beta}]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
is defined for all &lt;math id=&quot;p16.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
then the set &lt;math id=&quot;p16.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;C=\{a_{\beta}:\beta&amp;lt;\alpha\}\cup\{b_{\beta}:\beta&amp;lt;\alpha\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C=\{a_{\beta}:\beta&amp;lt;\alpha\}\cup\{b_{\beta}:\beta&amp;lt;\alpha\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is countable and thus is not dense in &lt;math id=&quot;p16.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Then there is &lt;math id=&quot;p16.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{\alpha}&amp;lt;b_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{\alpha}&amp;lt;b_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
&lt;math id=&quot;p16.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{\alpha}=[a_{\alpha},b_{\alpha}]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{\alpha}=[a_{\alpha},b_{\alpha}]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is disjoint from &lt;math id=&quot;p16.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We define the set
&lt;math id=&quot;p16.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;S=\{I_{\alpha},\alpha&amp;lt;\omega_{1}\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S=\{I_{\alpha},\alpha&amp;lt;\omega_{1}\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Clearly,
&lt;math id=&quot;p16.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;|S|=\aleph_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;|S|=\aleph_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p16.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;(S,\subsetneq)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;⊊&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(S,\subsetneq)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is partially ordered.
We note that if &lt;math id=&quot;p16.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then by construction
&lt;math id=&quot;p16.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{\beta},b_{\beta}\notin I_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∉&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{\beta},b_{\beta}\notin I_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so either
&lt;math id=&quot;p16.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{\alpha}\cap I_{\beta}=\emptyset&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{\alpha}\cap I_{\beta}=\emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or &lt;math id=&quot;p16.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{\alpha}\subsetneq I_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⊊&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{\alpha}\subsetneq I_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
In particular, comparable is the same as compatible in &lt;math id=&quot;p16.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
any family of pairwise incomparable/incompatible elements of &lt;math id=&quot;p16.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
is a family of pairwise disjoint intervals of &lt;math id=&quot;p16.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so at most countable.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p17&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Let &lt;math id=&quot;p17.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and define &lt;math id=&quot;p17.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;P_{I_{\alpha}}=\{I\in S:I\supsetneq I_{\alpha}\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mo&gt;⊋&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_{I_{\alpha}}=\{I\in S:I\supsetneq I_{\alpha}\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Let &lt;math id=&quot;p17.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;X\subseteq P_{I_{\alpha}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X\subseteq P_{I_{\alpha}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
nonempty. Let &lt;math id=&quot;p17.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the least ordinal such that &lt;math id=&quot;p17.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{\beta}\in X&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{\beta}\in X&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If
&lt;math id=&quot;p17.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{\gamma}\in X&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{\gamma}\in X&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math id=&quot;p17.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta\leq\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta\leq\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p17.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{\gamma}\cap I_{\beta}\supseteq I_{\alpha}\neq\emptyset&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{\gamma}\cap I_{\beta}\supseteq I_{\alpha}\neq\emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence by
the previous remark &lt;math id=&quot;p17.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{\beta}\supseteq I_{\gamma}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{\beta}\supseteq I_{\gamma}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So
&lt;math id=&quot;p17.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;P_{I_{\alpha}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_{I_{\alpha}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is well-ordered by &lt;math id=&quot;p17.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;\supseteq&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\supseteq&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
we define &lt;math id=&quot;p17.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;o(I_{\alpha})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o(I_{\alpha})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the order-type of &lt;math id=&quot;p17.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;P_{I_{\alpha}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_{I_{\alpha}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
We note that the set &lt;math id=&quot;p17.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;P_{I_{\alpha}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_{I_{\alpha}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be enumerated by
&lt;math id=&quot;p17.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{\alpha_{1}}\supsetneq I_{\alpha_{2}}\supsetneq...\supsetneq I_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;⊋&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;⊋&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;⊋&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{\alpha_{1}}\supsetneq I_{\alpha_{2}}\supsetneq...\supsetneq I_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
for some &lt;math id=&quot;p17.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha_{\xi}\leq\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha_{\xi}\leq\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p17.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;o(I_{\alpha})&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o(I_{\alpha})&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Moreover for any &lt;math id=&quot;p17.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha,\beta&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha,\beta&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
if &lt;math id=&quot;p17.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{\alpha}\supsetneq I_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⊋&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{\alpha}\supsetneq I_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then
&lt;math id=&quot;p17.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;P_{I_{\alpha}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_{I_{\alpha}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an initial segment of &lt;math id=&quot;p17.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;P_{I_{\beta}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_{I_{\beta}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
&lt;math id=&quot;p17.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;o(I_{\alpha})&amp;lt;o(I_{\beta})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o(I_{\alpha})&amp;lt;o(I_{\beta})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Hence for each &lt;math id=&quot;p17.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the set
&lt;math id=&quot;p17.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;L_{\alpha}=\{I\in S:o(I)=\alpha\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;L_{\alpha}=\{I\in S:o(I)=\alpha\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has pairwise incomparable
elements and so is at most countable.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p18&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;For any &lt;math id=&quot;p18.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;I\in S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I\in S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, define &lt;math id=&quot;p18.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;S_{I}=\{J\in S:J\subseteq I\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;J&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;J&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S_{I}=\{J\in S:J\subseteq I\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and let &lt;math id=&quot;p18.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;T=\{I\in S:|S_{I}|=\aleph_{1}\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T=\{I\in S:|S_{I}|=\aleph_{1}\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Let &lt;math id=&quot;p18.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and suppose that &lt;math id=&quot;p18.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;L_{\alpha}\cap T=\emptyset&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;L_{\alpha}\cap T=\emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then
&lt;math id=&quot;p18.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;S=\bigcup_{\beta&amp;lt;\alpha}L_{\beta}\cup\bigcup_{I\in L_{\alpha}}S_{I}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S=\bigcup_{\beta&amp;lt;\alpha}L_{\beta}\cup\bigcup_{I\in L_{\alpha}}S_{I}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
since the
&lt;math id=&quot;p18.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;L_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;L_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are at most countable for &lt;math id=&quot;p18.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and the
&lt;math id=&quot;p18.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;S_{I}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S_{I}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are at most countable for &lt;math id=&quot;p18.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;I\in L_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I\in L_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we would
have &lt;math id=&quot;p18.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; at most countable, a contradiction. So for each
&lt;math id=&quot;p18.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, there is &lt;math id=&quot;p18.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;I\in T\cap L_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I\in T\cap L_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and in particular
&lt;math id=&quot;p18.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;|T|=\aleph_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;|T|=\aleph_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We note that if &lt;math id=&quot;p18.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;I\in T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I\in T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p18.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;J\supseteq I&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;J&lt;/mi&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;J\supseteq I&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then
&lt;math id=&quot;p18.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;S_{I}\subseteq S_{J}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;J&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S_{I}\subseteq S_{J}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p18.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;J\in T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;J&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;J\in T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. In particular,
&lt;math id=&quot;p18.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;P_{I}=\{J\in T:J\supsetneq I\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;J&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;J&lt;/mi&gt;&lt;mo&gt;⊋&lt;/mo&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_{I}=\{J\in T:J\supsetneq I\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and thus without loss of generality
we may assume that &lt;math id=&quot;p18.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;S=T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S=T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p19&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;For any &lt;math id=&quot;p19.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; let
&lt;math id=&quot;p19.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;D_{\alpha}=\{I\in D_{\alpha}:o(I)&amp;gt;\alpha\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D_{\alpha}=\{I\in D_{\alpha}:o(I)&amp;gt;\alpha\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. For any &lt;math id=&quot;p19.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;I\in S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I\in S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
&lt;math id=&quot;p19.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;|S_{I}|=\aleph_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;|S_{I}|=\aleph_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p19.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;S_{I}=\left(\bigcup_{\beta\leq\alpha}S_{I}\cap L_{\beta}\right)\cup S_{I}\cap D
_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S_{I}=\left(\bigcup_{\beta\leq\alpha}S_{I}\cap L_{\beta}\right)\cup S_{I}\cap D
_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. The first term is at most countable and so the
second is uncountable and a fortiori nonempty. So &lt;math id=&quot;p19.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;D_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a dense
subset of &lt;math id=&quot;p19.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p20&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Using &lt;math id=&quot;p20.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathrm{MA}_{\aleph_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;MA&lt;/mi&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathrm{MA}_{\aleph_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we find &lt;math id=&quot;p20.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;G\subseteq S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G\subseteq S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; a filter that
intersects each &lt;math id=&quot;p20.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;D_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. By definition, elements of a filter are
pairwise compatible and so pairwise comparable.
Let us construct by induction
on &lt;math id=&quot;p20.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, some sets &lt;math id=&quot;p20.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;J_{\alpha}\in G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;J&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;J_{\alpha}\in G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If &lt;math id=&quot;p20.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;J_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;J&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;J_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is
constructed for any &lt;math id=&quot;p20.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then
&lt;math id=&quot;p20.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma=\sup_{\beta&amp;lt;\alpha}o(J_{\beta})&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;J&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma=\sup_{\beta&amp;lt;\alpha}o(J_{\beta})&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and we can pick
&lt;math id=&quot;p20.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;J_{\alpha}\in G\cap D_{\gamma}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;J&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;J_{\alpha}\in G\cap D_{\gamma}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We obtain a decreasing &lt;math id=&quot;p20.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-sequence
of intervals
&lt;math id=&quot;p20.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;J_{0}\supsetneq J_{1}\supsetneq...\supsetneq J_{\alpha}\supsetneq...&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;J&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⊋&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;J&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⊋&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;⊋&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;J&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⊋&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;J_{0}\supsetneq J_{1}\supsetneq...\supsetneq J_{\alpha}\supsetneq...&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
If &lt;math id=&quot;p20.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;J_{\alpha}=[x_{\alpha},y_{\alpha}]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;J&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;J_{\alpha}=[x_{\alpha},y_{\alpha}]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then this gives an increasing sequence
&lt;math id=&quot;p20.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;x_{0}&amp;lt;x_{1}&amp;lt;x_{2}&amp;lt;...&amp;lt;x_{\alpha}&amp;lt;...&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x_{0}&amp;lt;x_{1}&amp;lt;x_{2}&amp;lt;...&amp;lt;x_{\alpha}&amp;lt;...&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. The sets
&lt;math id=&quot;p20.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;(x_{\alpha},x_{\alpha+1})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(x_{\alpha},x_{\alpha+1})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; form an uncountable family of disjoint open
intervals. A contradiction.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p21&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;∎&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p22&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Finally, we show that the &lt;math id=&quot;p22.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Diamond&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;◇&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Diamond&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; principle provides a negative answer to
Suslin’s problem:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem3&quot; class=&quot;ltx_theorem ltx_theorem_theorem&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Theorem 0.3&lt;/span&gt;.&lt;/h6&gt;
&lt;div id=&quot;S0.Thmtheorem3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Assume the &lt;math id=&quot;S0.Thmtheorem3.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Diamond&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;◇&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Diamond&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; principle holds.
Then there is a linearly ordered set &lt;math id=&quot;S0.Thmtheorem3.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;(R,&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(R,&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; not isomorphic to &lt;math id=&quot;S0.Thmtheorem3.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;(\mathbb{R},&amp;lt;)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;,&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot;&gt;&amp;lt;&lt;/mo&gt;&lt;mo mathvariant=&quot;normal&quot; stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(\mathbb{R},&amp;lt;)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
unbounded, dense, that has the least upper-bound property and
such that any family of disjoint open intervals is at most countable.
&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;ltx_proof&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_italic ltx_title_proof&quot;&gt;Proof.&lt;/h6&gt;
&lt;div id=&quot;p23&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Let &lt;math id=&quot;p23.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{(S_{\alpha})}_{\alpha&amp;lt;\omega_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(S_{\alpha})}_{\alpha&amp;lt;\omega_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be a &lt;math id=&quot;p23.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Diamond&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;◇&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Diamond&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-sequence.
We first construct a partial ordering &lt;math id=&quot;p23.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\prec&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\prec&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of &lt;math id=&quot;p23.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;T=\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T=\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
We define for all &lt;math id=&quot;p23.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;1\leq\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; an ordering
&lt;math id=&quot;p23.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;(T_{\alpha},\prec)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(T_{\alpha},\prec)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; on initial segments
&lt;math id=&quot;p23.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha}\subseteq\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha}\subseteq\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and obtain the ordering &lt;math id=&quot;p23.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\prec&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\prec&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; on
&lt;math id=&quot;p23.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega_{1}=T=\bigcup_{\alpha&amp;lt;\omega_{1}}T_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega_{1}=T=\bigcup_{\alpha&amp;lt;\omega_{1}}T_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p24&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Each &lt;math id=&quot;p24.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;(T_{\alpha},\prec)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(T_{\alpha},\prec)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; will be a tree i.e. for any &lt;math id=&quot;p24.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in the tree the set
&lt;math id=&quot;p24.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;P_{x}=\{y:y\prec x\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_{x}=\{y:y\prec x\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is well-ordered. As in the proof of
&lt;a href=&quot;#S0.Thmtheorem2&quot; title=&quot;Theorem 0.2. ‣ Suslin’s Problem&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.2&lt;/span&gt;&lt;/a&gt; we can define &lt;math id=&quot;p24.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;o(x)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o(x)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the order-type of &lt;math id=&quot;p24.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;P_{x}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_{x}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
The level &lt;math id=&quot;p24.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the set of elements such that &lt;math id=&quot;p24.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;o(x)=\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o(x)=\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
The height of a tree is defined as the supremium of the &lt;math id=&quot;p24.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;o(x)+1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o(x)+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
In a tree, a branch is a maximal linearly ordered subset and an antichain
a subset of pairwise incomparable elements. A branch is also well-ordered
and so we can define its length as its order-type.
&lt;math id=&quot;p24.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is constructed such that its height is &lt;math id=&quot;p24.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and for each &lt;math id=&quot;p24.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in T_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in T_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; there is some &lt;math id=&quot;p24.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;y\succ x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;≻&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y\succ x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; at each higher level
less than &lt;math id=&quot;p24.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p25&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We let &lt;math id=&quot;p25.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{1}=\{0\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{1}=\{0\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If &lt;math id=&quot;p25.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a limit ordinal then
&lt;math id=&quot;p25.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;(T_{\alpha},\prec)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(T_{\alpha},\prec)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the union of &lt;math id=&quot;p25.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;(T_{\beta},\prec)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(T_{\beta},\prec)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for &lt;math id=&quot;p25.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
If &lt;math id=&quot;p25.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha=\beta+1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha=\beta+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a successor ordinal, then the highest level
of &lt;math id=&quot;p25.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math id=&quot;p25.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;L_{\beta}=\{x\in T_{\alpha}:o(x)=\beta\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;L_{\beta}=\{x\in T_{\alpha}:o(x)=\beta\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
&lt;math id=&quot;p25.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is obtained by adding &lt;math id=&quot;p25.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\aleph_{0}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\aleph_{0}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; immediate
successors to each element of
&lt;math id=&quot;p25.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;L_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;L_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. These successors are taken from &lt;math id=&quot;p25.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in a way that
&lt;math id=&quot;p25.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an initial segment of &lt;math id=&quot;p25.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p26&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Let &lt;math id=&quot;p26.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a limit ordinal. Let &lt;math id=&quot;p26.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;A=S_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A=S_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if it is a maximal
antichain in &lt;math id=&quot;p26.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;(T_{\alpha},\prec)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(T_{\alpha},\prec)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and take &lt;math id=&quot;p26.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; an arbitrary maximal
antichain of &lt;math id=&quot;p26.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; otherwise. Then for each
&lt;math id=&quot;p26.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;t\in T_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;t\in T_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; there is &lt;math id=&quot;p26.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;a\in A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a\in A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that either &lt;math id=&quot;p26.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;a\prec t&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a\prec t&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or
&lt;math id=&quot;p26.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;t\prec a&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;t\prec a&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Let &lt;math id=&quot;p26.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;b_{t}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;b_{t}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be a branch that contains &lt;math id=&quot;p26.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;a,t&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a,t&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We construct
&lt;math id=&quot;p26.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;(T_{\alpha+1},\prec)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(T_{\alpha+1},\prec)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by adding
for each branch &lt;math id=&quot;p26.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;b_{t}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;b_{t}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; some &lt;math id=&quot;p26.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;x_{b_{t}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x_{b_{t}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; that is greater than all the elements of
&lt;math id=&quot;p26.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;b_{t}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;b_{t}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We can choose &lt;math id=&quot;p26.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;b_{t}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;b_{t}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in way that it contains an element of
each level less than &lt;math id=&quot;p26.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p26.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;o(x_{b_{t}})=\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o(x_{b_{t}})=\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and the height
of &lt;math id=&quot;p26.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math id=&quot;p26.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha+1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We note that
each &lt;math id=&quot;p26.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;t\in T_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;t\in T_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is either in &lt;math id=&quot;p26.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (so comparable with some
element of &lt;math id=&quot;p26.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) or greater than (a fortiori comparable with) one element of
&lt;math id=&quot;p26.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So &lt;math id=&quot;p26.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an antichain in &lt;math id=&quot;p26.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;(T_{\alpha+1},\prec)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;(T_{\alpha+1},\prec)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p27&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Now consider a maximal antichain &lt;math id=&quot;p27.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;A\subseteq T=\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A\subseteq T=\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p27.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
the set of ordinals &lt;math id=&quot;p27.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
‘‘&lt;math id=&quot;p27.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;A\cap T_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A\cap T_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a maximal antichain in &lt;math id=&quot;p27.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p27.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha}=\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha}=\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;’’. Let &lt;math id=&quot;p27.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha_{0}&amp;lt;\alpha_{1}&amp;lt;...&amp;lt;\alpha_{\xi}&amp;lt;...&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha_{0}&amp;lt;\alpha_{1}&amp;lt;...&amp;lt;\alpha_{\xi}&amp;lt;...&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
(&lt;math id=&quot;p27.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\xi&amp;lt;\gamma&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\xi&amp;lt;\gamma&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) be a sequence of elements in &lt;math id=&quot;p27.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and consider
the limit ordinal
&lt;math id=&quot;p27.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda=\lim_{\xi&amp;lt;\gamma}\alpha_{\xi}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;lim&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda=\lim_{\xi&amp;lt;\gamma}\alpha_{\xi}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
By construction, &lt;math id=&quot;p27.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\lambda}=\bigcup_{\alpha&amp;lt;\lambda}T_{\alpha}=\bigcup_{\xi&amp;lt;\gamma}T_{\alpha_{
\xi}}=\bigcup_{\xi&amp;lt;\gamma}\alpha_{\xi}=\lambda&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\lambda}=\bigcup_{\alpha&amp;lt;\lambda}T_{\alpha}=\bigcup_{\xi&amp;lt;\gamma}T_{\alpha_{
\xi}}=\bigcup_{\xi&amp;lt;\gamma}\alpha_{\xi}=\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If &lt;math id=&quot;p27.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in T_{\lambda}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in T_{\lambda}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, there is &lt;math id=&quot;p27.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\xi&amp;lt;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\xi&amp;lt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
&lt;math id=&quot;p27.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in T_{\alpha_{\xi}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in T_{\alpha_{\xi}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p27.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is comparable with some
&lt;math id=&quot;p27.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;y\in A\cap T_{\alpha_{\xi}}\subseteq A\cap T_{\lambda}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y\in A\cap T_{\alpha_{\xi}}\subseteq A\cap T_{\lambda}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So &lt;math id=&quot;p27.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;A\cap T_{\lambda}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A\cap T_{\lambda}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
is a maximal antichain in &lt;math id=&quot;p27.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\lambda}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\lambda}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Finally &lt;math id=&quot;p27.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda\in C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda\in C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p27.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is
closed.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p28&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We note that &lt;math id=&quot;p28.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{1}=\{0\}\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{1}=\{0\}\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If &lt;math id=&quot;p28.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha}\geq\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha}\geq\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then
&lt;math id=&quot;p28.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is obtained by adding at least one element at the end
of the initial segment &lt;math id=&quot;p28.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p28.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha+1}\geq\alpha+1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha+1}\geq\alpha+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Finally if &lt;math id=&quot;p28.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda&amp;gt;0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda&amp;gt;0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is limit and
&lt;math id=&quot;p28.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha}\geq\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha}\geq\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for each &lt;math id=&quot;p28.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\lambda&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
then &lt;math id=&quot;p28.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\lambda}=\bigcup_{\alpha&amp;lt;\lambda}T_{\alpha}\geq\sup_{\alpha&amp;lt;\lambda}\alpha=\lambda&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\lambda}=\bigcup_{\alpha&amp;lt;\lambda}T_{\alpha}\geq\sup_{\alpha&amp;lt;\lambda}\alpha=\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Moreover by definition,
each &lt;math id=&quot;p28.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is at most countable.
Let’s come back to the closed set &lt;math id=&quot;p28.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; above.
Let &lt;math id=&quot;p28.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha_{0}&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha_{0}&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be arbitrary. For each &lt;math id=&quot;p28.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we let
&lt;math id=&quot;p28.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha_{2n+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha_{2n+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be the limit of the sequence
&lt;math id=&quot;p28.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha_{0}\leq T_{\alpha_{0}}\leq T_{T_{\alpha_{0}}}\leq T_{T_{T_{\alpha_{0}}}
}...&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha_{0}\leq T_{\alpha_{0}}\leq T_{T_{\alpha_{0}}}\leq T_{T_{T_{\alpha_{0}}}
}...&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
By definition, &lt;math id=&quot;p28.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha_{2n+1}}=\bigcup_{\xi&amp;lt;\alpha_{2n+1}}T_{\xi}=\alpha_{0}\cup T_{\alpha_
{0}}\cup T_{T_{\alpha_{0}}}...=\alpha_{2n+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;ξ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha_{2n+1}}=\bigcup_{\xi&amp;lt;\alpha_{2n+1}}T_{\xi}=\alpha_{0}\cup T_{\alpha_
{0}}\cup T_{T_{\alpha_{0}}}...=\alpha_{2n+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Because &lt;math id=&quot;p28.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a maximal antichain in &lt;math id=&quot;p28.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, for each &lt;math id=&quot;p28.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in T_{\alpha_{2n+1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in T_{\alpha_{2n+1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we
can find some &lt;math id=&quot;p28.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha_{x}\geq\alpha_{2n+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha_{x}\geq\alpha_{2n+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p28.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{x}\in A_{\alpha_{x}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{x}\in A_{\alpha_{x}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; that is
comparable with &lt;math id=&quot;p28.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Because &lt;math id=&quot;p28.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha_{2n+1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha_{2n+1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is countable we can define
&lt;math id=&quot;p28.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha_{2n+2}=\sup_{x\in T_{\alpha_{2n+1}}}\alpha_{x}&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha_{2n+2}=\sup_{x\in T_{\alpha_{2n+1}}}\alpha_{x}&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then
any &lt;math id=&quot;p28.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in T_{\alpha_{2n+1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in T_{\alpha_{2n+1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is comparable with some element of
&lt;math id=&quot;p28.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{x}\in A\cap T_{\alpha_{2n+2}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{x}\in A\cap T_{\alpha_{2n+2}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Let &lt;math id=&quot;p28.m27&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda=\lim_{n&amp;lt;\omega}\alpha_{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;lim&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda=\lim_{n&amp;lt;\omega}\alpha_{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
With the same method as to prove the fact that &lt;math id=&quot;p28.m28&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is closed,
the equality
&lt;math id=&quot;p28.m29&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda=\lim_{n&amp;lt;\omega}\alpha_{2n+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;lim&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda=\lim_{n&amp;lt;\omega}\alpha_{2n+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; shows that &lt;math id=&quot;p28.m30&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\lambda}=\lambda&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\lambda}=\lambda&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
while
the equality &lt;math id=&quot;p28.m31&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda=\lim_{n&amp;lt;\omega}\alpha_{2n+2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;lim&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda=\lim_{n&amp;lt;\omega}\alpha_{2n+2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; shows that
&lt;math id=&quot;p28.m32&quot; class=&quot;ltx_Math&quot; alttext=&quot;A\cap T_{\lambda}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A\cap T_{\lambda}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a maximal antichain in &lt;math id=&quot;p28.m33&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\lambda}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\lambda}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
So &lt;math id=&quot;p28.m34&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda\in C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda\in C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p28.m35&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is closed unbounded.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p29&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Using the Diamond principle,
&lt;math id=&quot;p29.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\{\alpha&amp;lt;\omega_{1}:A\cap\alpha=S_{\alpha}\}\cap C\neq\emptyset&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\{\alpha&amp;lt;\omega_{1}:A\cap\alpha=S_{\alpha}\}\cap C\neq\emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
If &lt;math id=&quot;p29.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is in the intersection, then
&lt;math id=&quot;p29.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;S_{\alpha}=A\cap T_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S_{\alpha}=A\cap T_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a maximal antichain in &lt;math id=&quot;p29.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
By construction, it is also a maximal antichain in &lt;math id=&quot;p29.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Each element of &lt;math id=&quot;p29.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;a\in A\cap T_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a\in A\cap T_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is at level &lt;math id=&quot;p29.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;o(a)\leq\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o(a)\leq\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Any &lt;math id=&quot;p29.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;t\in T_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;t\in T_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is comparable with some element of
&lt;math id=&quot;p29.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;A\cap T_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A\cap T_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Moreover, by contruction any
&lt;math id=&quot;p29.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;t^{\prime}\in T\setminus T_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;t^{\prime}\in T\setminus T_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
has some predecessor &lt;math id=&quot;p29.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;t\in T_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;t\in T_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; at level &lt;math id=&quot;p29.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
there is &lt;math id=&quot;p29.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;a\in A\cap T_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a\in A\cap T_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; that is comparable with &lt;math id=&quot;p29.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;t&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;t&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Necessarily, &lt;math id=&quot;p29.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;o(a)&amp;lt;o(t)=\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o(a)&amp;lt;o(t)=\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p29.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;a\prec t\preceq t^{\prime}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;⪯&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a\prec t\preceq t^{\prime}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Thus &lt;math id=&quot;p29.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;A\cap T_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A\cap T_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is maximal
in &lt;math id=&quot;p29.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p29.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;A=A\cap T_{\alpha+1}\subseteq T_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A=A\cap T_{\alpha+1}\subseteq T_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is at most
countable.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p30&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Let &lt;math id=&quot;p30.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be a branch in &lt;math id=&quot;p30.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. It is clear that &lt;math id=&quot;p30.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is nonempty. Actually
it is infinite: otherwise there is some limit ordinal &lt;math id=&quot;p30.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;gt;0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;gt;0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
such that &lt;math id=&quot;p30.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;B\subseteq T_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B\subseteq T_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and by construction we can find some &lt;math id=&quot;p30.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;y\succ\max B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;≻&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y\succ\max B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
contradicting the maximality of &lt;math id=&quot;p30.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
By construction, each &lt;math id=&quot;p30.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has infinitely many
successors at the next level and so these successors are
pairwise incomparable.
Hence if &lt;math id=&quot;p30.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then we can pick one &lt;math id=&quot;p30.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;z_{x}\notin B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∉&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;z_{x}\notin B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; among these
succcessors. Let &lt;math id=&quot;p30.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\prec y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\prec y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be two elements of &lt;math id=&quot;p30.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then
&lt;math id=&quot;p30.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;o(z_{x})=o(x)+1&amp;gt;o(y)+1=o(z_{y})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o(z_{x})=o(x)+1&amp;gt;o(y)+1=o(z_{y})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so &lt;math id=&quot;p30.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;z_{x}\preceq z_{y}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⪯&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;z_{x}\preceq z_{y}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is
impossible. Suppose &lt;math id=&quot;p30.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;z_{y}\prec z_{x}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;z_{y}\prec z_{x}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We also have &lt;math id=&quot;p30.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\prec z_{x}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\prec z_{x}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by definition.
If &lt;math id=&quot;p30.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;z_{y}\preceq x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⪯&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;z_{y}\preceq x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then we would have &lt;math id=&quot;p30.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;z_{y}\in B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;z_{y}\in B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; because &lt;math id=&quot;p30.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a branch.
If &lt;math id=&quot;p30.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\prec z_{y}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\prec z_{y}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we would get &lt;math id=&quot;p30.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;o(x)&amp;lt;o(z_{y})=o(y)+1\leq o(x)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o(x)&amp;lt;o(z_{y})=o(y)+1\leq o(x)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Hence &lt;math id=&quot;p30.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;z_{x},z_{y}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;z_{x},z_{y}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are incomparable (in particular distinct) and the set
&lt;math id=&quot;p30.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;\{z_{x}:x\in B\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\{z_{x}:x\in B\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an antichain in &lt;math id=&quot;p30.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p30.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is countable.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p31&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Finally, we define &lt;math id=&quot;p31.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the set of all branches of &lt;math id=&quot;p31.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. By construction, each
&lt;math id=&quot;p31.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has countably many immediate successors and we order them
as &lt;math id=&quot;p31.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Let &lt;math id=&quot;p31.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;B_{1},B_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B_{1},B_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be two branches and
&lt;math id=&quot;p31.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the least level where they differ. The level 0 is &lt;math id=&quot;p31.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{1}=\{0\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{1}=\{0\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
so &lt;math id=&quot;p31.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;gt;0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;gt;0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If &lt;math id=&quot;p31.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is limit then the restriction of the
branches &lt;math id=&quot;p31.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;B_{1},B_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B_{1},B_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to &lt;math id=&quot;p31.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the same branch &lt;math id=&quot;p31.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;b&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;b&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p31.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;T_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
has been contructed in a way that there is only one possible element at level
&lt;math id=&quot;p31.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to extend this branch and this is a contradiction.
So &lt;math id=&quot;p31.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is actually a successor
ordinal &lt;math id=&quot;p31.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta+1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence if &lt;math id=&quot;p31.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;B_{1}(\alpha)\in B_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B_{1}(\alpha)\in B_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p31.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;B_{2}(\alpha)\in B_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B_{2}(\alpha)\in B_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are the immediate successors of the
point in &lt;math id=&quot;p31.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;B_{1}\cap B_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B_{1}\cap B_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; at level &lt;math id=&quot;p31.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we order &lt;math id=&quot;p31.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;B_{1},B_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B_{1},B_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
according to whether &lt;math id=&quot;p31.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;B_{1}(\alpha)&amp;lt;B_{2}(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B_{1}(\alpha)&amp;lt;B_{2}(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
or &lt;math id=&quot;p31.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;B_{1}(\alpha)&amp;gt;B_{2}(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B_{1}(\alpha)&amp;gt;B_{2}(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, using the &lt;math id=&quot;p31.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-isomorphic order we just
defined. Clearly, this gives a linear ordering &lt;math id=&quot;p31.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;&amp;lt;_{S}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;&amp;lt;_{S}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
It is also unbounded: for any
&lt;math id=&quot;p31.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;B\in S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B\in S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, if &lt;math id=&quot;p31.m27&quot; class=&quot;ltx_Math&quot; alttext=&quot;B(1)\in B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B(1)\in B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the element at level 1 pick &lt;math id=&quot;p31.m28&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; greater
(or smaller) than for the &lt;math id=&quot;p31.m29&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-isomorphic order on successors
of &lt;math id=&quot;p31.m30&quot; class=&quot;ltx_Math&quot; alttext=&quot;B(0)=0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B(0)=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and consider a branch extending &lt;math id=&quot;p31.m31&quot; class=&quot;ltx_Math&quot; alttext=&quot;0\prec x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0\prec x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p32&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Now consider two branches &lt;math id=&quot;p32.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;B_{1}&amp;lt;_{S}B_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B_{1}&amp;lt;_{S}B_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Let &lt;math id=&quot;p32.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha=\beta+1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha=\beta+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be as above.
We can find &lt;math id=&quot;p32.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; an immediate successor of &lt;math id=&quot;p32.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;B_{1}(\beta)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B_{1}(\beta)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
&lt;math id=&quot;p32.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;B_{1}(\alpha)&amp;lt;x&amp;lt;B_{2}(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B_{1}(\alpha)&amp;lt;x&amp;lt;B_{2}(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for the &lt;math id=&quot;p32.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{Q}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{Q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-isomorphic order on immediate
successors of &lt;math id=&quot;p32.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;B_{1}(\beta)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B_{1}(\beta)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Let &lt;math id=&quot;p32.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{x}=\{B\in S:x\in B\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{x}=\{B\in S:x\in B\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Any &lt;math id=&quot;p32.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;B\in I_{x}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B\in I_{x}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; contains
&lt;math id=&quot;p32.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\{y\in T:y\prec x\}=\{y\in T:y\prec B_{1}(\beta)\}=\{y\in T:y\prec B_{2}(\beta)\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;≺&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\{y\in T:y\prec x\}=\{y\in T:y\prec B_{1}(\beta)\}=\{y\in T:y\prec B_{2}(\beta)\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Moreover &lt;math id=&quot;p32.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;x=B(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x=B(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
&lt;math id=&quot;p32.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;B_{1}&amp;lt;B&amp;lt;B_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B_{1}&amp;lt;B&amp;lt;B_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. &lt;math id=&quot;p32.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{x}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{x}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is nonempty (we can extend
&lt;math id=&quot;p32.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;\{y\in T:y\preceq x\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;⪯&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\{y\in T:y\preceq x\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to a maximal branch) and so &lt;math id=&quot;p32.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is dense.
If &lt;math id=&quot;p32.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{x}\cap I_{y}=\emptyset&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{x}\cap I_{y}=\emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math id=&quot;p32.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;x,y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x,y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are incomparable.
So from any collection of disjoint open intervals
&lt;math id=&quot;p32.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;{(B_{1i},B_{2i})}_{i\in I}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(B_{1i},B_{2i})}_{i\in I}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
we get an antichain &lt;math id=&quot;p32.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;\{x_{i}:i\in I\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\{x_{i}:i\in I\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p32.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;I&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is at most countable.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p33&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Let &lt;math id=&quot;p33.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be a countable set of branches in &lt;math id=&quot;p33.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Since
these branches are countable, we can find &lt;math id=&quot;p33.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; larger
than the length of any branches in &lt;math id=&quot;p33.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If &lt;math id=&quot;p33.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is at level greater
than &lt;math id=&quot;p33.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then for all &lt;math id=&quot;p33.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;B\in C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B\in C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;p33.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\notin B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∉&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\notin B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so &lt;math id=&quot;p33.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;B\notin I_{x}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mo&gt;∉&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B\notin I_{x}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Finally &lt;math id=&quot;p33.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;C\cap I_{x}=\emptyset&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C\cap I_{x}=\emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p33.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not dense.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p34&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Now let &lt;math id=&quot;p34.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be the Dedekind-MacNeille completion of &lt;math id=&quot;p34.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
It is unbounded, linearly ordered, has
the least upper-bound property and &lt;math id=&quot;p34.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is dense in &lt;math id=&quot;p34.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Using the fact that &lt;math id=&quot;p34.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is dense in &lt;math id=&quot;p34.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we deduce that &lt;math id=&quot;p34.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is dense.
Similarly, if &lt;math id=&quot;p34.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;{(a_{i},b_{i})}_{i\in I}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(a_{i},b_{i})}_{i\in I}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is any collection
of disjoint open intervals in &lt;math id=&quot;p34.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we can find
&lt;math id=&quot;p34.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;c_{i},d_{i}\in S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c_{i},d_{i}\in S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p34.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{i}&amp;lt;c_{i}&amp;lt;d_{i}&amp;lt;b_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{i}&amp;lt;c_{i}&amp;lt;d_{i}&amp;lt;b_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then
&lt;math id=&quot;p34.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;{(c_{i},d_{i})}_{i\in I}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(c_{i},d_{i})}_{i\in I}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a collection of disjoint open intervals in &lt;math id=&quot;p34.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and so &lt;math id=&quot;p34.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;I&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is at most countable.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p35&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Finally, it remains to prove that &lt;math id=&quot;p35.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not isomorphic to &lt;math id=&quot;p35.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{R}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ℝ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{R}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and it
suffices to show that &lt;math id=&quot;p35.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; does not have any countable dense subset &lt;math id=&quot;p35.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
If &lt;math id=&quot;p35.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a countable subset of &lt;math id=&quot;p35.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;R&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;R&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, then for any elements &lt;math id=&quot;p35.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;a&amp;lt;b&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a&amp;lt;b&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
in &lt;math id=&quot;p35.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we pick &lt;math id=&quot;p35.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;c\in S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c\in S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p35.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;a&amp;lt;c&amp;lt;b&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a&amp;lt;c&amp;lt;b&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This gives a
countable subset &lt;math id=&quot;p35.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;C^{\prime}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C^{\prime}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of &lt;math id=&quot;p35.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If &lt;math id=&quot;p35.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;a&amp;lt;b&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a&amp;lt;b&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are elements of &lt;math id=&quot;p35.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we can find
&lt;math id=&quot;p35.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;c,d\in C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c,d\in C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p35.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;a&amp;lt;c&amp;lt;d&amp;lt;b&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a&amp;lt;c&amp;lt;d&amp;lt;b&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p35.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;e\in C^{\prime}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;e\in C^{\prime}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
&lt;math id=&quot;p35.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;a&amp;lt;c&amp;lt;e&amp;lt;d&amp;lt;b&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a&amp;lt;c&amp;lt;e&amp;lt;d&amp;lt;b&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Thus &lt;math id=&quot;p35.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;C^{\prime}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C^{\prime}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; would be a countable dense subset of &lt;math id=&quot;p35.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
A contradiction.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p36&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;∎&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p37&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The &lt;math id=&quot;p37.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Diamond&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;◇&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Diamond&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; principle holds in the model &lt;math id=&quot;p37.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;L&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;L&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of constructible sets.
Using iterated forcing, we can construct a model of ZFC in which
&lt;math id=&quot;p37.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathrm{MA}_{\aleph_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;MA&lt;/mi&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathrm{MA}_{\aleph_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; holds. Using theorems
&lt;a href=&quot;#S0.Thmtheorem2&quot; title=&quot;Theorem 0.2. ‣ Suslin’s Problem&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.2&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;#S0.Thmtheorem3&quot; title=&quot;Theorem 0.3. ‣ Suslin’s Problem&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.3&lt;/span&gt;&lt;/a&gt; we deduce that both the positive
and negative answers to Suslin’s problem are consistent with ZFC and
so Suslin’s problem is undecidable in ZFC. It’s remarkable that
a problem that only involves linearly ordered set can be solved using
sophisticated methods from Set Theory.
The above proofs follow chapters 4, 9, 15 and 16 from Thomas Jech’s book
‘‘Set Theory’’. In particular:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p38&quot; class=&quot;ltx_para&quot;&gt;
&lt;ul id=&quot;I2&quot; class=&quot;ltx_itemize&quot;&gt;
&lt;li id=&quot;I2.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;I2.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Lemma &lt;a href=&quot;#S0.Thmlemma1&quot; title=&quot;Lemma 0.1. ‣ Suslin’s Problem&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.1&lt;/span&gt;&lt;/a&gt; and theorem &lt;a href=&quot;#S0.Thmtheorem1&quot; title=&quot;Theorem 0.1. ‣ Suslin’s Problem&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.1&lt;/span&gt;&lt;/a&gt; are based on the
sketch given in theorem 4.3.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I2.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;I2.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Theorem &lt;a href=&quot;#S0.Thmtheorem2&quot; title=&quot;Theorem 0.2. ‣ Suslin’s Problem&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.2&lt;/span&gt;&lt;/a&gt; is based on the proofs of theorem 16.16 and
lemma 9.14 (a).
&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I2.i3&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;I2.i3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Theorem &lt;a href=&quot;#S0.Thmtheorem3&quot; title=&quot;Theorem 0.3. ‣ Suslin’s Problem&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.3&lt;/span&gt;&lt;/a&gt; is based on the proofs of
lemma 15.24, lemma 15.25, theorem 15.26, lemma 15.27 and
lemma 9.14 (b).&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I2.i4&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;I2.i4.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Theorem &lt;a href=&quot;#S0.Thmtheorem2&quot; title=&quot;Theorem 0.2. ‣ Suslin’s Problem&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.2&lt;/span&gt;&lt;/a&gt; implicitely uses theorem 4.4
about the Dedekind-MacNeille completion of a dense
unbounded linearly ordered.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I2.i5&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;I2.i5.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In addition,
theorem &lt;a href=&quot;#S0.Thmtheorem2&quot; title=&quot;Theorem 0.2. ‣ Suslin’s Problem&quot; class=&quot;ltx_ref&quot;&gt;&lt;span class=&quot;ltx_text ltx_ref_tag&quot;&gt;0.2&lt;/span&gt;&lt;/a&gt; also contains the proof of lemma 8.2
(the intersection of two closed unbounded sets is closed unbounded)
the solutions to exercise 2.7 (any normal sequence has arbitrarily
large fixed points) and exercise 9.7 (if all the antichains of a
normal &lt;math id=&quot;I2.i5.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-tree are at most countable then so are its
branches).&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I2.i6&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;I2.i6.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Finally, &lt;math id=&quot;I2.i6.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Diamond&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;◇&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Diamond&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;I2.i6.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathrm{MA}_{\aleph_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;MA&lt;/mi&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathrm{MA}_{\aleph_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are proved to be consistent with ZFC
in theorems 13.21 and 16.13.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Exercises in Set Theory: Classical Independence Results</title>
   <link href="https://frederic-wang.fr//2013/03/20/classical-independence-results/"/>
   <updated>2013-03-20T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2013/03/20/classical-independence-results</id>
   <content type="html">
&lt;div id=&quot;p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;I worked on Chapter 13 and 14 of Thomas Jech’s book ‘‘Set Theory’’.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Doing the exercises from these chapters gave me the opportunity to come back
to the ‘‘classical’’ results about the independence of the Axiom of Choice
and (Generalized) Continuum Hypothesis by Kurt Gödel and Paul Cohen.
It’s funny to note that it’s easier to prove that AC holds in &lt;math id=&quot;p2.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;L&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;L&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
(essentially,
the definition by ordinal induction provides the
well-ordering of the class of contructible sets) than to prove that GCH
holds in &lt;math id=&quot;p2.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;L&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;L&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (you rely on AC in &lt;math id=&quot;p2.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;L&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;L&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and on the technical condensation
lemma). Actually, I believe Gödel found his proof for AC
one or two years after the one for GCH.
On the other hand, it is easy to make GCH fails (just add
&lt;math id=&quot;p2.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\aleph_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\aleph_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; Cohen reals by Forcing) but more difficult to make AC fails
(e.g. AC is preserved by Forcing). This can be interpreted as AC being
more ‘‘natural’’ than GCH.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p3&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;After reading the chapters again and now I analyzed in details
the claims, I’m now convinced about the correctness of the proof.
There are only two points I
didn’t verify precisely about the Forcing method (namely that all axioms of
predicate calculus and rules of inference are compatible
with the Forcing method ; that the Forcing/Generic Model theorems can
be transported from the Boolean Algebra case to the general case) but
these do not seem too difficult. Here are some notes about claims that were
not obvious to me
at the first reading. As usual, I hope they might be useful to
the readers of that blog:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p4&quot; class=&quot;ltx_para&quot;&gt;
&lt;ol id=&quot;I1&quot; class=&quot;ltx_enumerate&quot;&gt;
&lt;li id=&quot;I1.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;1.&lt;/span&gt; 
&lt;div id=&quot;I1.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In the first page of chapter 13, it is claimed that
for any set &lt;math id=&quot;I1.i1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;I1.i1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;M\in\mathrm{def}(M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;def&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M\in\mathrm{def}(M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;I1.i1.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;M\subseteq\mathrm{def}(M)\subseteq\operatorname{\mathcal{P}}(M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;def&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mrow&gt;&lt;mo class=&quot;ltx_font_mathcaligraphic&quot;&gt;𝒫&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M\subseteq\mathrm{def}(M)\subseteq\operatorname{\mathcal{P}}(M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. The first statement
is always true because
&lt;math id=&quot;I1.i1.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;M=\{x\in M:(M,\in)\models x=x\}\in\mathrm{def}(M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⊧&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;def&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M=\{x\in M:(M,\in)\models x=x\}\in\mathrm{def}(M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;I1.i1.p1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;{(x=x)}^{(M,\in)}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(x=x)}^{(M,\in)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math id=&quot;I1.i1.p1.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;x=x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x=x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by definition. However, the second
statement can only be true if &lt;math id=&quot;I1.i1.p1.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is transitive
(since that implies &lt;math id=&quot;I1.i1.p1.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;M\subseteq\operatorname{\mathcal{P}}(M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mrow&gt;&lt;mo class=&quot;ltx_font_mathcaligraphic&quot;&gt;𝒫&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M\subseteq\operatorname{\mathcal{P}}(M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;).
Indeed, if &lt;math id=&quot;I1.i1.p1.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is transitive then for all
&lt;math id=&quot;I1.i1.p1.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;a\in M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a\in M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we have &lt;math id=&quot;I1.i1.p1.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;a\subseteq M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a\subseteq M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and since &lt;math id=&quot;I1.i1.p1.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in a&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in a&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math id=&quot;I1.i1.p1.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Delta_{0}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Δ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Delta_{0}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we
get &lt;math id=&quot;I1.i1.p1.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;a=\{x\in M:(M,\in)\models x\in a\}\in\mathrm{def}(M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⊧&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;def&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a=\{x\in M:(M,\in)\models x\in a\}\in\mathrm{def}(M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
If moreover we consider &lt;math id=&quot;I1.i1.p1.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in X\in\mathrm{def}(M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;def&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in X\in\mathrm{def}(M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then
&lt;math id=&quot;I1.i1.p1.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in X\subseteq M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in X\subseteq M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so &lt;math id=&quot;I1.i1.p1.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in M\subseteq\mathrm{def}(M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;def&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in M\subseteq\mathrm{def}(M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;I1.i1.p1.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathrm{def}(M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;def&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathrm{def}(M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is also transitive. Hence the transitivity of the
&lt;math id=&quot;I1.i1.p1.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;L_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;L_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can still be shown by ordinal induction.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;2.&lt;/span&gt; 
&lt;div id=&quot;I1.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The proof of lemma 13.7 can not be done exactly by induction on
the complexity of &lt;math id=&quot;I1.i2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, as suggested. For example to prove (ii)
for &lt;math id=&quot;I1.i2.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;G=G_{2}=\cdot\times\cdot&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G=G_{2}=\cdot\times\cdot&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we would consider
&lt;math id=&quot;I1.i2.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\exists u\in F(...)\times H(...)\varphi(u)\Leftrightarrow\exists a\in F(...),%
\exists b\in H(...),\varphi((a,b))&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∃&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⇔&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∃&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∃&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\exists u\in F(...)\times H(...)\varphi(u)\Leftrightarrow\exists a\in F(...),%
\exists b\in H(...),\varphi((a,b))&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and would like to say that &lt;math id=&quot;I1.i2.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\varphi((a,b))&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\varphi((a,b))&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math id=&quot;I1.i2.p1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Delta_{0}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Δ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Delta_{0}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Nevertheless,
we can not
deduce that from the induction hypothesis. Hence the right thing to do is
to prove the lemma for &lt;math id=&quot;I1.i2.p1.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;G_{1}=\{\cdot,\cdot\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G_{1}=\{\cdot,\cdot\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; first and deduce the
lemma for &lt;math id=&quot;I1.i2.p1.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;G=(\cdot,\cdot)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G=(\cdot,\cdot)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (and &lt;math id=&quot;I1.i2.p1.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;G^{\prime}=(\cdot,\cdot,\cdot)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G^{\prime}=(\cdot,\cdot,\cdot)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;). Then
we can proceed by induction.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i3&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;3.&lt;/span&gt; 
&lt;div id=&quot;I1.i3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In the proof of theorem 13.18, it is mentioned that the assumption&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;I1.i3.p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;ol id=&quot;I1.I1&quot; class=&quot;ltx_enumerate&quot;&gt;
&lt;li id=&quot;I1.I1.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;(i)&lt;/span&gt; 
&lt;div id=&quot;I1.I1.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;I1.I1.i1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;_{\alpha}y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;_{\alpha}y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; implies &lt;math id=&quot;I1.I1.i1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;_{\beta}y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;_{\beta}y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.I1.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;(ii)&lt;/span&gt; 
&lt;div id=&quot;I1.I1.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;I1.I1.i2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in L_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in L_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;I1.I1.i2.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;y\in L_{\beta}\setminus L_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y\in L_{\beta}\setminus L_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; implies
&lt;math id=&quot;I1.I1.i2.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;_{\beta}y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;_{\beta}y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div id=&quot;I1.i3.p3&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;implies that if &lt;math id=&quot;I1.i3.p3.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in y\in L_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in y\in L_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math id=&quot;I1.i3.p3.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;_{\alpha}y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;_{\alpha}y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. To show that,
we consider &lt;math id=&quot;I1.i3.p3.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta\leq\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta\leq\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the least ordinal such that
&lt;math id=&quot;I1.i3.p3.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;y\in L_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y\in L_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. In particular, &lt;math id=&quot;I1.i3.p3.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not limit
(&lt;math id=&quot;I1.i3.p3.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;L_{0}=\emptyset&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;L_{0}=\emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and if &lt;math id=&quot;I1.i3.p3.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;y\in L_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y\in L_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for some limit &lt;math id=&quot;I1.i3.p3.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;gt;0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;gt;0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
then there is &lt;math id=&quot;I1.i3.p3.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&amp;lt;\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&amp;lt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;I1.i3.p3.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;y\in L_{\gamma}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y\in L_{\gamma}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) and we can
write it &lt;math id=&quot;I1.i3.p3.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta=\gamma+1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta=\gamma+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We have
&lt;math id=&quot;I1.i3.p3.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;y\in L_{\beta}=L_{\gamma+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y\in L_{\beta}=L_{\gamma+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so there is a formula &lt;math id=&quot;I1.i3.p3.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\varphi&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\varphi&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
elements &lt;math id=&quot;I1.i3.p3.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{1},...,a_{n}\in L_{\gamma}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{1},...,a_{n}\in L_{\gamma}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
&lt;math id=&quot;I1.i3.p3.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in y=\{z\in L_{\gamma}:(L_{\gamma},\in)\models\varphi(z,a_{1},...,a_{n})\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⊧&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in y=\{z\in L_{\gamma}:(L_{\gamma},\in)\models\varphi(z,a_{1},...,a_{n})\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence &lt;math id=&quot;I1.i3.p3.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in L_{\gamma}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in L_{\gamma}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Moreover
by minimality of &lt;math id=&quot;I1.i3.p3.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;I1.i3.p3.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;y\in L_{\beta}\setminus L_{\gamma}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y\in L_{\beta}\setminus L_{\gamma}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so
by (ii) we have &lt;math id=&quot;I1.i3.p3.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;_{\beta}y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;_{\beta}y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and by (i) &lt;math id=&quot;I1.i3.p3.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&amp;lt;_{\alpha}y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&amp;lt;_{\alpha}y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i4&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;4.&lt;/span&gt; 
&lt;div id=&quot;I1.i4.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In lemma 14.18, we have expressions that seem
ill-defined for example &lt;math id=&quot;I1.i4.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{u}(t)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{u}(t)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; where &lt;math id=&quot;I1.i4.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;t\notin\operatorname{dom}(a_{u})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∉&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;t\notin\operatorname{dom}(a_{u})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
This happens in other places, like lemma 14.17 or definition 14.27.
The trick
is to understand that the functions are extended by 0. Indeed, for any
&lt;math id=&quot;I1.i4.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;x,y\in V^{B}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x,y\in V^{B}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if &lt;math id=&quot;I1.i4.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\subseteq y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\subseteq y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;I1.i4.p1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall t\in\operatorname{dom}(y)\setminus\operatorname{dom}(x),y(t)=0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall t\in\operatorname{dom}(y)\setminus\operatorname{dom}(x),y(t)=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;I1.i4.p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;table id=&quot;S0.Ex1&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\begin{gathered}\displaystyle\|y\subseteq x\|\\
\displaystyle=\prod_{t\in\operatorname{dom}(y)}\left(-y(t)+{\|t\in x\|}\right)%
\\
\displaystyle=\prod_{t\in\operatorname{dom}(x)}\left(-x(t)+{\|t\in x\|}\right)%
\\
\displaystyle=\|x\subseteq x\|=1\end{gathered}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mtable displaystyle=&quot;true&quot; rowspacing=&quot;0pt&quot;&gt;&lt;mtr&gt;&lt;mtd columnalign=&quot;center&quot;&gt;&lt;mrow&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;/mrow&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd columnalign=&quot;center&quot;&gt;&lt;mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;munder&gt;&lt;mo largeop=&quot;true&quot; movablelimits=&quot;false&quot; symmetric=&quot;true&quot;&gt;∏&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd columnalign=&quot;center&quot;&gt;&lt;mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;munder&gt;&lt;mo largeop=&quot;true&quot; movablelimits=&quot;false&quot; symmetric=&quot;true&quot;&gt;∏&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd columnalign=&quot;center&quot;&gt;&lt;mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\begin{gathered}\displaystyle\|y\subseteq x\|\\
\displaystyle=\prod_{t\in\operatorname{dom}(y)}\left(-y(t)+{\|t\in x\|}\right)%
\\
\displaystyle=\prod_{t\in\operatorname{dom}(x)}\left(-x(t)+{\|t\in x\|}\right)%
\\
\displaystyle=\|x\subseteq x\|=1\end{gathered}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;I1.i4.p3&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;and similarly we get &lt;math id=&quot;I1.i4.p3.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\|x=y\|=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\|x=y\|=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then we can use the inequality
page 207 (&lt;math id=&quot;I1.i4.p3.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\|\varphi(x)\|=\|x=y\|\cdot\|\varphi(x)\|\leq\|\varphi(y)\|=\|x=y\|\cdot\|%
\varphi(y)\|\leq\|\varphi(x)\|&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;φ&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\|\varphi(x)\|=\|x=y\|\cdot\|\varphi(x)\|\leq\|\varphi(y)\|=\|x=y\|\cdot\|%
\varphi(y)\|\leq\|\varphi(x)\|&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) to
replace &lt;math id=&quot;I1.i4.p3.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;x&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by its extension &lt;math id=&quot;I1.i4.p3.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i5&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;5.&lt;/span&gt; 
&lt;div id=&quot;I1.i5.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In lemma 14.23, the inequality&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;I1.i5.p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;table id=&quot;S0.Ex2&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex2.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\|x\text{ is an ordinal}\|\leq\|x\in\check{\alpha}\|+\|x=\check{\alpha}\|+\|%
\check{\alpha}\in x\|&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mtext&gt; is an ordinal&lt;/mtext&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mover accent=&quot;true&quot;&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;ˇ&lt;/mo&gt;&lt;/mover&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mover accent=&quot;true&quot;&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;ˇ&lt;/mo&gt;&lt;/mover&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mover accent=&quot;true&quot;&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;ˇ&lt;/mo&gt;&lt;/mover&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\|x\text{ is an ordinal}\|\leq\|x\in\check{\alpha}\|+\|x=\check{\alpha}\|+\|%
\check{\alpha}\in x\|&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;I1.i5.p3&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;seems obvious but I don’t believe that it can be proved so easily at
that point. For example the proof from chapter 2 requires at least the
Separation axiom and the &lt;math id=&quot;I1.i5.p3.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Delta_{0}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Δ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Delta_{0}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; formulation from chapter 10 is based
on the Axiom of Regularity. To solve that issue, it seems to me that
the lemma should be moved after the proof that axioms of ZFC are valid
in &lt;math id=&quot;I1.i5.p3.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;V^{B}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V^{B}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This is not an issue since lemma 14.23 is only used much
later in lemma 14.31.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i6&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;6.&lt;/span&gt; 
&lt;div id=&quot;I1.i6.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Many details could be added to the proof of theorem 14.24, but
let’s just mention Powerset. For any &lt;math id=&quot;I1.i6.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;u\in V^{B}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;u\in V^{B}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, some
&lt;math id=&quot;I1.i6.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;u^{\prime}\in\operatorname{dom}(Y)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;u^{\prime}\in\operatorname{dom}(Y)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is defined and satisfies
&lt;math id=&quot;I1.i6.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\|u\subseteq X\|\leq\|u=u^{\prime}\|&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\|u\subseteq X\|\leq\|u=u^{\prime}\|&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (this follows from the
definitions, using the Boolean inequality
&lt;math id=&quot;I1.i6.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;-a+b\leq-a+b\cdot a&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;-a+b\leq-a+b\cdot a&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to conclude).
Since moreover &lt;math id=&quot;I1.i6.p1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall t\in\operatorname{dom}(Y),Y(t)=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall t\in\operatorname{dom}(Y),Y(t)=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we get
&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;I1.i6.p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;table id=&quot;S0.Ex3&quot; class=&quot;ltx_equationgroup ltx_eqn_table&quot;&gt;

&lt;tr id=&quot;S0.Ex3X&quot; class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_td ltx_align_right ltx_eqn_cell&quot;&gt;&lt;math id=&quot;S0.Ex3X.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\displaystyle\|u\subseteq X\|\implies\|u\in Y\|&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\displaystyle\|u\subseteq X\|\implies\|u\in Y\|&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_td ltx_align_left ltx_eqn_cell&quot;&gt;&lt;math id=&quot;S0.Ex3X.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\displaystyle\geq-\|u=u^{\prime}\|+\sum_{t\in\operatorname{dom}(Y)}\left(\|u=t%
\|\cdot Y(t)\right)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mstyle displaystyle=&quot;true&quot;&gt;&lt;munder&gt;&lt;mo largeop=&quot;true&quot; movablelimits=&quot;false&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;/mstyle&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\displaystyle\geq-\|u=u^{\prime}\|+\sum_{t\in\operatorname{dom}(Y)}\left(\|u=t%
\|\cdot Y(t)\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;S0.Ex3Xa&quot; class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_td ltx_eqn_cell&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_td ltx_align_left ltx_eqn_cell&quot;&gt;&lt;math id=&quot;S0.Ex3Xa.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\displaystyle=\sum_{t\in\operatorname{dom}(Y)}-\left(\|u\neq t\|\cdot\|u=u^{%
\prime}\|\right)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mstyle displaystyle=&quot;true&quot;&gt;&lt;munder&gt;&lt;mo largeop=&quot;true&quot; movablelimits=&quot;false&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;/mstyle&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\displaystyle=\sum_{t\in\operatorname{dom}(Y)}-\left(\|u\neq t\|\cdot\|u=u^{%
\prime}\|\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;S0.Ex3Xb&quot; class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_td ltx_eqn_cell&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_td ltx_align_left ltx_eqn_cell&quot;&gt;&lt;math id=&quot;S0.Ex3Xb.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\displaystyle\geq\sum_{t\in\operatorname{dom}(Y)}\|u^{\prime}=t\|=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mstyle displaystyle=&quot;true&quot;&gt;&lt;munder&gt;&lt;mo largeop=&quot;true&quot; movablelimits=&quot;false&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;dom&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;/mstyle&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;∥&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\displaystyle\geq\sum_{t\in\operatorname{dom}(Y)}\|u^{\prime}=t\|=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i7&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;7.&lt;/span&gt; 
&lt;div id=&quot;I1.i7.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In theorem 14.34, we prove that any &lt;math id=&quot;I1.i7.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; regular in
&lt;math id=&quot;I1.i7.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;V&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; remains regular in &lt;math id=&quot;I1.i7.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;V[G]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V[G]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (the hard case is really
&lt;math id=&quot;I1.i7.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; uncountable and this assumption is implicitely used later
to say that &lt;math id=&quot;I1.i7.p1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\bigcup_{\alpha&amp;lt;\lambda}A_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\bigcup_{\alpha&amp;lt;\lambda}A_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is bounded).
It may not be obvious why this is enough. First recall that
for any ordinal &lt;math id=&quot;I1.i7.p1.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
&lt;math id=&quot;I1.i7.p1.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{cf}^{V[G]}(\alpha)\leq\operatorname{cf}^{V}(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{cf}^{V[G]}(\alpha)\leq\operatorname{cf}^{V}(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
&lt;math id=&quot;I1.i7.p1.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;{|\alpha|}^{V[G]}\leq{|\alpha|}^{V}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{|\alpha|}^{V[G]}\leq{|\alpha|}^{V}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, and
any (regular) cardinal in &lt;math id=&quot;I1.i7.p1.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;V[G]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V[G]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a (regular) cardinal in &lt;math id=&quot;I1.i7.p1.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;V&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Next we have,&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;I1.i7.p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;table id=&quot;S0.Ex4&quot; class=&quot;ltx_equationgroup ltx_eqn_table&quot;&gt;

&lt;tr id=&quot;S0.Ex4X&quot; class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_td ltx_align_right ltx_eqn_cell&quot;&gt;&lt;math id=&quot;S0.Ex4X.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\displaystyle\exists\alpha\in\mathrm{Ord},\operatorname{cf}^{V[G]}(\alpha)\leq%
\operatorname{cf}^{V}(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∃&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;Ord&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\displaystyle\exists\alpha\in\mathrm{Ord},\operatorname{cf}^{V[G]}(\alpha)\leq%
\operatorname{cf}^{V}(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_td ltx_align_left ltx_eqn_cell&quot;&gt;&lt;math id=&quot;S0.Ex4X.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\displaystyle\implies\exists\alpha\in\mathrm{Ord},\operatorname{cf}^{V[G]}(%
\operatorname{cf}^{V}(\alpha))\leq\operatorname{cf}^{V[G]}(\alpha)&amp;lt;%
\operatorname{cf}^{V}(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;&lt;/mi&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;∃&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;Ord&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\displaystyle\implies\exists\alpha\in\mathrm{Ord},\operatorname{cf}^{V[G]}(%
\operatorname{cf}^{V}(\alpha))\leq\operatorname{cf}^{V[G]}(\alpha)&amp;lt;%
\operatorname{cf}^{V}(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;S0.Ex4Xa&quot; class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_td ltx_eqn_cell&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_td ltx_align_left ltx_eqn_cell&quot;&gt;&lt;math id=&quot;S0.Ex4Xa.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\displaystyle\implies\exists\beta\textrm{ regular cardinal in }V,\textrm{ not %
regular cardinal in }V[G]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;&lt;/mi&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mtext&gt; regular cardinal in &lt;/mtext&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mtext&gt; not regular cardinal in &lt;/mtext&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\displaystyle\implies\exists\beta\textrm{ regular cardinal in }V,\textrm{ not %
regular cardinal in }V[G]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;S0.Ex4Xb&quot; class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_td ltx_eqn_cell&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_td ltx_align_left ltx_eqn_cell&quot;&gt;&lt;math id=&quot;S0.Ex4Xb.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\displaystyle\implies\exists\beta\in\mathrm{Ord},\operatorname{cf}^{V[G]}(%
\beta)&amp;lt;\beta=\operatorname{cf}^{V}(\beta)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;&lt;/mi&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;∃&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;Ord&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\displaystyle\implies\exists\beta\in\mathrm{Ord},\operatorname{cf}^{V[G]}(%
\beta)&amp;lt;\beta=\operatorname{cf}^{V}(\beta)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;I1.i7.p3&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;that is
&lt;math id=&quot;I1.i7.p3.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall\alpha\in\mathrm{Ord},\operatorname{cf}^{V[G]}(\alpha)=\operatorname{cf%
}^{V}(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;Ord&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall\alpha\in\mathrm{Ord},\operatorname{cf}^{V[G]}(\alpha)=\operatorname{cf%
}^{V}(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is equivalent
to ‘‘&lt;math id=&quot;I1.i7.p3.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;V&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;I1.i7.p3.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;V[G]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V[G]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; have the same regular cardinals’’. Similarly,
we can prove that
&lt;math id=&quot;I1.i7.p3.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall\alpha\in\mathrm{Ord},{|\alpha|}^{V[G]}={|\alpha|}^{V}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;Ord&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall\alpha\in\mathrm{Ord},{|\alpha|}^{V[G]}={|\alpha|}^{V}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is equivalent to
‘‘&lt;math id=&quot;I1.i7.p3.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;V&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;I1.i7.p3.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;V[G]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V[G]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; have the same cardinals’’.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;I1.i7.p4&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The proof of theorem 14.34 shows that
‘‘&lt;math id=&quot;I1.i7.p4.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;V&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;I1.i7.p4.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;V[G]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V[G]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; have the same regular cardinals’’ and so
to complete the proof, it is enough to show that
&lt;math id=&quot;I1.i7.p4.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall\alpha,\operatorname{cf}^{V[G]}(\alpha)=\operatorname{cf}^{V}(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall\alpha,\operatorname{cf}^{V[G]}(\alpha)=\operatorname{cf}^{V}(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
implies &lt;math id=&quot;I1.i7.p4.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall\alpha,{|\alpha|}^{V[G]}={|\alpha|}^{V}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall\alpha,{|\alpha|}^{V[G]}={|\alpha|}^{V}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
So suppose &lt;math id=&quot;I1.i7.p4.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall\alpha,\operatorname{cf}^{V[G]}(\alpha)=\operatorname{cf}^{V}(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall\alpha,\operatorname{cf}^{V[G]}(\alpha)=\operatorname{cf}^{V}(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and assume that there is &lt;math id=&quot;I1.i7.p4.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
&lt;math id=&quot;I1.i7.p4.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;{|\alpha|}^{V[G]}&amp;lt;{|\alpha|}^{V}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{|\alpha|}^{V[G]}&amp;lt;{|\alpha|}^{V}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Consider the least such &lt;math id=&quot;I1.i7.p4.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
If &lt;math id=&quot;I1.i7.p4.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta={|\alpha|}^{V}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta={|\alpha|}^{V}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
then &lt;math id=&quot;I1.i7.p4.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta\leq\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta\leq\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so
&lt;math id=&quot;I1.i7.p4.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;{|\beta|}^{V[G]}\leq{|\alpha|}^{V[G]}&amp;lt;{|\alpha|}^{V}=\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{|\beta|}^{V[G]}\leq{|\alpha|}^{V[G]}&amp;lt;{|\alpha|}^{V}=\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
By minimality of &lt;math id=&quot;I1.i7.p4.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;I1.i7.p4.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta=\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta=\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
&lt;math id=&quot;I1.i7.p4.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a cardinal in &lt;math id=&quot;I1.i7.p4.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;V&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. &lt;math id=&quot;I1.i7.p4.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is actually regular in &lt;math id=&quot;I1.i7.p4.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;V&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Otherwise, suppose &lt;math id=&quot;I1.i7.p4.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{cf}^{V}(\alpha)&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{cf}^{V}(\alpha)&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
let &lt;math id=&quot;I1.i7.p4.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha=\bigcup_{\beta&amp;lt;\operatorname{cf}^{V}(\alpha)}X_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha=\bigcup_{\beta&amp;lt;\operatorname{cf}^{V}(\alpha)}X_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
such that &lt;math id=&quot;I1.i7.p4.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;{|X_{\beta}|}^{V}&amp;lt;{|\alpha|}^{V}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{|X_{\beta}|}^{V}&amp;lt;{|\alpha|}^{V}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. By minimality of &lt;math id=&quot;I1.i7.p4.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
we have &lt;math id=&quot;I1.i7.p4.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;{|\operatorname{cf}^{V}(\alpha)|}^{V[G]}={|\operatorname{cf}^{V}(\alpha)|}^{V}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{|\operatorname{cf}^{V}(\alpha)|}^{V[G]}={|\operatorname{cf}^{V}(\alpha)|}^{V}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;I1.i7.p4.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;{|X_{\beta}|}^{V[G]}={|X_{\beta}|}^{V}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{|X_{\beta}|}^{V[G]}={|X_{\beta}|}^{V}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then
&lt;math id=&quot;I1.i7.p4.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;{|\alpha|}^{V[G]}={|\operatorname{cf}^{V}(\alpha)|}^{V[G]}\sup_{\beta&amp;lt;%
\operatorname{cf}^{V}(\alpha)}{|X_{\beta}|}^{V[G]}={|\operatorname{cf}^{V}(%
\alpha)|}^{V}\sup_{\beta&amp;lt;\operatorname{cf}^{V}(\alpha)}{|X_{\beta}|}^{V}={|%
\alpha|}^{V}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;sup&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{|\alpha|}^{V[G]}={|\operatorname{cf}^{V}(\alpha)|}^{V[G]}\sup_{\beta&amp;lt;%
\operatorname{cf}^{V}(\alpha)}{|X_{\beta}|}^{V[G]}={|\operatorname{cf}^{V}(%
\alpha)|}^{V}\sup_{\beta&amp;lt;\operatorname{cf}^{V}(\alpha)}{|X_{\beta}|}^{V}={|%
\alpha|}^{V}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, a contradiction. Finally, we get
&lt;math id=&quot;I1.i7.p4.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{cf}^{V}(\alpha)=\alpha={|\alpha|}^{V}&amp;gt;{|\alpha|}^{V[G]}\geq%
\operatorname{cf}^{V[G]}(\alpha)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{cf}^{V}(\alpha)=\alpha={|\alpha|}^{V}&amp;gt;{|\alpha|}^{V[G]}\geq%
\operatorname{cf}^{V[G]}(\alpha)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This is again a contradiction and so
&lt;math id=&quot;I1.i7.p4.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall\alpha,{|\alpha|}^{V[G]}={|\alpha|}^{V}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall\alpha,{|\alpha|}^{V[G]}={|\alpha|}^{V}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Analysis of Lithium&apos;s algorithm</title>
   <link href="https://frederic-wang.fr//2013/01/22/analysis-of-lithium-s-algorithm/"/>
   <updated>2013-01-22T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2013/01/22/analysis-of-lithium-s-algorithm</id>
   <content type="html">
&lt;div id=&quot;p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;I’ve recently been working on automated testcase reduction tools and thus
I had the chance to study &lt;a href=&quot;http://www.squarefree.com&quot; title=&quot;&quot; class=&quot;ltx_ref&quot;&gt;Jesse Ruderman&lt;/a&gt;’s
&lt;a href=&quot;http://www.squarefree.com/2007/09/15/introducing-lithium-a-testcase-reduction-tool/&quot; title=&quot;&quot; class=&quot;ltx_ref&quot;&gt;Lithium&lt;/a&gt; tool, itself inspired from the
&lt;a href=&quot;http://www.st.cs.uni-saarland.de/papers/tse2002/&quot; title=&quot;&quot; class=&quot;ltx_ref&quot;&gt;ddmin&lt;/a&gt; algorithm. This
paper contains good ideas, like for example the fact that the reduction could
be improved if we rely on the testcase structure like XML nodes or grammar
tokens
instead of just characters/lines. However, the authors of the
ddmin paper really don’t analyse precisely the complexity of the algorithm,
except the best and worst case and there is a large gap between the two.
&lt;a href=&quot;http://www.squarefree.com/lithium/algorithm.html&quot; title=&quot;&quot; class=&quot;ltx_ref&quot;&gt;Jesse’s analysis&lt;/a&gt; is
much better and in particular introduces the concepts of monotonic testcase
and clustered reduction where the algorithm performs the best and which
intuitively seems the usual testcases that we meet in practice. However, the
monotonic+clustered case complexity is only “guessed” and the bound
&lt;math id=&quot;p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;O(M\log_{2}(N))&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O(M\log_{2}(N))&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for a monotonic testcase (of size &lt;math id=&quot;p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;N&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; with final reduction of
size &lt;math id=&quot;p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) is not optimal. For example if the final reduction is relatively
small compared to &lt;math id=&quot;p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;N&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, say
&lt;math id=&quot;p1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;M=\frac{N}{\log_{2}(N)}=o(N)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M=\frac{N}{\log_{2}(N)}=o(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math id=&quot;p1.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;M\log_{2}(N)=N=\Omega(N)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Ω&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M\log_{2}(N)=N=\Omega(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and we
can’t say that the number of verifications is small compared to &lt;math id=&quot;p1.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;N&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
In particular, Jesse can
not deduce from his bound that Lithium’s algorithm is better than an approach
based on &lt;math id=&quot;p1.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; binary search executions!
In this blog post, I shall give the optimal bound for
the monotonic case and formalize that in some sense the clustered reduction is
near the best case. I’ll also compare Lithium’s algorithm with the binary search
approach and with the ddmin algorithm. I shall explain that Lithium is the
best in the monotonic case (or actually matches the ddmin in that case).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Thus suppose that we are given a large testcase exhibiting an unwanted behavior.
We want to find a smaller test case exhibiting the same behavior
and one way is to isolate subtestcases that can not be reduced any further.
A testcase can be quite general so here are basic definitions to formalize a bit
the problem:
&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p3&quot; class=&quot;ltx_para&quot;&gt;
&lt;ul id=&quot;Ch0.I1&quot; class=&quot;ltx_itemize&quot;&gt;
&lt;li id=&quot;Ch0.I1.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;Ch0.I1.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;A &lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;testcase&lt;/span&gt; &lt;math id=&quot;Ch0.I1.i1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a nonempty finite sets of elements
(lines, characters, tree nodes, user actions) exhibiting an “interesting”
behavior (crash, hang and other bugs…)&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;Ch0.I1.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;Ch0.I1.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;A &lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;reduction&lt;/span&gt; &lt;math id=&quot;Ch0.I1.i2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of &lt;math id=&quot;Ch0.I1.i2.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a testcase &lt;math id=&quot;Ch0.I1.i2.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;T\subseteq S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T\subseteq S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
with the same “interesting” behavior as &lt;math id=&quot;Ch0.I1.i2.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;Ch0.I1.i3&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;Ch0.I1.i3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;A testcase &lt;math id=&quot;Ch0.I1.i3.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;minimal&lt;/span&gt; if
&lt;math id=&quot;Ch0.I1.i3.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall T\subsetneq S,T\text{ is not a reduction of }S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;⊊&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mtext&gt; is not a reduction of &lt;/mtext&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall T\subsetneq S,T\text{ is not a reduction of }S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&quot;p4&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Note that by definition, &lt;math id=&quot;p4.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a reduction of itself and &lt;math id=&quot;p4.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\emptyset&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∅&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not
a reduction of &lt;math id=&quot;p4.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Also the relation “is a reduction of” is transitive that
is a reduction of a reduction of &lt;math id=&quot;p4.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a reduction of &lt;math id=&quot;p4.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p5&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We assume that verifying one subset to check if it has the
“interesting” behavior is what takes the most time
(think e.g. testing a hang or user actions) so we want to optimize the number
of testcases verified. Moreover, the original testcase &lt;math id=&quot;p5.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is large and so a
fast reduction algorithm would be to have a complexity in &lt;math id=&quot;p5.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;o(|S|)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o(|S|)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Of course, we also expect to find a small reduction
&lt;math id=&quot;p5.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;T\subseteq S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T\subseteq S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; that is &lt;math id=&quot;p5.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;|T|=o(|S|)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;|T|=o(|S|)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p6&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Without information on the structure on a given testcase &lt;math id=&quot;p6.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or on the
properties of the reduction &lt;math id=&quot;p6.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we must consider
the &lt;math id=&quot;p6.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{|S|}-2&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{|S|}-2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; subsets &lt;math id=&quot;p6.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\emptyset\neq T\neq S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∅&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\emptyset\neq T\neq S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, to find a minimal
reduction. And we only know how to do that in
&lt;math id=&quot;p6.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;O\left(2^{|S|}\right)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O\left(2^{|S|}\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; operations (or &lt;math id=&quot;p6.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;O\left(2^{|S|/2}\right)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;/&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O\left(2^{|S|/2}\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; with
Grover’s algorithm ;-)).
Similarly, even to determine whether &lt;math id=&quot;p6.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;T\subseteq S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T\subseteq S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is minimal would
require testing &lt;math id=&quot;p6.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{|T|}-2&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{|T|}-2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; subsets which is not necessarily &lt;math id=&quot;p6.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;o(|S|)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o(|S|)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
(e.g. &lt;math id=&quot;p6.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;|T|=\log_{2}{(|S|)}=o(|S|)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;|T|=\log_{2}{(|S|)}=o(|S|)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;).
Hence we consider the following definitions:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p7&quot; class=&quot;ltx_para&quot;&gt;
&lt;ul id=&quot;Ch0.I2&quot; class=&quot;ltx_itemize&quot;&gt;
&lt;li id=&quot;Ch0.I2.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;Ch0.I2.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;For any integer &lt;math id=&quot;Ch0.I2.i1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;n\geq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\geq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;Ch0.I2.i1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math id=&quot;Ch0.I2.i1.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;-minimal&lt;/span&gt; if
&lt;math id=&quot;Ch0.I2.i1.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall T\subsetneq S,|S-T|\leq n\implies T\text{ is not a reduction of }S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;⊊&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mtext&gt; is not a reduction of &lt;/mtext&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall T\subsetneq S,|S-T|\leq n\implies T\text{ is not a reduction of }S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;Ch0.I2.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;Ch0.I2.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In particular, &lt;math id=&quot;Ch0.I2.i2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math id=&quot;Ch0.I2.i2.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;-minimal&lt;/span&gt; if
&lt;math id=&quot;Ch0.I2.i2.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall x\in S,S\setminus\{x\}\text{ is not a reduction of }S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mtext&gt; is not a reduction of &lt;/mtext&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall x\in S,S\setminus\{x\}\text{ is not a reduction of }S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;Ch0.I2.i3&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_itemize&quot;&gt;•&lt;/span&gt; 
&lt;div id=&quot;Ch0.I2.i3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;math id=&quot;Ch0.I2.i3.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is monotonic if &lt;math id=&quot;Ch0.I2.i3.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall T_{1}\subseteq T_{2}\subseteq S,\,T_{1}\text{ is a reduction of }S%
\implies T_{2}\text{ is a reduction of }S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;mo rspace=&quot;4.2pt&quot;&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mtext&gt; is a reduction of &lt;/mtext&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mtext&gt; is a reduction of &lt;/mtext&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall T_{1}\subseteq T_{2}\subseteq S,\,T_{1}\text{ is a reduction of }S%
\implies T_{2}\text{ is a reduction of }S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&quot;p8&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Finding a &lt;math id=&quot;p8.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-minimal reduction will give a minimal testcase that is no longer
interesting if we remove any portion of size at most &lt;math id=&quot;p8.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Clearly, &lt;math id=&quot;p8.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is
minimal if it is &lt;math id=&quot;p8.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-minimal for all &lt;math id=&quot;p8.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Moreover, &lt;math id=&quot;p8.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is always &lt;math id=&quot;p8.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-minimal
for any &lt;math id=&quot;p8.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;n\geq|S|&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\geq|S|&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We still need to test exponentially many
subsets to find a &lt;math id=&quot;p8.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-minimal reduction. To decide whether
&lt;math id=&quot;p8.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;T\subseteq S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T\subseteq S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math id=&quot;p8.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-minimal, we need to consider subsets obtained by
removing portions of size &lt;math id=&quot;p8.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;1,2,...,\min(n,|T|-1)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1,2,...,\min(n,|T|-1)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
that is &lt;math id=&quot;p8.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\sum_{k=1}^{\min(n,|T|-1)}\binom{|T|}{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mfrac linethickness=&quot;0&quot;&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sum_{k=1}^{\min(n,|T|-1)}\binom{|T|}{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; subsets. In
particular whether &lt;math id=&quot;p8.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math id=&quot;p8.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-minimal is &lt;math id=&quot;p8.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;O(|T|)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O(|T|)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p8.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;o(|S|)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;o(|S|)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if
&lt;math id=&quot;p8.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;T=o(|S|)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T=o(|S|)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
If &lt;math id=&quot;p8.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is monotonic then so is any reduction &lt;math id=&quot;p8.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of &lt;math id=&quot;p8.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Moreover, if
&lt;math id=&quot;p8.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;T\subsetneq S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;⊊&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T\subsetneq S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a reduction of &lt;math id=&quot;p8.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p8.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;x\in S\setminus T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x\in S\setminus T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, then
&lt;math id=&quot;p8.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;T\subseteq S\setminus\{x\}\subsetneq S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⊊&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T\subseteq S\setminus\{x\}\subsetneq S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p8.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;S\setminus\{x\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S\setminus\{x\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
is a reduction of &lt;math id=&quot;p8.m27&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence when &lt;math id=&quot;p8.m28&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is monotonic, &lt;math id=&quot;p8.m29&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math id=&quot;p8.m30&quot; class=&quot;ltx_Math&quot; alttext=&quot;1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-minimal if and
only if it is minimal. We will target &lt;math id=&quot;p8.m31&quot; class=&quot;ltx_Math&quot; alttext=&quot;1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-minimal reduction in what follows.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p9&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Let’s consider Lithium’s algorithm.
We assume that &lt;math id=&quot;p9.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is ordered and so can be identified with the interval
&lt;math id=&quot;p9.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;[1,|S|]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;[1,|S|]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (think for example line numbers). For simplicity, let’s first
assume that
the size of the original testcase is a power of two, that is &lt;math id=&quot;p9.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;|S|=N=2^{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;|S|=N=2^{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Lithium starts by &lt;math id=&quot;p9.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;n-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; steps &lt;math id=&quot;p9.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;k=1,2,...,n-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k=1,2,...,n-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. At step &lt;math id=&quot;p9.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;k&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we consider
the chunks among the intervals
&lt;math id=&quot;p9.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;[1+j2^{n-k},(j+1)2^{n-k}]\ (0\leq j&amp;lt;2^{k})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo rspace=&quot;7.5pt&quot; stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;[1+j2^{n-k},(j+1)2^{n-k}]\ (0\leq j&amp;lt;2^{k})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of size &lt;math id=&quot;p9.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{n-k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{n-k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Lithium verifies if removing each
chunk provides a reduction. If so, it permanently removes that chunk and tries
another chunk. Because &lt;math id=&quot;p9.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\emptyset&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∅&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not a reduction of &lt;math id=&quot;p9.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we immediately
increment &lt;math id=&quot;p9.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;k&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if it remains only one chunk.
The &lt;math id=&quot;p9.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-th step is the same, with chunk of size 1 but we stop
only when we are sure that the current testcase &lt;math id=&quot;p9.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math id=&quot;p9.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-minimal that is
when after &lt;math id=&quot;p9.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;|T|&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;|T|&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; attempts, we have not reduced &lt;math id=&quot;p9.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; any further. If &lt;math id=&quot;p9.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;N&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not a
power of 2 then &lt;math id=&quot;p9.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{n-1}&amp;lt;N&amp;lt;2^{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{n-1}&amp;lt;N&amp;lt;2^{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; where &lt;math id=&quot;p9.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;n=\lceil\log_{2}(N)\rceil&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;⌈&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;⌉&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n=\lceil\log_{2}(N)\rceil&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
In that case, we apply the same algorithm as &lt;math id=&quot;p9.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (i.e. as if there were
&lt;math id=&quot;p9.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{n}-N&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{n}-N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; dummy elements at the end)
except that we don’t need to remove the chunks that are entirely in that
additional part.
This saves testing at most &lt;math id=&quot;p9.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; subtests (those that would be obtained by
removing the dummy chunks at the end of sizes &lt;math id=&quot;p9.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{n-1},2^{n-2},...,1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{n-1},2^{n-2},...,1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;). Hence
in general if &lt;math id=&quot;p9.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the number of
subsets of &lt;math id=&quot;p9.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; tried by Lithium, we have &lt;math id=&quot;p9.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{2^{n}}-n\leq C_{N}\leq C_{2^{n}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{2^{n}}-n\leq C_{N}\leq C_{2^{n}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Let &lt;math id=&quot;p9.m27&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be the size of the &lt;math id=&quot;p9.m28&quot; class=&quot;ltx_Math&quot; alttext=&quot;1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-minimal testcase found
by Lithium and &lt;math id=&quot;p9.m29&quot; class=&quot;ltx_Math&quot; alttext=&quot;m=\lceil\log_{2}(M)\rceil&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;⌈&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;⌉&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m=\lceil\log_{2}(M)\rceil&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p10&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Lithium will always perform the &lt;math id=&quot;p10.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;n-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; initial steps above and check at least
one subset at each step. At the end, it needs to do &lt;math id=&quot;p10.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; operations to
be sure that the testcase is &lt;math id=&quot;p10.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-minimal.
So &lt;math id=&quot;p10.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}\geq\lceil\log_{2}(N)\rceil+M-1=\Omega(\log_{2}(N)+M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;⌈&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;⌉&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Ω&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}\geq\lceil\log_{2}(N)\rceil+M-1=\Omega(\log_{2}(N)+M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Now, consider the case where &lt;math id=&quot;p10.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; monotonic and has one minimal reduction
&lt;math id=&quot;p10.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;T=[1,M]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T=[1,M]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then &lt;math id=&quot;p10.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is included in the chunk &lt;math id=&quot;p10.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;[1,2^{m}]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;[1,2^{m}]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; from step
&lt;math id=&quot;p10.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;k=n-m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k=n-m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Because &lt;math id=&quot;p10.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is monotonic, this means that at step &lt;math id=&quot;p10.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;k=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
we do two verifications and the second chunk is removed because it does
not contain the &lt;math id=&quot;p10.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (and the third one too
if &lt;math id=&quot;p10.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;N&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not a power of two), at step &lt;math id=&quot;p10.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;k=2&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k=2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; it
remains two chunks, we do two verifications and the second chunk is removed etc
until &lt;math id=&quot;p10.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;k=n-m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k=n-m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. For &lt;math id=&quot;p10.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;k&amp;gt;n-m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k&amp;gt;n-m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
the number of chunk can grow again: 2, 4, 8… that is we handle at most
&lt;math id=&quot;p10.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{1+k-(n-m)}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{1+k-(n-m)}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; chunks from step &lt;math id=&quot;p10.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;n-m+1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n-m+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to &lt;math id=&quot;p10.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;n-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
At step &lt;math id=&quot;p10.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;k=n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k=n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, a first round
of at most &lt;math id=&quot;p10.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{m}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{m}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; verifications ensure that the testcase is of size &lt;math id=&quot;p10.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and a
second round of &lt;math id=&quot;p10.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; verifications ensure that it is &lt;math id=&quot;p10.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-minimal. So
&lt;math id=&quot;p10.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}\leq 1+\left(\sum_{k=1}^{n-m}2\right)+\left(\sum_{k=n-m+1}^{n}2^{1+k-(n-m%
)}\right)+2^{m}+M=1+2(n-m)+2^{m}-1+2^{m}+M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msubsup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}\leq 1+\left(\sum_{k=1}^{n-m}2\right)+\left(\sum_{k=n-m+1}^{n}2^{1+k-(n-m%
)}\right)+2^{m}+M=1+2(n-m)+2^{m}-1+2^{m}+M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and after simplification &lt;math id=&quot;p10.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}=O(\log_{2}(N)+M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}=O(\log_{2}(N)+M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Hence the lower bound &lt;math id=&quot;p10.m27&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Omega(\log_{2}(N)+M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Ω&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Omega(\log_{2}(N)+M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is optimal. The previous example
suggests the
following generalization: a testcase &lt;math id=&quot;p10.m28&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math id=&quot;p10.m29&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;-clustered&lt;/span&gt; if it can be
written as the union of &lt;math id=&quot;p10.m30&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; nonempty closed
intervals &lt;math id=&quot;p10.m31&quot; class=&quot;ltx_Math&quot; alttext=&quot;T=I_{1}\cup I_{2}\cup...\cup I_{C}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T=I_{1}\cup I_{2}\cup...\cup I_{C}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If the
minimal testcase found by Lithium is &lt;math id=&quot;p10.m32&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-clustered, each &lt;math id=&quot;p10.m33&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{j}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{j}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is of length at
most &lt;math id=&quot;p10.m34&quot; class=&quot;ltx_Math&quot; alttext=&quot;M\leq 2^{m}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M\leq 2^{m}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p10.m35&quot; class=&quot;ltx_Math&quot; alttext=&quot;I_{j}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;I_{j}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; intersects at most 2 chunks of length &lt;math id=&quot;p10.m36&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{m}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{m}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
from the step &lt;math id=&quot;p10.m37&quot; class=&quot;ltx_Math&quot; alttext=&quot;k=n-m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k=n-m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So &lt;math id=&quot;p10.m38&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; intersects at most &lt;math id=&quot;p10.m39&quot; class=&quot;ltx_Math&quot; alttext=&quot;2C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; chunks from
the step &lt;math id=&quot;p10.m40&quot; class=&quot;ltx_Math&quot; alttext=&quot;k=n-m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k=n-m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and a fortiori from all the steps &lt;math id=&quot;p10.m41&quot; class=&quot;ltx_Math&quot; alttext=&quot;k\leq n-m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k\leq n-m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Suppose that &lt;math id=&quot;p10.m42&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is monotonic. Then if &lt;math id=&quot;p10.m43&quot; class=&quot;ltx_Math&quot; alttext=&quot;c&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a chunk that does not contain any
element of &lt;math id=&quot;p10.m44&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math id=&quot;p10.m45&quot; class=&quot;ltx_Math&quot; alttext=&quot;T\setminus c&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T\setminus c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a reduction of &lt;math id=&quot;p10.m46&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
Lithium will remove the chunk &lt;math id=&quot;p10.m47&quot; class=&quot;ltx_Math&quot; alttext=&quot;c&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence at each step &lt;math id=&quot;p10.m48&quot; class=&quot;ltx_Math&quot; alttext=&quot;k\leq n-m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k\leq n-m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
at most &lt;math id=&quot;p10.m49&quot; class=&quot;ltx_Math&quot; alttext=&quot;2C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; chunks survive and so there are at most &lt;math id=&quot;p10.m50&quot; class=&quot;ltx_Math&quot; alttext=&quot;4C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;4C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; chunks at the next
step. A computation similar to what we have done for &lt;math id=&quot;p10.m51&quot; class=&quot;ltx_Math&quot; alttext=&quot;T=[1,M]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T=[1,M]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; shows that
&lt;math id=&quot;p10.m52&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}=O(C(\log_{2}(N)+M))&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}=O(C(\log_{2}(N)+M))&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if the final
testcase found by Lithium is &lt;math id=&quot;p10.m53&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-clustered. Note that we always have
&lt;math id=&quot;p10.m54&quot; class=&quot;ltx_Math&quot; alttext=&quot;M=o(N)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M=o(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p10.m55&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{2}(N)=o(N)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{2}(N)=o(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So if &lt;math id=&quot;p10.m56&quot; class=&quot;ltx_Math&quot; alttext=&quot;C=O(1)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C=O(1)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math id=&quot;p10.m57&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}=O(\log_{2}(N)+M)=o(N)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}=O(\log_{2}(N)+M)=o(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is small
as wanted. Also, the final testcase is always &lt;math id=&quot;p10.m58&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-clustered (union of intervals
that are singletons!)
so we found that the monotonic case is &lt;math id=&quot;p10.m59&quot; class=&quot;ltx_Math&quot; alttext=&quot;O(M(\log_{2}(N)+M))&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O(M(\log_{2}(N)+M))&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
We shall give a better bound below.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p11&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Now, for each step
&lt;math id=&quot;p11.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;k=1,2,...,n-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k=1,2,...,n-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, Lithium splits the testcase in at most
&lt;math id=&quot;p11.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; chunk and try to remove each chunk. Then it does at most &lt;math id=&quot;p11.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;N&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; steps
before stopping or removing one chunk (so the testcase becomes of size at most
&lt;math id=&quot;p11.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;N-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;), then it does at most &lt;math id=&quot;p11.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;N-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; steps before stopping or removing one more
chunk (so the testcase becomes of size at most &lt;math id=&quot;p11.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;N-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;), …,
then it does at most &lt;math id=&quot;p11.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;M+1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; steps before stopping or removing one more
chunk (so the testcase becomes of size at most &lt;math id=&quot;p11.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;). Then the testcase is
exactly of size &lt;math id=&quot;p11.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and Lithium does at most &lt;math id=&quot;p11.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; additional verifications.
This gives
&lt;math id=&quot;p11.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}\leq\sum_{k=1}^{n-1}2^{k}+\sum_{k=M}^{N}k=2^{n}-2+\frac{N(N+1)-M(M-1)}{2}%
=O(N^{2})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msubsup&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}\leq\sum_{k=1}^{n-1}2^{k}+\sum_{k=M}^{N}k=2^{n}-2+\frac{N(N+1)-M(M-1)}{2}%
=O(N^{2})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; verifications.
This bound is optimal if &lt;math id=&quot;p11.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;1\leq M\leq 2^{n-1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq M\leq 2^{n-1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (this is asymptotically
true since we assume &lt;math id=&quot;p11.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;M=o(N)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M=o(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;): consider the cases where
the proper reductions of &lt;math id=&quot;p11.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are exactly the segments
&lt;math id=&quot;p11.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;[1,k]\ (2^{n-1}+1\leq k\leq 2^{n}-1)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo rspace=&quot;7.5pt&quot; stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;[1,k]\ (2^{n-1}+1\leq k\leq 2^{n}-1)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p11.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;[k,2^{n-1}+1]\ (2\leq k\leq 2^{n-1}-M+2)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo rspace=&quot;7.5pt&quot; stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;[k,2^{n-1}+1]\ (2\leq k\leq 2^{n-1}-M+2)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
The testcase will be preserved
during the first phase. Then we will keep browsing at least the first half to
remove elements at position &lt;math id=&quot;p11.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{n-1}+2\leq k\leq 2^{n}-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{n-1}+2\leq k\leq 2^{n}-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So
&lt;math id=&quot;p11.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}\geq\sum_{k=2^{n-1}+2}^{2^{n}-1}2^{n-1}=2^{n-1}\left(2^{n-1}-2\right)=%
\Omega(N^{2})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Ω&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}\geq\sum_{k=2^{n-1}+2}^{2^{n}-1}2^{n-1}=2^{n-1}\left(2^{n-1}-2\right)=%
\Omega(N^{2})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p12&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We now come back to the case where &lt;math id=&quot;p12.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is
monotonic. We will prove that the worst case is
&lt;math id=&quot;p12.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}=\Theta\left(M\log_{2}(\frac{N}{M})\right)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Θ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}=\Theta\left(M\log_{2}(\frac{N}{M})\right)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so our assumption
&lt;math id=&quot;p12.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;M=o(N)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M=o(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; gives
&lt;math id=&quot;p12.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;M\log_{2}(\frac{N}{M})=\left(-\frac{M}{N}\log_{2}(\frac{M}{N})\right)N=o(N)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M\log_{2}(\frac{N}{M})=\left(-\frac{M}{N}\log_{2}(\frac{M}{N})\right)N=o(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; as we expected. During the steps
&lt;math id=&quot;p12.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;1\leq k\leq m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq k\leq m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we test at most &lt;math id=&quot;p12.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; chunks. When &lt;math id=&quot;p12.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;k=m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k=m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
&lt;math id=&quot;p12.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{m}\geq M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{m}\geq M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; chunks but at most &lt;math id=&quot;p12.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; distinct chunks contain
an element from the final reduction.
By monocity, at most &lt;math id=&quot;p12.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; chunks will survive and there are at most
&lt;math id=&quot;p12.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;2M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; chunks at step &lt;math id=&quot;p12.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;m+1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m+1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Again, only &lt;math id=&quot;p12.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; chunks will survive at step
&lt;math id=&quot;p12.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;m+2&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m+2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so on until &lt;math id=&quot;p12.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;k=n-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k=n-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. A the final step, it remains at most &lt;math id=&quot;p12.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;2M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
elements. Again by monocity a first round of &lt;math id=&quot;p12.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;2M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; tests will make &lt;math id=&quot;p12.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; elements
survive and we finally need &lt;math id=&quot;p12.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; additional tests to ensure that the test case
is minimal. Hence
&lt;math id=&quot;p12.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}\leq{\sum_{k=1}^{m}2^{k}}+{\sum_{k=m+1}^{n}2M}+M=2^{m+1}-3+M(2(n-m)+1)=O(%
M\log_{2}(\frac{N}{M}))&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msubsup&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msubsup&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}\leq{\sum_{k=1}^{m}2^{k}}+{\sum_{k=m+1}^{n}2M}+M=2^{m+1}-3+M(2(n-m)+1)=O(%
M\log_{2}(\frac{N}{M}))&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This bound is
optimal: if &lt;math id=&quot;p12.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;M=2^{m}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M=2^{m}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, consider the case where
&lt;math id=&quot;p12.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;T=\{j2^{n-m}+1:0\leq j&amp;lt;2^{m}\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T=\{j2^{n-m}+1:0\leq j&amp;lt;2^{m}\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the only minimal testcase
(and &lt;math id=&quot;p12.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; monotonic) ; if &lt;math id=&quot;p12.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not a power of two, consider the same &lt;math id=&quot;p12.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
with &lt;math id=&quot;p12.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{m}-M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{m}-M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; points removed at odd positions. Then for each step
&lt;math id=&quot;p12.m27&quot; class=&quot;ltx_Math&quot; alttext=&quot;1\leq k\leq m-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq k\leq m-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, no chunks inside &lt;math id=&quot;p12.m28&quot; class=&quot;ltx_Math&quot; alttext=&quot;[1,2^{n}]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;[1,2^{n}]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are removed. Then some
chunks in &lt;math id=&quot;p12.m29&quot; class=&quot;ltx_Math&quot; alttext=&quot;[1,2^{n}]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;[1,2^{n}]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are removed (none if &lt;math id=&quot;p12.m30&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a power of two) at
step &lt;math id=&quot;p12.m31&quot; class=&quot;ltx_Math&quot; alttext=&quot;m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and it remains &lt;math id=&quot;p12.m32&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; chunks. Then for steps &lt;math id=&quot;p12.m33&quot; class=&quot;ltx_Math&quot; alttext=&quot;m+1\leq k\leq n-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m+1\leq k\leq n-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
there are always exactly &lt;math id=&quot;p12.m34&quot; class=&quot;ltx_Math&quot; alttext=&quot;2M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; chunks to handle. So
&lt;math id=&quot;p12.m35&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}\geq\sum_{m+1\leq k\leq n-1}2M=2M(n-m-2)=2M(\log_{2}(\frac{N}{M})-2)=%
\Omega(M\log_{2}(\frac{N}{M}))&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Ω&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}\geq\sum_{m+1\leq k\leq n-1}2M=2M(n-m-2)=2M(\log_{2}(\frac{N}{M})-2)=%
\Omega(M\log_{2}(\frac{N}{M}))&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p13&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We note that we have used two different methods to bound the number of
verifications in the general monotonic case, or when the testcase is
&lt;math id=&quot;p13.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-clustered. One naturally wonders what happens when we combine the two
techniques. So let &lt;math id=&quot;p13.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;c=\lceil\log_{2}C\rceil\leq m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;⌈&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;⌉&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c=\lceil\log_{2}C\rceil\leq m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. From step &lt;math id=&quot;p13.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to &lt;math id=&quot;p13.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;c&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
the best bound we found was &lt;math id=&quot;p13.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;O(2^{k})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O(2^{k})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; ; from step &lt;math id=&quot;p13.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;c&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to &lt;math id=&quot;p13.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, it was
&lt;math id=&quot;p13.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;O(C)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O(C)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; ; from step &lt;math id=&quot;p13.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to &lt;math id=&quot;p13.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;n-m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n-m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; it was &lt;math id=&quot;p13.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;O(C)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O(C)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; again ; from step
&lt;math id=&quot;p13.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;n-m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n-m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to &lt;math id=&quot;p13.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;n-c&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n-c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, it was &lt;math id=&quot;p13.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;O(2^{1-k-(n-m)}C)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O(2^{1-k-(n-m)}C)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and finally from step &lt;math id=&quot;p13.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;n-c&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n-c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
to &lt;math id=&quot;p13.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, including final verifications, it was &lt;math id=&quot;p13.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;O(M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O(M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Taking the sum, we
get &lt;math id=&quot;p13.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}=O(2^{c}+((n-m)-c)C+2^{(n-c-(n-m))}C+(n-(n-c))M)=O(C\left(1+\log_{2}{%
\left(\frac{N}{MC}\right)}\right)+M(1+\log_{2}{C}))&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}=O(2^{c}+((n-m)-c)C+2^{(n-c-(n-m))}C+(n-(n-c))M)=O(C\left(1+\log_{2}{%
\left(\frac{N}{MC}\right)}\right)+M(1+\log_{2}{C}))&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
Because &lt;math id=&quot;p13.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;C=O(M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C=O(M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, this becomes
&lt;math id=&quot;p13.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}=O(C\log_{2}{\left(\frac{N}{MC}\right)}+M(1+\log_{2}{C}))&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}=O(C\log_{2}{\left(\frac{N}{MC}\right)}+M(1+\log_{2}{C}))&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If
&lt;math id=&quot;p13.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;C=O(1)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C=O(1)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, then we get &lt;math id=&quot;p13.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}=O(\log_{2}(N)+M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}=O(\log_{2}(N)+M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. At the opposite,
if &lt;math id=&quot;p13.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;C=\Omega(M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Ω&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C=\Omega(M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we get &lt;math id=&quot;p13.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}=\Omega(M\log_{2}{\left(\frac{N}{M}\right)})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Ω&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}=\Omega(M\log_{2}{\left(\frac{N}{M}\right)})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
If &lt;math id=&quot;p13.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not &lt;math id=&quot;p13.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;O(1)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O(1)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; but &lt;math id=&quot;p13.m27&quot; class=&quot;ltx_Math&quot; alttext=&quot;C=o(M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C=o(M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math id=&quot;p13.m28&quot; class=&quot;ltx_Math&quot; alttext=&quot;1=o(\log_{2}{C})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1=o(\log_{2}{C})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p13.m29&quot; class=&quot;ltx_Math&quot; alttext=&quot;C\log_{2}(C)=o(M\log_{2}{C})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C\log_{2}(C)=o(M\log_{2}{C})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so the expression can be simplified to
&lt;math id=&quot;p13.m30&quot; class=&quot;ltx_Math&quot; alttext=&quot;C_{N}=O(C\log_{2}{\left(\frac{N}{M}\right)}+M\log_{2}{C})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C_{N}=O(C\log_{2}{\left(\frac{N}{M}\right)}+M\log_{2}{C})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence we have
obtained an intermediate result between the worst and best monotonic cases and
shown how the role played by the number of clusters: the less the final testcase
is clustered, the faster Lithium finds it. The results are summarized in the
following table:&lt;/p&gt;
&lt;/div&gt;
&lt;figure id=&quot;Ch0.F1&quot; class=&quot;ltx_figure&quot;&gt;
&lt;table class=&quot;ltx_tabular ltx_centering ltx_guessed_headers ltx_align_middle&quot;&gt;
&lt;thead class=&quot;ltx_thead&quot;&gt;
&lt;tr class=&quot;ltx_tr&quot;&gt;
&lt;th class=&quot;ltx_td ltx_th ltx_th_column ltx_th_row ltx_border_l ltx_border_r ltx_border_t&quot;&gt;&lt;/th&gt;
&lt;th class=&quot;ltx_td ltx_align_center ltx_th ltx_th_column ltx_border_r ltx_border_t&quot;&gt;Number of tests&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody class=&quot;ltx_tbody&quot;&gt;
&lt;tr class=&quot;ltx_tr&quot;&gt;
&lt;th class=&quot;ltx_td ltx_align_center ltx_th ltx_th_row ltx_border_l ltx_border_r ltx_border_t&quot;&gt;Best case&lt;/th&gt;
&lt;td class=&quot;ltx_td ltx_align_center ltx_border_r ltx_border_t&quot;&gt;&lt;math id=&quot;Ch0.F1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Theta(\log_{2}(N)+M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Θ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Theta(\log_{2}(N)+M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;ltx_tr&quot;&gt;
&lt;th class=&quot;ltx_td ltx_align_center ltx_th ltx_th_row ltx_border_l ltx_border_r ltx_border_t&quot;&gt;
&lt;math id=&quot;Ch0.F1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is monotonic ; &lt;math id=&quot;Ch0.F1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math id=&quot;Ch0.F1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;O(1)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O(1)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-clustered&lt;/th&gt;
&lt;td class=&quot;ltx_td ltx_align_center ltx_border_r ltx_border_t&quot;&gt;&lt;math id=&quot;Ch0.F1.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;O(\log_{2}(N)+M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O(\log_{2}(N)+M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;ltx_tr&quot;&gt;
&lt;th class=&quot;ltx_td ltx_align_center ltx_th ltx_th_row ltx_border_l ltx_border_r ltx_border_t&quot;&gt;
&lt;math id=&quot;Ch0.F1.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is monotonic ; &lt;math id=&quot;Ch0.F1.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math id=&quot;Ch0.F1.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-clustered (&lt;math id=&quot;Ch0.F1.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;C=o(M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C=o(M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and unbounded)&lt;/th&gt;
&lt;td class=&quot;ltx_td ltx_align_center ltx_border_r ltx_border_t&quot;&gt;&lt;math id=&quot;Ch0.F1.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;O(C\log_{2}{\left(\frac{N}{M}\right)}+M\log_{2}{C})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O(C\log_{2}{\left(\frac{N}{M}\right)}+M\log_{2}{C})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;ltx_tr&quot;&gt;
&lt;th class=&quot;ltx_td ltx_align_center ltx_th ltx_th_row ltx_border_l ltx_border_r ltx_border_t&quot;&gt;
&lt;math id=&quot;Ch0.F1.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is monotonic&lt;/th&gt;
&lt;td class=&quot;ltx_td ltx_align_center ltx_border_r ltx_border_t&quot;&gt;&lt;math id=&quot;Ch0.F1.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;O\left(M\log_{2}\left(\frac{N}{M}\right)\right);o(N)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O\left(M\log_{2}\left(\frac{N}{M}\right)\right);o(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;ltx_tr&quot;&gt;
&lt;th class=&quot;ltx_td ltx_align_center ltx_th ltx_th_row ltx_border_b ltx_border_l ltx_border_r ltx_border_t&quot;&gt;Worst case&lt;/th&gt;
&lt;td class=&quot;ltx_td ltx_align_center ltx_border_b ltx_border_r ltx_border_t&quot;&gt;&lt;math id=&quot;Ch0.F1.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Theta(N^{2})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Θ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Theta(N^{2})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption class=&quot;ltx_caption ltx_centering&quot;&gt;&lt;span class=&quot;ltx_tag ltx_tag_figure&quot;&gt;Figure 0.1: &lt;/span&gt;Performance of Lithium’s algorithm for some initial testcase &lt;math id=&quot;Ch0.F1.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of
size &lt;math id=&quot;Ch0.F1.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;N&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and final reduction &lt;math id=&quot;Ch0.F1.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of size &lt;math id=&quot;Ch0.F1.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;M=o(N)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M=o(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. &lt;math id=&quot;Ch0.F1.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is &lt;math id=&quot;Ch0.F1.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-clustered if it
is the union of &lt;math id=&quot;Ch0.F1.m27&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; intervals.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;div id=&quot;p14&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In the ddmin algorithm, at each step we add a preliminary round where we try
to immediately reduce to a single chunk (or equivalently to remove the
complement of a chunk). Actually, the ddmin algorithm only does this preliminary
round at steps where there are more than 2 chunks for otherwise it would do
twice the same work. For each step &lt;math id=&quot;p14.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;k&amp;gt;1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k&amp;gt;1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, if one chunk
&lt;math id=&quot;p14.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;c_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a reduction of &lt;math id=&quot;p14.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math id=&quot;p14.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;c_{1}\subseteq c_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c_{1}\subseteq c_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for some chunk &lt;math id=&quot;p14.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;c_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; at the
previous step &lt;math id=&quot;p14.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;k-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Now if &lt;math id=&quot;p14.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is monotonic then, at level &lt;math id=&quot;p14.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;k-1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, removing all
but the chunk &lt;math id=&quot;p14.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;c_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; gives a subset that contains &lt;math id=&quot;p14.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;c_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so a reduction of &lt;math id=&quot;p14.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
by monocity. Hence on chunk survive at level &lt;math id=&quot;p14.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;k&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
there are exactly 2 chunks at level &lt;math id=&quot;p14.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;k&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so the ddmin
algorithm is exactly Lithium’s algorithm when &lt;math id=&quot;p14.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is monotonic. The ddmin
algorithm keeps in memory the subsets that we didn’t find
interesting in order to avoid
repeating them. However, if we only reduce to the complement of a chunk, then
we can never repeat the same subset and so this additional work is useless.
That’s the case if &lt;math id=&quot;p14.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is monotonic.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p15&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Finally,
if &lt;math id=&quot;p15.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is monotonic Jesse proposes a simpler approach based on a binary search.
Suppose first that there is only one minimal testcase &lt;math id=&quot;p15.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
If &lt;math id=&quot;p15.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;k\geq\min T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k\geq\min T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math id=&quot;p15.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;[1,k]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;[1,k]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; intersects &lt;math id=&quot;p15.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
&lt;math id=&quot;p15.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;U_{k}=S\setminus[1,k]\neq T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{k}=S\setminus[1,k]\neq T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then &lt;math id=&quot;p15.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;U_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not a reduction of &lt;math id=&quot;p15.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for
otherwise a minimal reduction of &lt;math id=&quot;p15.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;U_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; would be a minimal reduction of &lt;math id=&quot;p15.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
distinct from &lt;math id=&quot;p15.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which we exclude by hypothesis. If instead &lt;math id=&quot;p15.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;k&amp;lt;\min T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k&amp;lt;\min T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then
&lt;math id=&quot;p15.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;[1,k]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;[1,k]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; does not intersect &lt;math id=&quot;p15.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p15.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;U_{k}=S\setminus[1,k]\supseteq T\setminus[1,k]\supseteq T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{k}=S\setminus[1,k]\supseteq T\setminus[1,k]\supseteq T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a
reduction of &lt;math id=&quot;p15.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; because &lt;math id=&quot;p15.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is monotonic. So we can use a binary search
to find &lt;math id=&quot;p15.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;\min T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\min T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by testing at most &lt;math id=&quot;p15.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{2}(N)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{2}(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; testcases
(modulo some constant). Then we try with intervals
&lt;math id=&quot;p15.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;[1+\min T,k]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;[1+\min T,k]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; to find the second least element of &lt;math id=&quot;p15.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in at most
&lt;math id=&quot;p15.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;\log_{2}(N)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\log_{2}(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We continue until we find the &lt;math id=&quot;p15.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;M&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-th element of &lt;math id=&quot;p15.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Clearly,
this gives &lt;math id=&quot;p15.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;M\log_{2}(N)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M\log_{2}(N)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; verifications which sounds equivalent to
Jesse’s bound with even a better constant factor. Note that the algorithm
still works if we remove the assumption that there is only one minimal testcase
&lt;math id=&quot;p15.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We start by &lt;math id=&quot;p15.m27&quot; class=&quot;ltx_Math&quot; alttext=&quot;S=S_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S=S_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and find
&lt;math id=&quot;p15.m28&quot; class=&quot;ltx_Math&quot; alttext=&quot;x_{1}=\max\{\min T:T\text{ is a minimal reduction of }S_{1}\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mtext&gt; is a minimal reduction of &lt;/mtext&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x_{1}=\max\{\min T:T\text{ is a minimal reduction of }S_{1}\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;: if
&lt;math id=&quot;p15.m29&quot; class=&quot;ltx_Math&quot; alttext=&quot;k&amp;lt;x_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k&amp;lt;x_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math id=&quot;p15.m30&quot; class=&quot;ltx_Math&quot; alttext=&quot;S\setminus[1;k]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;;&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S\setminus[1;k]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; contains at least one mininal reduction
with least element &lt;math id=&quot;p15.m31&quot; class=&quot;ltx_Math&quot; alttext=&quot;x_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so is a reduction because &lt;math id=&quot;p15.m32&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is monotonic.
If &lt;math id=&quot;p15.m33&quot; class=&quot;ltx_Math&quot; alttext=&quot;k\geq x_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k\geq x_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math id=&quot;p15.m34&quot; class=&quot;ltx_Math&quot; alttext=&quot;S\setminus[1;k]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;;&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S\setminus[1;k]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not a reduction of &lt;math id=&quot;p15.m35&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or a minimal
reduction of &lt;math id=&quot;p15.m36&quot; class=&quot;ltx_Math&quot; alttext=&quot;S\setminus[1;k]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;;&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S\setminus[1;k]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; would be a minimal reduction of &lt;math id=&quot;p15.m37&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; whose
least element is greater than &lt;math id=&quot;p15.m38&quot; class=&quot;ltx_Math&quot; alttext=&quot;x_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So &lt;math id=&quot;p15.m39&quot; class=&quot;ltx_Math&quot; alttext=&quot;S_{2}=S_{1}\setminus[1;x_{1}-1]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;;&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S_{2}=S_{1}\setminus[1;x_{1}-1]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is
a reduction of &lt;math id=&quot;p15.m40&quot; class=&quot;ltx_Math&quot; alttext=&quot;S_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. The algorithm continues to find
&lt;math id=&quot;p15.m41&quot; class=&quot;ltx_Math&quot; alttext=&quot;x_{2}=\max\{\min(T\setminus\{x_{1}\}):T\text{ is a minimal reduction of }S_{2}%
,\min(T)=x_{1}\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mtext&gt; is a minimal reduction of &lt;/mtext&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x_{2}=\max\{\min(T\setminus\{x_{1}\}):T\text{ is a minimal reduction of }S_{2}%
,\min(T)=x_{1}\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; etc and finally
returns a minimal reduction of &lt;math id=&quot;p15.m42&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
However, it is not clear that this
approach can work if &lt;math id=&quot;p15.m43&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not monotonic while we can hope that Lithium is
still efficient if &lt;math id=&quot;p15.m44&quot; class=&quot;ltx_Math&quot; alttext=&quot;S&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;S&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is “almost” monotonic.
We remark that when there is only one minimal testcase &lt;math id=&quot;p15.m45&quot; class=&quot;ltx_Math&quot; alttext=&quot;T=[1,M]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T=[1,M]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the binary
search approach would require something like
&lt;math id=&quot;p15.m46&quot; class=&quot;ltx_Math&quot; alttext=&quot;\sum_{k=0}^{M-1}\log_{2}(N-k)=M\log_{2}(N)+\sum_{k=0}^{M-1}\log_{2}\left(1-%
\frac{k}{N}\right)\geq M\log_{2}(N)+M\log_{2}\left(1-\frac{M}{N}\right)=M\log_%
{2}(N)+o(M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sum_{k=0}^{M-1}\log_{2}(N-k)=M\log_{2}(N)+\sum_{k=0}^{M-1}\log_{2}\left(1-%
\frac{k}{N}\right)\geq M\log_{2}(N)+M\log_{2}\left(1-\frac{M}{N}\right)=M\log_%
{2}(N)+o(M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So that would be the worst case of the binary search
approach whereas Lithium handles this case very nicely in
&lt;math id=&quot;p15.m47&quot; class=&quot;ltx_Math&quot; alttext=&quot;\Theta(\log_{2}(N)+M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Θ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Theta(\log_{2}(N)+M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;! In general, if
there is only one minimal testcase &lt;math id=&quot;p15.m48&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of size &lt;math id=&quot;p15.m49&quot; class=&quot;ltx_Math&quot; alttext=&quot;M\leq\frac{N}{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;M\leq\frac{N}{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then
&lt;math id=&quot;p15.m50&quot; class=&quot;ltx_Math&quot; alttext=&quot;\max(T)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\max(T)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be anywhere between &lt;math id=&quot;p15.m51&quot; class=&quot;ltx_Math&quot; alttext=&quot;[M,N]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;[M,N]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and if &lt;math id=&quot;p15.m52&quot; class=&quot;ltx_Math&quot; alttext=&quot;T&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;T&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is
placed at random, &lt;math id=&quot;p15.m53&quot; class=&quot;ltx_Math&quot; alttext=&quot;\max(T)\leq\frac{3}{4}N&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\max(T)\leq\frac{3}{4}N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; with probability at least
&lt;math id=&quot;p15.m54&quot; class=&quot;ltx_Math&quot; alttext=&quot;\frac{1}{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\frac{1}{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So the average complexity of the binary search approach in that
case will
be at least &lt;math id=&quot;p15.m55&quot; class=&quot;ltx_Math&quot; alttext=&quot;\frac{1}{2}\sum_{k=0}^{M-1}\log_{2}(\frac{1}{4}N)=\frac{1}{2}M\log_{2}(N)+o(M)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\frac{1}{2}\sum_{k=0}^{M-1}\log_{2}(\frac{1}{4}N)=\frac{1}{2}M\log_{2}(N)+o(M)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which is still not as good as Lithium’s
optimal worst case of &lt;math id=&quot;p15.m56&quot; class=&quot;ltx_Math&quot; alttext=&quot;O(M\log_{2}(\frac{N}{M}))&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;log&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;O(M\log_{2}(\frac{N}{M}))&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;…&lt;/p&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Exercises in Set Theory: Ultrafilters and Boolean algebras</title>
   <link href="https://frederic-wang.fr//2012/11/27/ultrafilters-and-boolean-algebras/"/>
   <updated>2012-11-27T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2012/11/27/ultrafilters-and-boolean-algebras</id>
   <content type="html">
&lt;div id=&quot;p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Since my
previous blog post, I have been
working on exercises from chapter 7 of Thomas Jech’s book &quot;Set Theory&quot;.
I’ve published my solutions but I’m not yet done with exercises 7.22 and
7.28 which seem to be generalizations of theorems 4.3 and 3.2.
I guess that before coming back to these two exercises,
I’ll consider the content and exercises of subsequent chapters…&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;I had the opportunity to read chapter 7 again and to study more
precisely the correctness of some claims
(you know, those that are &quot;clearly seen to be obvious
via an easy proof based on a straightforward argument that makes them
trivial&quot; but actually take time before really being understood)
I describe below the two statements for which the ratio between the time
I spent on them and the length of the proof provided was the
largest. I indicate the arguments I used to convince myself.
I also had trouble to
understand the proof of theorem 7.15 but most of the required arguments can
actually be found in the exercices.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p3&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The first part of the chapter essentially deals with &lt;a href=&quot;https://en.wikipedia.org/wiki/Ultrafilter#Formal_definition&quot; title=&quot;&quot; class=&quot;ltx_ref&quot;&gt;ultrafilters&lt;/a&gt; on an infinite set.
In particular,
a nonprincipal ultrafilter &lt;math id=&quot;p3.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;U&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; on &lt;math id=&quot;p3.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a Ramsey ultrafilter if for
every partition &lt;math id=&quot;p3.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\{A_{n}|n&amp;lt;\omega\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\{A_{n}|n&amp;lt;\omega\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of &lt;math id=&quot;p3.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; into &lt;math id=&quot;p3.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\aleph_{0}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\aleph_{0}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; pieces
such that &lt;math id=&quot;p3.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall n,A_{n}\notin U&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∉&lt;/mo&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall n,A_{n}\notin U&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, there exists &lt;math id=&quot;p3.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;X\in U&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X\in U&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
&lt;math id=&quot;p3.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall n,\left|X\cap A_{n}\right|=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall n,\left|X\cap A_{n}\right|=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We have:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;Thmtheorem1&quot; class=&quot;ltx_theorem ltx_theorem_theorem&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Theorem 1&lt;/span&gt;.&lt;/h6&gt;
&lt;div id=&quot;Thmtheorem1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;The continuum hypothesis implies the existence of a Ramsey ultrafilter.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;ltx_proof&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_italic ltx_title_proof&quot;&gt;Proof.&lt;/h6&gt;
&lt;div id=&quot;p4&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The proof given in the book is to consider an enumeration
&lt;math id=&quot;p4.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathcal{A}_{\alpha},\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi class=&quot;ltx_font_mathcaligraphic&quot;&gt;𝒜&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathcal{A}_{\alpha},\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of all partitions of &lt;math id=&quot;p4.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and to
construct by induction a sequence &lt;math id=&quot;p4.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;{(X_{\alpha})}_{\alpha&amp;lt;\omega_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(X_{\alpha})}_{\alpha&amp;lt;\omega_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of
infinite subsets. &lt;math id=&quot;p4.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha+1}\subseteq X_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha+1}\subseteq X_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
is chosen to be included in some element of
&lt;math id=&quot;p4.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathcal{A}_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi class=&quot;ltx_font_mathcaligraphic&quot;&gt;𝒜&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathcal{A}_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or to intersect each of them at, at most, one element.
For &lt;math id=&quot;p4.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; limit, &lt;math id=&quot;p4.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is chosen such that
&lt;math id=&quot;p4.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}\setminus X_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}\setminus X_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is finite for all &lt;math id=&quot;p4.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Such a
&lt;math id=&quot;p4.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is claimed to exist because &lt;math id=&quot;p4.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is countable.
Finally, &lt;math id=&quot;p4.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;D=\{X:X\supseteq X_{\alpha}\text{ for some }\alpha&amp;lt;\omega_{1}\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mtext&gt; for some &lt;/mtext&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D=\{X:X\supseteq X_{\alpha}\text{ for some }\alpha&amp;lt;\omega_{1}\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is claimed to be a Ramsey ultrafilter.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p5&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;∎&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p6&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;There were several points that were not obvious to me. First, it’s good to
count the number of partitions of &lt;math id=&quot;p6.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
On the one hand, given any &lt;math id=&quot;p6.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;A_{0}\subseteq\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A_{0}\subseteq\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which is neither
empty nor cofinite we can define a partition of &lt;math id=&quot;p6.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by
&lt;math id=&quot;p6.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall n&amp;lt;\omega,A_{n+1}=\left\{\min{\left({\omega\setminus{\cup_{m\leq n}A_{m%
}}}\right)}\right\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;{&lt;/mo&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall n&amp;lt;\omega,A_{n+1}=\left\{\min{\left({\omega\setminus{\cup_{m\leq n}A_{m%
}}}\right)}\right\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and so there are at least &lt;math id=&quot;p6.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{\aleph_{0}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{\aleph_{0}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such partitions
(cofinite subsets are in bijection with finite subsets
and &lt;math id=&quot;p6.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;|\omega^{&amp;lt;\omega}|=\aleph_{0}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;|\omega^{&amp;lt;\omega}|=\aleph_{0}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;). On the other hand,
a partition is determined by the family of subsets &lt;math id=&quot;p6.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\{A_{n}|n&amp;lt;\omega\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\{A_{n}|n&amp;lt;\omega\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and so there are at most
&lt;math id=&quot;p6.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;{\left(2^{\aleph_{0}}\right)}^{\aleph_{0}}=2^{\aleph_{0}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\left(2^{\aleph_{0}}\right)}^{\aleph_{0}}=2^{\aleph_{0}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such partitions.
Since we assume the continuum hypothesis &lt;math id=&quot;p6.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{\aleph_{0}}=\aleph_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{\aleph_{0}}=\aleph_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we
get the enumeration &lt;math id=&quot;p6.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathcal{A}_{\alpha},\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi class=&quot;ltx_font_mathcaligraphic&quot;&gt;𝒜&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathcal{A}_{\alpha},\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p7&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Next, I’m not even sure that as it is defined &lt;math id=&quot;p7.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a filter.
Because &lt;math id=&quot;p7.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
is infinite &lt;math id=&quot;p7.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\emptyset\notin D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∅&lt;/mi&gt;&lt;mo&gt;∉&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\emptyset\notin D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p7.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;Y\supseteq X\supseteq X_{\alpha}\implies Y\in D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;Y\supseteq X\supseteq X_{\alpha}\implies Y\in D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; but if
&lt;math id=&quot;p7.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;X\supseteq X_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X\supseteq X_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p7.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;Y\supseteq X_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;Y\supseteq X_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, it does not seem
really clear which &lt;math id=&quot;p7.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\gamma}\subseteq X\cap Y&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\gamma}\subseteq X\cap Y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. However, if
&lt;math id=&quot;p7.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;U&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a nonprincipal ultrafilter a remark from chapter 10 suggests that
&lt;math id=&quot;p7.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;U&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; does not contain any finite set. By exercise 7.3, this is equivalent
to the fact that &lt;math id=&quot;p7.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;U&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; does not contain any singleton &lt;math id=&quot;p7.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;\{\alpha\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\{\alpha\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This
latter point is easy to verify: if we assume the contrary, because &lt;math id=&quot;p7.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;U&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is
nonprincipal,
there exists &lt;math id=&quot;p7.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;X\in U&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X\in U&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p7.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;X\nsupseteq\{\alpha\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;⊉&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X\nsupseteq\{\alpha\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
&lt;math id=&quot;p7.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;\kappa\setminus X\supseteq\{\alpha\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\kappa\setminus X\supseteq\{\alpha\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; would be in &lt;math id=&quot;p7.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;U&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence any
ultrafilter containing &lt;math id=&quot;p7.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; should also contain
&lt;math id=&quot;p7.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;E=\{X:\exists\alpha&amp;lt;\omega_{1},\exists x\in\kappa^{&amp;lt;\omega},X\supseteq X_{%
\alpha}\setminus x\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∃&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∃&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;E=\{X:\exists\alpha&amp;lt;\omega_{1},\exists x\in\kappa^{&amp;lt;\omega},X\supseteq X_{%
\alpha}\setminus x\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. &lt;math id=&quot;p7.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;E&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;E&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a filter: the arguments above
still hold and &lt;math id=&quot;p7.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;X\supseteq X_{\alpha}\setminus x\wedge Y\supseteq X_{\beta}\setminus y\implies
X%
\cap Y\supseteq X_{\alpha}\cap X_{\beta}-(x\cup y)\supseteq X_{\alpha}%
\setminus(X_{\alpha}\setminus X_{\beta}\cup x\cup y)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∧&lt;/mo&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X\supseteq X_{\alpha}\setminus x\wedge Y\supseteq X_{\beta}\setminus y\implies
X%
\cap Y\supseteq X_{\alpha}\cap X_{\beta}-(x\cup y)\supseteq X_{\alpha}%
\setminus(X_{\alpha}\setminus X_{\beta}\cup x\cup y)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so we
only need to verify that &lt;math id=&quot;p7.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}\setminus X_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}\setminus X_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is finite if
&lt;math id=&quot;p7.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This is already what is claimed for &lt;math id=&quot;p7.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; a limit
ordinal. In general if &lt;math id=&quot;p7.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the greatest limit ordinal such that
&lt;math id=&quot;p7.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma\leq\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma\leq\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then by construction,
&lt;math id=&quot;p7.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\gamma}\supseteq X_{\gamma+1}\supseteq...\supseteq X_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\gamma}\supseteq X_{\gamma+1}\supseteq...\supseteq X_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
so &lt;math id=&quot;p7.m27&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}\setminus X_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}\setminus X_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is empty if &lt;math id=&quot;p7.m28&quot; class=&quot;ltx_Math&quot; alttext=&quot;\gamma\leq\beta\leq\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\gamma\leq\beta\leq\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and &lt;math id=&quot;p7.m29&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}\setminus X_{\beta}\subseteq X_{\gamma}\setminus X_{\beta}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}\setminus X_{\beta}\subseteq X_{\gamma}\setminus X_{\beta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is finite if &lt;math id=&quot;p7.m30&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\gamma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\gamma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
So we can replace &lt;math id=&quot;p7.m31&quot; class=&quot;ltx_Math&quot; alttext=&quot;D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by a &quot;ultrafilter extending &lt;math id=&quot;p7.m32&quot; class=&quot;ltx_Math&quot; alttext=&quot;E&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;E&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&quot;. It’s not
too difficult to check that a ultrafilter containing &lt;math id=&quot;p7.m33&quot; class=&quot;ltx_Math&quot; alttext=&quot;D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; must be Ramsey.
For any partition &lt;math id=&quot;p7.m34&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathcal{A}_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi class=&quot;ltx_font_mathcaligraphic&quot;&gt;𝒜&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathcal{A}_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then by construction either
&lt;math id=&quot;p7.m35&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha+1}\subseteq A_{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha+1}\subseteq A_{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for some &lt;math id=&quot;p7.m36&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p7.m37&quot; class=&quot;ltx_Math&quot; alttext=&quot;A_{n}\in D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A_{n}\in D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; or
&lt;math id=&quot;p7.m38&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall n&amp;lt;\omega,|X_{\alpha+1}\cap A_{n}|\leq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall n&amp;lt;\omega,|X_{\alpha+1}\cap A_{n}|\leq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. In the latter case
we can find &lt;math id=&quot;p7.m39&quot; class=&quot;ltx_Math&quot; alttext=&quot;X\supseteq X_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;⊇&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X\supseteq X_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (so &lt;math id=&quot;p7.m40&quot; class=&quot;ltx_Math&quot; alttext=&quot;X\in D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X\in D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) such that
&lt;math id=&quot;p7.m41&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall n,|X\cap A_{n}|=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall n,|X\cap A_{n}|=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (we pick one element from each &lt;math id=&quot;p7.m42&quot; class=&quot;ltx_Math&quot; alttext=&quot;A_{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A_{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such
that &lt;math id=&quot;p7.m43&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha+1}\cap A_{n}=\emptyset&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha+1}\cap A_{n}=\emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and put these elements into &lt;math id=&quot;p7.m44&quot; class=&quot;ltx_Math&quot; alttext=&quot;X&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p8&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Finally, the most difficult part was to understand how the sequence
&lt;math id=&quot;p8.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;{(X_{\alpha})}_{\alpha&amp;lt;\omega_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(X_{\alpha})}_{\alpha&amp;lt;\omega_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can be built. We can choose &lt;math id=&quot;p8.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{0}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{0}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; arbitrarily
as this set is not involved in the arguments above.
For any &lt;math id=&quot;p8.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, if there exists some
&lt;math id=&quot;p8.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;A\in\mathcal{A}_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi class=&quot;ltx_font_mathcaligraphic&quot;&gt;𝒜&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A\in\mathcal{A}_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p8.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}\cap A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}\cap A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is infinite, we just
set &lt;math id=&quot;p8.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha+1}=X_{\alpha}\cap A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha+1}=X_{\alpha}\cap A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Otherwise, since
&lt;math id=&quot;p8.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}=\cup_{A\in\mathcal{A}_{\alpha}}(X_{\alpha}\cap A)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi class=&quot;ltx_font_mathcaligraphic&quot;&gt;𝒜&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}=\cup_{A\in\mathcal{A}_{\alpha}}(X_{\alpha}\cap A)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is infinite,
&lt;math id=&quot;p8.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}\cap A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}\cap A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is nonempty for infinitely many &lt;math id=&quot;p8.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;A\in\mathcal{A}_{\alpha}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi class=&quot;ltx_font_mathcaligraphic&quot;&gt;𝒜&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A\in\mathcal{A}_{\alpha}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Pick one element from each nonempty set to form the set &lt;math id=&quot;p8.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
By definition, &lt;math id=&quot;p8.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall A\in\mathcal{A}_{\alpha},\left|X_{\alpha+1}\cap A\right|\leq 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msub&gt;&lt;mi class=&quot;ltx_font_mathcaligraphic&quot;&gt;𝒜&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall A\in\mathcal{A}_{\alpha},\left|X_{\alpha+1}\cap A\right|\leq 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Now we consider the case &lt;math id=&quot;p8.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&amp;lt;\omega_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&amp;lt;\omega_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; limit. Let
&lt;math id=&quot;p8.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta_{1}&amp;lt;\beta_{2}&amp;lt;...\beta_{n}&amp;lt;...&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta_{1}&amp;lt;\beta_{2}&amp;lt;...\beta_{n}&amp;lt;...&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be a cofinal &lt;math id=&quot;p8.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-sequence in
&lt;math id=&quot;p8.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Note that it is the only place where we use the continuum
hypothesis! For each &lt;math id=&quot;p8.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;n&amp;lt;\omega&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&amp;lt;\omega&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we define
&lt;math id=&quot;p8.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;Y_{n}=\bigcap_{i&amp;lt;n}X_{\beta_{i}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo largeop=&quot;true&quot; mathsize=&quot;160%&quot; stretchy=&quot;false&quot; symmetric=&quot;true&quot;&gt;⋂&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;Y_{n}=\bigcap_{i&amp;lt;n}X_{\beta_{i}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We have &lt;math id=&quot;p8.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\beta_{n}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\beta_{n}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; infinite and
&lt;math id=&quot;p8.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\beta_{n}}\setminus X_{\beta_{n-1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\beta_{n}}\setminus X_{\beta_{n-1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; finite so &lt;math id=&quot;p8.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\beta_{n}}\cap X_{\beta_{n-1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\beta_{n}}\cap X_{\beta_{n-1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
is infinite. Similarly, &lt;math id=&quot;p8.m21&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\beta_{n}}\setminus X_{\beta_{n-1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\beta_{n}}\setminus X_{\beta_{n-1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p8.m22&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\beta_{n-1}}\setminus X_{\beta_{n-2}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\beta_{n-1}}\setminus X_{\beta_{n-2}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are finite so
&lt;math id=&quot;p8.m23&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\beta_{n}}\cap X_{\beta_{n-1}}\cap X_{\beta_{n-2}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\beta_{n}}\cap X_{\beta_{n-1}}\cap X_{\beta_{n-2}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is infinite etc and finally
&lt;math id=&quot;p8.m24&quot; class=&quot;ltx_Math&quot; alttext=&quot;Y_{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;Y_{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is infinite. Thus we can use a classical technique from Cantor (I can’t
find a reference) and construct the set &lt;math id=&quot;p8.m25&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}=\{x_{n}|n&amp;lt;\omega\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}=\{x_{n}|n&amp;lt;\omega\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
by picking each &lt;math id=&quot;p8.m26&quot; class=&quot;ltx_Math&quot; alttext=&quot;x_{n}\in Y_{n}\setminus\{x_{0},x_{1},...,x_{n-1}\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;x_{n}\in Y_{n}\setminus\{x_{0},x_{1},...,x_{n-1}\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
so that &lt;math id=&quot;p8.m27&quot; class=&quot;ltx_Math&quot; alttext=&quot;X_{\alpha}\setminus X_{\beta_{n}}\subseteq\{x_{0},x_{1},...,x_{n-1}\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{\alpha}\setminus X_{\beta_{n}}\subseteq\{x_{0},x_{1},...,x_{n-1}\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is finite. Moreover
for each &lt;math id=&quot;p8.m28&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta&amp;lt;\alpha&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta&amp;lt;\alpha&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; consider some &lt;math id=&quot;p8.m29&quot; class=&quot;ltx_Math&quot; alttext=&quot;\beta_{n}&amp;gt;\beta&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\beta_{n}&amp;gt;\beta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:
&lt;math id=&quot;p8.m30&quot; class=&quot;ltx_Math&quot; alttext=&quot;|X_{\alpha}\setminus X_{\beta}|\leq{|X_{\alpha}\setminus X_{\beta}|}+{|X_{%
\beta}\setminus X_{\beta_{n}}|}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∖&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;β&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;|X_{\alpha}\setminus X_{\beta}|\leq{|X_{\alpha}\setminus X_{\beta}|}+{|X_{%
\beta}\setminus X_{\beta_{n}}|}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is
finite.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p9&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The second part of the chapter is about &lt;a href=&quot;https://en.wikipedia.org/wiki/Boolean_algebra&quot; title=&quot;&quot; class=&quot;ltx_ref&quot;&gt;Boolean algebras&lt;/a&gt;. A Boolean algebra &lt;math id=&quot;p9.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a completion of
a Boolean algebra &lt;math id=&quot;p9.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if it is complete (every subset &lt;math id=&quot;p9.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;X\subseteq C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X\subseteq C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has
a least upper bound &lt;math id=&quot;p9.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\sum X&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sum X&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;) and if &lt;math id=&quot;p9.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a dense subalgebra of &lt;math id=&quot;p9.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (for
any &lt;math id=&quot;p9.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;0&amp;lt;c\in C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0&amp;lt;c\in C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; there exists &lt;math id=&quot;p9.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;b\in B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;b\in B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p9.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;0&amp;lt;b\leq c&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0&amp;lt;b\leq c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;).
I got stuck on the apparently easy proof of the following lemma:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;Thmlemma1&quot; class=&quot;ltx_theorem ltx_theorem_lemma&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Lemma 1&lt;/span&gt;.&lt;/h6&gt;
&lt;div id=&quot;Thmlemma1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;The completion of a Boolean algebra &lt;math id=&quot;Thmlemma1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is unique up to isomorphism&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;ltx_proof&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_italic ltx_title_proof&quot;&gt;Proof.&lt;/h6&gt;
&lt;div id=&quot;p10&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Let &lt;math id=&quot;p10.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;C,D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C,D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are two completions of &lt;math id=&quot;p10.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. It is indicated in the book
that the density of &lt;math id=&quot;p10.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in &lt;math id=&quot;p10.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p10.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is used to prove that
&lt;math id=&quot;p10.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\pi(c)=\sum^{D}\{u\in B|u\leq c\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\pi(c)=\sum^{D}\{u\in B|u\leq c\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
defines an isomorphism between &lt;math id=&quot;p10.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p10.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. The example of
&lt;math id=&quot;p10.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;c\neq 0\implies\pi(c)\neq 0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c\neq 0\implies\pi(c)\neq 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is given: indeed if &lt;math id=&quot;p10.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;0&amp;lt;c&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0&amp;lt;c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we can
find an element &lt;math id=&quot;p10.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;b\in B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;b\in B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that
&lt;math id=&quot;p10.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;0&amp;lt;b\leq c&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0&amp;lt;b\leq c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p10.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;0&amp;lt;b\leq\pi(c)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0&amp;lt;b\leq\pi(c)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
∎&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p11&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Two or three pages before, it is mentioned that &quot;if &lt;math id=&quot;p11.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\pi:C\rightarrow D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\pi:C\rightarrow D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
is a one-to-one mapping such that
&lt;math id=&quot;p11.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall u,v\in C,u\leq v\Leftrightarrow\pi(u)\leq\pi(v)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo&gt;⇔&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall u,v\in C,u\leq v\Leftrightarrow\pi(u)\leq\pi(v)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then
&lt;math id=&quot;p11.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\pi&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\pi&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an isomorphism&quot;.
That seems to be the most natural method to prove the lemma above. However,
this statement is false: consider the morphism of Boolean algebra
&lt;math id=&quot;p11.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\pi:\{0,1\}\rightarrow\operatorname{\mathcal{P}}(\{0,1\})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;mrow&gt;&lt;mo class=&quot;ltx_font_mathcaligraphic&quot;&gt;𝒫&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\pi:\{0,1\}\rightarrow\operatorname{\mathcal{P}}(\{0,1\})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which is one-to-one but
not surjective. Actually, the property
&lt;math id=&quot;p11.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall u,v\in C,u\leq v\Leftrightarrow\pi(u)\leq\pi(v)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo&gt;⇔&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall u,v\in C,u\leq v\Leftrightarrow\pi(u)\leq\pi(v)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; implies
the fact that &lt;math id=&quot;p11.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\pi&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\pi&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is one-to-one, which becomes vacuous.
So I suspect the author
rather means &quot;surjective&quot; instead of &quot;one-to-one&quot;. Indeed, in that case
&lt;math id=&quot;p11.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\pi&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\pi&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a bijection that preserves the order &lt;math id=&quot;p11.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\leq&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\leq&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in both directions
and since all the
operations of the Boolean algebra can be described in terms of this order,
&lt;math id=&quot;p11.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\pi&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\pi&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is an isomorphism.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p12&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;So first, given &lt;math id=&quot;p12.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;d\in D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;d\in D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we want to find &lt;math id=&quot;p12.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;c\in C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c\in C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p12.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\pi(c)=d&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\pi(c)=d&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
By symmetry, the natural candidate is &lt;math id=&quot;p12.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;c=\sum^{C}\{u\in B|u\leq d\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;c=\sum^{C}\{u\in B|u\leq d\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
For all &lt;math id=&quot;p12.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;u\leq d&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;u\leq d&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we have &lt;math id=&quot;p12.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;u\leq c&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;u\leq c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
&lt;math id=&quot;p12.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;d\leq\sum^{D}\{u\in B|u\leq d\}\leq\sum^{D}\{u\in B|u\leq c\}=\pi(c)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;d\leq\sum^{D}\{u\in B|u\leq d\}\leq\sum^{D}\{u\in B|u\leq c\}=\pi(c)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If &lt;math id=&quot;p12.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;d&amp;lt;\pi(c)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;d&amp;lt;\pi(c)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then by density
we can find &lt;math id=&quot;p12.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;b\in B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;b\in B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p12.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;0&amp;lt;b\leq\pi(c)-d&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0&amp;lt;b\leq\pi(c)-d&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence
&lt;math id=&quot;p12.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;b\leq\pi(c)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;b\leq\pi(c)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p12.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;b\leq-d&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;b\leq-d&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. The latter implies that for all &lt;math id=&quot;p12.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;u\leq d&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;u\leq d&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
we have &lt;math id=&quot;p12.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;u\leq-b&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;u\leq-b&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; an so &lt;math id=&quot;p12.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;\pi(c)\leq-b&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\pi(c)\leq-b&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Combining this with the former,
we would have &lt;math id=&quot;p12.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;b\leq\pi(c)\cdot-\pi(c)=0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;b\leq\pi(c)\cdot-\pi(c)=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Thus &lt;math id=&quot;p12.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;\pi&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\pi&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is surjective.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p13&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;It remains to prove
&lt;math id=&quot;p13.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall u,v\in C,u\leq v\Leftrightarrow\pi(u)\leq\pi(v)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo&gt;⇔&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall u,v\in C,u\leq v\Leftrightarrow\pi(u)\leq\pi(v)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If
&lt;math id=&quot;p13.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;u\leq v&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;u\leq v&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math id=&quot;p13.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\pi(u)=\sum^{D}\{b\in B|b\leq u\}\leq\sum^{D}\{b\in B|b\leq v\}\leq\pi(v)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∑&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;/msup&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\pi(u)=\sum^{D}\{b\in B|b\leq u\}\leq\sum^{D}\{b\in B|b\leq v\}\leq\pi(v)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Let’s consider the
contrapositive of the converse implication: suppose &lt;math id=&quot;p13.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;u\nleq v&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;≰&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;u\nleq v&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Then &lt;math id=&quot;p13.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;u\cdot-v\neq 0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;u\cdot-v\neq 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p13.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;0&amp;lt;\pi(u\cdot-v)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0&amp;lt;\pi(u\cdot-v)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
(we use the hint given in the book). If we are able to prove
&lt;math id=&quot;p13.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\pi(u\cdot-v)\leq\pi(u)\cdot-\pi(v)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\pi(u\cdot-v)\leq\pi(u)\cdot-\pi(v)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then we would have
&lt;math id=&quot;p13.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;0&amp;lt;\pi(u)\cdot-\pi(v)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0&amp;lt;\pi(u)\cdot-\pi(v)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so
&lt;math id=&quot;p13.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\pi(u)\nleq\pi(v)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≰&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\pi(u)\nleq\pi(v)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; as desired. It suffices to show two inequalities on
the &lt;math id=&quot;p13.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\cdot&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\cdot&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p13.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;-&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;-&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; operations.
Note that &lt;math id=&quot;p13.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall b\in B,\pi(b)=b&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall b\in B,\pi(b)=b&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Let &lt;math id=&quot;p13.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;w\in C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;w\in C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Let &lt;math id=&quot;p13.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;w_{1},w_{2}\in C&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;w_{1},w_{2}\in C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then for all &lt;math id=&quot;p13.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;b\in B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;b\in B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math id=&quot;p13.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;b\leq w_{1}\cdot w_{2}\implies b\leq w_{1},w_{2}\implies b=\pi(b)\leq\pi(w_{1}%
),\pi(w_{1})\implies b\leq\pi(w_{1})\cdot\pi(w_{2})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;b\leq w_{1}\cdot w_{2}\implies b\leq w_{1},w_{2}\implies b=\pi(b)\leq\pi(w_{1}%
),\pi(w_{1})\implies b\leq\pi(w_{1})\cdot\pi(w_{2})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so
&lt;math id=&quot;p13.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;\pi(w_{1}\cdot w_{2})\leq\pi(w_{1})\cdot\pi(w_{2})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\pi(w_{1}\cdot w_{2})\leq\pi(w_{1})\cdot\pi(w_{2})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Similarly, we have
for all &lt;math id=&quot;p13.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;b\in B&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;b\in B&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
&lt;math id=&quot;p13.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;b\leq-w\implies-b\geq w\implies-b=\pi(-b)\geq\pi(w)\implies b\leq-\pi(w)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⟹&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;b\leq-w\implies-b\geq w\implies-b=\pi(-b)\geq\pi(w)\implies b\leq-\pi(w)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So &lt;math id=&quot;p13.m20&quot; class=&quot;ltx_Math&quot; alttext=&quot;\pi(-w)\leq-\pi(w)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;π&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\pi(-w)\leq-\pi(w)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p14&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;As a conclusion, I notice a similarity between these too cases: both have
a sketchy proof based on a statement that seems incorrect (&quot;&lt;math id=&quot;p14.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;D&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a filter&quot;,
&quot;any one-to-one mapping between Boolean algebra that preserves the order
&lt;math id=&quot;p14.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\leq&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\leq&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in both directions is an isomorphism&quot;). Sometimes, I’m wondering if
these kinds of inaccuracy are not intentional in order to force readers to
try and find the proof themselves :-)&lt;/p&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Master Thesis, LaTeXML and Quantum Groups (part 2)</title>
   <link href="https://frederic-wang.fr//2012/09/13/master-thesis-latexml-and-quantum-groups-part-2/"/>
   <updated>2012-09-13T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2012/09/13/master-thesis-latexml-and-quantum-groups-part-2</id>
   <content type="html">
&lt;div class=&quot;main&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;section class=&quot;document&quot;&gt;
&lt;section class=&quot;section&quot;&gt;
&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p1&quot;&gt;
&lt;p class=&quot;p&quot;&gt;In this second part, I will try to explain briefly my contribution to Quantum Groups. I studied Lusztig’s results on the so-called restricted specialization of Quantum Group at a root of unity. As I indicated in &lt;a href=&quot;/quantum-groups-at-root-of-unity.html&quot;&gt;a previous blog post&lt;/a&gt;, the case treated in the literature contains some restrictions on &lt;math alttext=&quot;l&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, for example &lt;math alttext=&quot;l&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is supposed to be odd. Basically, I generalized most results to an arbitrary value of &lt;math alttext=&quot;l&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (assuming only &lt;math alttext=&quot;l\geq 7&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;7&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l\geq 7&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, in order to factorize irreducible modules).&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p2&quot;&gt;
&lt;p class=&quot;p&quot;&gt;Let’s start with some notations. Let &lt;math alttext=&quot;\mathfrak{g}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathfrak{g}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be a simple Lie algebra and &lt;math alttext=&quot;A={\left(a_{{ij}}\right)}_{{1\leq i,j\leq n}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A={\left(a_{{ij}}\right)}_{{1\leq i,j\leq n}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; its Cartan matrix. This matrix is symmetrizable and we denote by &lt;math alttext=&quot;D={(d_{i})}_{{1\leq i\leq n}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D={(d_{i})}_{{1\leq i\leq n}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the associated diagonal matrix. Finally &lt;math alttext=&quot;\alpha _{1},\alpha _{2},...,\alpha _{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha _{1},\alpha _{2},...,\alpha _{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are the simple roots of &lt;math alttext=&quot;\mathfrak{g}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathfrak{g}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math alttext=&quot;P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the weight lattice. As it is well-known, we can consider the universal envelopping algebra &lt;math alttext=&quot;U(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which has the same representation theory as &lt;math alttext=&quot;\mathfrak{g}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathfrak{g}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p3&quot;&gt;
&lt;p class=&quot;p&quot;&gt;The first step is to define the quantum enveloping algebras &lt;math alttext=&quot;U_{q}(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{q}(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; as a deformation of &lt;math alttext=&quot;U(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This is an algebra over &lt;math alttext=&quot;{\mathbb{Q}}(q)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ℚ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\mathbb{Q}}(q)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the field of rational functions in the parameter &lt;math alttext=&quot;q&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We let &lt;math alttext=&quot;q_{i}=q^{{d_{i}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q_{i}=q^{{d_{i}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and for any integer &lt;math alttext=&quot;n\in{\mathbb{Z}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n\in{\mathbb{Z}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we define a quantum version &lt;math alttext=&quot;{\left[{n}\right]}_{{q_{i}}}=\frac{q_{i}^{n}-q_{i}^{{-n}}}{q_{i}-q_{i}^{{-1}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\left[{n}\right]}_{{q_{i}}}=\frac{q_{i}^{n}-q_{i}^{{-n}}}{q_{i}-q_{i}^{{-1}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which obviously converges to the classical &lt;math alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; when &lt;math alttext=&quot;q\rightarrow 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q\rightarrow 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Similarly, one defines quantum versions &lt;math alttext=&quot;{\left[{n}\right]}_{{q_{i}}}!&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;!&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\left[{n}\right]}_{{q_{i}}}!&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math alttext=&quot;{\genfrac{[}{]}{0.0pt}{}{n}{k}}_{{q_{i}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mstyle scriptlevel=&quot;+1&quot;&gt;&lt;mtable columnspacing=&quot;0.4em&quot; rowspacing=&quot;0.2ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mstyle&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\genfrac{[}{]}{0.0pt}{}{n}{k}}_{{q_{i}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of the classical factorial and binomial coefficient. Then we define &lt;math alttext=&quot;U_{q}(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{q}(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by generators &lt;math alttext=&quot;X_{i}^{\pm},K_{i}^{{\pm 1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{i}^{\pm},K_{i}^{{\pm 1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and relations &lt;math alttext=&quot;K_{i}K_{j}=K_{j}K_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;K_{i}K_{j}=K_{j}K_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math alttext=&quot;K_{i}K_{i}^{{-1}}=K_{i}^{{-1}}K_{i}=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;K_{i}K_{i}^{{-1}}=K_{i}^{{-1}}K_{i}=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math alttext=&quot;K_{i}X_{j}^{\pm}K_{i}^{{-1}}=q_{i}^{{\pm a_{{ij}}}}X_{j}^{\pm}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;K_{i}X_{j}^{\pm}K_{i}^{{-1}}=q_{i}^{{\pm a_{{ij}}}}X_{j}^{\pm}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p4&quot;&gt;
&lt;table class=&quot;equation&quot;&gt;
	&lt;tbody&gt;
		&lt;tr class=&quot;equation baseline&quot; id=&quot;master_thesis_Ch0.Ex1&quot;&gt;
			&lt;td class=&quot;eqpad&quot;&gt; &lt;/td&gt;
			&lt;td class=&quot;center&quot; colspan=&quot;1&quot;&gt;&lt;math alttext=&quot;[X_{i}^{+},X_{j}^{-}]=X_{i}^{+}X_{j}^{-}-X_{j}^{-}X_{i}^{+}=\delta _{{i,j}}\frac{K_{i}-K_{i}^{{-1}}}{q_{i}-q_{i}^{{-1}}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;[X_{i}^{+},X_{j}^{-}]=X_{i}^{+}X_{j}^{-}-X_{j}^{-}X_{i}^{+}=\delta _{{i,j}}\frac{K_{i}-K_{i}^{{-1}}}{q_{i}-q_{i}^{{-1}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
			&lt;td class=&quot;eqpad&quot;&gt; &lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p5&quot;&gt;
&lt;p class=&quot;p&quot;&gt;and for &lt;math alttext=&quot;i\neq j&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;i\neq j&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p6&quot;&gt;
&lt;table class=&quot;equation&quot;&gt;
	&lt;tbody&gt;
		&lt;tr class=&quot;equation baseline&quot; id=&quot;master_thesis_Ch0.Ex2&quot;&gt;
			&lt;td class=&quot;eqpad&quot;&gt; &lt;/td&gt;
			&lt;td class=&quot;center&quot; colspan=&quot;1&quot;&gt;&lt;math alttext=&quot;\sum _{{r=0}}^{{1-a_{{ij}}}}(-1)^{r}{\genfrac{[}{]}{0.0pt}{}{1-a_{{ij}}}{r}}_{{q_{i}}}(X_{i}^{\pm})^{{1-a_{{ij}}-r}}X_{j}^{\pm}(X_{i}^{\pm})^{r}=0&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mover&gt;&lt;munder&gt;&lt;mo movablelimits=&quot;false&quot;&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mo movablelimits=&quot;false&quot;&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mover&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mtable columnspacing=&quot;0.4em&quot; rowspacing=&quot;0.2ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sum _{{r=0}}^{{1-a_{{ij}}}}(-1)^{r}{\genfrac{[}{]}{0.0pt}{}{1-a_{{ij}}}{r}}_{{q_{i}}}(X_{i}^{\pm})^{{1-a_{{ij}}-r}}X_{j}^{\pm}(X_{i}^{\pm})^{r}=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
			&lt;td class=&quot;eqpad&quot;&gt; &lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p7&quot;&gt;
&lt;p class=&quot;p&quot;&gt;If we think ”&lt;math alttext=&quot;K_{i}=e^{{(q-1)d_{i}H_{i}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;K_{i}=e^{{(q-1)d_{i}H_{i}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;”, a first order expansion of the above relations at &lt;math alttext=&quot;q\rightarrow 1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q\rightarrow 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; gives the well-known Chevalley-Serre relations of &lt;math alttext=&quot;U(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Actually, &lt;math alttext=&quot;U_{q}(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{q}(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; has the classical properties of &lt;math alttext=&quot;U(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, especially for the representation theory.&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p8&quot;&gt;
&lt;p class=&quot;p&quot;&gt;Now, we would like to specialize &lt;math alttext=&quot;q&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; at an arbitrary complex number &lt;math alttext=&quot;\epsilon&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\epsilon&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This makes sense if &lt;math alttext=&quot;\epsilon\neq 0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mo&gt;≠&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\epsilon\neq 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and is not a root of unity and in that case we again find a representation theory similar to the classical case. With some technical work, one can still define a specialization at a root of unity &lt;math alttext=&quot;\epsilon&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\epsilon&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of order &lt;math alttext=&quot;l&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. To do that, one defines for all &lt;math alttext=&quot;k\in{\mathbb{N}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℕ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k\in{\mathbb{N}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the reduced power &lt;math alttext=&quot;{(X_{i}^{\pm})}^{{(k)}}={\left(X_{i}^{\pm}\right)}^{k}/{\left[{k}\right]}_{{q_{i}}}!&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;/&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;!&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(X_{i}^{\pm})}^{{(k)}}={\left(X_{i}^{\pm}\right)}^{k}/{\left[{k}\right]}_{{q_{i}}}!&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math alttext=&quot;\mathcal{A}={\mathbb{Z}}[q,q^{{-1}}]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;𝒜&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathcal{A}={\mathbb{Z}}[q,q^{{-1}}]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the ring of Laurent polynomials. Then &lt;math alttext=&quot;U_{\mathcal{A}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;𝒜&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{\mathcal{A}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the sub-&lt;math alttext=&quot;\mathcal{A}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;𝒜&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathcal{A}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-algebra of &lt;math alttext=&quot;U_{q}(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{q}(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; generated by the &lt;math alttext=&quot;K_{i}^{{\pm 1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;K_{i}^{{\pm 1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and the &lt;math alttext=&quot;{(X_{i}^{\pm})}^{{(k)}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(X_{i}^{\pm})}^{{(k)}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. One can define a &lt;math alttext=&quot;\mathcal{A}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;𝒜&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathcal{A}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-basis of &lt;math alttext=&quot;U_{\mathcal{A}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;𝒜&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{\mathcal{A}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (this is not trivial) from which we deduce the restricted specialization &lt;math alttext=&quot;{U_{\epsilon}^{{\mathrm{res}}}}(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{U_{\epsilon}^{{\mathrm{res}}}}(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p9&quot;&gt;
&lt;p class=&quot;p&quot;&gt;At that point, one naturally wonders where we have a singularity, i.e. given &lt;math alttext=&quot;k\in{\mathbb{Z}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k\in{\mathbb{Z}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, when does &lt;math alttext=&quot;\epsilon _{i}^{k}-\epsilon _{i}^{{-k}}=0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\epsilon _{i}^{k}-\epsilon _{i}^{{-k}}=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; happen? Using basic arithmetic, that’s the case if and only if &lt;math alttext=&quot;k\equiv 0\mod m_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≡&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo lspace=&quot;mediummathspace&quot; rspace=&quot;mediummathspace&quot;&gt;mod&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k\equiv 0\mod m_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; where &lt;math alttext=&quot;m=l/\gcd(l,2)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;/&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;gcd&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m=l/\gcd(l,2)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math alttext=&quot;m_{i}=m/\gcd(m,d_{i})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;/&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;gcd&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m_{i}=m/\gcd(m,d_{i})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. These &lt;math alttext=&quot;m_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;’s act like periods: we get &lt;math alttext=&quot;{\left(X_{i}^{\pm}\right)}^{{m_{i}}}=0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\left(X_{i}^{\pm}\right)}^{{m_{i}}}=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (when &lt;math&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/math&gt; is greater than one) and &lt;math alttext=&quot;{\left(K_{i}\right)}^{{2m_{i}}}=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\left(K_{i}\right)}^{{2m_{i}}}=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. As a consequence, the important elements to consider become &lt;math alttext=&quot;X_{i}^{\pm}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{i}^{\pm}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math alttext=&quot;{(X_{i}^{\pm})}^{{(m_{i})}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(X_{i}^{\pm})}^{{(m_{i})}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math alttext=&quot;K_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;K_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (which generate the whole algebra) as well as &lt;math alttext=&quot;{\genfrac{[}{]}{0.0pt}{}{{K_{i}};{0}}{m_{i}}}_{{\epsilon _{i}}}=\left[{(X_{i}^{+})}^{{(m_{i})}},{(X_{i}^{-})}^{{(m_{i})}}\right]&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mstyle scriptlevel=&quot;+1&quot;&gt;&lt;mtable columnspacing=&quot;0.4em&quot; rowspacing=&quot;0.2ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mstyle&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\genfrac{[}{]}{0.0pt}{}{{K_{i}};{0}}{m_{i}}}_{{\epsilon _{i}}}=\left[{(X_{i}^{+})}^{{(m_{i})}},{(X_{i}^{-})}^{{(m_{i})}}\right]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (which, together with the &lt;math alttext=&quot;K_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;K_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, form a ”Cartan subalgebra”). Note that if &lt;math alttext=&quot;d_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;d_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is prime to &lt;math alttext=&quot;m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math alttext=&quot;m_{i}=m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m_{i}=m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and if moreover &lt;math alttext=&quot;l&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is odd, &lt;math alttext=&quot;m_{i}=l&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m_{i}=l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Not surprisingly, these are exactly assumptions used in the literature. The only difference in the most general case is that new signs &lt;math alttext=&quot;{(-1)}^{{m_{i}+1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(-1)}^{{m_{i}+1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math alttext=&quot;\epsilon _{i}^{{m_{i}}}={(-1)}^{{(l+1)d_{i}/\delta _{i}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msubsup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;/&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\epsilon _{i}^{{m_{i}}}={(-1)}^{{(l+1)d_{i}/\delta _{i}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; appear in the expressions.&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p10&quot;&gt;
&lt;p class=&quot;p&quot;&gt;If &lt;math alttext=&quot;V&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a finite-dimensional &lt;math alttext=&quot;{U_{\epsilon}^{{\mathrm{res}}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{U_{\epsilon}^{{\mathrm{res}}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-module, we can define for all &lt;math alttext=&quot;\sigma\in{\{-1,1\}}^{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sigma\in{\{-1,1\}}^{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math alttext=&quot;\lambda\in P&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda\in P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the weight space&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p11&quot;&gt;
&lt;table class=&quot;equationgroup&quot; id=&quot;master_thesis_Ch0.Ex3&quot;&gt;
	&lt;tbody&gt;
		&lt;tr class=&quot;equation baseline&quot; id=&quot;master_thesis_Ch0.Ex3X&quot;&gt;
			&lt;td class=&quot;eqpad&quot;&gt; &lt;/td&gt;
			&lt;td class=&quot;td right&quot; colspan=&quot;1&quot; style=&quot;text-align:right;&quot;&gt;&lt;math alttext=&quot;\displaystyle V_{{\sigma,\lambda}}=\bigcap _{{1\leq i\leq n}}{\operatorname{Ker}{\mathop{\left(K_{i}-\sigma _{i}\epsilon _{i}^{{\lambda(\alpha _{i}^{\vee})}}1\right)}}\cap\bigcup _{{T\geq 1}}\operatorname{Ker}{\mathop{{\left({\genfrac{[}{]}{0.0pt}{}{{K_{i}};{0}}{m_{i}}}_{{\epsilon _{i}}}-\Delta _{i}(\lambda)\left\lfloor\frac{\lambda(\alpha _{i}^{\vee})}{m_{i}}\right\rfloor 1\right)}^{{T}}}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mstyle displaystyle=&quot;true&quot;&gt;&lt;munder&gt;&lt;mo movablelimits=&quot;false&quot;&gt;⋂&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;/mstyle&gt;&lt;mrow&gt;&lt;mo&gt;Ker&lt;/mo&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∨&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;mrow&gt;&lt;mstyle displaystyle=&quot;true&quot;&gt;&lt;munder&gt;&lt;mo movablelimits=&quot;false&quot;&gt;⋃&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;/mstyle&gt;&lt;mrow&gt;&lt;mo&gt;Ker&lt;/mo&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mstyle displaystyle=&quot;true&quot;&gt;&lt;mtable columnspacing=&quot;0.4em&quot; rowspacing=&quot;0.2ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mstyle&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Δ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;⌊&lt;/mo&gt;&lt;mstyle displaystyle=&quot;true&quot;&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∨&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mfrac&gt;&lt;/mstyle&gt;&lt;mo&gt;⌋&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\displaystyle V_{{\sigma,\lambda}}=\bigcap _{{1\leq i\leq n}}{\operatorname{Ker}{\mathop{\left(K_{i}-\sigma _{i}\epsilon _{i}^{{\lambda(\alpha _{i}^{\vee})}}1\right)}}\cap\bigcup _{{T\geq 1}}\operatorname{Ker}{\mathop{{\left({\genfrac{[}{]}{0.0pt}{}{{K_{i}};{0}}{m_{i}}}_{{\epsilon _{i}}}-\Delta _{i}(\lambda)\left\lfloor\frac{\lambda(\alpha _{i}^{\vee})}{m_{i}}\right\rfloor 1\right)}^{{T}}}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
			&lt;td class=&quot;eqpad&quot;&gt; &lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p12&quot;&gt;
&lt;p class=&quot;p&quot;&gt;where &lt;math alttext=&quot;\Delta _{i}(\lambda)={(-1)}^{{m_{i}+1}}\sigma _{i}^{{m_{i}}}{(\epsilon _{i}^{{m_{i}}})}^{{\lambda(\alpha _{i}^{\vee})+1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Δ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∨&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\Delta _{i}(\lambda)={(-1)}^{{m_{i}+1}}\sigma _{i}^{{m_{i}}}{(\epsilon _{i}^{{m_{i}}})}^{{\lambda(\alpha _{i}^{\vee})+1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then &lt;math alttext=&quot;V=\bigoplus _{{\sigma _{,}\lambda}}V_{{\sigma,\lambda}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;⊕&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V=\bigoplus _{{\sigma _{,}\lambda}}V_{{\sigma,\lambda}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math alttext=&quot;X_{j}^{\pm}V_{{\sigma\lambda}}\subseteq V_{{\sigma,\lambda\pm\alpha _{j}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{j}^{\pm}V_{{\sigma\lambda}}\subseteq V_{{\sigma,\lambda\pm\alpha _{j}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; ; &lt;math alttext=&quot;{(X_{j}^{\pm})}^{{(m_{j})}}V_{{\sigma\lambda}}\subseteq V_{{\sigma,\lambda\pm m_{j}\alpha _{j}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(X_{j}^{\pm})}^{{(m_{j})}}V_{{\sigma\lambda}}\subseteq V_{{\sigma,\lambda\pm m_{j}\alpha _{j}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. In the same way as for the &lt;math alttext=&quot;U_{q}(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{q}(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-modules, we deduce a classification of irreducible &lt;math alttext=&quot;{U_{\epsilon}^{{\mathrm{res}}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{U_{\epsilon}^{{\mathrm{res}}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-modules. They are all isomorphic to some &lt;math alttext=&quot;{V_{\epsilon}^{{\mathrm{res}}}}(\sigma,\lambda)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{V_{\epsilon}^{{\mathrm{res}}}}(\sigma,\lambda)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for a type &lt;math alttext=&quot;\sigma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sigma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and a highest weight &lt;math alttext=&quot;\lambda\in P^{+}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda\in P^{+}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Note that the expression above is not too surprising: if we specialize a &lt;math alttext=&quot;U_{q}(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{q}(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-module and consider the euclidean division of &lt;math alttext=&quot;\lambda(\alpha _{i}^{\vee})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∨&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda(\alpha _{i}^{\vee})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by &lt;math alttext=&quot;m_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then intuitively the remainder goes in the &lt;math alttext=&quot;K_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;K_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; part while the quotient goes in the &lt;math alttext=&quot;{\genfrac{[}{]}{0.0pt}{}{{K_{i}};{0}}{m_{i}}}_{{\epsilon _{i}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo&gt;[&lt;/mo&gt;&lt;mstyle scriptlevel=&quot;+1&quot;&gt;&lt;mtable columnspacing=&quot;0.4em&quot; rowspacing=&quot;0.2ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mstyle&gt;&lt;mo&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\genfrac{[}{]}{0.0pt}{}{{K_{i}};{0}}{m_{i}}}_{{\epsilon _{i}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; part. But specializing an irreducible &lt;math alttext=&quot;U_{q}(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{q}(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-module does not necessarily provide an irreducible &lt;math alttext=&quot;{U_{\epsilon}^{{\mathrm{res}}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{U_{\epsilon}^{{\mathrm{res}}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-module and actually one can get by this method a reducible &lt;math alttext=&quot;{U_{\epsilon}^{{\mathrm{res}}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{U_{\epsilon}^{{\mathrm{res}}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-module which is not completely reducible. This latter property is a major difference with the classical case where all representations are semisimple.&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p13&quot;&gt;
&lt;p class=&quot;p&quot;&gt;Finally, thanks to the Hopf algebra structure of &lt;math alttext=&quot;{U_{\epsilon}^{{\mathrm{res}}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{U_{\epsilon}^{{\mathrm{res}}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, one can define tensor products of &lt;math alttext=&quot;{U_{\epsilon}^{{\mathrm{res}}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{U_{\epsilon}^{{\mathrm{res}}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-modules. We suppose &lt;math alttext=&quot;1\leq d_{i}&amp;lt;m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq d_{i}&amp;lt;m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and consider &lt;math alttext=&quot;\sigma\in\{-1,+1\}^{n},\lambda\in P^{+}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msup&gt;&lt;mrow&gt;&lt;mo&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sigma\in\{-1,+1\}^{n},\lambda\in P^{+}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We note &lt;math alttext=&quot;\lambda=\lambda _{0}+\lambda _{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda=\lambda _{0}+\lambda _{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; where for all &lt;math alttext=&quot;1\leq i\leq n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq i\leq n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math alttext=&quot;0\leq\lambda _{0}(\alpha _{i}^{\vee})&amp;lt;m_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∨&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;0\leq\lambda _{0}(\alpha _{i}^{\vee})&amp;lt;m_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math alttext=&quot;\lambda _{1}(\alpha _{i}^{\vee})\equiv 0\mod m_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∨&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≡&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo lspace=&quot;mediummathspace&quot; rspace=&quot;mediummathspace&quot;&gt;mod&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda _{1}(\alpha _{i}^{\vee})\equiv 0\mod m_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p14&quot;&gt;
&lt;table class=&quot;equation&quot;&gt;
	&lt;tbody&gt;
		&lt;tr class=&quot;equation baseline&quot; id=&quot;master_thesis_Ch0.Ex4&quot;&gt;
			&lt;td class=&quot;eqpad&quot;&gt; &lt;/td&gt;
			&lt;td class=&quot;center&quot; colspan=&quot;1&quot;&gt;&lt;math alttext=&quot;{V_{\epsilon}^{{\mathrm{res}}}}(\sigma,\lambda)\cong{V_{\epsilon}^{{\mathrm{res}}}}(\sigma,0)\otimes{V_{\epsilon}^{{\mathrm{res}}}}(1,\lambda _{0})\otimes{V_{\epsilon}^{{\mathrm{res}}}}(1,\lambda _{1})&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≅&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⊗&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;⊗&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{V_{\epsilon}^{{\mathrm{res}}}}(\sigma,\lambda)\cong{V_{\epsilon}^{{\mathrm{res}}}}(\sigma,0)\otimes{V_{\epsilon}^{{\mathrm{res}}}}(1,\lambda _{0})\otimes{V_{\epsilon}^{{\mathrm{res}}}}(1,\lambda _{1})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
			&lt;td class=&quot;eqpad&quot;&gt; &lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p15&quot;&gt;
&lt;p class=&quot;p&quot;&gt;&lt;math alttext=&quot;{V_{\epsilon}^{{\mathrm{res}}}}(\sigma,0)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{V_{\epsilon}^{{\mathrm{res}}}}(\sigma,0)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is one-dimensional and &lt;math alttext=&quot;{V_{\epsilon}^{{\mathrm{res}}}}(1,\lambda _{0})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{V_{\epsilon}^{{\mathrm{res}}}}(1,\lambda _{0})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; becomes a &lt;math alttext=&quot;{U_{\epsilon}^{{\mathrm{fin}}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;fin&lt;/mi&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{U_{\epsilon}^{{\mathrm{fin}}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-module where &lt;math alttext=&quot;{U_{\epsilon}^{{\mathrm{fin}}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;fin&lt;/mi&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{U_{\epsilon}^{{\mathrm{fin}}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is the finite-dimensional subalgebras of &lt;math alttext=&quot;{U_{\epsilon}^{{\mathrm{res}}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{U_{\epsilon}^{{\mathrm{res}}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; generated by the &lt;math alttext=&quot;X_{i}^{\pm},K_{i}^{{\pm 1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{i}^{\pm},K_{i}^{{\pm 1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. What about &lt;math alttext=&quot;{V_{\epsilon}^{{\mathrm{res}}}}(1,\lambda _{1})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{V_{\epsilon}^{{\mathrm{res}}}}(1,\lambda _{1})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;? Lusztig’s answer in the case &lt;math alttext=&quot;l&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; odd and prime with the &lt;math alttext=&quot;d_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;d_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;’s is that it is the pullback of the irreducible &lt;math alttext=&quot;U(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-module &lt;math alttext=&quot;V(\lambda _{1}/l)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;/&lt;/mo&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V(\lambda _{1}/l)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; by an algebra morphism &lt;math alttext=&quot;\mathrm{Fr}:{U_{\epsilon}^{{\mathrm{res}}}}(\mathfrak{g})\rightarrow U(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;Fr&lt;/mi&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathrm{Fr}:{U_{\epsilon}^{{\mathrm{res}}}}(\mathfrak{g})\rightarrow U(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. This does not seem to be possible in general and I suggested instead to consider the pullback of an irreducible &lt;math alttext=&quot;U_{{\epsilon^{{\prime}}}}(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{{\epsilon^{{\prime}}}}(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-module by a morphism &lt;math alttext=&quot;\mathrm{Fr}:{U_{\epsilon}^{{\mathrm{res}}}}(\mathfrak{g})\rightarrow U_{{\epsilon^{{\prime}}}}(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;Fr&lt;/mi&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathrm{Fr}:{U_{\epsilon}^{{\mathrm{res}}}}(\mathfrak{g})\rightarrow U_{{\epsilon^{{\prime}}}}(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; where the order &lt;math alttext=&quot;l^{{\prime}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l^{{\prime}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of &lt;math alttext=&quot;\epsilon^{{\prime}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\epsilon^{{\prime}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not too big. For example &lt;math alttext=&quot;\epsilon^{{\prime}}=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\epsilon^{{\prime}}=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; works in Lusztig’s framework, which is consistent with the fact that &lt;math alttext=&quot;U_{1}(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{1}(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is close to &lt;math alttext=&quot;U(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. In general, you need to consider the parity of &lt;math alttext=&quot;l&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, whether it is a multiple of a &lt;math alttext=&quot;d_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;d_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and also whether the 2-adic order of &lt;math alttext=&quot;m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is 0, 1 or 2. So I conjectured that &lt;math alttext=&quot;l^{{\prime}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;′&lt;/mo&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l^{{\prime}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can always be taken among the divisors of 24. I explained how to get this result under the assumption that &lt;math alttext=&quot;\mathrm{Fr}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;Fr&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathrm{Fr}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; exists. There is a natural way one would like to define such a morphism but because I did not study in details the &lt;math alttext=&quot;\mathcal{A}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;𝒜&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathcal{A}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-basis of &lt;math alttext=&quot;U_{\mathcal{A}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;𝒜&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U_{\mathcal{A}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; mentioned above, I can not state this for sure.&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;master_thesis_Ch0.S1.p16&quot;&gt;
&lt;p class=&quot;p&quot;&gt;Apart from how to build &lt;math alttext=&quot;\mathrm{Fr}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;Fr&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathrm{Fr}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; precisely, my work opens new perspectives. According to a &lt;a class=&quot;ref&quot; href=&quot;http://arxiv.org/abs/math/0308281&quot; title=&quot;&quot;&gt;paper of Sawin&lt;/a&gt;, the new cases &lt;math alttext=&quot;l&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; even and multiple of &lt;math alttext=&quot;d_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;d_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; are exactly those used for applications in physics and constructions of topological invariants. Hence my work could give new results in these areas. Also, one can rely on my work to study other generalizations: use of a symetrizable Kac-Moody algebra &lt;math alttext=&quot;\mathfrak{g}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;𝔤&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathfrak{g}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, tilting modules for an arbitrary order &lt;math alttext=&quot;l&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, non-restricted specialization for an arbitrary order &lt;math alttext=&quot;l&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; etc&lt;/p&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;/div&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Quantum Groups at root of unity</title>
   <link href="https://frederic-wang.fr//2012/06/23/quantum-groups-at-root-of-unity/"/>
   <updated>2012-06-23T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2012/06/23/quantum-groups-at-root-of-unity</id>
   <content type="html">
&lt;p&gt;{% raw %}&lt;/p&gt;
&lt;div class=&quot;para&quot; id=&quot;p1&quot;&gt;
&lt;p class=&quot;p&quot;&gt;All the papers or books I read so far on quantum groups about Lusztig’s restricted specialization consider only primitive roots of unity of odd order and additional conditions. In most cases, it is claimed that these restrictions could be removed without too much harm but details are not given. So I have tried to do the calculation myself. Below is what I find for the finite dimensional representations of &lt;math alttext=&quot;{U_{\epsilon}^{{\mathrm{res}}}}(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;mi mathvariant=&quot;fraktur&quot;&gt;g&lt;/mi&gt;&lt;/mfenced&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{U_{\epsilon}^{{\mathrm{res}}}}(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Note that most authors consider the case &lt;math alttext=&quot;l=m=m_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l=m=m_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; odd. Then &lt;math alttext=&quot;{(-1)}^{{m_{i}}}=\epsilon _{i}^{{m_{i}}}=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mfenced&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msubsup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(-1)}^{{m_{i}}}=\epsilon _{i}^{{m_{i}}}=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and we can even restrict the study to the representations for which &lt;math alttext=&quot;\sigma&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sigma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is always 1. Indeed, all these assumptions make the expression below much simpler.&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;p2&quot;&gt;
&lt;p class=&quot;p&quot;&gt;We consider &lt;math alttext=&quot;\mathfrak{g}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi mathvariant=&quot;fraktur&quot;&gt;g&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathfrak{g}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; a simple Lie algebra of rank &lt;math alttext=&quot;n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and use standard notations &lt;math alttext=&quot;\alpha _{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha _{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for roots, &lt;math alttext=&quot;\alpha _{i}^{\vee}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∨&lt;/mo&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha _{i}^{\vee}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for coroots and &lt;math alttext=&quot;P(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;mi mathvariant=&quot;fraktur&quot;&gt;g&lt;/mi&gt;&lt;/mfenced&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for the weight space. Let &lt;math alttext=&quot;l&amp;gt;2&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l&amp;gt;2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be an integer and &lt;math alttext=&quot;\epsilon&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\epsilon&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; a primitive &lt;math alttext=&quot;l&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-root of the unity. We let &lt;math alttext=&quot;m=\frac{l}{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m=\frac{l}{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; if &lt;math alttext=&quot;l&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is even and &lt;math alttext=&quot;m=l&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m=l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; otherwise. For all &lt;math alttext=&quot;1\leq i\leq n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq i\leq n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, define &lt;math alttext=&quot;\epsilon _{i}=\epsilon^{{d_{i}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\epsilon _{i}=\epsilon^{{d_{i}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math alttext=&quot;\delta _{i}=\gcd(d_{i},m)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;gcd&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/mfenced&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\delta _{i}=\gcd(d_{i},m)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, and &lt;math alttext=&quot;m_{i}=\frac{m}{\delta _{i}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;δ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m_{i}=\frac{m}{\delta _{i}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We assume that no &lt;math alttext=&quot;d_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;d_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a multiple of &lt;math alttext=&quot;m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, which is obviously true for &lt;math alttext=&quot;l&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;l&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; large enough.&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;p3&quot;&gt;
&lt;p class=&quot;p&quot;&gt;We denote &lt;math alttext=&quot;{U_{\epsilon}^{{\mathrm{res}}}}(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;mi mathvariant=&quot;fraktur&quot;&gt;g&lt;/mi&gt;&lt;/mfenced&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{U_{\epsilon}^{{\mathrm{res}}}}(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; the restricted specialization as defined in Chari and Pressley’s guide to quantum groups and keep their notations for the elements &lt;math alttext=&quot;K_{i}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;K_{i}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math alttext=&quot;{\genfrac{[}{]}{0.0pt}{0}{{K_{i}};{c}}{r}}_{{\epsilon _{i}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mfenced close=&quot;]&quot; open=&quot;[&quot;&gt;&lt;mstyle scriptlevel=&quot;+1&quot;&gt;&lt;mtable columnspacing=&quot;0.4em&quot; rowspacing=&quot;0.2ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;;&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mrow&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mstyle&gt;&lt;/mfenced&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{\genfrac{[}{]}{0.0pt}{0}{{K_{i}};{c}}{r}}_{{\epsilon _{i}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, &lt;math alttext=&quot;X_{i}^{{\pm}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{i}^{{\pm}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math alttext=&quot;{(X_{i}^{\pm})}^{{(r)}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;/mfenced&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mfenced&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(X_{i}^{\pm})}^{{(r)}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of &lt;math alttext=&quot;{U_{\epsilon}^{{\mathrm{res}}}}(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;mi mathvariant=&quot;fraktur&quot;&gt;g&lt;/mi&gt;&lt;/mfenced&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{U_{\epsilon}^{{\mathrm{res}}}}(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Finally, we let &lt;math alttext=&quot;V&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be a finite &lt;math alttext=&quot;{U_{\epsilon}^{{\mathrm{res}}}}(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;res&lt;/mi&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;mi mathvariant=&quot;fraktur&quot;&gt;g&lt;/mi&gt;&lt;/mfenced&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{U_{\epsilon}^{{\mathrm{res}}}}(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;-module.&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;p4&quot;&gt;
&lt;p class=&quot;p&quot;&gt;For any &lt;math alttext=&quot;\lambda\in P(\mathfrak{g})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;mi mathvariant=&quot;fraktur&quot;&gt;g&lt;/mi&gt;&lt;/mfenced&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda\in P(\mathfrak{g})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math alttext=&quot;\sigma\in{\{-1,1\}}^{n}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msup&gt;&lt;mfenced close=&quot;}&quot; open=&quot;{&quot;&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mfenced&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sigma\in{\{-1,1\}}^{n}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; define&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;p5&quot;&gt;
&lt;table class=&quot;equation&quot;&gt;
	&lt;tbody&gt;
		&lt;tr class=&quot;equation baseline&quot; id=&quot;Ch0.Ex1&quot;&gt;
			&lt;td class=&quot;eqpad&quot;&gt; &lt;/td&gt;
			&lt;td class=&quot;center&quot; colspan=&quot;1&quot;&gt;&lt;math alttext=&quot;V_{{\sigma,\lambda}}=\bigcap _{{1\leq i\leq n}}{\operatorname{Ker}{\left(K_{i}-\sigma _{i}\epsilon _{i}^{{\lambda(\alpha _{i}^{\vee})}}1\right)}\cap\operatorname{Ker}{{\left({\genfrac{[}{]}{0.0pt}{0}{{K_{i}};{0}}{m_{i}}}_{{\epsilon _{i}}}-\Delta _{i}(\lambda)\left\lfloor\frac{\lambda(\alpha _{i}^{\vee})}{m_{i}}\right\rfloor 1\right)}}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;munder&gt;&lt;mo movablelimits=&quot;false&quot;&gt;⋂&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;mo&gt;Ker&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;msubsup&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∨&lt;/mo&gt;&lt;/msubsup&gt;&lt;/mfenced&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mfenced&gt;&lt;/mrow&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;Ker&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mfenced close=&quot;]&quot; open=&quot;[&quot;&gt;&lt;mtable columnspacing=&quot;0.4em&quot; rowspacing=&quot;0.2ex&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mfenced&gt;&lt;msub&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Δ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mfenced&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfenced close=&quot;⌋&quot; open=&quot;⌊&quot;&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;msubsup&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∨&lt;/mo&gt;&lt;/msubsup&gt;&lt;/mfenced&gt;&lt;/mrow&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mfrac&gt;&lt;/mfenced&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mfenced&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V_{{\sigma,\lambda}}=\bigcap _{{1\leq i\leq n}}{\operatorname{Ker}{\left(K_{i}-\sigma _{i}\epsilon _{i}^{{\lambda(\alpha _{i}^{\vee})}}1\right)}\cap\operatorname{Ker}{{\left({\genfrac{[}{]}{0.0pt}{0}{{K_{i}};{0}}{m_{i}}}_{{\epsilon _{i}}}-\Delta _{i}(\lambda)\left\lfloor\frac{\lambda(\alpha _{i}^{\vee})}{m_{i}}\right\rfloor 1\right)}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
			&lt;td class=&quot;eqpad&quot;&gt; &lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;p6&quot;&gt;
&lt;p class=&quot;p&quot;&gt;where &lt;math alttext=&quot;\forall i,\Delta _{i}(\lambda)={(-1)}^{{m_{i}+1}}\sigma _{i}^{{m_{i}}}{(\epsilon _{i}^{{m_{i}}})}^{{\lambda(\alpha _{i}^{\vee})+1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∀&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Δ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mfenced&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/mfenced&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msup&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;msubsup&gt;&lt;mi&gt;ϵ&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/msubsup&gt;&lt;/mfenced&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;msubsup&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;∨&lt;/mo&gt;&lt;/msubsup&gt;&lt;/mfenced&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall i,\Delta _{i}(\lambda)={(-1)}^{{m_{i}+1}}\sigma _{i}^{{m_{i}}}{(\epsilon _{i}^{{m_{i}}})}^{{\lambda(\alpha _{i}^{\vee})+1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;p7&quot;&gt;
&lt;p class=&quot;p&quot;&gt;For any &lt;math alttext=&quot;1\leq j\leq n&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq j\leq n&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we have&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;p8&quot;&gt;
&lt;table class=&quot;equation&quot;&gt;
	&lt;tbody&gt;
		&lt;tr class=&quot;equation baseline&quot; id=&quot;Ch0.Ex2&quot;&gt;
			&lt;td class=&quot;eqpad&quot;&gt; &lt;/td&gt;
			&lt;td class=&quot;center&quot; colspan=&quot;1&quot;&gt;&lt;math alttext=&quot;X_{j}^{\pm}V_{{\sigma\lambda}}\subseteq V_{{\sigma,\lambda\pm\alpha _{j}}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;X_{j}^{\pm}V_{{\sigma\lambda}}\subseteq V_{{\sigma,\lambda\pm\alpha _{j}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
			&lt;td class=&quot;eqpad&quot;&gt; &lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

&lt;table class=&quot;equation&quot;&gt;
	&lt;tbody&gt;
		&lt;tr class=&quot;equation baseline&quot; id=&quot;Ch0.Ex3&quot;&gt;
			&lt;td class=&quot;eqpad&quot;&gt; &lt;/td&gt;
			&lt;td class=&quot;center&quot; colspan=&quot;1&quot;&gt;&lt;math alttext=&quot;{(X_{j}^{\pm})}^{{(m_{j})}}V_{{\sigma\lambda}}\subseteq V_{{\sigma,\lambda\pm m_{j}\alpha _{j}}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;msubsup&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;/msubsup&gt;&lt;/mfenced&gt;&lt;mfenced close=&quot;)&quot; open=&quot;(&quot;&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;/mfenced&gt;&lt;/msup&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;±&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{(X_{j}^{\pm})}^{{(m_{j})}}V_{{\sigma\lambda}}\subseteq V_{{\sigma,\lambda\pm m_{j}\alpha _{j}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
			&lt;td class=&quot;eqpad&quot;&gt; &lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;p9&quot;&gt;
&lt;p class=&quot;p&quot;&gt;Moreover if &lt;math alttext=&quot;V&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is simple, &lt;math alttext=&quot;V=\bigoplus _{{\sigma,\lambda}}V_{{\sigma,\lambda}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;⊕&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;V&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;V=\bigoplus _{{\sigma,\lambda}}V_{{\sigma,\lambda}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;para&quot; id=&quot;p10&quot;&gt;
&lt;p class=&quot;p&quot;&gt;&lt;math alttext=&quot;\square&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;□&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\square&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/p&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Cyclic HSP based on Subgroup Reduction</title>
   <link href="https://frederic-wang.fr//2012/04/22/cyclic-hsp-based-on-subgroup-reduction/"/>
   <updated>2012-04-22T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2012/04/22/cyclic-hsp-based-on-subgroup-reduction</id>
   <content type="html">
&lt;div id=&quot;p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In my &lt;a href=&quot;/computer-science/master-thesis/&quot;&gt;master thesis&lt;/a&gt;
on quantum computing, I designed a version of the Abelian HSP algorithm based
on subgroup reduction. In
&lt;a href=&quot;/two-open-problems-for-the-subgroup-reduction-based-dedekindian-hsp-algorithm.html&quot;&gt;this blog post&lt;/a&gt;, I wondered whether this algorithm could be extended to the
Dedekindian HSP and if it would be more efficient than the standard one. I’m
going to prove that the latter is false in the cyclic case, where the two
algorithms have exactly the same associated Markov chain.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Recall that the HSP is - given a finite group &lt;math id=&quot;p2.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, an unknown subgroup &lt;math id=&quot;p2.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;H&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
an &quot;oracle&quot; &lt;math id=&quot;p2.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;f&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; hiding &lt;math id=&quot;p2.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;H&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (i.e. a function on &lt;math id=&quot;p2.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; which factorizes on the
coset space &lt;math id=&quot;p2.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;G/H&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo&gt;/&lt;/mo&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G/H&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in a function with pairwise distinct values) - to determine
the subgroup &lt;math id=&quot;p2.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;H&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; using a number of oracle calls polynomial in the size of &lt;math id=&quot;p2.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p3&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In the standard Dedekindian HSP algorithm, &lt;math id=&quot;p3.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a
&lt;a href=&quot;http://en.wikipedia.org/wiki/Hamiltonian_group&quot; title=&quot;&quot; class=&quot;ltx_ref&quot;&gt;dedekindian group&lt;/a&gt;
and we use Fourier Sampling to measure a polynomial number of representations
&lt;math id=&quot;p3.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\rho_{1},...\rho_{m}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\rho_{1},...\rho_{m}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of &lt;math id=&quot;p3.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; such that &lt;math id=&quot;p3.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;H\subseteq\operatorname{Ker}{\rho_{k}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;Ker&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H\subseteq\operatorname{Ker}{\rho_{k}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. One proves
that with high probability &lt;math id=&quot;p3.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;H=\cap_{k}\operatorname{Ker}{\rho_{k}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mo&gt;Ker&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H=\cap_{k}\operatorname{Ker}{\rho_{k}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
In my alternative algorithm, we measure
&lt;math id=&quot;p3.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\rho_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\rho_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and set &lt;math id=&quot;p3.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;G_{1}=\operatorname{Ker}{\rho_{1}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;Ker&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ρ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G_{1}=\operatorname{Ker}{\rho_{1}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then instead of continuing to work on
the whole group &lt;math id=&quot;p3.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the idea is to move to a HSP
problem on &lt;math id=&quot;p3.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;G_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; with hidden subgroup &lt;math id=&quot;p3.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;H&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then do a Fourier Sampling on &lt;math id=&quot;p3.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;G_{1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G_{1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
to move to a new subgroup &lt;math id=&quot;p3.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;G_{2}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G_{2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so forth. If &lt;math id=&quot;p3.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;H\subsetneq G_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;mo&gt;⊊&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H\subsetneq G_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then
there is a probability at least one half, that &lt;math id=&quot;p3.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;G_{k+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G_{k+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is at least twice
smaller and so we see that we reach &lt;math id=&quot;p3.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;H&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in an exponentially fast way.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p4&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Let’s now consider the cyclic HSP. We are given a cyclic group
&lt;math id=&quot;p4.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;G=\mathbb{Z}_{N}=\mathbb{Z}/{N\mathbb{Z}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;mo&gt;/&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G=\mathbb{Z}_{N}=\mathbb{Z}/{N\mathbb{Z}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and a hidden subgroup &lt;math id=&quot;p4.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;H=d\mathbb{Z}_{N}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H=d\mathbb{Z}_{N}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for
some &lt;math id=&quot;p4.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;1\leq d\leq N&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq d\leq N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (we exclude the case &lt;math id=&quot;p4.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;H=0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, which is easy) and an
oracle &lt;math id=&quot;p4.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;f&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. With this setting, one call to &lt;math id=&quot;p4.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;f&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; allows to get a
Fourier sample &lt;math id=&quot;p4.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda\frac{N}{d}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda\frac{N}{d}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for some random
&lt;math id=&quot;p4.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda\in\{0,1,...,d-1\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda\in\{0,1,...,d-1\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, with uniform probability. In the standard
cyclic HSP, we repeat Fourier sampling to get
&lt;math id=&quot;p4.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda_{1}\frac{N}{d},\lambda_{2}\frac{N}{d},...\lambda_{m}\frac{N}{d}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda_{1}\frac{N}{d},\lambda_{2}\frac{N}{d},...\lambda_{m}\frac{N}{d}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and deduce &lt;math id=&quot;p4.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;d&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;d&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. For example, one can show that&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p5&quot; class=&quot;ltx_para&quot;&gt;
&lt;table id=&quot;S0.Ex1&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;P(\frac{N}{\gcd{\left(\lambda_{k}\frac{N}{d}\right)}_{1\leq k\leq m}}=d)\geq 1%
-2^{-m/2}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;gcd&lt;/mi&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;/&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P(\frac{N}{\gcd{\left(\lambda_{k}\frac{N}{d}\right)}_{1\leq k\leq m}}=d)\geq 1%
-2^{-m/2}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p6&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;In the algorithm I proposed, we build a sequence of polynomial length
&lt;math id=&quot;p6.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;H\subseteq G_{m}\subseteq G_{m-1}\subseteq...\subseteq G_{1}=G=\mathbb{Z}_{N}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;⊆&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H\subseteq G_{m}\subseteq G_{m-1}\subseteq...\subseteq G_{1}=G=\mathbb{Z}_{N}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
such that with high probability, &lt;math id=&quot;p6.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;H=G_{m}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H=G_{m}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Clearly, all the &lt;math id=&quot;p6.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;G_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;’s are
cyclic groups and can be written &lt;math id=&quot;p6.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;G_{k}=a_{k}\mathbb{Z}_{N}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G_{k}=a_{k}\mathbb{Z}_{N}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Since they contain
&lt;math id=&quot;p6.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;H=d\mathbb{Z}_{N}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H=d\mathbb{Z}_{N}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we have &lt;math id=&quot;p6.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{k}|d&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{k}|d&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. From &lt;math id=&quot;p6.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we set &lt;math id=&quot;p6.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;d_{k}=\frac{d}{a}_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mfrac&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mfrac&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;d_{k}=\frac{d}{a}_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
and &lt;math id=&quot;p6.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;N_{k}=\frac{N}{a}_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mfrac&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;N_{k}=\frac{N}{a}_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We have the isomorphism
&lt;math id=&quot;p6.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\phi_{k}:G_{k}\overset{\sim}{\to}\mathbb{Z}_{N_{k}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ϕ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mover accent=&quot;true&quot;&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;mo&gt;∼&lt;/mo&gt;&lt;/mover&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\phi_{k}:G_{k}\overset{\sim}{\to}\mathbb{Z}_{N_{k}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; defined by &lt;math id=&quot;p6.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;\phi_{k}(x)=\frac{x}{a}_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ϕ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mfrac&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mfrac&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\phi_{k}(x)=\frac{x}{a}_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Hence we can now work on &lt;math id=&quot;p6.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mathbb{Z}_{N_{k}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mathbb{Z}_{N_{k}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, with a hidden subgroup
&lt;math id=&quot;p6.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;H_{k}=\phi_{k}(H)=d_{k}\mathbb{Z}_{N_{k}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ϕ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H_{k}=\phi_{k}(H)=d_{k}\mathbb{Z}_{N_{k}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and oracle &lt;math id=&quot;p6.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;f_{k}=f\circ\phi_{k}^{-1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo&gt;∘&lt;/mo&gt;&lt;msubsup&gt;&lt;mi&gt;ϕ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;f_{k}=f\circ\phi_{k}^{-1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p7&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We start with &lt;math id=&quot;p7.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;G_{1}=G=\mathbb{Z}_{N},H_{1}=H=d\mathbb{Z}_{N},a_{1}=1,d_{1}=d,N_{1}=N&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G_{1}=G=\mathbb{Z}_{N},H_{1}=H=d\mathbb{Z}_{N},a_{1}=1,d_{1}=d,N_{1}=N&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
At step &lt;math id=&quot;p7.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;k&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we perform a Fourier sampling that provides a random
&lt;math id=&quot;p7.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda_{k}\frac{N_{k}}{d_{k}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda_{k}\frac{N_{k}}{d_{k}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; for some &lt;math id=&quot;p7.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda_{k}\in\{0,1,...,d_{k}-1\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda_{k}\in\{0,1,...,d_{k}-1\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then,
applying the Continued Fraction Algorithm on
&lt;math id=&quot;p7.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda_{k}\frac{N_{k}}{d_{k}}\frac{a_{k}}{N}=\frac{\lambda_{k}}{d_{k}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mfrac&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda_{k}\frac{N_{k}}{d_{k}}\frac{a_{k}}{N}=\frac{\lambda_{k}}{d_{k}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; we get an
irreducible fraction &lt;math id=&quot;p7.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\frac{p_{k}}{q_{k}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mfrac&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\frac{p_{k}}{q_{k}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and a divisor &lt;math id=&quot;p7.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;q_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; of &lt;math id=&quot;p7.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;d_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;d_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Set
&lt;math id=&quot;p7.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{k+1}=q_{k}a_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{k+1}=q_{k}a_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then &lt;math id=&quot;p7.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;G_{k+1}=a_{k+1}\mathbb{Z}_{N}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ℤ&lt;/mi&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G_{k+1}=a_{k+1}\mathbb{Z}_{N}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
is a subgroup of &lt;math id=&quot;p7.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;G_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Because &lt;math id=&quot;p7.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;q_{k}|d_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q_{k}|d_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we have
&lt;math id=&quot;p7.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;{a_{k}q_{k}}|{a_{k}d_{k}}=d&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{a_{k}q_{k}}|{a_{k}d_{k}}=d&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and so &lt;math id=&quot;p7.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;H&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a subgroup of &lt;math id=&quot;p7.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;G_{k+1}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G_{k+1}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p8&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The general remark about the algorithm being exponentially fast is easy to
see in the cyclic case. Indeed if &lt;math id=&quot;p8.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;q_{k}=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q_{k}=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; above, then &lt;math id=&quot;p8.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda_{k}=p_{k}d_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda_{k}=p_{k}d_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
which happens only if &lt;math id=&quot;p8.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda_{k}=0&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda_{k}=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. If at step &lt;math id=&quot;p8.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;k&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we have
&lt;math id=&quot;p8.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;H\subsetneq G_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;H&lt;/mi&gt;&lt;mo&gt;⊊&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;H\subsetneq G_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; then &lt;math id=&quot;p8.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; can take a non-zero value with
probability at least one half. In that case &lt;math id=&quot;p8.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;q_{k}\geq 2&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q_{k}\geq 2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and
&lt;math id=&quot;p8.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{k+1}\geq 2a_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{k+1}\geq 2a_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Hence &lt;math id=&quot;p8.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; grows exponentially fast until it becomes
stationary and thus &lt;math id=&quot;p8.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{m}=d&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{m}=d&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; with very high probability.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p9&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;We can prove that we get the same procedure using only Fourier sampling on the
initial group &lt;math id=&quot;p9.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;G&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;G&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;G&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Suppose we have measured Fourier samples
&lt;math id=&quot;p9.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda_{1}\frac{N}{d},\lambda_{2}\frac{N}{d},...\lambda_{m}\frac{N}{d}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda_{1}\frac{N}{d},\lambda_{2}\frac{N}{d},...\lambda_{m}\frac{N}{d}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. We want to construct the
same sequence &lt;math id=&quot;p9.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Set &lt;math id=&quot;p9.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{1}=1&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{1}=1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. For each &lt;math id=&quot;p9.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;1\leq k&amp;lt;m&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;1\leq k&amp;lt;m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, we let
&lt;math id=&quot;p9.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;d_{k}=\frac{d}{a}_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mfrac&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mfrac&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;d_{k}=\frac{d}{a}_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and compute the irreducible fraction
&lt;math id=&quot;p9.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda_{k}\frac{N}{d}\frac{a_{k}}{N}=\frac{\lambda_{k}}{d_{k}}=\frac{p_{k}}{q%
_{k}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mfrac&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda_{k}\frac{N}{d}\frac{a_{k}}{N}=\frac{\lambda_{k}}{d_{k}}=\frac{p_{k}}{q%
_{k}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. As above, we have &lt;math id=&quot;p9.m8&quot; class=&quot;ltx_Math&quot; alttext=&quot;{a_{k}q_{k}}|{a_{k}d_{k}}=d&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;{a_{k}q_{k}}|{a_{k}d_{k}}=d&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and set
&lt;math id=&quot;p9.m9&quot; class=&quot;ltx_Math&quot; alttext=&quot;a_{k+1}={q_{k}a_{k}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;a_{k+1}={q_{k}a_{k}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.
Now, write the euclidean division &lt;math id=&quot;p9.m10&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda_{k}=d_{k}\mu_{k}+\nu_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;ν&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda_{k}=d_{k}\mu_{k}+\nu_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; where
&lt;math id=&quot;p9.m11&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu_{k}\in\{0,...a_{k}-1\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu_{k}\in\{0,...a_{k}-1\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p9.m12&quot; class=&quot;ltx_Math&quot; alttext=&quot;\nu_{k}\in\{0,...d_{k}-1\}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;ν&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\nu_{k}\in\{0,...d_{k}-1\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; (with
uniform probability for &lt;math id=&quot;p9.m13&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p9.m14&quot; class=&quot;ltx_Math&quot; alttext=&quot;\nu_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ν&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\nu_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; too). We have
&lt;math id=&quot;p9.m15&quot; class=&quot;ltx_Math&quot; alttext=&quot;\frac{p_{k}}{q_{k}}=\frac{\lambda_{k}}{d_{k}}=\mu_{k}+\frac{\nu_{k}}{d_{k}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mfrac&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mfrac&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;ν&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\frac{p_{k}}{q_{k}}=\frac{\lambda_{k}}{d_{k}}=\mu_{k}+\frac{\nu_{k}}{d_{k}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; so &lt;math id=&quot;p9.m16&quot; class=&quot;ltx_Math&quot; alttext=&quot;q_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;q_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
is actually the denominator obtained when we compute the irreducible fraction
&lt;math id=&quot;p9.m17&quot; class=&quot;ltx_Math&quot; alttext=&quot;\frac{\nu_{k}}{d_{k}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;ν&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;/mfrac&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\frac{\nu_{k}}{d_{k}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. With this description, it becomes obvious that the two
algorithms are equivalent (where &lt;math id=&quot;p9.m18&quot; class=&quot;ltx_Math&quot; alttext=&quot;\nu_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;ν&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\nu_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; corresponds to &lt;math id=&quot;p9.m19&quot; class=&quot;ltx_Math&quot; alttext=&quot;\lambda_{k}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\lambda_{k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; in the
previous algorithm).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p10&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;I conjecture that the same phenomenon happens for a general Dedekindian group,
but this may be more difficult to write it down…&lt;/p&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Shelah’s PCF theory</title>
   <link href="https://frederic-wang.fr//2012/03/15/shelah-s-pcf/"/>
   <updated>2012-03-15T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2012/03/15/shelah-s-pcf</id>
   <content type="html">
&lt;div id=&quot;p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;I have recently started to read a bit about Shelah’s theory of possible
cofinalities. It is a quite interesting topic in Set Theory that I have wanted
to study for a long time, but I did not really find time until now. I am
going to give an overview in this blog post for people who are interested but
also mostly to help me organizing my ideas and understanding of this subject.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;First, this theory originated from (infinite) cardinal arithmetics, which is
itself the Cantor’s invention that marked the birth of Set Theory. The
addition and multiplication of infinite cardinals are trivial, since we have&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p3&quot; class=&quot;ltx_para&quot;&gt;
&lt;table id=&quot;S0.Ex1&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\forall{κ,λ&amp;gt;=ℵ_{0}},\,κ+λ=κ.λ=\max{\{κ,λ\}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;∀&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mo rspace=&quot;4.2pt&quot;&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;.&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\forall{κ,λ&amp;gt;=ℵ_{0}},\,κ+λ=κ.λ=\max{\{κ,λ\}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p4&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;The exponentiation is much more difficult (and interesting!). Here is Theorem
5.20 from Thomas Jech’s book &quot;Set Theory&quot;:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem1&quot; class=&quot;ltx_theorem ltx_theorem_theorem&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Theorem 0.1&lt;/span&gt;&lt;/h6&gt;
&lt;div id=&quot;S0.Thmtheorem1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;Let &lt;math id=&quot;S0.Thmtheorem1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;λ&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;λ&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; be an infinite cardinal. Then for all infinite cardinal &lt;math id=&quot;S0.Thmtheorem1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;κ&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;κ&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the value
of &lt;math id=&quot;S0.Thmtheorem1.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;κ^{λ}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;κ^{λ}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is computed as follows, by induction on &lt;math id=&quot;S0.Thmtheorem1.p1.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;κ&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;κ&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem1.p2&quot; class=&quot;ltx_para&quot;&gt;
&lt;ol id=&quot;I1&quot; class=&quot;ltx_enumerate&quot;&gt;
&lt;li id=&quot;I1.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;1.&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;If &lt;/span&gt;&lt;math id=&quot;I1.i1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;κ\leq λ&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;κ\leq λ&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; then &lt;/span&gt;&lt;math id=&quot;I1.i1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;κ^{λ}=2^{λ}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;κ^{λ}=2^{λ}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;2.&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;If there exists some &lt;/span&gt;&lt;math id=&quot;I1.i2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu&amp;lt;κ&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu&amp;lt;κ&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; such that &lt;/span&gt;&lt;math id=&quot;I1.i2.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu^{λ}\geq κ&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu^{λ}\geq κ&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;,
then &lt;/span&gt;&lt;math id=&quot;I1.i2.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;κ^{λ}=\mu^{λ}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;κ^{λ}=\mu^{λ}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.i3&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;3.&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.i3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;If &lt;/span&gt;&lt;math id=&quot;I1.i3.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;κ&amp;gt;λ&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;κ&amp;gt;λ&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; and &lt;/span&gt;&lt;math id=&quot;I1.i3.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu^{λ}&amp;lt;κ&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu^{λ}&amp;lt;κ&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt; for all &lt;/span&gt;&lt;math id=&quot;I1.i3.p1.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\mu&amp;lt;κ&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\mu&amp;lt;κ&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;, then&lt;/span&gt;&lt;/p&gt;
&lt;ol id=&quot;I1.I1&quot; class=&quot;ltx_enumerate&quot;&gt;
&lt;li id=&quot;I1.I1.i1&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;(a)&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.I1.i1.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;if &lt;/span&gt;&lt;math id=&quot;I1.I1.i1.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{cf}(κ)&amp;gt;λ&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{cf}(κ)&amp;gt;λ&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;, then &lt;/span&gt;&lt;math id=&quot;I1.I1.i1.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;κ^{λ}=κ&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;κ^{λ}=κ&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;,&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;I1.I1.i2&quot; class=&quot;ltx_item&quot; style=&quot;list-style-type:none;&quot;&gt;
&lt;span class=&quot;ltx_tag ltx_tag_enumerate&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;(b)&lt;/span&gt;&lt;/span&gt; 
&lt;div id=&quot;I1.I1.i2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;if &lt;/span&gt;&lt;math id=&quot;I1.I1.i2.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{cf}(κ)\leq λ&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{cf}(κ)\leq λ&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;, then &lt;/span&gt;&lt;math id=&quot;I1.I1.i2.p1.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;κ^{λ}=κ^{\operatorname{cf}κ}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;κ^{λ}=κ^{\operatorname{cf}κ}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p5&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;This theorem reduces the problem of exponentiation to the determination of the
continuum function &lt;math id=&quot;p5.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;κ\mapsto 2^{κ}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;↦&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;κ\mapsto 2^{κ}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and, on singular cardinals &lt;math id=&quot;p5.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;κ&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;κ&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, of the gimel
function &lt;math id=&quot;p5.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;κ\mapsto\operatorname{\gimel}(κ)=κ^{\operatorname{cf}κ}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo&gt;↦&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;ℷ&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;κ\mapsto\operatorname{\gimel}(κ)=κ^{\operatorname{cf}κ}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; . There are
simular reductions of infinite sums and products to &lt;math id=&quot;p5.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;\sup&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mo&gt;sup&lt;/mo&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\sup&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and exponentation
operations, so computing these two functions is the crucial point of
cardinal arithmetics.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p6&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Set theorists proved by forcing that we can not really say more about the value
of the continuum for regular cardinals. Indeed, the only constraints are that
the function must be increasing and must satisfy some consequences of König’s
theorem (namely &lt;math id=&quot;p6.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{κ}&amp;gt;κ&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/msup&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{κ}&amp;gt;κ&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and &lt;math id=&quot;p6.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{cf}(2^{κ})&amp;gt;κ&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mi&gt;κ&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{cf}(2^{κ})&amp;gt;κ&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p7&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;At the opposite it turns out that more properties can be proved for the
singular case. For instance, we have the striking bound of &lt;math id=&quot;p7.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{\gimel}(ℵ_{ω})&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;ℷ&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{\gimel}(ℵ_{ω})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; mentioned
on Shelah’s Web Archive:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem2&quot; class=&quot;ltx_theorem ltx_theorem_theorem&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Theorem 0.2&lt;/span&gt;&lt;/h6&gt;
&lt;div id=&quot;S0.Thmtheorem2.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;table id=&quot;S0.Ex2&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex2.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{\gimel}(ℵ_{ω})=ℵ_{ω}^{ℵ_{0}}\leq 2^{ℵ_{0}}+ℵ_{ω_{4}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;ℷ&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msubsup&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msubsup&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{\gimel}(ℵ_{ω})=ℵ_{ω}^{ℵ_{0}}\leq 2^{ℵ_{0}}+ℵ_{ω_{4}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p8&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Shelah developed his PCF theory in order to obtain these kinds of results. The
basic idea is to consider an &quot;interval&quot; of regular cardinals &lt;math id=&quot;p8.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; i.e. with
the property that any regular cardinal between two elements of &lt;math id=&quot;p8.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is itself
an element of &lt;math id=&quot;p8.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. Then we define the set of possible cofinalities of
ultraproducts of &lt;math id=&quot;p8.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;:&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p9&quot; class=&quot;ltx_para&quot;&gt;
&lt;table id=&quot;S0.Ex3&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex3.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{pcf}(A)=\left\{\operatorname{cf}{\left(\prod A/U\right)}|U\text{
 is an ultrafilter on }A\right\}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;pcf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;{&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;cf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mrow&gt;&lt;mo largeop=&quot;true&quot; movablelimits=&quot;false&quot; symmetric=&quot;true&quot;&gt;∏&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;/&lt;/mo&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mtext&gt; is an ultrafilter on &lt;/mtext&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{pcf}(A)=\left\{\operatorname{cf}{\left(\prod A/U\right)}|U\text{
 is an ultrafilter on }A\right\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p10&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;where &lt;math id=&quot;p10.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\prod A/U&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∏&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;/&lt;/mo&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\prod A/U&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a totally ordered set: an ordinal function is smaller
than another if it is smaller &quot;almost everywhere&quot; (i.e. on an element of the
ultrafilter &lt;math id=&quot;p10.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;U&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;U&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;). The cofinality of such a totally ordered set is defined in a
similar way as for cardinals: it is shortest length of an unbounded sequence.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p11&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;Now, &lt;math id=&quot;p11.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\prod A/U&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∏&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;/&lt;/mo&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\prod A/U&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a topological space (a basis is naturally given by the
open intervals with respect to the total order) and so we can use topological
methods to get information on it.
In particular, this provides information on &lt;math id=&quot;p11.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\prod A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∏&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\prod A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, which in turn provides
infomation on &lt;math id=&quot;p11.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\left|\prod A\right|&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mo largeop=&quot;true&quot; symmetric=&quot;true&quot;&gt;∏&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\left|\prod A\right|&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, the infinite product of the (regular)
cardinals in &lt;math id=&quot;p11.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p12&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;For example, if &lt;math id=&quot;p12.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;A={\left\{\aleph_{n}\right\}}_{n=0}^{\infty}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msubsup&gt;&lt;mrow&gt;&lt;mo&gt;{&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;∞&lt;/mi&gt;&lt;/msubsup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A={\left\{\aleph_{n}\right\}}_{n=0}^{\infty}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and if we
assume that &lt;math id=&quot;p12.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\aleph_{\omega}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\aleph_{\omega}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is strong limit then one can show that &lt;math id=&quot;p12.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{pcf}(A)&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;pcf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{pcf}(A)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is
itself an interval of regular cardinals and has a maximum element which is
&lt;math id=&quot;p12.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{\aleph_{\omega}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{\aleph_{\omega}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. So its elements are in the sequence of cardinals
&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;p13&quot; class=&quot;ltx_para&quot;&gt;
&lt;table id=&quot;S0.Ex4&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex4.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\min{\operatorname{pcf}(A)}=\aleph_{\alpha},\aleph_{\alpha+1},\aleph_{\alpha+2
},\ldots,\aleph_{\alpha+\lambda}=\max{\operatorname{pcf}(A)}=2^{\aleph_{\omega}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;pcf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;…&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁢&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;pcf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\min{\operatorname{pcf}(A)}=\aleph_{\alpha},\aleph_{\alpha+1},\aleph_{\alpha+2
},\ldots,\aleph_{\alpha+\lambda}=\max{\operatorname{pcf}(A)}=2^{\aleph_{\omega}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&quot;p14&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;and obviouly, &lt;math id=&quot;p14.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha+\lambda\leq{\left|\operatorname{pcf}A\right|}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;pcf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha+\lambda\leq{\left|\operatorname{pcf}A\right|}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;. But the size of
&lt;math id=&quot;p14.m2&quot; class=&quot;ltx_Math&quot; alttext=&quot;\operatorname{pcf}A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;pcf&lt;/mo&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\operatorname{pcf}A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is not greater than the number of ultrafilters of &lt;math id=&quot;p14.m3&quot; class=&quot;ltx_Math&quot; alttext=&quot;A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;, which are
sets of subsets of the countable set &lt;math id=&quot;p14.m4&quot; class=&quot;ltx_Math&quot; alttext=&quot;A&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;A&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; i.e. there are at most &lt;math id=&quot;p14.m5&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{2^{\aleph_{0}}}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{2^{\aleph_{0}}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;
many of them. Since we assume that &lt;math id=&quot;p14.m6&quot; class=&quot;ltx_Math&quot; alttext=&quot;\aleph_{\omega}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\aleph_{\omega}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a strong limit cardinal,
we have &lt;math id=&quot;p14.m7&quot; class=&quot;ltx_Math&quot; alttext=&quot;\alpha+\lambda\leq 2^{2^{\aleph_{0}}}&amp;lt;\aleph_{\omega}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;λ&lt;/mi&gt;&lt;/mrow&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;/msup&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\alpha+\lambda\leq 2^{2^{\aleph_{0}}}&amp;lt;\aleph_{\omega}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; and finally&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;S0.Thmtheorem3&quot; class=&quot;ltx_theorem ltx_theorem_theorem&quot;&gt;
&lt;h6 class=&quot;ltx_title ltx_runin ltx_font_bold ltx_title_theorem&quot;&gt;&lt;span class=&quot;ltx_tag ltx_tag_theorem&quot;&gt;Theorem 0.3&lt;/span&gt;&lt;/h6&gt;
&lt;div id=&quot;S0.Thmtheorem3.p1&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;&lt;span class=&quot;ltx_text ltx_font_italic&quot;&gt;If &lt;math id=&quot;S0.Thmtheorem3.p1.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\aleph_{\omega}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\aleph_{\omega}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; is a strong limit cardinal then&lt;/span&gt;&lt;/p&gt;
&lt;table id=&quot;S0.Ex5&quot; class=&quot;ltx_equation ltx_eqn_table&quot;&gt;

&lt;tr class=&quot;ltx_equation ltx_eqn_row ltx_align_baseline&quot;&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padleft&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_align_center&quot;&gt;&lt;math id=&quot;S0.Ex5.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;2^{\aleph_{\omega}}&amp;lt;\aleph_{\aleph_{\omega}}&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;/msup&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;2^{\aleph_{\omega}}&amp;lt;\aleph_{\aleph_{\omega}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;
&lt;td class=&quot;ltx_eqn_cell ltx_eqn_center_padright&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;p15&quot; class=&quot;ltx_para&quot;&gt;
&lt;p class=&quot;ltx_p&quot;&gt;These are of course just two examples of what we can say about the values of the
continuum and gimel functions at a singular cardinal (here for &lt;math id=&quot;p15.m1&quot; class=&quot;ltx_Math&quot; alttext=&quot;\aleph_{\omega}&quot; display=&quot;inline&quot;&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ℵ&lt;/mi&gt;&lt;mi&gt;ω&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\aleph_{\omega}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;,
the smallest infinite singular cardinal). Several other results are known and
the PCF theory also applies to other areas than cardinal arithmetics. Many
beautiful topics that I would like to learn about…&lt;/p&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Maximal Subgroup Reduction and HSP over Projective Linear Groups</title>
   <link href="https://frederic-wang.fr//2010/12/10/maximal-subgroup-reduction-and-hsp-over-projective-linear-groups/"/>
   <updated>2010-12-10T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2010/12/10/maximal-subgroup-reduction-and-hsp-over-projective-linear-groups</id>
   <content type="html">
&lt;p&gt;-- updated the 12th of December.&lt;/p&gt;

&lt;p&gt;Among the recent algorithms for the &lt;a href=&quot;http://en.wikipedia.org/wiki/Hidden_subgroup_problem&quot;&gt;Hidden Subgroup Problem&lt;/a&gt;, two are particularly interesting: one to &lt;a href=&quot;http://arxiv.org/abs/0707.1260&quot;&gt;find hidden subgroups of nil-2 groups&lt;/a&gt; by Ivanyos, Sanselme and Santha ; and another one to &lt;a href=&quot;http://arxiv.org/abs/0809.2445&quot;&gt;find conjugate stabilizer subgroups of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;PSL&lt;/mi&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;q&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/math&gt;&lt;/a&gt; (and also those of the related groups &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;SL&lt;/mi&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;q&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;PGL&lt;/mi&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;q&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/math&gt;) by Denney, Moore and Russell. The idea of both algorithms is to reduce the initial problem to a HSP over a group for which we already know an efficient algorithm. However, the former only relies on Fourier Sampling over abelian groups while the latter requires Strong Fourier Sampling over some semidirect products of abelian groups. Also, considering the &lt;a href=&quot;/computer-science/master-thesis/web/general_HSP.php#id6.1.&quot;&gt;general approach to HSP&lt;/a&gt; that I have described in my &lt;a href=&quot;/computer-science/master-thesis/web/index.html&quot;&gt;Master Project&lt;/a&gt;, the technique of the former is only likely to work for solvable groups while the composition series of groups considered in the latter contain non-abelian simple groups... but can their ideas be combined together to get new HSP algorithms?&lt;/p&gt;

&lt;p&gt;First, let&apos;s recall the concept of quantum hiding functions, which is a key ingredient of the first paper. In general, HSP algorithms use a classical oracle &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;/math&gt; over &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;/math&gt; which hides a subgroup &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt; i.e. is constant over each coset of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt; and takes different values on different cosets. The quantum counterpart of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;/math&gt; is implemented by a quantum operator &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;U&lt;/mi&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; which takes &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; to &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;. Some HSP algorithms use the so-called Strong Fourier Sampling: we create a uniform superposition of the states &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; over all &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt;, apply a Fourier Tranform on the first register and measure it. The idea of quantum hiding functions is to replace &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;U&lt;/mi&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; by any other quantum operator sending &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; to &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;Ψ&lt;/mi&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;. In order to make the procedure works, we only need the &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;Ψ&lt;/mi&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;&apos;s to be unit states taking the same value over one coset of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt; and orthogonal values on different cosets. These states may even change at each sampling.&lt;/p&gt;

&lt;p&gt;To solve the general HSP and in particular the difficult case of simple groups, I have proposed &lt;a href=&quot;/computer-science/master-thesis/web/general_HSP.php#id6.1.&quot;&gt;maximal subgroup reduction&lt;/a&gt;. Basically, the idea is to find a maximal subgroup &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;K&lt;/mi&gt; &lt;/math&gt; containing &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt; (there is always one except in the trivial case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;/math&gt;, which can be checked directly) using an HSP algorithm over &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;/math&gt; and thus we reduce the problem to HSP over &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;K&lt;/mi&gt; &lt;/math&gt;. Nevertheless, It is not clear at all how to build an efficient oracle hiding &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;K&lt;/mi&gt; &lt;/math&gt; from an oracle &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;/math&gt; hiding &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt;: the natural choice for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; would be something gathering the values of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;/math&gt; over all the cosets of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt; inside the coset &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mi&gt;K&lt;/mi&gt; &lt;/math&gt;... but unfortunately there can be exponentially many of them! Hence, it would maybe help to consider quantum hiding functions instead. For example, the states&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;Ψ&lt;/mi&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mi&gt;K&lt;/mi&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;mrow&gt; &lt;munder&gt; &lt;mo&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;k&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;K&lt;/mi&gt; &lt;/mrow&gt; &lt;/munder&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mi&gt;k&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;satisfy the expected properties. However it is not clear how to produce &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;Ψ&lt;/mi&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; efficiently and even less without knowing the subgroup &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;K&lt;/mi&gt; &lt;/math&gt;. But it is open whether we can find another method, maybe involving other states &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;Ψ&lt;/mi&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;Let&apos;s turn our attention to HSP over &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;PSL&lt;/mi&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;q&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/math&gt; (or the other groups described in the paper of Denney, Moore and Russell) and see whether we can apply a maximal subgroup reduction. Note that the group &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;/math&gt; acts on the projective line &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi mathvariant=&quot;fraktur&quot;&gt;F&lt;/mi&gt; &lt;mi&gt;q&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;∪&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;{&lt;/mo&gt; &lt;mo&gt;∞&lt;/mo&gt; &lt;mo&gt;}&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; and thus we can define the stabilizer &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; of a point &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;/math&gt;, which is a maximal subgroup. Now, we assume that the hidden subgroup &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt; is included in some &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; and that we have a way to build a quantum function hiding &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; from an oracle hiding &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt;. Note that we have the inclusions&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;∩&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;∞&lt;/mo&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;mo&gt;⊆&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;∞&lt;/mo&gt; &lt;/msub&gt; &lt;mo&gt;⊆&lt;/mo&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/p&gt;

&lt;p&gt;The idea of the paper is to restrict an oracle hiding &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; to the subgroup &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;∞&lt;/mo&gt; &lt;/msub&gt; &lt;/math&gt; and thus get a HSP over &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;∞&lt;/mo&gt; &lt;/msub&gt; &lt;/math&gt; with hidden subgroup &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;∩&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;∞&lt;/mo&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/math&gt;. Now, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;∞&lt;/mo&gt; &lt;/msub&gt; &lt;/math&gt; is isomorphic to some &quot;friendly&quot; semidirect product of abelian groups and thus the authors are able to determine &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;∩&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;∞&lt;/mo&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/math&gt; by Strong Fourier Sampling and thus find the stabilizer &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt;. Note that their algorithm still works if we use quantum hiding function instead! Hence, with the hypothesis above, we are able to determine a maximal subgroup &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; containing &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt;. To complete the algorithm, we need to find the hidden subgroup &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt; of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;≅&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;∞&lt;/mo&gt; &lt;/msub&gt; &lt;/math&gt;. However, the paper describes only the case of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;∩&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;∞&lt;/mo&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;⊆&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;∞&lt;/mo&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/math&gt; and I am not sure that the authors mean they have an algorithm for finding arbitrary subgroups of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;∞&lt;/mo&gt; &lt;/msub&gt; &lt;/math&gt;...&lt;/p&gt;

&lt;p&gt;Another open question: can we generalize this maximal subgroup technique to solve HSP over &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;PSL&lt;/mi&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;q&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/math&gt;? We would like a way to distinguish among exponentially many (maximal) subgroups. Note that the list of (maximal) subgroups of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;PSL&lt;/mi&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;q&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;PGL&lt;/mi&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;q&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/math&gt; are known (see Dickson&apos;s book). Among the exponentially large subgroups (i.e. for which we would need an efficient HSP algorithm), there are subgroups isomorphic to &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;PSL&lt;/mi&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;q&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;PGL&lt;/mi&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;q&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/math&gt; or to a semidirect product of a p-group and a cyclic group (including the famous dihedral group!). Note also that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;PSL&lt;/mi&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;q&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/math&gt; is a normal subgroup of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;PGL&lt;/mi&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;q&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/math&gt;, and so we could also imagine the use of a &lt;a href=&quot;/computer-science/master-thesis/web/general_HSP.php#id6.1.&quot;&gt;quotient reduction&lt;/a&gt;...&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Can transfinite numbers be extended to more general algebraic structures?</title>
   <link href="https://frederic-wang.fr//2010/12/01/can-transfinite-numbers-be-extended-to-more-general-algebraic-structures/"/>
   <updated>2010-12-01T00:00:00+01:00</updated>
   <id>https://frederic-wang.fr//2010/12/01/can-transfinite-numbers-be-extended-to-more-general-algebraic-structures</id>
   <content type="html">
&lt;p&gt;Infinite ordinals and cardinals are beautiful mathematical objects, extending in a natural way &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;ℕ&lt;/mi&gt; &lt;/math&gt; and sharing most of its properties. I have always wondered whether it would be possible to generalize the constructions of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;/math&gt; or &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;ℚ&lt;/mi&gt; &lt;/math&gt; to get transfinite integers or rationals. In general, putting a group structure on classes extending &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;Ord&lt;/mi&gt; &lt;/math&gt; or &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;Card&lt;/mi&gt; &lt;/math&gt; is not possible as I indicated some years ago. Basically, we would have &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℵ&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℵ&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt; (and also &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;/math&gt;) which would imply &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/math&gt;. However, we can consider a slightly modified problem with weaker constraints, as follows. First we assume we have a class of cardinals &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;⊆&lt;/mo&gt; &lt;mi&gt;Card&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; containing zero and stable by addition.&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mtext&gt;(1)&lt;/mtext&gt; &lt;mspace width=&quot;4em&quot;&gt;&lt;/mspace&gt; &lt;mrow&gt; &lt;mo&gt;{&lt;/mo&gt; &lt;mrow&gt; &lt;mtable columnalign=&quot;left left&quot;&gt; &lt;mtr&gt; &lt;mtd&gt; &lt;mrow&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;/mtd&gt; &lt;/mtr&gt; &lt;mtr&gt; &lt;mtd&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo&gt;∀&lt;/mo&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;λ&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;λ&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mtd&gt; &lt;/mtr&gt; &lt;/mtable&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/p&gt;

&lt;p&gt;We define the class &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;Z&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;∪&lt;/mo&gt; &lt;msup&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;/msup&gt; &lt;/math&gt;, where &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msup&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;/msup&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;{&lt;/mo&gt; &lt;mrow&gt; &lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;mo&gt;≠&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mo&gt;}&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; is a representation of &quot;negative&quot; cardinals. As we have seen, the class &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;Z&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; need not be a group. Nevertheless, we can try to find an equivalence class &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;R&lt;/mi&gt; &lt;/math&gt; over &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;Z&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mfrac bevelled=&quot;true&quot;&gt; &lt;msub&gt; &lt;mi&gt;Z&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;mi&gt;R&lt;/mi&gt; &lt;/mfrac&gt; &lt;/math&gt; is a group. Moreover, we want this equivalence class to be compatible with addition and opposite i.e.&lt;/p&gt;
&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mtext&gt;(2)&lt;/mtext&gt; &lt;mspace width=&quot;4em&quot;&gt;&lt;/mspace&gt; &lt;mrow&gt; &lt;mtable rowspacing=&quot;0.5ex&quot;&gt; &lt;mtr&gt; &lt;mtd&gt; &lt;mrow&gt; &lt;mo&gt;∀&lt;/mo&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;λ&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mspace width=&quot;mediummathspace&quot;&gt;&lt;/mspace&gt; &lt;mrow&gt; &lt;mover&gt; &lt;mrow&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;λ&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mover&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mover&gt; &lt;mi&gt;λ&lt;/mi&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;/mrow&gt; &lt;/mtd&gt; &lt;/mtr&gt; &lt;mtr&gt; &lt;mtd&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo&gt;∀&lt;/mo&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mspace width=&quot;mediummathspace&quot;&gt;&lt;/mspace&gt; &lt;mover&gt; &lt;mrow&gt; &lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt; &lt;mover&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;/mrow&gt; &lt;/mtd&gt; &lt;/mtr&gt; &lt;/mtable&gt; &lt;/mrow&gt; &lt;/math&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Of course this implies that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mover&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;/math&gt; is the identity element &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/math&gt; of the expected group. Similarly, we can settle the same problem for a class &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;⊆&lt;/mo&gt; &lt;mi&gt;Ord&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; and + is now understood as the ordinal addition. Can we follow this schema to contruct interesting infinite algebraic structures?&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;For &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;⊆&lt;/mo&gt; &lt;mi&gt;Card&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt;, we have for any infinite &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; the relation &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mover&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mover&gt; &lt;mrow&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mover&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mover&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;/mrow&gt; &lt;/math&gt; so &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mover&gt; &lt;mi&gt;κ&lt;/mi&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/math&gt;. Hence &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;∩&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; and the initial problem is reduced to the case where &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;⊆&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; contains only finite cardinals (= finite ordinals) and so the problem is still not really exciting. What about the case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;⊆&lt;/mo&gt; &lt;mi&gt;Ord&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt;? In general it is possible to have &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;/math&gt; without &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt; being equal and so for any &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/math&gt; such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;γα&lt;/mi&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt;, we get that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mover&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mover&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;/math&gt;. In particular for any infinite ordinal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;γα&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; we obtain &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mover&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/math&gt; because &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;/math&gt; (if this is not obvious to you, a more general statement is proved below). As a consequence, more general assumptions on the class &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/math&gt; strongly limit the structure of the group. For example if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/math&gt; is closed under an infinite sum (&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;Ord&lt;/mi&gt; &lt;/math&gt; for example) then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mtext&gt;G&lt;/mtext&gt; &lt;mtext&gt;C&lt;/mtext&gt; &lt;/msub&gt; &lt;/math&gt; is trivial. Similarly, if we require &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/math&gt; to be stable by multiplication (in order to define a ring structure for example) then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mtext&gt;G&lt;/mtext&gt; &lt;mtext&gt;C&lt;/mtext&gt; &lt;/msub&gt; &lt;/math&gt; is trivial whenever &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/math&gt; contains an infinite ordinal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;/math&gt; (hence the remaining case is again &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;⊆&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt;). If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; is not trivial, we denote &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; the least element such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mover&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mo&gt;≠&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;/math&gt; (in particular &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;&amp;gt;&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/math&gt;).&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;One additional natural hypothesis should be added. We know that for any ordinal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;/math&gt; there exists a unique ordinal &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;/math&gt; such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;/math&gt;. We would very like &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mover&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;/math&gt; to match the difference &quot;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mover&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mover&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;/math&gt;&quot;. For that purpose, we only require &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;/math&gt; to belong to &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/math&gt;. Hence we assume that&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mtext&gt;(3)&lt;/mtext&gt; &lt;mspace width=&quot;4em&quot;&gt;&lt;/mspace&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo&gt;∀&lt;/mo&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;∀&lt;/mo&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;Ord&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;⇒&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Let&apos;s come back to the case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;⊆&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; with the new assumption (3) and suppose that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; is not trivial. Then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;/math&gt; and any finite &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;m&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; and be written &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;m&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mi&gt;q&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;r&lt;/mi&gt; &lt;/math&gt; with &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;r&lt;/mi&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt;. By (3), &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;r&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; and because &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/math&gt; is stable by finite sums, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mover&gt; &lt;mi&gt;m&lt;/mi&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mover&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mi&gt;q&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mover&gt; &lt;mi&gt;r&lt;/mi&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mover&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mi&gt;q&lt;/mi&gt; &lt;/math&gt;. Thus &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; is the monogenic group generated by &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mover&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;/math&gt;.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;What about the general case? Unfortunately, it turns out that if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; is not trivial it is still a monogenic group generated by &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mover&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;/math&gt;. To prove this, we need to recall some equalities on ordinals. First, for any &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;&amp;gt;&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/math&gt;, we have &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/msup&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/msup&gt; &lt;/math&gt;. This is clearly true for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/math&gt; and we prove the general case by induction on &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/math&gt;: &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/msup&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/msup&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/msup&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/msup&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;msup&gt; &lt;mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/msup&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/msup&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/msup&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/msup&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/msup&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/msup&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;λ&lt;/mi&gt; &lt;/msup&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;munder&gt; &lt;mo&gt;sup&lt;/mo&gt; &lt;mrow&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;mi&gt;λ&lt;/mi&gt; &lt;/mrow&gt; &lt;/munder&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mrow&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;/mrow&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/msup&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;munder&gt; &lt;mo&gt;sup&lt;/mo&gt; &lt;mrow&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;mi&gt;λ&lt;/mi&gt; &lt;/mrow&gt; &lt;/munder&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/msup&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;λ&lt;/mi&gt; &lt;/msup&gt; &lt;/mrow&gt; &lt;/math&gt;. Now, if we have two ordinals &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;/math&gt; and if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;mo&gt;&amp;gt;&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/math&gt; is such that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;/math&gt; we have &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/msup&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;/msup&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/msup&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;/msup&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/msup&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;/msup&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;/msup&gt; &lt;/math&gt;. Finally, if we have two ordinals &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt; we can write their &lt;a href=&quot;http://en.wikipedia.org/wiki/Ordinal_arithmetic#Cantor_normal_form&quot;&gt;Cantor Normal Forms&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mtext&gt;(4)&lt;/mtext&gt; &lt;mspace width=&quot;4em&quot;&gt;&lt;/mspace&gt; &lt;mrow&gt; &lt;mtable rowspacing=&quot;0.5ex&quot;&gt; &lt;mtr&gt; &lt;mtd&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;msubsup&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msubsup&gt; &lt;/msup&gt; &lt;msubsup&gt; &lt;mi&gt;k&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msubsup&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;msubsup&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msubsup&gt; &lt;/msup&gt; &lt;msubsup&gt; &lt;mi&gt;k&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msubsup&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mo&gt;…&lt;/mo&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;msubsup&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mi&gt;n&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msubsup&gt; &lt;/msup&gt; &lt;msubsup&gt; &lt;mi&gt;k&lt;/mi&gt; &lt;mi&gt;n&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msubsup&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mtd&gt; &lt;/mtr&gt; &lt;mtr&gt; &lt;mtd&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;msubsup&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msubsup&gt; &lt;/msup&gt; &lt;msubsup&gt; &lt;mi&gt;k&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msubsup&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;msubsup&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msubsup&gt; &lt;/msup&gt; &lt;msubsup&gt; &lt;mi&gt;k&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msubsup&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mo&gt;…&lt;/mo&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;msubsup&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mi&gt;n&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msubsup&gt; &lt;/msup&gt; &lt;msubsup&gt; &lt;mi&gt;k&lt;/mi&gt; &lt;mi&gt;m&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msubsup&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mtd&gt; &lt;/mtr&gt; &lt;/mtable&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;where &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msubsup&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo&gt;≥&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/msubsup&gt; &lt;mo&gt;&amp;gt;&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/msubsup&gt; &lt;mo&gt;&amp;gt;&lt;/mo&gt; &lt;mo&gt;…&lt;/mo&gt; &lt;mo&gt;&amp;gt;&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/msubsup&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msubsup&gt; &lt;mi&gt;k&lt;/mi&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/msubsup&gt; &lt;/math&gt; are positive integers. Using the equality &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;/msup&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;/msup&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;/msup&gt; &lt;/math&gt; for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;/math&gt; it is clear that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt; if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msubsup&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo&gt;&amp;gt;&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msubsup&gt; &lt;/math&gt;.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Now our element &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; can be written &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;/msup&gt; &lt;mi&gt;k&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;γ&lt;/mi&gt; &lt;/math&gt; where &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;/msup&gt; &lt;mi&gt;k&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; is the first term of its Cantor Normal Form. For any &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;δ&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt;, we can write its euclidean division by &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt;: &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;δ&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mi&gt;l&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;ε&lt;/mi&gt; &lt;/math&gt; where &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;ε&lt;/mi&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt;. By the previous discussion, if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;l&lt;/mi&gt; &lt;mo&gt;≥&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; then we can write the Cantor Normal Forms of the two elements &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;mi&gt;δ&lt;/mi&gt; &lt;/math&gt; as in (4) and see that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msubsup&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo&gt;&amp;gt;&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;β&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msubsup&gt; &lt;/math&gt;. Hence &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;δ&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;δ&lt;/mi&gt; &lt;/math&gt; and so &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mover&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/math&gt;, which is a contradiction. So &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;l&lt;/mi&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;/math&gt; and because &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/math&gt; is stable by finite sums, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mi&gt;l&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; and by the property (3) we get &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;ε&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt;. This means that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mover&gt; &lt;mi&gt;δ&lt;/mi&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mover&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mi&gt;l&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mover&gt; &lt;mi&gt;ε&lt;/mi&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mover&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;mi&gt;l&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; and hence &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; is generated by &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mover&gt; &lt;msub&gt; &lt;mi&gt;α&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;¯&lt;/mo&gt; &lt;/mover&gt; &lt;/math&gt; as claimed above.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;As a conclusion, if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;⊆&lt;/mo&gt; &lt;mi&gt;Card&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; satisfies the properties (1), (2) above and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mfrac bevelled=&quot;true&quot;&gt; &lt;msub&gt; &lt;mi&gt;Z&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;mi&gt;R&lt;/mi&gt; &lt;/mfrac&gt; &lt;/math&gt; is a group then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;⊆&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;mo&gt;⊆&lt;/mo&gt; &lt;mi&gt;Ord&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt;. If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;⊆&lt;/mo&gt; &lt;mi&gt;Ord&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt; satisfies properties (1), (2), (3) above and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mfrac bevelled=&quot;true&quot;&gt; &lt;msub&gt; &lt;mi&gt;Z&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;mi&gt;R&lt;/mi&gt; &lt;/mfrac&gt; &lt;/math&gt; is a group then &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; is isomorphic to &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;/math&gt; or to &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mfrac bevelled=&quot;true&quot;&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;n&lt;/mi&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;/mrow&gt; &lt;/mfrac&gt; &lt;/math&gt;. Conversely, we can build these groups from &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;C&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;ω&lt;/mi&gt; &lt;/math&gt; by defining the relation &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;R&lt;/mi&gt; &lt;/math&gt; as the equality (respectively the equality modulo &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;n&lt;/mi&gt; &lt;/math&gt;). But we do not get any new groups...&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Two Open Problems for the Subgroup-Reduction based Dedekindian HSP Algorithm</title>
   <link href="https://frederic-wang.fr//2010/08/05/two-open-problems-for-the-subgroup-reduction-based-dedekindian-hsp-algorithm/"/>
   <updated>2010-08-05T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2010/08/05/two-open-problems-for-the-subgroup-reduction-based-dedekindian-hsp-algorithm</id>
   <content type="html">
&lt;p&gt;One of my main idea after having studied the Hidden Subgroup Problem is that subgroup simplification is likely to play an important role. Basically, rather than directly finding the hidden subgroup &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt; by working on the whole initial group &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;/math&gt;, we only try to get partial information on &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt; in a first time. This information allows us to move to a simpler HSP problem and we can iterate this process until the complete determination of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt;. Several reductions of this kind exist and I think the sophisticated solution to HSP over 2-nil groups illustrates well how this technique can be efficient.&lt;/p&gt;

&lt;p&gt;Using only subgroup reduction, I&apos;ve been able to design an alternative algorithm for the Dedekindian HSP i.e. over groups that have only normal subgroups. Recall that the standard Dedekindian HSP algorithm is to use Weak Fourier Sampling, measure a polynomial number of representations &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;ρ&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mo&gt;…&lt;/mo&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ρ&lt;/mi&gt; &lt;mi&gt;m&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; and then get with high probability the hidden subgroup as the intersection of kernels &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;munder&gt; &lt;mo&gt;⋂&lt;/mo&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/munder&gt; &lt;mrow&gt; &lt;mi&gt;Ker&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;ρ&lt;/mi&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;. When the group is dedekindian, we always have &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;mo&gt;⊆&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;Ker&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;ρ&lt;/mi&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;. Hence my alternative algorithm is rather to start by measuring one representation &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;ρ&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt;, move the problem to HSP over &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;Ker&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;ρ&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/math&gt; and iterate this procedure. I&apos;ve been able to show that we reach the group &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt; after a polynomial number of steps, the idea being that when we measure a non-trivial representation the size of the underlying group becomes at least twice smaller. One difficulty of this approach is to determine the structure of the new group &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;Ker&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;ρ&lt;/mi&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/math&gt; so that we can work on it. However, for the cyclic case this is determination is trivial and for the abelian case I&apos;ve used the group decomposition algorithm, based on the cyclic HSP. Finally I&apos;ve two open questions:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Can my algorithm work for the Hamiltonian HSP i.e. over non-abelian dedekindian groups?&lt;/li&gt;
	&lt;li&gt;Is my algorithm more efficient than the standard Dedekindian HSP?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For the first question, I&apos;m pretty sure that the answer is positive, but I admit that I&apos;ve not really thought about it. For the second one, it depends on what we mean by more efficient. The decomposition of the kernel seems to increase the time complexity but since we are working on smaller and smaller groups, we decrease the space complexity. However, if we are only considering the numbers of sample, my conjecture is that both algorithms have the same complexity and more precisely yield the same markov process. In order to illustrate this, let&apos;s consider the cyclic case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mn&gt;18&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;6&lt;/mn&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mn&gt;18&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt;. The markov chain of the my alternative algorithm is given by the graph below, where the edge labels are of course probabilities and the node labels are the underlying group. We start at &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mn&gt;18&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt; and want to reach &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;mo&gt;≅&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mn&gt;3&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt;.&lt;/p&gt;

&lt;div style=&quot;text-align:center;&quot;&gt;&lt;svg height=&quot;237&quot; width=&quot;297&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt; &lt;g class=&quot;graph&quot; id=&quot;graph1&quot; transform=&quot;scale(1 1) rotate(0) translate(4 221.37)&quot;&gt; &lt;polygon fill=&quot;none&quot; points=&quot;-4,5 -4,-221.37 287,-221.37 287,5 -4,5&quot; stroke=&quot;none&quot;&gt;&lt;/polygon&gt; &lt;!-- 1 --&gt; &lt;g class=&quot;node&quot; id=&quot;node1&quot;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;ellipse cx=&quot;31&quot; cy=&quot;-55.3695&quot; fill=&quot;none&quot; rx=&quot;31.1127&quot; ry=&quot;31.1127&quot; stroke=&quot;black&quot;&gt;&lt;/ellipse&gt; &lt;text font-family=&quot;Times Roman,serif&quot; font-size=&quot;14.00&quot; text-anchor=&quot;middle&quot; x=&quot;31&quot; y=&quot;-51.7695&quot;&gt;Z18&lt;/text&gt; &lt;/g&gt; &lt;!-- 1&amp;#45;&amp;gt;1 --&gt; &lt;g class=&quot;edge&quot; id=&quot;edge2&quot;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;path d=&quot;M19.7747,-84.5461C19.4067,-95.4193 23.1484,-104.37 31,-104.37 36.1526,-104.37 39.5352,-100.515 41.1479,-94.792&quot; fill=&quot;none&quot; stroke=&quot;black&quot;&gt;&lt;/path&gt; &lt;polygon fill=&quot;black&quot; points=&quot;44.6603,-94.8573 42.2253,-84.5461 37.6986,-94.1253 44.6603,-94.8573&quot; stroke=&quot;black&quot;&gt;&lt;/polygon&gt; &lt;text font-family=&quot;Times Roman,serif&quot; font-size=&quot;14.00&quot; text-anchor=&quot;middle&quot; x=&quot;31&quot; y=&quot;-109.77&quot;&gt;1/6&lt;/text&gt; &lt;/g&gt; &lt;!-- 2 --&gt; &lt;g class=&quot;node&quot; id=&quot;node2&quot;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;ellipse cx=&quot;147&quot; cy=&quot;-157.37&quot; fill=&quot;none&quot; rx=&quot;24.2437&quot; ry=&quot;24.7487&quot; stroke=&quot;black&quot;&gt;&lt;/ellipse&gt; &lt;text font-family=&quot;Times Roman,serif&quot; font-size=&quot;14.00&quot; text-anchor=&quot;middle&quot; x=&quot;147&quot; y=&quot;-153.77&quot;&gt;Z9&lt;/text&gt; &lt;/g&gt; &lt;!-- 1&amp;#45;&amp;gt;2 --&gt; &lt;g class=&quot;edge&quot; id=&quot;edge4&quot;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;path d=&quot;M54.4743,-76.0107C73.7609,-92.9696 101.056,-116.97 121.001,-134.508&quot; fill=&quot;none&quot; stroke=&quot;black&quot;&gt;&lt;/path&gt; &lt;polygon fill=&quot;black&quot; points=&quot;118.698,-137.144 128.519,-141.119 123.321,-131.887 118.698,-137.144&quot; stroke=&quot;black&quot;&gt;&lt;/polygon&gt; &lt;text font-family=&quot;Times Roman,serif&quot; font-size=&quot;14.00&quot; text-anchor=&quot;middle&quot; x=&quot;92&quot; y=&quot;-123.77&quot;&gt;1/6&lt;/text&gt; &lt;/g&gt; &lt;!-- 3 --&gt; &lt;g class=&quot;node&quot; id=&quot;node3&quot;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;ellipse cx=&quot;147&quot; cy=&quot;-55.3695&quot; fill=&quot;none&quot; rx=&quot;24.2437&quot; ry=&quot;24.7487&quot; stroke=&quot;black&quot;&gt;&lt;/ellipse&gt; &lt;text font-family=&quot;Times Roman,serif&quot; font-size=&quot;14.00&quot; text-anchor=&quot;middle&quot; x=&quot;147&quot; y=&quot;-51.7695&quot;&gt;Z6&lt;/text&gt; &lt;/g&gt; &lt;!-- 1&amp;#45;&amp;gt;3 --&gt; &lt;g class=&quot;edge&quot; id=&quot;edge6&quot;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;path d=&quot;M62.0859,-55.3695C77.6104,-55.3695 96.4405,-55.3695 112.42,-55.3695&quot; fill=&quot;none&quot; stroke=&quot;black&quot;&gt;&lt;/path&gt; &lt;polygon fill=&quot;black&quot; points=&quot;112.446,-58.8696 122.446,-55.3695 112.446,-51.8696 112.446,-58.8696&quot; stroke=&quot;black&quot;&gt;&lt;/polygon&gt; &lt;text font-family=&quot;Times Roman,serif&quot; font-size=&quot;14.00&quot; text-anchor=&quot;middle&quot; x=&quot;92&quot; y=&quot;-60.7695&quot;&gt;1/3&lt;/text&gt; &lt;/g&gt; &lt;!-- 4 --&gt; &lt;g class=&quot;node&quot; id=&quot;node4&quot;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;ellipse cx=&quot;257&quot; cy=&quot;-55.3695&quot; fill=&quot;none&quot; rx=&quot;24.2437&quot; ry=&quot;24.7487&quot; stroke=&quot;black&quot;&gt;&lt;/ellipse&gt; &lt;text font-family=&quot;Times Roman,serif&quot; font-size=&quot;14.00&quot; text-anchor=&quot;middle&quot; x=&quot;257&quot; y=&quot;-51.7695&quot;&gt;Z3&lt;/text&gt; &lt;/g&gt; &lt;!-- 1&amp;#45;&amp;gt;4 --&gt; &lt;g class=&quot;edge&quot; id=&quot;edge8&quot;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;path d=&quot;M56.1471,-36.618C73.6197,-24.8032 97.9934,-10.638 122,-4.3695 143.501,1.2448 150.584,1.56235 172,-4.3695 192.99,-10.1835 214.001,-22.714 229.882,-33.8989&quot; fill=&quot;none&quot; stroke=&quot;black&quot;&gt;&lt;/path&gt; &lt;polygon fill=&quot;black&quot; points=&quot;228.002,-36.8597 238.145,-39.9231 232.126,-31.2035 228.002,-36.8597&quot; stroke=&quot;black&quot;&gt;&lt;/polygon&gt; &lt;text font-family=&quot;Times Roman,serif&quot; font-size=&quot;14.00&quot; text-anchor=&quot;middle&quot; x=&quot;147&quot; y=&quot;-9.7695&quot;&gt;1/3&lt;/text&gt; &lt;/g&gt; &lt;!-- 2&amp;#45;&amp;gt;2 --&gt; &lt;g class=&quot;edge&quot; id=&quot;edge10&quot;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;path d=&quot;M137.122,-179.41C135.903,-190.011 139.195,-199.37 147,-199.37 152.122,-199.37 155.3,-195.339 156.536,-189.572&quot; fill=&quot;none&quot; stroke=&quot;black&quot;&gt;&lt;/path&gt; &lt;polygon fill=&quot;black&quot; points=&quot;160.039,-189.522 156.878,-179.41 153.043,-189.286 160.039,-189.522&quot; stroke=&quot;black&quot;&gt;&lt;/polygon&gt; &lt;text font-family=&quot;Times Roman,serif&quot; font-size=&quot;14.00&quot; text-anchor=&quot;middle&quot; x=&quot;147&quot; y=&quot;-204.77&quot;&gt;1/3&lt;/text&gt; &lt;/g&gt; &lt;!-- 2&amp;#45;&amp;gt;4 --&gt; &lt;g class=&quot;edge&quot; id=&quot;edge12&quot;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;path d=&quot;M165.164,-140.526C183.345,-123.668 211.464,-97.5939 231.798,-78.7383&quot; fill=&quot;none&quot; stroke=&quot;black&quot;&gt;&lt;/path&gt; &lt;polygon fill=&quot;black&quot; points=&quot;234.221,-81.2652 239.174,-71.8993 229.461,-76.1323 234.221,-81.2652&quot; stroke=&quot;black&quot;&gt;&lt;/polygon&gt; &lt;text font-family=&quot;Times Roman,serif&quot; font-size=&quot;14.00&quot; text-anchor=&quot;middle&quot; x=&quot;202&quot; y=&quot;-120.77&quot;&gt;2/3&lt;/text&gt; &lt;/g&gt; &lt;!-- 3&amp;#45;&amp;gt;3 --&gt; &lt;g class=&quot;edge&quot; id=&quot;edge14&quot;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;path d=&quot;M137.122,-77.4098C135.903,-88.0111 139.195,-97.3695 147,-97.3695 152.122,-97.3695 155.3,-93.3392 156.536,-87.5722&quot; fill=&quot;none&quot; stroke=&quot;black&quot;&gt;&lt;/path&gt; &lt;polygon fill=&quot;black&quot; points=&quot;160.039,-87.5219 156.878,-77.4098 153.043,-87.2864 160.039,-87.5219&quot; stroke=&quot;black&quot;&gt;&lt;/polygon&gt; &lt;text font-family=&quot;Times Roman,serif&quot; font-size=&quot;14.00&quot; text-anchor=&quot;middle&quot; x=&quot;147&quot; y=&quot;-102.77&quot;&gt;1/2&lt;/text&gt; &lt;/g&gt; &lt;!-- 3&amp;#45;&amp;gt;4 --&gt; &lt;g class=&quot;edge&quot; id=&quot;edge16&quot;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;path d=&quot;M171.686,-55.3695C186.547,-55.3695 205.702,-55.3695 222.095,-55.3695&quot; fill=&quot;none&quot; stroke=&quot;black&quot;&gt;&lt;/path&gt; &lt;polygon fill=&quot;black&quot; points=&quot;222.396,-58.8696 232.396,-55.3695 222.396,-51.8696 222.396,-58.8696&quot; stroke=&quot;black&quot;&gt;&lt;/polygon&gt; &lt;text font-family=&quot;Times Roman,serif&quot; font-size=&quot;14.00&quot; text-anchor=&quot;middle&quot; x=&quot;202&quot; y=&quot;-60.7695&quot;&gt;1/2&lt;/text&gt; &lt;/g&gt; &lt;!-- 4&amp;#45;&amp;gt;4 --&gt; &lt;g class=&quot;edge&quot; id=&quot;edge18&quot;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;path d=&quot;M247.122,-77.4098C245.903,-88.0111 249.195,-97.3695 257,-97.3695 262.122,-97.3695 265.3,-93.3392 266.536,-87.5722&quot; fill=&quot;none&quot; stroke=&quot;black&quot;&gt;&lt;/path&gt; &lt;polygon fill=&quot;black&quot; points=&quot;270.039,-87.5219 266.878,-77.4098 263.043,-87.2864 270.039,-87.5219&quot; stroke=&quot;black&quot;&gt;&lt;/polygon&gt; &lt;text font-family=&quot;Times Roman,serif&quot; font-size=&quot;14.00&quot; text-anchor=&quot;middle&quot; x=&quot;257&quot; y=&quot;-102.77&quot;&gt;1&lt;/text&gt; &lt;/g&gt; &lt;/g&gt; &lt;/svg&gt;&lt;/div&gt;

&lt;p&gt;One can think that moving to smaller and smaller subgroups will be faster than the standard algorithm which always works on &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mn&gt;18&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt;. However, it turns out that the markov chain of the standard algorithm is exactly the same. The point being that while it is true that working over &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mn&gt;9&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt; or &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mn&gt;6&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt; provides less possibilities of samples (3 and 2 respectively, instead of 6 for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mn&gt;18&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt;) the repartition of &quot;good&quot; and &quot;bad&quot; samples is the same and thus we get the same transition probabilities. I guess it would be possible to formalize this for a general cyclic group. The general abelian case seems more difficult, but I&apos;m sure that the same phenomenon can be observed.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Thoughts on the Dihedral Hidden Subgroup Problem (part 3)</title>
   <link href="https://frederic-wang.fr//2010/07/05/thoughts-on-the-dihedral-hidden-subgroup-problem-part-3/"/>
   <updated>2010-07-05T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2010/07/05/thoughts-on-the-dihedral-hidden-subgroup-problem-part-3</id>
   <content type="html">
&lt;p&gt;Back to the DHSP again (see &lt;a href=&quot;?post/2010/06/16/Thoughts-on-the-Dihedral-Hidden-Subgroup-Problem&quot;&gt;part 1&lt;/a&gt; and &lt;a href=&quot;?post/2010/06/20/Thoughts-on-the-Dihedral-Hidden-Subgroup-Problem-%28part-2%29&quot;&gt;part 2&lt;/a&gt; in previous blog posts)... This time, I&apos;ve tried to approximate the value of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;/math&gt; rather than finding its parity. For convenience, we assume &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/math&gt; to be even and define &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mfrac&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/mfrac&gt; &lt;/math&gt;. We consider for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/math&gt; the sets of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/math&gt; successive values&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msubsup&gt; &lt;mi&gt;F&lt;/mi&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;/msubsup&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mo stretchy=&quot;false&quot;&gt;{&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;mo stretchy=&quot;false&quot;&gt;}&lt;/mo&gt; &lt;/math&gt;&lt;/p&gt;

&lt;p&gt;We suppose that we can efficiently create uniform superposition over these states. As in &lt;a href=&quot;?post/2010/06/20/Thoughts-on-the-Dihedral-Hidden-Subgroup-Problem-%28part-2%29&quot;&gt;part 2&lt;/a&gt;, we have &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msubsup&gt; &lt;mi&gt;F&lt;/mi&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;F&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;/mrow&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;F&lt;/mi&gt; &lt;mi&gt;s&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;/math&gt; with &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;mi&gt;s&lt;/mi&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/math&gt; and we measure the tensor product of the uniform superpositions over &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msubsup&gt; &lt;mi&gt;F&lt;/mi&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;F&lt;/mi&gt; &lt;mi&gt;s&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msubsup&gt; &lt;mi&gt;F&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;/math&gt; in the basis &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt;, &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mrow&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mi&gt;&amp;lt;&lt;/mi&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt;, &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mrow&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mi&gt;&amp;lt;&lt;/mi&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt;. We define &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;l&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;msubsup&gt; &lt;mi&gt;F&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo&gt;∩&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;F&lt;/mi&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt; the number of common elements.&lt;/p&gt;

&lt;div&gt;&lt;svg height=&quot;204&quot; width=&quot;411&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt; &lt;defs&gt; &lt;marker id=&quot;Arrow1Mstart_&quot; orient=&quot;auto&quot; refx=&quot;0.0&quot; refy=&quot;0.0&quot; style=&quot;overflow:visible;fill:inherit;stroke:inherit&quot;&gt; &lt;path d=&quot;M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z &quot; style=&quot;fill-rule:evenodd;stroke-width:1.0pt;marker-start:none&quot; transform=&quot;scale(0.4) translate(10,0)&quot;&gt;&lt;/path&gt; &lt;/marker&gt; &lt;marker id=&quot;Arrow1Mend_&quot; orient=&quot;auto&quot; refx=&quot;0.0&quot; refy=&quot;0.0&quot; style=&quot;overflow:visible;fill:inherit;stroke:inherit&quot;&gt; &lt;path d=&quot;M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z &quot; style=&quot;fill-rule:evenodd;stroke-width:1.0pt;marker-start:none;&quot; transform=&quot;scale(0.4) rotate(180) translate(10,0)&quot;&gt;&lt;/path&gt; &lt;/marker&gt; &lt;/defs&gt; &lt;g transform=&quot;translate(-22,-30) &quot;&gt; &lt;g transform=&quot;translate(24,34) &quot;&gt; &lt;switch&gt; &lt;foreignobject height=&quot;50px&quot; requiredextensions=&quot;http://www.w3.org/1998/Math/MathML&quot; width=&quot;100px&quot;&gt; &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/foreignobject&gt; &lt;text&gt;f(0,0)&lt;/text&gt; &lt;/switch&gt; &lt;/g&gt; &lt;g transform=&quot;translate(177,34) &quot;&gt; &lt;switch&gt; &lt;foreignobject height=&quot;50px&quot; requiredextensions=&quot;http://www.w3.org/1998/Math/MathML&quot; width=&quot;100px&quot;&gt; &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/foreignobject&gt; &lt;text&gt;f(0,0)&lt;/text&gt; &lt;/switch&gt; &lt;/g&gt; &lt;g transform=&quot;translate(341,34) &quot;&gt; &lt;switch&gt; &lt;foreignobject height=&quot;50px&quot; requiredextensions=&quot;http://www.w3.org/1998/Math/MathML&quot; width=&quot;100px&quot;&gt; &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/foreignobject&gt; &lt;text&gt;f(0,0)&lt;/text&gt; &lt;/switch&gt; &lt;/g&gt; &lt;g&gt; &lt;line style=&quot;stroke: black; stroke-opacity: 1; stroke-width: 1; &quot; transform=&quot;translate(0,1.5) &quot; x1=&quot;36&quot; x2=&quot;369&quot; y1=&quot;70&quot; y2=&quot;70&quot;&gt;&lt;/line&gt; &lt;line style=&quot;stroke: black; stroke-opacity: 1; stroke-width: 1; &quot; transform=&quot;translate(-15) &quot; x1=&quot;217&quot; x2=&quot;217&quot; y1=&quot;58&quot; y2=&quot;84&quot;&gt;&lt;/line&gt; &lt;/g&gt; &lt;g&gt; &lt;path d=&quot;M 32,94 C 38,116 25,109 80,104 C 135,99 117,129 120,129 C 123,129 113,106 138,103 C 163,100 204,112 198,91 &quot; style=&quot;stroke: black; stroke-opacity: 1; stroke-width: 1; fill:none&quot; transform=&quot;translate(3,-1) &quot;&gt;&lt;/path&gt; &lt;g transform=&quot;translate(113,125) &quot;&gt; &lt;switch&gt; &lt;foreignobject height=&quot;50px&quot; requiredextensions=&quot;http://www.w3.org/1998/Math/MathML&quot; width=&quot;100px&quot;&gt; &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msubsup&gt; &lt;mi&gt;F&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;/math&gt;&lt;/foreignobject&gt; &lt;text&gt;F_0^0&lt;/text&gt; &lt;/switch&gt; &lt;/g&gt; &lt;/g&gt; &lt;g transform=&quot;translate(119,1) &quot;&gt; &lt;path d=&quot;M 32,94 C 38,116 25,109 80,104 C 135,99 117,129 120,129 C 123,129 113,106 138,103 C 163,100 204,112 198,91 &quot; style=&quot;stroke: black; stroke-opacity: 1; stroke-width: 1; fill:none&quot; transform=&quot;translate(3,-1) &quot;&gt;&lt;/path&gt; &lt;g transform=&quot;translate(113,125) &quot;&gt; &lt;switch&gt; &lt;foreignobject height=&quot;50px&quot; requiredextensions=&quot;http://www.w3.org/1998/Math/MathML&quot; width=&quot;100px&quot;&gt; &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msubsup&gt; &lt;mi&gt;F&lt;/mi&gt; &lt;mi&gt;s&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;/math&gt;&lt;/foreignobject&gt; &lt;text&gt;F_s^0&lt;/text&gt; &lt;/switch&gt; &lt;/g&gt; &lt;/g&gt; &lt;g&gt; &lt;g transform=&quot;translate(84.5,169) &quot;&gt; &lt;switch&gt; &lt;foreignobject height=&quot;50px&quot; requiredextensions=&quot;http://www.w3.org/1998/Math/MathML&quot; width=&quot;100px&quot;&gt; &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;s&lt;/mi&gt; &lt;/math&gt;&lt;/foreignobject&gt; &lt;text&gt;s&lt;/text&gt; &lt;/switch&gt; &lt;/g&gt; &lt;line marker-end=&quot;url(#Arrow1Mend_)&quot; style=&quot;stroke: black; stroke-opacity: 1; stroke-width: 1; fill:none&quot; transform=&quot;translate(-4,108) &quot; x1=&quot;36&quot; x2=&quot;151&quot; y1=&quot;62&quot; y2=&quot;62&quot;&gt;&lt;/line&gt; &lt;/g&gt; &lt;g&gt; &lt;g transform=&quot;translate(171.5,171) &quot;&gt; &lt;switch&gt; &lt;foreignobject height=&quot;50px&quot; requiredextensions=&quot;http://www.w3.org/1998/Math/MathML&quot; width=&quot;100px&quot;&gt; &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;l&lt;/mi&gt; &lt;/math&gt;&lt;/foreignobject&gt; &lt;text&gt;l&lt;/text&gt; &lt;/switch&gt; &lt;/g&gt; &lt;line marker-end=&quot;url(#Arrow1Mend_)&quot; marker-start=&quot;url(#Arrow1Mstart_)&quot; style=&quot;stroke: black; stroke-opacity: 1; stroke-width: 1; fill:none&quot; transform=&quot;translate(1) &quot; x1=&quot;150&quot; x2=&quot;198&quot; y1=&quot;170&quot; y2=&quot;170&quot;&gt;&lt;/line&gt; &lt;/g&gt; &lt;g&gt; &lt;g transform=&quot;translate(109.5,208) &quot;&gt; &lt;switch&gt; &lt;foreignobject height=&quot;50px&quot; requiredextensions=&quot;http://www.w3.org/1998/Math/MathML&quot; width=&quot;100px&quot;&gt; &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/math&gt;&lt;/foreignobject&gt; &lt;text&gt;N&apos;&lt;/text&gt; &lt;/switch&gt; &lt;/g&gt; &lt;line marker-end=&quot;url(#Arrow1Mend_)&quot; marker-start=&quot;url(#Arrow1Mstart_)&quot; style=&quot;stroke: black; stroke-opacity: 1; stroke-width: 1; fill:none&quot; x1=&quot;30&quot; x2=&quot;200&quot; y1=&quot;206&quot; y2=&quot;206&quot;&gt;&lt;/line&gt; &lt;/g&gt; &lt;g transform=&quot;translate(300,155)&quot;&gt; &lt;switch&gt; &lt;foreignobject height=&quot;50px&quot; requiredextensions=&quot;http://www.w3.org/1998/Math/MathML&quot; width=&quot;100px&quot;&gt; &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo&gt;≤&lt;/mo&gt; &lt;mi&gt;s&lt;/mi&gt; &lt;mo&gt;≤&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/foreignobject&gt; &lt;text&gt;0 ≤ s ≤ N&apos;&lt;/text&gt; &lt;/switch&gt; &lt;/g&gt; &lt;/g&gt; &lt;/svg&gt;&lt;/div&gt;

&lt;p&gt;The figure above shows that in the case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo&gt;≤&lt;/mo&gt; &lt;mi&gt;s&lt;/mi&gt; &lt;mo&gt;≤&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;, we have &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;l&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mi&gt;s&lt;/mi&gt; &lt;/math&gt;. In general, the expression is&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;l&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mi&gt;s&lt;/mi&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/p&gt;

&lt;p&gt;Using an analysis similar to the one &lt;a href=&quot;?post/2010/06/20/Thoughts-on-the-Dihedral-Hidden-Subgroup-Problem-%28part-2%29&quot;&gt;part 2&lt;/a&gt;, we get the probability to measure an element in &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mrow&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mi&gt;&amp;lt;&lt;/mi&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt;:&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;P&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/mfrac&gt; &lt;mrow&gt; &lt;mo&gt;[&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;msup&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mfrac&gt; &lt;mi&gt;l&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/mfrac&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msup&gt; &lt;mo&gt;]&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/p&gt;

&lt;p&gt;Repeating the measurements, we can approximate &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;P&lt;/mi&gt; &lt;/math&gt;, and consequently &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;l&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;s&lt;/mi&gt; &lt;/math&gt; and finally &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;/math&gt;. We can also play with the value &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;a&lt;/mi&gt; &lt;/math&gt;, to improve the approximation. Unfortunately, using a number of repetitions polynomial in &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;log&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/math&gt;, it does not seem possible to bound the error better than &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;O&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;. It seems however that it is still a better result than the one that I obtained with the standard Coset Sampling method. Hence it is another hint of the fact that using a superposition over several oracles values would yield improvement.&lt;/p&gt;

&lt;p&gt;I&apos;m still wondering how to create efficiently an uniform superposition over several oracle values. One thing I&apos;ve read in many papers, is given a superposition over elements &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;, &lt;em&gt;erase&lt;/em&gt; or &lt;em&gt;uncompute&lt;/em&gt; the first register to get a superposition over elements &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;. However, I&apos;m not sure what are the requirements to apply such an operation. If it could work for the algorithm of &lt;a href=&quot;?post/2010/06/20/Thoughts-on-the-Dihedral-Hidden-Subgroup-Problem-%28part-2%29&quot;&gt;part 2&lt;/a&gt;, then this would solve the case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msup&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;n&lt;/mi&gt; &lt;/msup&gt; &lt;/math&gt;.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Thoughts on the Dihedral Hidden Subgroup Problem (part 2)</title>
   <link href="https://frederic-wang.fr//2010/06/20/thoughts-on-the-dihedral-hidden-subgroup-problem-part-2/"/>
   <updated>2010-06-20T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2010/06/20/thoughts-on-the-dihedral-hidden-subgroup-problem-part-2</id>
   <content type="html">
&lt;p&gt;In a &lt;a href=&quot;/thoughts-on-the-dihedral-hidden-subgroup-problem.html&quot;&gt;previous post&lt;/a&gt;, I&apos;ve proposed a way to solve the Dihedral Hidden Subgroup Problem using a superposition of oracle evaluations. However, it seems to require a way to inverse the functions &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo&gt;↦&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mo&gt;.&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt; which is a bit cheating since we do not have this feature for the classical problem. In this post, we will consider the case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mfrac&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;/mfrac&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/math&gt;, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mrow&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;/math&gt; and try to determine the parity &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;/math&gt; of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;/math&gt;. If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/math&gt; is a power of two, this is enough to find &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;/math&gt; recursively. As in the previous post, the main idea is to consider the superpositions&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;ψ&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/p&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;ϕ&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/p&gt;

&lt;p&gt;Using the equality &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; we can rewrite the latter state&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;ϕ&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/p&gt;

&lt;p&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/math&gt;, the latter state is the same superposition as the former state, over &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; values of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt;. Otherwise, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/math&gt; and the latter state is the superposition over the &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; other values of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt;. We let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msubsup&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;/msubsup&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; and measure the product state &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;ψ&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;ϕ&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; in the basis &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt;, &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mi&gt;&amp;lt;&lt;/mi&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt;, &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mi&gt;&amp;lt;&lt;/mi&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt; . It turns out that this allows to distinguish the two cases:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/math&gt;, the product contains vectors with the same coordinates &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt; for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/math&gt;. For the other vectors, we have a symmetry between the two coordinates. Hence we can group them by pairs &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt; for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt;. Finally, the product state belongs to the space spanned by &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt; and &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mi&gt;&amp;lt;&lt;/mi&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt;.&lt;/li&gt;
	&lt;li&gt;If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/math&gt;, the product contains vectors &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt; where the two coordinates are not equal. We never have two symmetric vectors i.e. which are the same after permutating the two coordinates. Moreover, each vector &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;msubsup&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msubsup&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt; is the expression of a sum/difference (according to the respective order of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msubsup&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msubsup&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msubsup&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msubsup&gt; &lt;/math&gt;) of two vectors &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;. So the product state belongs half to &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mi&gt;&amp;lt;&lt;/mi&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt; and half to &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mi&gt;&amp;lt;&lt;/mi&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Suppose that we have a procedure to create many states &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;ψ&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;ϕ&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;. We measure a state in the space &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mi&gt;&amp;lt;&lt;/mi&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt; with probability &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mfrac&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/mfrac&gt; &lt;/math&gt;. So repeating the procedure a constant number of times allow to determine &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;/math&gt; with high probability.&lt;/p&gt;

&lt;p&gt;The only gap in the previous algorithm is whether we can create the states &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;ψ&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;ϕ&lt;/mi&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;. As in the &lt;a href=&quot;/thoughts-on-the-dihedral-hidden-subgroup-problem.html&quot;&gt;previous post&lt;/a&gt;, this is possible if the gates &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;V&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mo&gt;.&lt;/mo&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt; are available. Otherwise, we can create a superposition of states over &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt; and use the gate &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;U&lt;/mi&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; as well as a Quantum Fourier Transform to randomize the first coordinate. We get two random numbers &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/math&gt; and the states&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;ψ&lt;/mi&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;ⅇ&lt;/mi&gt; &lt;mfrac&gt; &lt;mrow&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;ⅈ&lt;/mi&gt; &lt;mi&gt;π&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/mfrac&gt; &lt;/msup&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/p&gt;

&lt;p&gt;and&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;ϕ&lt;/mi&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mfrac&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;ⅇ&lt;/mi&gt; &lt;mfrac&gt; &lt;mrow&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;ⅈ&lt;/mi&gt; &lt;mi&gt;π&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mrow&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/mfrac&gt; &lt;/msup&gt; &lt;/mrow&gt; &lt;msqrt&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;ⅇ&lt;/mi&gt; &lt;mfrac&gt; &lt;mrow&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;ⅈ&lt;/mi&gt; &lt;mi&gt;π&lt;/mi&gt; &lt;msub&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/mfrac&gt; &lt;/msup&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/p&gt;

&lt;p&gt;Next, we can apply the same measurement as above. After a bit of calculation,we get the probabilities:&lt;/p&gt;

&lt;table border=&quot;1&quot; style=&quot;width: 100%&quot;&gt;
	&lt;colgroup&gt;
		&lt;col /&gt;
		&lt;col /&gt;
		&lt;col /&gt;
	&lt;/colgroup&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;th&gt;Space&lt;/th&gt;
			&lt;th&gt;case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/math&gt;&lt;/th&gt;
			&lt;th&gt;case &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/math&gt;&lt;/th&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt;&lt;/td&gt;
			&lt;td&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;/mfrac&gt; &lt;/math&gt;&lt;/td&gt;
			&lt;td&gt;0&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mi&gt;&amp;lt;&lt;/mi&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt;&lt;/td&gt;
			&lt;td&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mfrac&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msup&gt; &lt;/mrow&gt; &lt;/mfrac&gt; &lt;mrow&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;cos&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msup&gt; &lt;mrow&gt; &lt;mfrac&gt; &lt;mi&gt;π&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/mfrac&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/td&gt;
			&lt;td&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/mfrac&gt; &lt;/math&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mi&gt;&amp;lt;&lt;/mi&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt;&lt;/td&gt;
			&lt;td&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mfrac&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msup&gt; &lt;/mrow&gt; &lt;/mfrac&gt; &lt;mrow&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;sin&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msup&gt; &lt;mrow&gt; &lt;mfrac&gt; &lt;mi&gt;π&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/mfrac&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/td&gt;
			&lt;td&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/mfrac&gt; &lt;/math&gt;&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;If we repeat the procedure several times, we need to take the means over the choice of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/math&gt;. Using some &lt;a href=&quot;http://en.wikipedia.org/wiki/List_of_trigonometric_identities#Power-reduction_formulas&quot;&gt;trigonometric identities&lt;/a&gt;, it is possible to write the sums of the first column &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/mfrac&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;S&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;o&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;/mfrac&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt; where &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;S&lt;/mi&gt; &lt;/math&gt; is a sum of cosinus. Unfortunately, evaluating &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;S&lt;/mi&gt; &lt;/math&gt; with a computer suggests that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;S&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;Θ&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;/mfrac&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt; . Hence, we can not distinguish the two cases with only a polynomial (in &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;log&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/math&gt;) number of samplings.&lt;/p&gt;

&lt;p&gt;It is still open whether we can find a variation to make such an algorithm efficient...&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Thoughts on the Dihedral Hidden Subgroup Problem</title>
   <link href="https://frederic-wang.fr//2010/06/16/thoughts-on-the-dihedral-hidden-subgroup-problem/"/>
   <updated>2010-06-16T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2010/06/16/thoughts-on-the-dihedral-hidden-subgroup-problem</id>
   <content type="html">
&lt;p&gt;This morning, I&apos;ve been thinking again about a way to solve the &lt;a href=&quot;http://en.wikipedia.org/wiki/Hidden_subgroup_problem&quot;&gt;Hidden Subgroup Problem&lt;/a&gt; for the &lt;a href=&quot;http://en.wikipedia.org/wiki/Dihedral_group&quot;&gt;dihedral group&lt;/a&gt; &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;D&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;msub&gt; &lt;mo&gt;⋊&lt;/mo&gt; &lt;mi&gt;φ&lt;/mi&gt; &lt;/msub&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;/math&gt; (where &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;φ&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; is the inversion of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt;). It is well-known that there exists a reduction to the case where the hidden subgroup is &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;⟨&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; for some &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/math&gt;. In that case, if we fix &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;{&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;}&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;, the elements &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/math&gt; form a complete set of coset representatives, so &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;/math&gt; is one-to-one over &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;mo&gt;×&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;{&lt;/mo&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;mo&gt;}&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;. Thus, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo&gt;↦&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt; is a &lt;em&gt;permutation&lt;/em&gt; of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt;, a property that will be used below to construct a unitary transform.&lt;/p&gt;

&lt;p&gt;First let&apos;s recall the classical inductive method to determine &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;/math&gt;. If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;/math&gt; is a divisor of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/math&gt;, let &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mfrac&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;/mfrac&gt; &lt;/math&gt; and write the euclidean division &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;r&lt;/mi&gt; &lt;/math&gt;. If we are able to determine &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;r&lt;/mi&gt; &lt;/math&gt; in polynomial time, then we can define the oracle &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;r&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;y&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;ℤ&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;/math&gt; and obtain a dihedral HSP with hidden subgroup &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo&gt;⟨&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;. Since the prime factorization has only &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;O&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;log&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt; factors, we can repeat this inductive step to get an efficient algorithm. Of course, this is likely to be useful only when the factors are small for otherwise it may be as much difficult to determine &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;r&lt;/mi&gt; &lt;/math&gt; as to determine the whole &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;/math&gt;. One interesting case is &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msup&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;n&lt;/mi&gt; &lt;/msup&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/math&gt;: at each step, &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/math&gt; remains a power of 2 and we determine the parity of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;/math&gt;.&lt;/p&gt;

&lt;p&gt;For &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo&gt;≤&lt;/mo&gt; &lt;mi&gt;l&lt;/mi&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;/math&gt;, we consider the &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/math&gt;-dimensional subspace spanned by the vectors &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;l&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;m&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo&gt;≤&lt;/mo&gt; &lt;mi&gt;m&lt;/mi&gt; &lt;mo&gt;&amp;lt;&lt;/mo&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/math&gt;. Since these &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;/math&gt; subspaces are orthogonal, we can construct a unitary transform by applying a Quantum Fourier Transform &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;F&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt; on each subspace separately. Finally, we apply the permutation mentionned at the beginning for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/math&gt;. We get a unitary transform &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;W&lt;/mi&gt; &lt;/math&gt; below where &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;k&lt;/mi&gt; &lt;/math&gt; is the euclidean division of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;/math&gt; by &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;/math&gt;:&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mo&gt;∀&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;Z&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;W&lt;/mi&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;msup&gt; &lt;mi&gt;ⅇ&lt;/mi&gt; &lt;mrow&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;ⅈ&lt;/mi&gt; &lt;mi&gt;π&lt;/mi&gt; &lt;mfrac&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/mfrac&gt; &lt;/mrow&gt; &lt;/msup&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mi&gt;j&lt;/mi&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;k&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/p&gt;

&lt;p&gt;Now, let&apos;s consider the superposition (again, we see that it is well-defined by considering the permutation mentionned at the beginning for &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/math&gt;):&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/p&gt;

&lt;p&gt;The state can be rewritten, using the fact that &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;/math&gt; is constant on &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;⟨&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;:&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mtable columnalign=&quot;right left right left right left right left right left&quot; columnspacing=&quot;0em&quot;&gt; &lt;mtr&gt; &lt;mtd&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;mrow&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mtd&gt; &lt;mtd&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;mrow&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mtd&gt; &lt;/mtr&gt; &lt;mtr&gt; &lt;mtd&gt; &lt;/mtd&gt; &lt;mtd&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;mrow&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mtd&gt; &lt;/mtr&gt; &lt;mtr&gt; &lt;mtd&gt; &lt;/mtd&gt; &lt;mtd&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;mrow&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mi&gt;r&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mtd&gt; &lt;/mtr&gt; &lt;mtr&gt; &lt;mtd&gt; &lt;/mtd&gt; &lt;mtd&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;mrow&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;mo lspace=&quot;verythinmathspace&quot; rspace=&quot;0em&quot;&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mi&gt;r&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mtd&gt; &lt;/mtr&gt; &lt;mtr&gt; &lt;mtd&gt; &lt;/mtd&gt; &lt;mtd&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;msqrt&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;/msqrt&gt; &lt;/mfrac&gt; &lt;mrow&gt; &lt;munderover&gt; &lt;mo lspace=&quot;thinmathspace&quot; rspace=&quot;thinmathspace&quot;&gt;∑&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;′&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/munderover&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mrow&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mi&gt;i&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mi&gt;r&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/mtd&gt; &lt;/mtr&gt; &lt;/mtable&gt; &lt;/mrow&gt; &lt;/math&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Applying &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msup&gt; &lt;mi&gt;W&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/msup&gt; &lt;/math&gt; to this state gives &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mi&gt;r&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;&amp;nbsp;&lt;/mo&gt; &lt;mi&gt;mod&lt;/mi&gt; &lt;mo&gt;&amp;nbsp;&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; and so the value of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;r&lt;/mi&gt; &lt;/math&gt; by a measurement in the standard basis.&lt;/p&gt;

&lt;p&gt;Two questions remain: can we implement &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;W&lt;/mi&gt; &lt;/math&gt; and create the state &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;Ψ&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; efficiently? If &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msup&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;n&lt;/mi&gt; &lt;/msup&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/math&gt;, there are many simplifications because we are working with qubits. In that case, it is easy to see that the answer to the previous questions is affirmative if we have gates &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;V&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;x&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt; implementing the permutation mentioned at the beginning. However, it is not clear how to build &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;V&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;b&lt;/mi&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;/math&gt; from the gate &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;U&lt;/mi&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; generally given in the classical presentation of the problem...&lt;/p&gt;

&lt;p&gt;update: OK, there is also the trivial solution &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;M&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;&apos;&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/math&gt;where the algorithm above is just computing &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;msubsup&gt; &lt;mi&gt;V&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;/mrow&gt; &lt;mrow&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/msubsup&gt; &lt;msub&gt; &lt;mi&gt;V&lt;/mi&gt; &lt;mrow&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/mrow&gt; &lt;/msub&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mn&gt;0&lt;/mn&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;∣&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;−&lt;/mo&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;&amp;nbsp;&lt;/mo&gt; &lt;mi&gt;mod&lt;/mi&gt; &lt;mo&gt;&amp;nbsp;&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo stretchy=&quot;false&quot;&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;. However, I&apos;m still wondering if there is a way to modify the previous method to work with &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;U&lt;/mi&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt;.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Two contributions to the Hidden Subgroup Problem</title>
   <link href="https://frederic-wang.fr//2010/05/06/two-contributions-to-the-hidden-subgroup-problem/"/>
   <updated>2010-05-06T00:00:00+02:00</updated>
   <id>https://frederic-wang.fr//2010/05/06/two-contributions-to-the-hidden-subgroup-problem</id>
   <content type="html">
&lt;p&gt;Today, I have finished the preliminary version of my report on the &lt;a href=&quot;http://en.wikipedia.org/wiki/Hidden_subgroup_problem&quot;&gt;Hidden Subgroup Problem&lt;/a&gt; (HSP). For those who have never heard about it before, we are given a finite group &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;/math&gt;, a subgroup &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt; and a function &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo&gt;:&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;→&lt;/mo&gt; &lt;mi&gt;S&lt;/mi&gt; &lt;/mrow&gt; &lt;/math&gt;. This function is constant on each (left) coset of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt; but takes different values on distinct cosets. Said otherwise we have:&lt;/p&gt;

&lt;p&gt;&lt;math display=&quot;block&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mo&gt;∀&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo&gt;∈&lt;/mo&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mi&gt;f&lt;/mi&gt; &lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt; &lt;mo&gt;⇔&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;/msub&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;msub&gt; &lt;mi&gt;g&lt;/mi&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/msub&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt;The purpose is to identify the &quot;hidden&quot; subgroup &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;/math&gt; (for instance we can return a generating set) with a complexity polynomial in &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;log&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;. Although it may seem really abstract, this problem allows to describe various quantum algorithms exponentially faster than their known classical versions. This includes the famous &lt;a href=&quot;http://en.wikipedia.org/wiki/Shor%27s_algorithm&quot;&gt;Shor&apos;s algorithm&lt;/a&gt; for integer factorization, which can break the ubiquitous RSA cryptosystem. Shor&apos;s algorithm uses a solution to HSP over a cyclic group but we have quantum algorithms for the larger class of &lt;a href=&quot;http://en.wikipedia.org/wiki/Hamiltonian_group&quot;&gt;dedekindian groups&lt;/a&gt; as well as miscellaneous other groups. Unfortunately, these algorithms are not enough to solve HSP over the &lt;a href=&quot;http://en.wikipedia.org/wiki/Dihedral_group&quot;&gt;dihedral group&lt;/a&gt; or the &lt;a href=&quot;http://en.wikipedia.org/wiki/Symmetric_group&quot;&gt;symmetric group&lt;/a&gt;. These two cases are particularly interesting since the former could solve a &lt;a href=&quot;http://en.wikipedia.org/wiki/Lattice_problem&quot;&gt;lattice problem&lt;/a&gt; used in cryptography to establish security proofs while a solution to the latter provides an efficient algorithm for the &lt;a href=&quot;http://en.wikipedia.org/wiki/Graph_isomorphism_problem&quot;&gt;graph isomorphism problem&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For the moment, I have essentially reviewed the major results on dedekindian, dihedral and symmetric groups. Even if there is not many new things for researchers working on that topic, I hope it could serve as an introduction to the subject and be a useful review of the state-of-the-art. In particular, I plan to complete the &lt;a href=&quot;http://www.cs.au.dk/~fwang/speciale/web/appendix_A.xhtml#appendix_A&quot;&gt;Table of Hidden Subgroup Problems&lt;/a&gt; which gives a good overview. There are at least two contributions I brought to the topic that I would like to discuss briefly in this blog post.&lt;/p&gt;

&lt;p&gt;First, &lt;a href=&quot;http://www.cs.au.dk/~fwang/speciale/web/dihedral_and_symmetric.xhtml#id5.3.&quot;&gt;I have studied how Regev&apos;s algorithm works&lt;/a&gt;. As stated in his paper, we have a solution to the &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mtext&gt;poly&lt;/mtext&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mi&gt;log&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;-uniqueSVP if we can find a hidden subgroup &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;H&lt;/mi&gt; &lt;mo&gt;=&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;⟨&lt;/mo&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mi&gt;d&lt;/mi&gt; &lt;mo&gt;,&lt;/mo&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mo&gt;⟩&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt; in the dihedral group &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;D&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt; using &lt;em&gt;coset sampling on the whole group&lt;/em&gt;. This point is often overlooked in several papers, where the reader could understand that an arbitrary solution to the dihedral HSP works. Fortunately, Regev&apos;s algorithm is sufficiently close to the coset sampling procedure so that we can modify it to include some kinds of &lt;em&gt;recursive&lt;/em&gt; algorithm. With such a modification, a solution like Kuperberg&apos;s algorithm (where we apply coset sampling on subgroups of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;msub&gt; &lt;mi&gt;D&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/msub&gt; &lt;/math&gt;) becomes acceptable. Actually, we can also modify the algorithm to work with the &lt;a href=&quot;http://en.wikipedia.org/wiki/Dihedral_group#Generalized_dihedral_group&quot;&gt;generalized dihedral group&lt;/a&gt;. Another remark is about the degree of the approximation given by Regev&apos;s algorithm: I have shown that we have a solution to the &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;Θ&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;msup&gt; &lt;mi&gt;n&lt;/mi&gt; &lt;mrow&gt; &lt;mfrac&gt; &lt;mn&gt;1&lt;/mn&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;/mfrac&gt; &lt;mo&gt;+&lt;/mo&gt; &lt;mn&gt;2&lt;/mn&gt; &lt;mi&gt;D&lt;/mi&gt; &lt;/mrow&gt; &lt;/msup&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/math&gt;-uniqueSVP if the query complexity of the HSP algorithm used is &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;O&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;msup&gt; &lt;mrow&gt; &lt;mo&gt;(&lt;/mo&gt; &lt;mrow&gt; &lt;mi&gt;log&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/mrow&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;mi&gt;D&lt;/mi&gt; &lt;/msup&gt; &lt;mo&gt;)&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;, thus providing a more accurate statement.&lt;/p&gt;

&lt;p&gt;Recently, I have considered a &lt;a href=&quot;http://www.cs.au.dk/~fwang/speciale/web/appendix_G.xhtml#appendix_G&quot;&gt;general approach to the HSP&lt;/a&gt; using the classical description of finite group via &lt;a href=&quot;http://en.wikipedia.org/wiki/Composition_series#For_groups&quot;&gt;composition series&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/List_of_finite_simple_groups&quot;&gt;simple groups&lt;/a&gt;. The idea is that if &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/math&gt; is a non-trivial normal subgroup of &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;/math&gt; we can split the problems on two HSPs over &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mfrac bevelled=&quot;true&quot;&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/mfrac&gt; &lt;/math&gt; and &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mi&gt;N&lt;/mi&gt; &lt;/math&gt;. We can repeat the procedure until we reach simple groups. Because the length of a composition series is polynomial in &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt; &lt;mrow&gt; &lt;mi&gt;log&lt;/mi&gt; &lt;mrow&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;mi&gt;G&lt;/mi&gt; &lt;mo&gt;∣&lt;/mo&gt; &lt;/mrow&gt; &lt;/mrow&gt; &lt;/math&gt;, we get a solution to the general HSP under two conditions: we have algorithms for HSP over simple groups and we can build efficient oracles on the &quot;reduced&quot; groups. I&apos;ve succeeded to find an alternative algorithm for the abelian case based on that framework but for the dihedral/symmetric, it seems that the two previous assumptions are exactly what we are stuck on. However, it could still be useful to solve HSP over other groups.&lt;/p&gt;

&lt;p&gt;Now, my priority is to review the results we have for some semidirect products but I hope to have time to study various open issues such that HSP over simple groups, HSP-based algorithms etc&lt;/p&gt;

</content>
 </entry>
 

</feed>
