<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.4 20241031//EN" "JATS-journalpublishing1-4.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article" dtd-version="1.4" xml:lang="en">
  <front>
    <journal-meta>
      <journal-id journal-id-type="publisher-id">ajcm</journal-id>
      <journal-title-group>
        <journal-title>American Journal of Computational Mathematics</journal-title>
      </journal-title-group>
      <issn pub-type="epub">2161-1211</issn>
      <issn pub-type="ppub">2161-1203</issn>
      <publisher>
        <publisher-name>Scientific Research Publishing</publisher-name>
      </publisher>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.4236/ajcm.2026.162004</article-id>
      <article-id pub-id-type="publisher-id">ajcm-151255</article-id>
      <article-categories>
        <subj-group>
          <subject>Article</subject>
        </subj-group>
        <subj-group>
          <subject>Physics</subject>
          <subject>Mathematics</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>Triangular Number Matrix and Application in Cryptography: A Novel Pattern-Based Approach</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <contrib-id contrib-id-type="orcid">0009-0004-1680-1088</contrib-id>
          <name name-style="western">
            <surname>Nadirashvili</surname>
            <given-names>Nikoloz (Niko)</given-names>
          </name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
      </contrib-group>
      <aff id="aff1"><label>1</label> Independent Researcher, New York, USA </aff>
      <author-notes>
        <fn fn-type="conflict" id="fn-conflict">
          <p>The author reports no conflict of interest.</p>
        </fn>
      </author-notes>
      <pub-date pub-type="epub">
        <day>02</day>
        <month>06</month>
        <year>2026</year>
      </pub-date>
      <pub-date pub-type="collection">
        <month>06</month>
        <year>2026</year>
      </pub-date>
      <volume>16</volume>
      <issue>02</issue>
      <fpage>44</fpage>
      <lpage>79</lpage>
      <history>
        <date date-type="received">
          <day>18</day>
          <month>08</month>
          <year>2025</year>
        </date>
        <date date-type="accepted">
          <day>12</day>
          <month>05</month>
          <year>2026</year>
        </date>
        <date date-type="published">
          <day>15</day>
          <month>05</month>
          <year>2026</year>
        </date>
      </history>
      <permissions>
        <copyright-statement>© 2026 by the authors and Scientific Research Publishing Inc.</copyright-statement>
        <copyright-year>2026</copyright-year>
        <license license-type="open-access">
          <license-p> This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license ( <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link> ). </license-p>
        </license>
      </permissions>
      <self-uri content-type="doi" xlink:href="https://doi.org/10.4236/ajcm.2026.162004">https://doi.org/10.4236/ajcm.2026.162004</self-uri>
      <abstract>
        <p><bold>Purpose:</bold> The calculation of triangular numbers using the conventional formula <inline-formula><mml:math></mml:math></inline-formula></p>
        <p>T</p>
        <p>n</p>
        <p>=</p>
        <p>n(</p>
        <p>n+1</p>
        <p>)/2</p>
        <p>becomes computationally infeasible for astronomically large values of <italic>n</italic> (e.g., numbers with 10 trillion digits), due to limitations in modern computing systems. Existing methods struggle with the division and multiplication of extremely large integers, resulting in either failure or prohibitively slow processing times. This paper proposes a novel triangular number system that leverages mathematical patterns and constants to derive efficient computational shortcuts for determining high-digit triangular numbers. By circumventing the inefficiencies of traditional arithmetic operations, this approach aims to enable the rapid calculation of triangular numbers at scales previously deemed intractable. The proposed methodology synthesizes recursive pattern recognition and optimized calculation techniques to overcome the bottlenecks inherent in current computational frameworks. Experimental validation, benchmark comparisons, and theoretical analysis indicate that the system offers substantial advantages in handling ultra-large numbers, representing a significant advancement in computational number theory. The application of this pattern based analysis of triangular numbers has also been formulated and shown using TLV (Triangular layered verification) based cryptographic protocol.</p>
      </abstract>
      <kwd-group kwd-group-type="author-generated" xml:lang="en">
        <kwd>Triangular Numbers</kwd>
        <kwd>Repetitive Digits</kwd>
        <kwd>Multi-Base Number Systems</kwd>
        <kwd>Pattern Symmetry</kwd>
        <kwd>Pattern Assembly</kwd>
        <kwd>Large Integer Generation</kwd>
        <kwd>Catalog Based Verification</kwd>
        <kwd>Cryptographic Protocol</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec1">
      <title>1. Introduction</title>
      <p>Triangular numbers have long attracted mathematicians because they stand at a rare intersection of simplicity and structure. They arise from one of the most elementary constructions in arithmetic—the successive accumulation of natural numbers—yet they often reveal deeper regularities when examined through repetition, positional growth, and digit organization. In mathematics, such regularities are rarely mere visual curiosities. They often indicate that an object admits a shorter internal description than its standard formula first suggests.</p>
      <p>This paper studies triangular numbers generated from repdigits. A <italic>repdigit</italic> is a number whose digits are all identical in a fixed base, such as 777<sub>10</sub> or 1111<sub>2</sub>. Although repdigits are often treated as simple notational objects, their associated triangular numbers exhibit stable constants, repeating internal blocks, and scale-dependent selectors that can be organized into a reproducible construction system.</p>
      <p>Any <inline-formula><mml:math><mml:mrow><mml:msup><mml:mi> n </mml:mi><mml:mrow><mml:mtext> th </mml:mtext></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> triangular number can be written in the familiar form </p>
      <disp-formula id="FD1">
        <mml:math>
          <mml:mrow>
            <mml:msub>
              <mml:mi>T</mml:mi>
              <mml:mi>n</mml:mi>
            </mml:msub>
            <mml:mo>=</mml:mo>
            <mml:mfrac>
              <mml:mrow>
                <mml:mi>n</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:mi>n</mml:mi>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mn>2</mml:mn>
            </mml:mfrac>
            <mml:mo>,</mml:mo>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>and for ordinary values of <inline-formula><mml:math><mml:mi> n </mml:mi></mml:math></inline-formula> , direct evaluation is entirely natural. For extremely large values, however, the conventional route still depends on explicit large-integer arithmetic, especially multiplication and division, whose cost grows with the size of the representation [<xref ref-type="bibr" rid="B1">1</xref>]-[<xref ref-type="bibr" rid="B3">3</xref>]. This paper studies a different possibility: that for certain structured families of integers, the triangular number need not always be obtained by pushing the input through the full arithmetic pipeline, but may instead be assembled directly from stable internal rules already present in the number family itself.</p>
      <p>When repdigits are examined from this viewpoint, they reveal a framework of reusable constants, directional pattern blocks, and digital-root-based selection rules. In the families studied here, these are not isolated observations but parts of a constructive system for writing triangular numbers directly from patterned components. In that sense, the Triangular Number Matrix system developed in this paper is not merely a faster implementation of a known formula. It is a structured method for repdigit triangular-number generation in which long outputs can be recovered from compact internal rules.</p>
      <p>To provide an intuitive first view of the Triangular Number Matrix system, <xref ref-type="fig" rid="fig1">Figure 1</xref> shows a simplified example for repdigit 1. The figure highlights the synchronization between the vertical pattern, the pattern index, and the horizontal pattern as the repdigit length increases. The dark green rows mark the key cycle alignments: every ninth increase in the pattern index causes the vertical pattern to complete a full cycle and repeat, while the horizontal pattern expands by adding one more repeated block on each side. In the figure, the vertical constants are highlighted in bold red, while the horizontal pattern blocks are shown in purple on the left and brown on the right. The placement of the pattern index between the vertical and horizontal components makes this synchronization visually explicit, since it acts as the transition point linking the recycling of the vertical constants with the growth of the horizontal pattern structure. This introductory representation is deliberately simple and serves only as an entry point before the more detailed matrix constructions introduced later.</p>
      <p>The resulting shift may be summarized as <italic>assembly</italic><italic>versus</italic><italic>compute</italic>. Direct <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> formula methods evaluate the triangular number through explicit arithmetic on large integers. The Triangular Number Matrix system instead reduces the task to pattern selection, constant placement, scalable reduction, and structured writing. This distinction is not cosmetic. It changes the dominant workload from arithmetic growth to controlled construction. As the benchmark section later shows, this leads to substantial speedups over direct <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> formula implementations in the tested repdigit settings, while also motivating multiple generation modes tailored to different use cases, including transient in-memory generation, persistent large-catalog construction, and compact descriptor-based access.</p>
      <p>A second contribution of the paper is that these pattern rules are not confined to isolated base-10 examples. The analysis extends into multi-base settings, where the same underlying number may expose different structured representations across bases. As discussed later in the multi-base analysis, the patterned behavior identified for repdigit triangular numbers is not confined to base 10, but also reappears in other numeral systems. Accordingly, the evidence suggests that the structural principles developed here belong to a broader multi-base framework rather than to a single-base curiosity. In this view, repetitive digits are not trivial repetitions; they behave more like a hidden language whose constants, anchoring abilities, and pattern symmetries can be organized into a computational grammar. Some numbers, at least in these families, appear to prefer to be assembled rather than computed.</p>
      <p>The significance of this discovery is not only mathematical or computational. Modern cryptography has evolved into a broad discipline combining mathematics, computer science, and engineering to secure communication against increasingly diverse threats [<xref ref-type="bibr" rid="B4">4</xref>]-[<xref ref-type="bibr" rid="B6">6</xref>]. Within that landscape, this paper also explores a bridge from patterned triangular-number generation to a cryptographic protocol. Because the resulting triangular-number structures are dense, bounded, and selectively addressable, they admit catalog-oriented verification workflows that support the TLV (Triangular Layered Verification) protocol introduced later in the paper. The mathematics is therefore not presented here as an isolated numerical curiosity, but as the basis for a broader computational and cryptographic design space.</p>
      <p>The remainder of the paper develops this framework in stages. We first identify the constants and repeating structures that govern repdigit triangular numbers, then show how these rules support direct construction in the Triangular Number Matrix system, followed by benchmark comparisons against direct <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> formula implementations. We then extend the discussion to multi-base behavior and finally bridge the mathematical framework to TLV, where the same pattern-based ideas support a proof-of-concept cryptographic protocol for layered verification and rolling authentication state.</p>
      <p>The paper is organized into eight sections. Section 2 presents the methodology used to identify recurring patterns and constants in repdigits. Section 3 develops the repdigit triangular-number calculator based on these patterns and constants for direct construction of large triangular numbers. Section 4 presents benchmark comparisons between the proposed calculator and the Python libraries sympy and gmpy2. Section 5 extends the discussion to non-repeated digit triangular-number calculations in base 10 and to multi-base representations. Section 6 connects the mathematical framework to cryptography and outlines the advantages of the Triangular Number Matrix system in the context of current and emerging cybersecurity threats. Section 7 introduces the TLV (Triangular Layered Verification) system as a proof-of-concept authentication protocol. It defines the core protocol components, including committed catalogs, per-layer operation templates, bounded argument tags, and a session nonce that refreshes per-session rules without persisting them server-side, and situates TLV within the broader threat model developed in Section 6. Section 8 concludes the paper. Supplementary A provides Supplementary <bold>Figures S1-S6</bold>, while Supplementary B presents future research directions for extending the proposed framework.</p>
    </sec>
    <sec id="sec2">
      <title>2. Methodology for Finding Patterns in Repdigits</title>
      <p>The repdigits generated from 1 to 9, when calculating their corresponding triangular number, always have a pattern that ascends with increasing the digits of any given repdigit number. If we correctly note down constants associated with these patterns, then writing the triangular number for the next higher repdigit number is possible. We calculate the constants and associated patterns for each of these repdigits in the following sections. The side-by-side repdigit comparison <bold>Table 1</bold> for the 3, 6, and 9 families is shown below.</p>
      <p><bold>Table 1.</bold> For repdigits 3, 6 and 9.</p>
      <table-wrap id="tbl1">
        <label>Table 1</label>
        <table>
          <tbody>
            <tr>
              <td>
                <bold>Repdigit</bold>
              </td>
              <td>
                <bold>Triangular</bold>
              </td>
              <td>
                <bold>Repdigit</bold>
              </td>
              <td>
                <bold>Triangular</bold>
              </td>
              <td>
                <bold>Repdigit</bold>
              </td>
              <td>
                <bold>Triangular</bold>
              </td>
            </tr>
            <tr>
              <td>3</td>
              <td>6</td>
              <td>6</td>
              <td>21</td>
              <td>9</td>
              <td>45</td>
            </tr>
            <tr>
              <td>33</td>
              <td>561</td>
              <td>66</td>
              <td>2211</td>
              <td>99</td>
              <td>4950</td>
            </tr>
            <tr>
              <td>333</td>
              <td>55611</td>
              <td>666</td>
              <td>222111</td>
              <td>999</td>
              <td>499500</td>
            </tr>
            <tr>
              <td>3333</td>
              <td>5556111</td>
              <td>6666</td>
              <td>22221111</td>
              <td>9999</td>
              <td>49995000</td>
            </tr>
            <tr>
              <td>33333</td>
              <td>555561111</td>
              <td>66666</td>
              <td>2222211111</td>
              <td>99999</td>
              <td>4999950000</td>
            </tr>
            <tr>
              <td>333333</td>
              <td>55555611111</td>
              <td>666666</td>
              <td>222222111111</td>
              <td>999999</td>
              <td>499999500000</td>
            </tr>
            <tr>
              <td>3333333</td>
              <td>5555556111111</td>
              <td>6666666</td>
              <td>22222221111111</td>
              <td>9999999</td>
              <td>49999995000000</td>
            </tr>
            <tr>
              <td>33333333</td>
              <td>555555561111111</td>
              <td>66666666</td>
              <td>2222222211111111</td>
              <td>99999999</td>
              <td>4999999950000000</td>
            </tr>
            <tr>
              <td colspan="2">Triangular number series of repdigits of 3</td>
              <td colspan="2">Triangular number series of repdigits of 6</td>
              <td colspan="2">Triangular number series of repdigits of 9</td>
            </tr>
          </tbody>
        </table>
      </table-wrap>
      <sec id="sec2dot1">
        <title>2.1. Repdigits Based on 3, 6, and 9</title>
        <p>The simplest triangular-number patterns are related to repdigits generated from the 3, 6, and 9 series. The side-by-side table above shows the corresponding triangular numbers, and the pattern for repdigits of 3 can be written as the following theorem: </p>
        <p><bold>Theorem</bold><bold>1.</bold><italic>F</italic><italic>or</italic><italic>any</italic><italic>repdigit</italic><inline-formula><mml:math><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 3 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> m </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula><italic>with</italic><italic>m</italic><italic>number</italic><italic>of</italic><italic>digits</italic><italic>in</italic><italic>it</italic>, <italic>the</italic><italic>corresponding</italic><italic>triangular</italic><italic>number</italic><italic>can</italic><italic>be</italic><italic>written</italic><italic>as</italic><inline-formula><mml:math><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 5 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi> m </mml:mi><mml:mo> − </mml:mo><mml:mn> 1 </mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 6 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mn> 1 </mml:mn></mml:msub><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 1 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi> m </mml:mi><mml:mo> − </mml:mo><mml:mn> 1 </mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula><italic>.</italic></p>
        <disp-formula id="FD2">
          <label>(1)</label>
          <mml:math>
            <mml:mrow>
              <mml:mi>T</mml:mi>
              <mml:mi>r</mml:mi>
              <mml:mi>a</mml:mi>
              <mml:mi>g</mml:mi>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:msub>
                    <mml:mrow>
                      <mml:mrow>
                        <mml:mo>[</mml:mo>
                        <mml:mn>3</mml:mn>
                        <mml:mo>]</mml:mo>
                      </mml:mrow>
                    </mml:mrow>
                    <mml:mi>m</mml:mi>
                  </mml:msub>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>=</mml:mo>
              <mml:msub>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mn>5</mml:mn>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mrow>
                  <mml:mi>m</mml:mi>
                  <mml:mo>−</mml:mo>
                  <mml:mn>1</mml:mn>
                </mml:mrow>
              </mml:msub>
              <mml:msub>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mn>6</mml:mn>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mn>1</mml:mn>
              </mml:msub>
              <mml:msub>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mrow>
                  <mml:mi>m</mml:mi>
                  <mml:mo>−</mml:mo>
                  <mml:mn>1</mml:mn>
                </mml:mrow>
              </mml:msub>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>Similarly, the same side-by-side table suggests the following statements for repdigits of 6 and 9: </p>
        <p><bold>Theorem</bold><bold>2.</bold><italic>For</italic><italic>any</italic><italic>repdigit</italic><inline-formula><mml:math><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 6 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> m </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula><italic>with</italic><italic>m</italic><italic>number</italic><italic>of</italic><italic>digits</italic><italic>in</italic><italic>it</italic>, <italic>the</italic><italic>corresponding</italic><italic>triangular</italic><italic>number</italic><italic>can</italic><italic>be</italic><italic>written</italic><italic>as</italic><inline-formula><mml:math><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 2 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> m </mml:mi></mml:msub><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 1 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> m </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula><italic>.</italic></p>
        <disp-formula id="FD3">
          <label>(2)</label>
          <mml:math>
            <mml:mrow>
              <mml:mi>T</mml:mi>
              <mml:mi>r</mml:mi>
              <mml:mi>a</mml:mi>
              <mml:mi>g</mml:mi>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:msub>
                    <mml:mrow>
                      <mml:mrow>
                        <mml:mo>[</mml:mo>
                        <mml:mn>6</mml:mn>
                        <mml:mo>]</mml:mo>
                      </mml:mrow>
                    </mml:mrow>
                    <mml:mi>m</mml:mi>
                  </mml:msub>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>=</mml:mo>
              <mml:msub>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mn>2</mml:mn>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mi>m</mml:mi>
              </mml:msub>
              <mml:msub>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mi>m</mml:mi>
              </mml:msub>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p><bold>Theorem</bold><bold>3.</bold><italic>For</italic><italic>any</italic><italic>repdigit</italic><inline-formula><mml:math display="inline"><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 9 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> m </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula><italic>with</italic><italic>m</italic><italic>number</italic><italic>of</italic><italic>digits</italic><italic>in</italic><italic>it</italic>, <italic>the</italic><italic>corresponding</italic><italic>triangular</italic><italic>number</italic><italic>can</italic><italic>be</italic><italic>written</italic><italic>as</italic><inline-formula><mml:math><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 4 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mn> 1 </mml:mn></mml:msub><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 9 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi> m </mml:mi><mml:mo> − </mml:mo><mml:mn> 1 </mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 5 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mn> 1 </mml:mn></mml:msub><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 0 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi> m </mml:mi><mml:mo> − </mml:mo><mml:mn> 1 </mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula><italic>.</italic></p>
        <disp-formula id="FD4">
          <label>(3)</label>
          <mml:math>
            <mml:mrow>
              <mml:mi>T</mml:mi>
              <mml:mi>r</mml:mi>
              <mml:mi>a</mml:mi>
              <mml:mi>g</mml:mi>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:msub>
                    <mml:mrow>
                      <mml:mrow>
                        <mml:mo>[</mml:mo>
                        <mml:mn>9</mml:mn>
                        <mml:mo>]</mml:mo>
                      </mml:mrow>
                    </mml:mrow>
                    <mml:mi>m</mml:mi>
                  </mml:msub>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>=</mml:mo>
              <mml:msub>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mn>4</mml:mn>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mn>1</mml:mn>
              </mml:msub>
              <mml:msub>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mn>9</mml:mn>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mrow>
                  <mml:mi>m</mml:mi>
                  <mml:mo>−</mml:mo>
                  <mml:mn>1</mml:mn>
                </mml:mrow>
              </mml:msub>
              <mml:msub>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mn>5</mml:mn>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mn>1</mml:mn>
              </mml:msub>
              <mml:msub>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mn>0</mml:mn>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mrow>
                  <mml:mi>m</mml:mi>
                  <mml:mo>−</mml:mo>
                  <mml:mn>1</mml:mn>
                </mml:mrow>
              </mml:msub>
            </mml:mrow>
          </mml:math>
        </disp-formula>
      </sec>
      <sec id="sec2dot2">
        <title>2.2. Repdigits Based on 1, 2, 4, 5, 7, 8</title>
        <p>The triangular number of repdigits based on 1, 2, 4, 5, 7 and 8 does not follow the simpler form as shown in the previous subsection. We now try to find the patterns and constants in this sequence using the tables attached below. A colour-coded view to identify the constants and patterns for each repdigit, as presented in <xref ref-type="fig" rid="fig2">Figure 2</xref> used as a primary sample in this research paper, along with Supplementary <bold>Figures S1-S5</bold>. Let’s understand the constants and patterns with <xref ref-type="fig" rid="fig2">Figure 2</xref>. It consists of vertical patterns of constants, the differences between successive constants, and digits inherited from one constant to the next. Vertical patterns have left and right patterns used to assemble the triangular number of a repdigit.</p>
        <p>The colour-coded view in <xref ref-type="fig" rid="fig2">Figure 2</xref> shows that a hidden three-digit constant vertical pattern follows in the middle of triangular numbers as it ascends. The pattern again repeats itself after every 9 triangular numbers. The symmetrical pattern starts from the second triangular number 66 and can be written in form of a set as, </p>
        <disp-formula id="FD5">
          <mml:math display="inline">
            <mml:mrow>
              <mml:msub>
                <mml:mi>V</mml:mi>
                <mml:mrow>
                  <mml:mtext>const</mml:mtext>
                </mml:mrow>
              </mml:msub>
              <mml:mo>∈</mml:mo>
              <mml:mrow>
                <mml:mo>{</mml:mo>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:mn>660</mml:mn>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                  <mml:mo>,</mml:mo>
                  <mml:mn>1</mml:mn>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:mn>216</mml:mn>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                  <mml:mo>,</mml:mo>
                  <mml:mn>771</mml:mn>
                  <mml:mo>,</mml:mo>
                  <mml:mn>1</mml:mn>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:mn>317</mml:mn>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                  <mml:mo>,</mml:mo>
                  <mml:mn>882</mml:mn>
                  <mml:mo>,</mml:mo>
                  <mml:mn>1</mml:mn>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:mn>438</mml:mn>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                  <mml:mo>,</mml:mo>
                  <mml:mn>993</mml:mn>
                  <mml:mo>,</mml:mo>
                  <mml:mn>1</mml:mn>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:mn>549</mml:mn>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                  <mml:mo>,</mml:mo>
                  <mml:mn>104</mml:mn>
                </mml:mrow>
                <mml:mo>}</mml:mo>
              </mml:mrow>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>The common feature of these vertical constants is that consecutive terms alternate between differences of 555 and 556, as shown in <xref ref-type="fig" rid="fig2">Figure 2</xref>. With further research, this regularity may enable the next constant to be computed directly, rather than determined manually. A further observed feature is that certain digits are inherited from the <inline-formula><mml:math><mml:mrow><mml:msup><mml:mi> m </mml:mi><mml:mrow><mml:mtext> th </mml:mtext></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> triangular number when constructing the <inline-formula><mml:math><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> m </mml:mi><mml:mo> + </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext> th </mml:mtext></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> triangular number. These inherited digits form a closed loop, analogous to the constant patterns discussed above, and may provide insight toward logarithmic derivations (or compact generation rules) for values of <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> V </mml:mi><mml:mrow><mml:mtext> const </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> . Further details are provided in Section B.</p>
        <fig id="fig1">
          <label>Figure 1</label>
          <graphic xlink:href="https://html.scirp.org/file/1101176-rId55.jpeg?20260515035436" />
        </fig>
        <p><bold>Figure 1.</bold> Simplified introductory view of the Triangular Number Matrix system for repdigit 1. The figure highlights the synchronization between vertical patterns, pattern index, and horizontal patterns. The dark green rows show cycle alignment: every ninth increase in the pattern index completes a full vertical-pattern cycle, while the horizontal-pattern composition expands by one additional repeated block on each side.</p>
        <fig id="fig2">
          <label>Figure 2</label>
          <graphic xlink:href="https://html.scirp.org/file/1101176-rId56.jpeg?20260515035436" />
        </fig>
        <p><bold>Figure 2.</bold> Triangular number series of repdigits of 1.</p>
        <p>Apart from this three-digit vertical pattern, there is also a noticeable horizontal pattern followed by the triangular number series. </p>
        <p>Left Horizontal Pattern—this represents the patterns or parts of patterns that repeat horizontally on the left side of the vertical constant. </p>
        <disp-formula id="FD6">
          <mml:math>
            <mml:mrow>
              <mml:msub>
                <mml:mi>L</mml:mi>
                <mml:mrow>
                  <mml:mtext>const</mml:mtext>
                </mml:mrow>
              </mml:msub>
              <mml:mo>=</mml:mo>
              <mml:mn>617283950</mml:mn>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>Right Horizontal Pattern—this represents the patterns or parts of patterns that repeat horizontally on the right side of the vertical constant. </p>
        <disp-formula id="FD7">
          <mml:math>
            <mml:mrow>
              <mml:msub>
                <mml:mi>R</mml:mi>
                <mml:mrow>
                  <mml:mtext>const</mml:mtext>
                </mml:mrow>
              </mml:msub>
              <mml:mo>=</mml:mo>
              <mml:mn>049382716</mml:mn>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>So far, we have clearly identified all the vertical and horizontal constants and symmetries present in them. Now, we have all the ingredients for writing a triangular number of any <inline-formula><mml:math><mml:mrow><mml:msup><mml:mi> n </mml:mi><mml:mrow><mml:mtext> th </mml:mtext></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> repdigit <inline-formula><mml:math><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 1 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> n </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> . </p>
      </sec>
    </sec>
    <sec id="sec3">
      <title>3. Triangular Number Calculator</title>
      <p>To build the triangular number calculator, for any <inline-formula><mml:math><mml:mrow><mml:msup><mml:mi> m </mml:mi><mml:mrow><mml:mtext> th </mml:mtext></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> digit rep number using the constants discussed in the previous section, we use the scalable reduction method (<xref ref-type="fig" rid="fig3">Figure 3</xref>). One of the reasons this method is scalable is that the digital root of a large repdigit can be computed by passing only a few parameters to a parallel process (e.g., repdigit = 1, length = 91,234,402), whereas for a non-repeating digit sequence, we would need to pass all 91,234,402 digits. For demonstration and maintaining the continuity of the article, we again take the example of repdigit <inline-formula><mml:math><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 1 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> m </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> to explain the assembly process of vertical and horizontal patterns, and the role of the digital root in the derivation of the triangular number.</p>
      <fig id="fig3">
        <label>Figure 3</label>
        <graphic xlink:href="https://html.scirp.org/file/1101176-rId69.jpeg?20260515035437" />
      </fig>
      <p><bold>Figure 3.</bold> Triangular number assembly methodology based on scalable reduction method, using repdigits digital root as a key for finding corresponding vertical constant.</p>
      <p><xref ref-type="fig" rid="fig3">Figure 3</xref> shows the scalable reduction method in writing the triangular repdigit <inline-formula><mml:math><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 1 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> m </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> . Take the example of the highlighted repdigit <inline-formula><mml:math><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 1 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn> 17 </mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> . Clearly, the repdigit length is <inline-formula><mml:math><mml:mrow><mml:mi> m </mml:mi><mml:mo> = </mml:mo><mml:mn> 17 </mml:mn></mml:mrow></mml:math></inline-formula> (<bold>Algorithm 1</bold>).</p>
      <p><bold>Algorithm 1.</bold>Repdigit triangular-number assembly using the scalable-reduction key.</p>
      <fig id="fig4">
        <label>Figure 4</label>
        <graphic xlink:href="https://html.scirp.org/file/1101176-rId75.jpeg?20260515035437" />
      </fig>
      <p>Now, as per the scalable reduction method, sum the repdigits until arriving at a single digit. So, we add the repdigits, which will give us its digital root, denoted as </p>
      <disp-formula id="FD8">
        <mml:math>
          <mml:mtable columnalign="left">
            <mml:mtr>
              <mml:mtd>
                <mml:msub>
                  <mml:mi>N</mml:mi>
                  <mml:mrow>
                    <mml:mtext>scale</mml:mtext>
                  </mml:mrow>
                </mml:msub>
                <mml:mo>=</mml:mo>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                    <mml:mo>+</mml:mo>
                    <mml:mn>1</mml:mn>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
                <mml:mo>=</mml:mo>
                <mml:mn>17</mml:mn>
              </mml:mtd>
            </mml:mtr>
            <mml:mtr>
              <mml:mtd>
                <mml:mo>→</mml:mo>
                <mml:mn>1</mml:mn>
                <mml:mo>+</mml:mo>
                <mml:mn>7</mml:mn>
                <mml:mo>=</mml:mo>
                <mml:mn>8</mml:mn>
              </mml:mtd>
            </mml:mtr>
          </mml:mtable>
        </mml:math>
      </disp-formula>
      <p>This 8 serves as a key to retrieve the corresponding vertical constant; in this case, 8 → 994 in <xref ref-type="fig" rid="fig3">Figure 3</xref>. More detailed observations of the mappings of digital roots to vertical constants can be found in Supplementary <bold>Figure S6</bold>. While the reduction method involving the summation of large sequences of digits often presents a computational bottleneck, our approach utilizes repdigits to ensure the process remains scalable. By caching and reusing repdigit summations in discrete blocks, we significantly reduce the processing time required for large-scale numerical reduction as discussed in Section B.2. Next, let us look at the left/right horizontal pattern length, which is 9 for each side [617283950/049382716], defined as </p>
      <disp-formula id="FD9">
        <mml:math>
          <mml:mrow>
            <mml:msub>
              <mml:mi>P</mml:mi>
              <mml:mi>ℓ</mml:mi>
            </mml:msub>
            <mml:mo>=</mml:mo>
            <mml:mn>9.</mml:mn>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>We will need to pad left/right horizontal patterns, <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mrow><mml:msub><mml:mi> L </mml:mi><mml:mrow><mml:mtext> const </mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo> / </mml:mo><mml:mrow><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> const </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:mrow></mml:math></inline-formula> . With a partial horizontal patterns, <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mrow><mml:msub><mml:mi> L </mml:mi><mml:mrow><mml:mtext> cutoff </mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo> / </mml:mo><mml:mrow><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> cutoff </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:mrow></mml:math></inline-formula> . That is, before we append those patterns around the middle vertical constant <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> V </mml:mi><mml:mrow><mml:mtext> const </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> . To compute the length of the left/right horizontal digit blocks, we set </p>
      <disp-formula id="FD10">
        <mml:math>
          <mml:mrow>
            <mml:msub>
              <mml:mi>N</mml:mi>
              <mml:mrow>
                <mml:mi>L</mml:mi>
                <mml:mo>/</mml:mo>
                <mml:mi>R</mml:mi>
              </mml:mrow>
            </mml:msub>
            <mml:mo>=</mml:mo>
            <mml:mi>m</mml:mi>
            <mml:mo>−</mml:mo>
            <mml:mn>2</mml:mn>
            <mml:mo>=</mml:mo>
            <mml:mn>17</mml:mn>
            <mml:mo>−</mml:mo>
            <mml:mn>2</mml:mn>
            <mml:mo>=</mml:mo>
            <mml:mn>15.</mml:mn>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>For <inline-formula><mml:math><mml:mrow><mml:mi> m </mml:mi><mml:mo> = </mml:mo><mml:mn> 17 </mml:mn></mml:mrow></mml:math></inline-formula> , this gives <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> N </mml:mi><mml:mrow><mml:mi> L </mml:mi><mml:mo> / </mml:mo><mml:mi> R </mml:mi></mml:mrow></mml:msub><mml:mo> = </mml:mo><mml:mn> 15 </mml:mn></mml:mrow></mml:math></inline-formula> . Next, we calculate number of full horizontal patterns required by first calculating the length of partial patterns for <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mrow><mml:msub><mml:mi> L </mml:mi><mml:mrow><mml:mtext> cutoff </mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo> / </mml:mo><mml:mrow><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> cutoff </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:mrow></mml:math></inline-formula> by calculating remainder r, </p>
      <disp-formula id="FD11">
        <mml:math>
          <mml:mrow>
            <mml:mi>r</mml:mi>
            <mml:mo>=</mml:mo>
            <mml:msub>
              <mml:mi>N</mml:mi>
              <mml:mrow>
                <mml:mi>L</mml:mi>
                <mml:mo>/</mml:mo>
                <mml:mi>R</mml:mi>
              </mml:mrow>
            </mml:msub>
            <mml:mi>mod</mml:mi>
            <mml:msub>
              <mml:mi>P</mml:mi>
              <mml:mi>ℓ</mml:mi>
            </mml:msub>
            <mml:mo>=</mml:mo>
            <mml:mn>15</mml:mn>
            <mml:mi>mod</mml:mi>
            <mml:mn>9</mml:mn>
            <mml:mo>=</mml:mo>
            <mml:mn>6</mml:mn>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>We determine the number of complete left/right patterns by removing the remainder <inline-formula><mml:math><mml:mi> r </mml:mi></mml:math></inline-formula> from <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> N </mml:mi><mml:mrow><mml:mi> L </mml:mi><mml:mo> / </mml:mo><mml:mi> R </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> , so that the result is exactly divisible by the pattern length <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> P </mml:mi><mml:mi> ℓ </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> . Since <inline-formula><mml:math><mml:mrow><mml:mi> r </mml:mi><mml:mo> = </mml:mo><mml:msub><mml:mi> N </mml:mi><mml:mrow><mml:mi> L </mml:mi><mml:mo> / </mml:mo><mml:mi> R </mml:mi></mml:mrow></mml:msub><mml:mi> mod </mml:mi><mml:msub><mml:mi> P </mml:mi><mml:mi> ℓ </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> , the quotient is </p>
      <disp-formula id="FD12">
        <mml:math>
          <mml:mrow>
            <mml:mi>q</mml:mi>
            <mml:mo>=</mml:mo>
            <mml:mfrac>
              <mml:mrow>
                <mml:msub>
                  <mml:mi>N</mml:mi>
                  <mml:mrow>
                    <mml:mi>L</mml:mi>
                    <mml:mo>/</mml:mo>
                    <mml:mi>R</mml:mi>
                  </mml:mrow>
                </mml:msub>
                <mml:mo>−</mml:mo>
                <mml:mi>r</mml:mi>
              </mml:mrow>
              <mml:mrow>
                <mml:msub>
                  <mml:mi>P</mml:mi>
                  <mml:mi>ℓ</mml:mi>
                </mml:msub>
              </mml:mrow>
            </mml:mfrac>
            <mml:mo>=</mml:mo>
            <mml:mfrac>
              <mml:mrow>
                <mml:mn>15</mml:mn>
                <mml:mo>−</mml:mo>
                <mml:mn>6</mml:mn>
              </mml:mrow>
              <mml:mn>9</mml:mn>
            </mml:mfrac>
            <mml:mo>=</mml:mo>
            <mml:mn>1.</mml:mn>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>Thus, <inline-formula><mml:math><mml:mrow><mml:mi> q </mml:mi><mml:mo> = </mml:mo><mml:mn> 1 </mml:mn></mml:mrow></mml:math></inline-formula> gives the number of complete left/right horizontal patterns, and <inline-formula><mml:math><mml:mrow><mml:mi> r </mml:mi><mml:mo> = </mml:mo><mml:mn> 6 </mml:mn></mml:mrow></mml:math></inline-formula> specifies the length of the final (partial) horizontal patterns. Now it is clear how many times <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mrow><mml:msub><mml:mi> L </mml:mi><mml:mrow><mml:mtext> const </mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo> / </mml:mo><mml:mrow><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> const </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:mrow></mml:math></inline-formula> should be repeated and what length to use for <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mrow><mml:msub><mml:mi> L </mml:mi><mml:mrow><mml:mtext> cutoff </mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo> / </mml:mo><mml:mrow><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> cutoff </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:mrow></mml:math></inline-formula> . A final note specific to the repdigit family <inline-formula><mml:math><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 1 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> m </mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is that the right cutoff length must be adjusted by one; that is, the remainder used for <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> cutoff </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is <inline-formula><mml:math><mml:mrow><mml:mi> r </mml:mi><mml:mo> − </mml:mo><mml:mn> 1 </mml:mn></mml:mrow></mml:math></inline-formula> , so <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> cutoff </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> uses length 5 rather than 6 in this example (this adjustment is not required for the corresponding families <inline-formula><mml:math><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 2 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> m </mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> , <inline-formula><mml:math><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 4 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> m </mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> , <inline-formula><mml:math><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 7 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> m </mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> , and <inline-formula><mml:math><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 9 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> m </mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> ).</p>
      <p>Final breakdown of triangular number <inline-formula><mml:math display="inline"><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 1 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn> 17 </mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is, </p>
      <disp-formula id="FD13">
        <label>(4)</label>
        <mml:math>
          <mml:mrow>
            <mml:mi>T</mml:mi>
            <mml:mi>r</mml:mi>
            <mml:mi>a</mml:mi>
            <mml:mi>g</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:msub>
                  <mml:mrow>
                    <mml:mrow>
                      <mml:mo>[</mml:mo>
                      <mml:mn>1</mml:mn>
                      <mml:mo>]</mml:mo>
                    </mml:mrow>
                  </mml:mrow>
                  <mml:mrow>
                    <mml:mn>17</mml:mn>
                  </mml:mrow>
                </mml:msub>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>=</mml:mo>
            <mml:msub>
              <mml:mrow>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>L</mml:mi>
                      <mml:mrow>
                        <mml:mtext>const</mml:mtext>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mrow>
                <mml:mo>
                </mml:mo>
                <mml:msub>
                  <mml:mi>P</mml:mi>
                  <mml:mi>ℓ</mml:mi>
                </mml:msub>
                <mml:mo>⋅</mml:mo>
                <mml:mi>q</mml:mi>
              </mml:mrow>
            </mml:msub>
            <mml:mo>+</mml:mo>
            <mml:msub>
              <mml:mrow>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>L</mml:mi>
                      <mml:mrow>
                        <mml:mtext>cutoff</mml:mtext>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mi>r</mml:mi>
            </mml:msub>
            <mml:mo>+</mml:mo>
            <mml:msub>
              <mml:mrow>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>V</mml:mi>
                      <mml:mrow>
                        <mml:mtext>const</mml:mtext>
                        <mml:mo>,</mml:mo>
                        <mml:msub>
                          <mml:mi>N</mml:mi>
                          <mml:mrow>
                            <mml:mtext>scale</mml:mtext>
                          </mml:mrow>
                        </mml:msub>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mn>3</mml:mn>
            </mml:msub>
            <mml:mo>+</mml:mo>
            <mml:msub>
              <mml:mrow>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>R</mml:mi>
                      <mml:mrow>
                        <mml:mtext>cutoff</mml:mtext>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mi>r</mml:mi>
            </mml:msub>
            <mml:mo>+</mml:mo>
            <mml:msub>
              <mml:mrow>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>R</mml:mi>
                      <mml:mrow>
                        <mml:mtext>const</mml:mtext>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mrow>
                <mml:mo>
                </mml:mo>
                <mml:msub>
                  <mml:mi>P</mml:mi>
                  <mml:mi>ℓ</mml:mi>
                </mml:msub>
                <mml:mo>⋅</mml:mo>
                <mml:mi>q</mml:mi>
              </mml:mrow>
            </mml:msub>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>and, </p>
      <disp-formula id="FD14">
        <label>(5)</label>
        <mml:math>
          <mml:mrow>
            <mml:mi>T</mml:mi>
            <mml:mi>r</mml:mi>
            <mml:mi>a</mml:mi>
            <mml:mi>g</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:msub>
                  <mml:mrow>
                    <mml:mrow>
                      <mml:mo>[</mml:mo>
                      <mml:mn>1</mml:mn>
                      <mml:mo>]</mml:mo>
                    </mml:mrow>
                  </mml:mrow>
                  <mml:mrow>
                    <mml:mn>17</mml:mn>
                  </mml:mrow>
                </mml:msub>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>=</mml:mo>
            <mml:msub>
              <mml:mrow>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>L</mml:mi>
                      <mml:mrow>
                        <mml:mtext>const</mml:mtext>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mrow>
                <mml:mn>9</mml:mn>
                <mml:mo>⋅</mml:mo>
                <mml:mn>1</mml:mn>
              </mml:mrow>
            </mml:msub>
            <mml:mo>+</mml:mo>
            <mml:msub>
              <mml:mrow>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>L</mml:mi>
                      <mml:mrow>
                        <mml:mtext>cutoff</mml:mtext>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mn>6</mml:mn>
            </mml:msub>
            <mml:mo>+</mml:mo>
            <mml:msub>
              <mml:mrow>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>V</mml:mi>
                      <mml:mrow>
                        <mml:mtext>const</mml:mtext>
                        <mml:mo>,</mml:mo>
                        <mml:mn>8</mml:mn>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mn>3</mml:mn>
            </mml:msub>
            <mml:mo>+</mml:mo>
            <mml:msub>
              <mml:mrow>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>R</mml:mi>
                      <mml:mrow>
                        <mml:mtext>cutoff</mml:mtext>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mn>5</mml:mn>
            </mml:msub>
            <mml:mo>+</mml:mo>
            <mml:msub>
              <mml:mrow>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>R</mml:mi>
                      <mml:mrow>
                        <mml:mtext>const</mml:mtext>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mrow>
                <mml:mn>9</mml:mn>
                <mml:mo>⋅</mml:mo>
                <mml:mn>1</mml:mn>
              </mml:mrow>
            </mml:msub>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>So, </p>
      <disp-formula id="FD15">
        <label>(6)</label>
        <mml:math>
          <mml:mtable>
            <mml:mtr>
              <mml:mtd>
                <mml:mtext>Trag</mml:mtext>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mrow>
                        <mml:mrow>
                          <mml:mo>[</mml:mo>
                          <mml:mn>1</mml:mn>
                          <mml:mo>]</mml:mo>
                        </mml:mrow>
                      </mml:mrow>
                      <mml:mrow>
                        <mml:mn>17</mml:mn>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>=</mml:mo>
                <mml:msub>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:mn>617283950</mml:mn>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                  <mml:mn>9</mml:mn>
                </mml:msub>
                <mml:mo>+</mml:mo>
                <mml:msub>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:mn>617283</mml:mn>
                      <mml:menclose notation="updiagonalstrike">
                        <mml:mrow>
                          <mml:mn>950</mml:mn>
                        </mml:mrow>
                      </mml:menclose>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                  <mml:mn>6</mml:mn>
                </mml:msub>
                <mml:mo>+</mml:mo>
                <mml:msub>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:mn>993</mml:mn>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                  <mml:mn>3</mml:mn>
                </mml:msub>
              </mml:mtd>
            </mml:mtr>
            <mml:mtr>
              <mml:mtd>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mo>+</mml:mo>
                <mml:msub>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:menclose notation="updiagonalstrike">
                        <mml:mrow>
                          <mml:mn>049</mml:mn>
                        </mml:mrow>
                      </mml:menclose>
                      <mml:menclose notation="updiagonalstrike">
                        <mml:mn>3</mml:mn>
                      </mml:menclose>
                      <mml:mn>82716</mml:mn>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                  <mml:mn>6</mml:mn>
                </mml:msub>
                <mml:mo>+</mml:mo>
                <mml:msub>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:mn>049382716</mml:mn>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                  <mml:mn>9</mml:mn>
                </mml:msub>
              </mml:mtd>
            </mml:mtr>
          </mml:mtable>
        </mml:math>
      </disp-formula>
      <p>Finally, </p>
      <disp-formula id="FD16">
        <label>(7)</label>
        <mml:math>
          <mml:mrow>
            <mml:mi>T</mml:mi>
            <mml:mi>r</mml:mi>
            <mml:mi>a</mml:mi>
            <mml:mi>g</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:msub>
                  <mml:mrow>
                    <mml:mrow>
                      <mml:mo>[</mml:mo>
                      <mml:mn>1</mml:mn>
                      <mml:mo>]</mml:mo>
                    </mml:mrow>
                  </mml:mrow>
                  <mml:mrow>
                    <mml:mn>17</mml:mn>
                  </mml:mrow>
                </mml:msub>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>=</mml:mo>
            <mml:mn>61728395061728399382716049382716</mml:mn>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>Based on our analysis we can write the theorem as, </p>
      <p><bold>Theorem</bold><bold>4.</bold><italic>For</italic><italic>any</italic><italic>repdigit</italic><inline-formula><mml:math><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 1 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> m </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula><italic>with</italic><italic>m</italic><italic>number</italic><italic>of</italic><italic>digits</italic><italic>in</italic><italic>it</italic>, <italic>the</italic><italic>corresponding</italic><italic>triangular</italic><italic>number</italic><italic>can</italic><italic>be</italic><italic>written</italic><italic>as</italic>, </p>
      <disp-formula id="FD17">
        <label>(8)</label>
        <mml:math>
          <mml:mrow>
            <mml:mi>T</mml:mi>
            <mml:mi>r</mml:mi>
            <mml:mi>a</mml:mi>
            <mml:mi>g</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:msub>
                  <mml:mrow>
                    <mml:mrow>
                      <mml:mo>[</mml:mo>
                      <mml:mn>1</mml:mn>
                      <mml:mo>]</mml:mo>
                    </mml:mrow>
                  </mml:mrow>
                  <mml:mi>m</mml:mi>
                </mml:msub>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>=</mml:mo>
            <mml:msub>
              <mml:mrow>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>L</mml:mi>
                      <mml:mrow>
                        <mml:mtext>const</mml:mtext>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mrow>
                <mml:mo>
                </mml:mo>
                <mml:msub>
                  <mml:mi>P</mml:mi>
                  <mml:mi>ℓ</mml:mi>
                </mml:msub>
                <mml:mo>⋅</mml:mo>
                <mml:mi>q</mml:mi>
              </mml:mrow>
            </mml:msub>
            <mml:mo>+</mml:mo>
            <mml:msub>
              <mml:mrow>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>L</mml:mi>
                      <mml:mrow>
                        <mml:mtext>cutoff</mml:mtext>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mrow>
                <mml:mo>
                </mml:mo>
                <mml:mi>r</mml:mi>
              </mml:mrow>
            </mml:msub>
            <mml:mo>+</mml:mo>
            <mml:mrow>
              <mml:mo>[</mml:mo>
              <mml:mrow>
                <mml:msub>
                  <mml:mi>V</mml:mi>
                  <mml:mrow>
                    <mml:mtext>const</mml:mtext>
                    <mml:mo>,</mml:mo>
                    <mml:msub>
                      <mml:mi>N</mml:mi>
                      <mml:mrow>
                        <mml:mtext>scale</mml:mtext>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                </mml:msub>
              </mml:mrow>
              <mml:mo>]</mml:mo>
            </mml:mrow>
            <mml:mo>+</mml:mo>
            <mml:msub>
              <mml:mrow>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>R</mml:mi>
                      <mml:mrow>
                        <mml:mtext>cutoff</mml:mtext>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mrow>
                <mml:mo>
                </mml:mo>
                <mml:mi>r</mml:mi>
              </mml:mrow>
            </mml:msub>
            <mml:mo>+</mml:mo>
            <mml:msub>
              <mml:mrow>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>R</mml:mi>
                      <mml:mrow>
                        <mml:mtext>const</mml:mtext>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mrow>
              <mml:mrow>
                <mml:mo>
                </mml:mo>
                <mml:msub>
                  <mml:mi>P</mml:mi>
                  <mml:mi>ℓ</mml:mi>
                </mml:msub>
                <mml:mo>⋅</mml:mo>
                <mml:mi>q</mml:mi>
              </mml:mrow>
            </mml:msub>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>A similar strategy can be employed for m-length digits <inline-formula><mml:math><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 2 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> m </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> . Here, for example, take <inline-formula><mml:math><mml:mrow><mml:mi> m </mml:mi><mml:mo> = </mml:mo><mml:mn> 18 </mml:mn></mml:mrow></mml:math></inline-formula> . Supplementary <bold>Figure S1</bold> shows that, </p>
      <disp-formula id="FD18">
        <mml:math>
          <mml:mrow>
            <mml:msub>
              <mml:mi>L</mml:mi>
              <mml:mrow>
                <mml:mtext>const</mml:mtext>
              </mml:mrow>
            </mml:msub>
            <mml:mo>=</mml:mo>
            <mml:mn>246913580</mml:mn>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>Digital roots <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> N </mml:mi><mml:mrow><mml:mi> s </mml:mi><mml:mi> c </mml:mi><mml:mi> a </mml:mi><mml:mi> l </mml:mi><mml:mi> e </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> mapped to their corresponding vertical constants <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> V </mml:mi><mml:mrow><mml:mi> c </mml:mi><mml:mi> o </mml:mi><mml:mi> n </mml:mi><mml:mi> s </mml:mi><mml:mi> t </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> , </p>
      <disp-formula id="FD19">
        <mml:math display="inline">
          <mml:mtable columnalign="left">
            <mml:mtr>
              <mml:mtd>
                <mml:msub>
                  <mml:mi>V</mml:mi>
                  <mml:mrow>
                    <mml:mtext>const</mml:mtext>
                  </mml:mrow>
                </mml:msub>
                <mml:mo>∈</mml:mo>
                <mml:mrow>
                  <mml:mo>{</mml:mo>
                  <mml:mrow>
                    <mml:mrow>
                      <mml:mo>[</mml:mo>
                      <mml:mrow>
                        <mml:mn>253</mml:mn>
                      </mml:mrow>
                      <mml:mo>]</mml:mo>
                    </mml:mrow>
                    <mml:mo>,</mml:mo>
                    <mml:mrow>
                      <mml:mo>[</mml:mo>
                      <mml:mrow>
                        <mml:mn>475</mml:mn>
                      </mml:mrow>
                      <mml:mo>]</mml:mo>
                    </mml:mrow>
                    <mml:mo>,</mml:mo>
                    <mml:mrow>
                      <mml:mo>[</mml:mo>
                      <mml:mrow>
                        <mml:mn>697</mml:mn>
                      </mml:mrow>
                      <mml:mo>]</mml:mo>
                    </mml:mrow>
                    <mml:mo>,</mml:mo>
                    <mml:mrow>
                      <mml:mo>[</mml:mo>
                      <mml:mrow>
                        <mml:mn>919</mml:mn>
                      </mml:mrow>
                      <mml:mo>]</mml:mo>
                    </mml:mrow>
                    <mml:mo>,</mml:mo>
                    <mml:mrow>
                      <mml:mo>[</mml:mo>
                      <mml:mrow>
                        <mml:mn>141</mml:mn>
                      </mml:mrow>
                      <mml:mo>]</mml:mo>
                    </mml:mrow>
                    <mml:mo>,</mml:mo>
                    <mml:mrow>
                      <mml:mo>[</mml:mo>
                      <mml:mrow>
                        <mml:mn>364</mml:mn>
                      </mml:mrow>
                      <mml:mo>]</mml:mo>
                    </mml:mrow>
                    <mml:mo>,</mml:mo>
                    <mml:mrow>
                      <mml:mo>[</mml:mo>
                      <mml:mrow>
                        <mml:mn>586</mml:mn>
                      </mml:mrow>
                      <mml:mo>]</mml:mo>
                    </mml:mrow>
                    <mml:mo>,</mml:mo>
                    <mml:mrow>
                      <mml:mo>[</mml:mo>
                      <mml:mrow>
                        <mml:mn>808</mml:mn>
                      </mml:mrow>
                      <mml:mo>]</mml:mo>
                    </mml:mrow>
                    <mml:mo>,</mml:mo>
                    <mml:mrow>
                      <mml:mo>[</mml:mo>
                      <mml:mrow>
                        <mml:mn>030</mml:mn>
                      </mml:mrow>
                      <mml:mo>]</mml:mo>
                    </mml:mrow>
                  </mml:mrow>
                  <mml:mo>}</mml:mo>
                </mml:mrow>
              </mml:mtd>
            </mml:mtr>
            <mml:mtr>
              <mml:mtd>
                <mml:msub>
                  <mml:mi>N</mml:mi>
                  <mml:mrow>
                    <mml:mtext>scale</mml:mtext>
                  </mml:mrow>
                </mml:msub>
                <mml:mo>∈</mml:mo>
                <mml:mrow>
                  <mml:mo>{</mml:mo>
                  <mml:mrow>
                    <mml:mrow>
                      <mml:mo>[</mml:mo>
                      <mml:mtext>
                         
                      </mml:mtext>
                    </mml:mrow>
                  </mml:mrow>
                </mml:mrow>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mover>
                  <mml:mn>4</mml:mn>
                  <mml:mo>↑</mml:mo>
                </mml:mover>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mtext>
                     
                  </mml:mtext>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
                <mml:mo>,</mml:mo>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mtext>
                     
                  </mml:mtext>
                </mml:mrow>
                <mml:mover>
                  <mml:mn>6</mml:mn>
                  <mml:mo>↑</mml:mo>
                </mml:mover>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mtext>
                     
                  </mml:mtext>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
                <mml:mo>,</mml:mo>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mtext>
                     
                  </mml:mtext>
                </mml:mrow>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mover>
                  <mml:mn>8</mml:mn>
                  <mml:mo>↑</mml:mo>
                </mml:mover>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mtext>
                     
                  </mml:mtext>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
                <mml:mo>,</mml:mo>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mtext>
                     
                  </mml:mtext>
                </mml:mrow>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mover>
                  <mml:mn>1</mml:mn>
                  <mml:mo>↑</mml:mo>
                </mml:mover>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mtext>
                     
                  </mml:mtext>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
                <mml:mo>,</mml:mo>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mtext>
                     
                  </mml:mtext>
                </mml:mrow>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mover>
                  <mml:mn>3</mml:mn>
                  <mml:mo>↑</mml:mo>
                </mml:mover>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mtext>
                     
                  </mml:mtext>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
                <mml:mo>,</mml:mo>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mtext>
                     
                  </mml:mtext>
                </mml:mrow>
                <mml:mo>
                </mml:mo>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mover>
                  <mml:mn>5</mml:mn>
                  <mml:mo>↑</mml:mo>
                </mml:mover>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mtext>
                     
                  </mml:mtext>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
                <mml:mo>,</mml:mo>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mtext>
                     
                  </mml:mtext>
                </mml:mrow>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mover>
                  <mml:mn>7</mml:mn>
                  <mml:mo>↑</mml:mo>
                </mml:mover>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mtext>
                     
                  </mml:mtext>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
                <mml:mo>,</mml:mo>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mtext>
                     
                  </mml:mtext>
                </mml:mrow>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mover>
                  <mml:mn>9</mml:mn>
                  <mml:mo>↑</mml:mo>
                </mml:mover>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mtext>
                     
                  </mml:mtext>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
                <mml:mo>,</mml:mo>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mtext>
                     
                  </mml:mtext>
                </mml:mrow>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mover>
                  <mml:mn>2</mml:mn>
                  <mml:mo>↑</mml:mo>
                </mml:mover>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mrow>
                      <mml:mtext>
                         
                      </mml:mtext>
                      <mml:mo>]</mml:mo>
                    </mml:mrow>
                  </mml:mrow>
                  <mml:mo>}</mml:mo>
                </mml:mrow>
              </mml:mtd>
            </mml:mtr>
          </mml:mtable>
        </mml:math>
      </disp-formula>
      <p>Also, for <inline-formula><mml:math><mml:mrow><mml:mi> m </mml:mi><mml:mo> = </mml:mo><mml:mn> 18 </mml:mn></mml:mrow></mml:math></inline-formula> , we compute <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> N </mml:mi><mml:mrow><mml:mtext> scale </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and its digital root, which serves as the lookup key for the corresponding vertical constant <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> V </mml:mi><mml:mrow><mml:mtext> const </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> . Since </p>
      <disp-formula id="FD20">
        <mml:math>
          <mml:mrow>
            <mml:msub>
              <mml:mi>N</mml:mi>
              <mml:mrow>
                <mml:mtext>scale</mml:mtext>
              </mml:mrow>
            </mml:msub>
            <mml:mo>=</mml:mo>
            <mml:munder>
              <mml:munder>
                <mml:mrow>
                  <mml:mn>2</mml:mn>
                  <mml:mo>+</mml:mo>
                  <mml:mn>2</mml:mn>
                  <mml:mo>+</mml:mo>
                  <mml:mo>⋯</mml:mo>
                  <mml:mo>+</mml:mo>
                  <mml:mn>2</mml:mn>
                </mml:mrow>
                <mml:mo stretchy="true">︸</mml:mo>
              </mml:munder>
              <mml:mrow>
                <mml:mn>18</mml:mn>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mtext>terms</mml:mtext>
              </mml:mrow>
            </mml:munder>
            <mml:mo>=</mml:mo>
            <mml:mn>36</mml:mn>
            <mml:mo>,</mml:mo>
            <mml:mtext>
               
            </mml:mtext>
            <mml:mtext>
               
            </mml:mtext>
            <mml:mtext>
               
            </mml:mtext>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:msub>
                  <mml:mi>N</mml:mi>
                  <mml:mrow>
                    <mml:mtext>scale</mml:mtext>
                  </mml:mrow>
                </mml:msub>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>=</mml:mo>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:mn>36</mml:mn>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>=</mml:mo>
            <mml:mn>3</mml:mn>
            <mml:mo>+</mml:mo>
            <mml:mn>6</mml:mn>
            <mml:mo>=</mml:mo>
            <mml:mn>9</mml:mn>
            <mml:mo>,</mml:mo>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>the key is 9, and hence </p>
      <disp-formula id="FD21">
        <mml:math>
          <mml:mrow>
            <mml:mn>9</mml:mn>
            <mml:mo>↦</mml:mo>
            <mml:msub>
              <mml:mi>V</mml:mi>
              <mml:mrow>
                <mml:mtext>const</mml:mtext>
              </mml:mrow>
            </mml:msub>
            <mml:mo>,</mml:mo>
            <mml:mtext>
               
            </mml:mtext>
            <mml:mtext>
               
            </mml:mtext>
            <mml:mn>9</mml:mn>
            <mml:mo>↦</mml:mo>
            <mml:mn>808</mml:mn>
            <mml:mtext>
               
            </mml:mtext>
            <mml:mtext>
               
            </mml:mtext>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:mtext>i</mml:mtext>
                <mml:mo>.</mml:mo>
                <mml:mtext>e</mml:mtext>
                <mml:mo>.</mml:mo>
                <mml:mo>,</mml:mo>
                <mml:msub>
                  <mml:mi>V</mml:mi>
                  <mml:mrow>
                    <mml:mtext>const</mml:mtext>
                  </mml:mrow>
                </mml:msub>
                <mml:mo>=</mml:mo>
                <mml:mn>808</mml:mn>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mtext>for</mml:mtext>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mtext>key</mml:mtext>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mn>9</mml:mn>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>.</mml:mo>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>For r and q, and with horizontal pattern length <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> P </mml:mi><mml:mi> ℓ </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> = 9, we do the following, </p>
      <disp-formula id="FD22">
        <mml:math>
          <mml:mrow>
            <mml:msub>
              <mml:mi>N</mml:mi>
              <mml:mrow>
                <mml:mi>L</mml:mi>
                <mml:mo>/</mml:mo>
                <mml:mi>R</mml:mi>
              </mml:mrow>
            </mml:msub>
            <mml:mo>=</mml:mo>
            <mml:mi>m</mml:mi>
            <mml:mo>−</mml:mo>
            <mml:mn>2</mml:mn>
            <mml:mo>=</mml:mo>
            <mml:mn>18</mml:mn>
            <mml:mo>−</mml:mo>
            <mml:mn>2</mml:mn>
            <mml:mo>=</mml:mo>
            <mml:mn>16</mml:mn>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <disp-formula id="FD23">
        <mml:math>
          <mml:mrow>
            <mml:mi>r</mml:mi>
            <mml:mo>=</mml:mo>
            <mml:msub>
              <mml:mi>N</mml:mi>
              <mml:mrow>
                <mml:mi>L</mml:mi>
                <mml:mo>/</mml:mo>
                <mml:mi>R</mml:mi>
              </mml:mrow>
            </mml:msub>
            <mml:mi>mod</mml:mi>
            <mml:msub>
              <mml:mi>P</mml:mi>
              <mml:mi>ℓ</mml:mi>
            </mml:msub>
            <mml:mo>=</mml:mo>
            <mml:mn>16</mml:mn>
            <mml:mi>mod</mml:mi>
            <mml:mn>9</mml:mn>
            <mml:mo>=</mml:mo>
            <mml:mn>7</mml:mn>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <disp-formula id="FD24">
        <mml:math>
          <mml:mrow>
            <mml:mi>q</mml:mi>
            <mml:mo>=</mml:mo>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:msub>
                  <mml:mi>N</mml:mi>
                  <mml:mrow>
                    <mml:mi>L</mml:mi>
                    <mml:mo>/</mml:mo>
                    <mml:mi>R</mml:mi>
                  </mml:mrow>
                </mml:msub>
                <mml:mo>−</mml:mo>
                <mml:mi>r</mml:mi>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>÷</mml:mo>
            <mml:msub>
              <mml:mi>P</mml:mi>
              <mml:mi>ℓ</mml:mi>
            </mml:msub>
            <mml:mo>=</mml:mo>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:mn>16</mml:mn>
                <mml:mo>−</mml:mo>
                <mml:mn>7</mml:mn>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>÷</mml:mo>
            <mml:mn>9</mml:mn>
            <mml:mo>=</mml:mo>
            <mml:mn>1</mml:mn>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>So, as per theorem 4, we write, </p>
      <disp-formula id="FD25">
        <label>(9)</label>
        <mml:math>
          <mml:mtable>
            <mml:mtr>
              <mml:mtd>
                <mml:mi>T</mml:mi>
                <mml:mi>r</mml:mi>
                <mml:mi>a</mml:mi>
                <mml:mi>g</mml:mi>
                <mml:mrow>
                  <mml:mo>(</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mrow>
                        <mml:mrow>
                          <mml:mo>[</mml:mo>
                          <mml:mn>2</mml:mn>
                          <mml:mo>]</mml:mo>
                        </mml:mrow>
                      </mml:mrow>
                      <mml:mrow>
                        <mml:mn>18</mml:mn>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>)</mml:mo>
                </mml:mrow>
                <mml:mo>=</mml:mo>
                <mml:msub>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:mn>246913580</mml:mn>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                  <mml:mrow>
                    <mml:mn>9</mml:mn>
                    <mml:mrow>
                      <mml:mo>(</mml:mo>
                      <mml:mn>1</mml:mn>
                      <mml:mo>)</mml:mo>
                    </mml:mrow>
                  </mml:mrow>
                </mml:msub>
                <mml:mo>+</mml:mo>
                <mml:msub>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:mn>2469135</mml:mn>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                  <mml:mn>7</mml:mn>
                </mml:msub>
                <mml:mo>+</mml:mo>
                <mml:mrow>
                  <mml:mo>[</mml:mo>
                  <mml:mrow>
                    <mml:msub>
                      <mml:mi>V</mml:mi>
                      <mml:mrow>
                        <mml:mi>c</mml:mi>
                        <mml:mi>o</mml:mi>
                        <mml:mi>n</mml:mi>
                        <mml:mi>s</mml:mi>
                        <mml:mi>t</mml:mi>
                        <mml:mo>,</mml:mo>
                        <mml:mn>9</mml:mn>
                      </mml:mrow>
                    </mml:msub>
                  </mml:mrow>
                  <mml:mo>]</mml:mo>
                </mml:mrow>
              </mml:mtd>
            </mml:mtr>
            <mml:mtr>
              <mml:mtd>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mtext>
                   
                </mml:mtext>
                <mml:mo>+</mml:mo>
                <mml:msub>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:mn>6419753</mml:mn>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                  <mml:mn>7</mml:mn>
                </mml:msub>
                <mml:mo>+</mml:mo>
                <mml:msub>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:mn>086419753</mml:mn>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                  <mml:mrow>
                    <mml:mn>9</mml:mn>
                    <mml:mrow>
                      <mml:mo>(</mml:mo>
                      <mml:mn>1</mml:mn>
                      <mml:mo>)</mml:mo>
                    </mml:mrow>
                  </mml:mrow>
                </mml:msub>
              </mml:mtd>
            </mml:mtr>
          </mml:mtable>
        </mml:math>
      </disp-formula>
      <p>So, </p>
      <disp-formula id="FD26">
        <label>(10)</label>
        <mml:math>
          <mml:mrow>
            <mml:mi>T</mml:mi>
            <mml:mi>r</mml:mi>
            <mml:mi>a</mml:mi>
            <mml:mi>g</mml:mi>
            <mml:mrow>
              <mml:mo>(</mml:mo>
              <mml:mrow>
                <mml:msub>
                  <mml:mrow>
                    <mml:mrow>
                      <mml:mo>[</mml:mo>
                      <mml:mn>2</mml:mn>
                      <mml:mo>]</mml:mo>
                    </mml:mrow>
                  </mml:mrow>
                  <mml:mrow>
                    <mml:mn>18</mml:mn>
                  </mml:mrow>
                </mml:msub>
              </mml:mrow>
              <mml:mo>)</mml:mo>
            </mml:mrow>
            <mml:mo>=</mml:mo>
            <mml:mn>24691358024691358086419753086419753</mml:mn>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>The triangular number <inline-formula><mml:math><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 2 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn> 18 </mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> exactly matches the one calculated using <inline-formula><mml:math display="inline"><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub><mml:mo> = </mml:mo><mml:mrow><mml:mrow><mml:mi> n </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> n </mml:mi><mml:mo> + </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow><mml:mo> / </mml:mo><mml:mn> 2 </mml:mn></mml:mrow></mml:mrow></mml:math></inline-formula> the formula. The difference in both techniques is that using this <italic>triangular</italic><italic>number</italic><italic>matrix</italic><italic>system</italic>, we are not multiplying large digits but instead writing the solution directly with patterns and constants.</p>
      <p>Similarly, based on Supplementary <bold>Figures S2-S5</bold> one can write the triangular number from theorem 4 using the constants and patterns mentioned in each table.</p>
      <p>For reproducibility and demonstration purposes, the calculator source code is available in the project repository at <ext-link ext-link-type="uri" xlink:href="https://github.com/matrixcoders-io/triangular-number-matrix">https://github.com/matrixcoders-io/triangular-number-matrix</ext-link>. An online demo version of the calculator, which will continue to receive gradual feature enhancements, is also available at <ext-link ext-link-type="uri" xlink:href="https://matrixcoders.io/tnm-calculator">https://matrixcoders.io/tnm-calculator</ext-link>.</p>
      <p>As depicted in the visual calculator example, <xref ref-type="fig" rid="fig4">Figure 4</xref> shows the Triangular Number Matrix calculation together with the corresponding vertical and horizontal patterns for repdigit 1, using an incremental triangular value of 44 derived from the triangular number corresponding to the repdigit <inline-formula><mml:math><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 1 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn> 1000 </mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> .</p>
      <p>The interface renders the assembled triangular number in Pyramid view, with the vertical pattern constant <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> V </mml:mi><mml:mrow><mml:mtext> const </mml:mtext><mml:mo> , </mml:mo><mml:mn> 8 </mml:mn></mml:mrow></mml:msub><mml:mo> = </mml:mo><mml:mn> 993 </mml:mn></mml:mrow></mml:math></inline-formula> at the apex and horizontal patterns <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> L </mml:mi><mml:mrow><mml:mtext> const </mml:mtext></mml:mrow></mml:msub><mml:mo> = </mml:mo><mml:mn> 617283950 </mml:mn></mml:mrow></mml:math></inline-formula> (purple) and <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> const </mml:mtext></mml:mrow></mml:msub><mml:mo> = </mml:mo><mml:mn> 049382716 </mml:mn></mml:mrow></mml:math></inline-formula> (amber) tiling outward symmetrically. An additive increment of 44 produces the non-repdigit value <inline-formula><mml:math><mml:mrow><mml:mi> T </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 1 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn> 1000 </mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo> ) </mml:mo></mml:mrow><mml:mo> + </mml:mo><mml:mn> 44 </mml:mn></mml:mrow></mml:math></inline-formula> ; character-level fuzzy-match highlighting isolates the affected digit positions in green while undisturbed tiles retain full color. Testing with increments up to +1000 confirms that the deviation is strictly confined to the trailing digits of the left horizontal pattern, the vertical constant, and the trailing digits of the right horizontal pattern, with a symmetric correlation between the left and right boundary changes indicating a shared carry propagation rule. This boundary-confined mutation is one method being explored to extend the framework to non-repdigit triangular numbers, whereby the full deviation may be characterized as a compact correction layer over the nearest repdigit.</p>
      <fig id="fig5">
        <label>Figure 5</label>
        <graphic xlink:href="https://html.scirp.org/file/1101176-rId195.jpeg?20260515035436" />
      </fig>
      <p><bold>Figure 4.</bold> Triangular Number Matrix Calculator, showing the associated vertical and horizontal patterns, the repdigit length and family, color-coded changes as the incremental values vary, calculation statistics, the digital root, and related computational details.</p>
      <p>Beyond the pattern visualization shown, the calculator provides multiple computation backends, persistent benchmarking across sessions, a pre-generated input library up to 10<sup>10</sup> digits, and an integrated test suite, run history, and leaderboard; full details are available in the above mentioned repository.</p>
    </sec>
    <sec id="sec4">
      <title>
        4. Benchmark Evaluation of Matrix and Direct
        <inline-formula>
          <mml:math>
            <mml:mrow>
              <mml:msub>
                <mml:mi>T</mml:mi>
                <mml:mi>n</mml:mi>
              </mml:msub>
            </mml:mrow>
          </mml:math>
        </inline-formula>
        Methods
      </title>
      <p>To evaluate the practical performance of the proposed system, this section compares the <italic>Direct</italic><inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula><italic>formula</italic> implementations (sympy and gmpy2) against the standard <italic>Triangular</italic><italic>Number</italic><italic>Matrix</italic> method, tri_matrix. The purpose of this comparison is not to restate the mathematical derivation already established in earlier sections, but to measure how the different approaches behave as repdigit input sizes increase from millions of digits to billions of digits.</p>
      <p>The benchmark results are organized into three parts. <xref ref-type="fig" rid="fig4">Figure 4</xref> shows a representative large-output run for the matrix method, and <xref ref-type="fig" rid="fig5">Figure 5</xref> summarizes the benchmark comparison set. Benchmark Section 1 compares sympy, gmpy2, and tri_matrix for repdigit inputs up to 100 million digits. Benchmark Section 2 extends the comparison into the billion-digit range and focuses on gmpy2 and tri_matrix, since sympy no longer remains relevant at that scale. Benchmark Section 3 introduces three additional matrix-family techniques—tri_matrix_memory, tri_matrix_stream, and tri_matrix_shortform—which were developed to address the practical difficulties of handling extremely large expanded outputs. In the benchmark tables, notation such as &lt;5, &lt;10, and &lt;15 denotes measured times that remained below the indicated threshold in seconds, while N/A denotes values that were not available or were not produced under the tested conditions.</p>
      <fig id="fig6">
        <label>Figure 6</label>
        <graphic xlink:href="https://html.scirp.org/file/1101176-rId200.jpeg?20260515035437" />
      </fig>
      <p><bold>Figure 5.</bold> Runtime benchmarks comparing the Triangular Number Matrix method with the conventional formula <inline-formula><mml:math display="inline"><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub><mml:mo> = </mml:mo><mml:mrow><mml:mrow><mml:mi> n </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> n </mml:mi><mml:mo> + </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow><mml:mo> / </mml:mo><mml:mn> 2 </mml:mn></mml:mrow></mml:mrow></mml:math></inline-formula> (implemented using sympy and gmpy2). Tests include repdigit inputs and non-repeating inputs constructed by incrementally extending repdigit-based triangular-number computations.</p>
      <p>The first two sections show that the standard tri_matrix method maintains a strong advantage over the Direct <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> formula as input sizes increase. In Section 1, the benchmark also includes <italic>Consecutive</italic><inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula><italic>Count</italic> to show that, after calculating repdigit triangular numbers, the final non-repeating value can be extended through the additive triangular-number recurrence <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub><mml:mo> = </mml:mo><mml:msub><mml:mi> T </mml:mi><mml:mrow><mml:mi> n </mml:mi><mml:mo> − </mml:mo><mml:mn> 1 </mml:mn></mml:mrow></mml:msub><mml:mo> + </mml:mo><mml:mi> n </mml:mi></mml:mrow></mml:math></inline-formula> , that is, by successive summation of consecutive natural numbers. Section 2 focuses on billion-digit comparisons and also reflects an important implementation difference: for gmpy2, <italic>Total</italic><italic>Time</italic><italic>in</italic><italic>Seconds</italic> does not fully include the file write/output stage, since the computed big integer must still be converted back to a string and written to disk, a step that became increasingly difficult at that scale. Accordingly, the &gt; sign for some gmpy2 totals indicates that the full end-to-end runtime would be larger once file output is completed. At the same time, the results reveal a practical boundary at very large scales: the difficulty is not only generating the triangular number itself, but also managing the memory demands of its expanded representation on limited hardware. For that reason, the third benchmark section is essential. It introduces matrix-family techniques that preserve the advantages of the Triangular Number Matrix system while adapting it to different output, storage, and access requirements.</p>
      <p>In Benchmark Section 3, test runs do not measure output generation alone. They also include <italic>window</italic><italic>extraction</italic>, meaning the retrieval of a local slice of the expanded triangular-number output by specifying a start position and an end position, or equivalently a position and length. These windows are generated randomly during the benchmark run, so the measured results reflect both number generation and localized extraction behavior rather than full-output construction alone. In the benchmark configuration, each run performs a total of 100,000 random window extractions, with extraction ranges defined in advance by index intervals such as [466,956, 467,710], [24,807,113, 24,807,238], and [48,436,213, 48,436,563]. Thus, Benchmark Section 3 evaluates not only whether the triangular-number output can be generated, but also how effectively useful local segments can be accessed during the same workflow.</p>
      <p>The first of these techniques is tri_matrix_memory, which generates the expanded triangular number in memory without writing the result to disk. This makes it suitable for transient workflows in which the number must be produced quickly for immediate use but does not need to be stored permanently. Such a mode is useful for session-oriented generation, temporary response construction, or other in-memory operations where persistence is unnecessary.</p>
      <p>The second is tri_matrix_stream, which is intended for cases where the expanded triangular number must be preserved as a stored artifact. Instead of holding the full output in memory, it writes the result to disk incrementally in chunks, thereby reducing memory pressure during generation. This makes it suitable for producing very large expanded catalogs that can later be accessed directly by position. In this setting, selected regions of the catalog may be retrieved through window extraction, where only a local segment is read instead of the full file. In representative access tests, the retrieved windows were randomly distributed over a large index range, with random window sizes between 100 and 200 bytes/characters and a total of 1,000,000 queries. Since 149,950,819 bytes were read overall, the average retrieved window size was approximately 149.95 bytes/characters per query. This is important because it shows that the measured access rate reflects repeated small random retrievals rather than sequential full-file scanning. The same design also suggests a broader storage role for streamed catalogs, since indexed regions may later be retrieved efficiently and, in some applications, selectively reused as structured storage locations.</p>
      <p>The third technique is tri_matrix_shortform. This method first functions as a standalone short-form input/output system: instead of requiring a fully expanded repdigit, it accepts a compact descriptor and can return either short-form or expanded output, depending on the chosen mode. This substantially reduces the overhead associated with extremely large inputs when full expansion is unnecessary. At the same time, tri_matrix_shortform also serves as an enhancement layer for the other matrix methods. Although benchmarked independently, the same short-form logic could later be integrated with tri_matrix_memory and tri_matrix_stream so that both methods would benefit from reduced input/output costs whenever compressed representations are acceptable.</p>
      <p>Taken together, the three benchmark sections show that the Triangular Number Matrix system is not only fast in comparison with the Direct <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> formula, but also adaptable to multiple operational settings. The standard tri_matrix method establishes the baseline computational advantage, while tri_matrix_memory, tri_matrix_stream, and tri_matrix_shortform show how the same mathematical framework can support transient in-memory generation, persistent large-catalog construction, and compact short-form access. This flexibility is important for the later TLV discussion, where the usefulness of the method depends not only on generation speed, but also on how efficiently large triangular-number structures can be represented, stored, and selectively retrieved.</p>
    </sec>
    <sec id="sec5">
      <title>5. Multi-Base Triangular-Number Calculation and Non-Repdigit Anchors</title>
      <sec id="sec5dot1">
        <title>5.1. Triangular Number of Non-Repdigits Using Shortcut Anchors</title>
        <p>In previous sections, we discussed the ability to write the triangular number of a repdigit using constants and patterns. This raises a natural question: can the same idea be used for non-repetitive digits? The answer is yes. One approach is to use a shortcut anchor, or multiple shortcut anchors, based on a nearby repdigit in order to reduce the direct computation required.</p>
        <p>For a lower anchor <inline-formula><mml:math><mml:mi> x </mml:mi></mml:math></inline-formula> and an offset <inline-formula><mml:math><mml:mrow><mml:mi> y </mml:mi><mml:mo> ≥ </mml:mo><mml:mn> 0 </mml:mn></mml:mrow></mml:math></inline-formula> , we use the identity </p>
        <disp-formula id="FD27">
          <mml:math>
            <mml:mrow>
              <mml:mtext>Trag</mml:mtext>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mi>x</mml:mi>
                  <mml:mo>+</mml:mo>
                  <mml:mi>y</mml:mi>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>=</mml:mo>
              <mml:mtext>Trag</mml:mtext>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mi>x</mml:mi>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>+</mml:mo>
              <mml:mi>x</mml:mi>
              <mml:mi>y</mml:mi>
              <mml:mo>+</mml:mo>
              <mml:mtext>Trag</mml:mtext>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mi>y</mml:mi>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>,</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>where </p>
        <disp-formula id="FD28">
          <mml:math>
            <mml:mrow>
              <mml:mtext>Trag</mml:mtext>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mi>x</mml:mi>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>=</mml:mo>
              <mml:mfrac>
                <mml:mrow>
                  <mml:mi>x</mml:mi>
                  <mml:mrow>
                    <mml:mo>(</mml:mo>
                    <mml:mrow>
                      <mml:mi>x</mml:mi>
                      <mml:mo>+</mml:mo>
                      <mml:mn>1</mml:mn>
                    </mml:mrow>
                    <mml:mo>)</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mn>2</mml:mn>
              </mml:mfrac>
              <mml:mo>.</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>Using this identity, a known triangular number can serve as an <italic>anchor</italic> for computing a nearby value. If <inline-formula><mml:math><mml:mi> x </mml:mi></mml:math></inline-formula> is chosen as a convenient anchor (for example, the nearest repdigit), then the triangular number of <inline-formula><mml:math><mml:mrow><mml:mi> x </mml:mi><mml:mo> + </mml:mo><mml:mi> y </mml:mi></mml:mrow></mml:math></inline-formula> can be obtained by combining the anchor value <inline-formula><mml:math><mml:mrow><mml:mtext> Trag </mml:mtext><mml:mrow><mml:mo> ( </mml:mo><mml:mi> x </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> , the linear term <inline-formula><mml:math><mml:mrow><mml:mi> x </mml:mi><mml:mi> y </mml:mi></mml:mrow></mml:math></inline-formula> , and the smaller triangular correction <inline-formula><mml:math><mml:mrow><mml:mtext> Trag </mml:mtext><mml:mrow><mml:mo> ( </mml:mo><mml:mi> y </mml:mi><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> . When <inline-formula><mml:math><mml:mi> y </mml:mi></mml:math></inline-formula> is small, the cost of the remaining direct computation is correspondingly reduced.</p>
        <p>For example, if our anchor triangular number for n = 66 is 2211. What if we want to calculate the value for <italic>n</italic> = 70 using this novel approach? It would require the following steps: 70 − 66 = 4, hence, 2211 + (66 × 4 + <bold>Trag</bold>(4)) = 2211 + (264 + 10) = 2485.</p>
        <p>In the running example, the remainder is 4. In general, if the remainder is multi-digit, we iterate the same reduction procedure until a single-digit remainder is obtained. <bold>Table 2</bold> illustrates a case that reduces to a single-digit remainder immediately, while <bold>Table 3</bold> shows a case that requires iteration.</p>
        <p><bold>Table 2</bold><bold>.</bold> Example A: the remainder reduces to a single digit after one sub-anchor step.</p>
        <table-wrap id="tbl2">
          <label>Table 2</label>
          <table>
            <tbody>
              <tr>
                <td>
                  <bold>Step</bold>
                </td>
                <td>
                  <bold>Example</bold>
                  <bold>A</bold>
                  <bold>(single-digit</bold>
                  <bold>remainder)</bold>
                </td>
              </tr>
              <tr>
                <td>1</td>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mi>n</mml:mi>
                        <mml:mo>=</mml:mo>
                        <mml:mn>7000</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  . Anchor at 6666:
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mn>7000</mml:mn>
                        <mml:mo>−</mml:mo>
                        <mml:mn>6666</mml:mn>
                        <mml:mo>=</mml:mo>
                        <mml:mn>334</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  . Sub-anchor at 333:
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mn>334</mml:mn>
                        <mml:mo>−</mml:mo>
                        <mml:mn>333</mml:mn>
                        <mml:mo>=</mml:mo>
                        <mml:mn>1</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  (single digit).
                </td>
              </tr>
              <tr>
                <td>2</td>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>334</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>=</mml:mo>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>333</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>+</mml:mo>
                        <mml:mn>333</mml:mn>
                        <mml:mo>⋅</mml:mo>
                        <mml:mn>1</mml:mn>
                        <mml:mo>+</mml:mo>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mn>1</mml:mn>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>=</mml:mo>
                        <mml:mn>55611</mml:mn>
                        <mml:mo>+</mml:mo>
                        <mml:mn>333</mml:mn>
                        <mml:mo>+</mml:mo>
                        <mml:mn>1</mml:mn>
                        <mml:mo>=</mml:mo>
                        <mml:mn>55945</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  .
                </td>
              </tr>
              <tr>
                <td rowspan="3">3</td>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>6666</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>=</mml:mo>
                        <mml:mn>22221111</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  ,
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mn>6666</mml:mn>
                        <mml:mo>⋅</mml:mo>
                        <mml:mn>334</mml:mn>
                        <mml:mo>=</mml:mo>
                        <mml:mn>2226444</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  .
                </td>
              </tr>
              <tr>
                <td>
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mrow>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>7000</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>=</mml:mo>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>6666</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>+</mml:mo>
                        <mml:mn>6666</mml:mn>
                        <mml:mo>⋅</mml:mo>
                        <mml:mn>334</mml:mn>
                        <mml:mo>+</mml:mo>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>334</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mo>=</mml:mo>
                        <mml:mn>22221111</mml:mn>
                        <mml:mo>+</mml:mo>
                        <mml:mn>2226444</mml:mn>
                        <mml:mo>+</mml:mo>
                        <mml:mn>55945</mml:mn>
                        <mml:mo>=</mml:mo>
                        <mml:mn>24503500.</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
            </tbody>
          </table>
        </table-wrap>
        <p><bold>Table 3</bold><bold>.</bold> Example B: the remainder is multi-digit, so the same procedure is iterated until a single-digit remainder is reached.</p>
        <table-wrap id="tbl3">
          <label>Table 3</label>
          <table>
            <tbody>
              <tr>
                <td>
                  <bold>Step</bold>
                </td>
                <td>
                  <bold>Example</bold>
                  <bold>B</bold>
                  <bold>(multi-digit</bold>
                  <bold>remainder;</bold>
                  <bold>iterate</bold>
                  <bold>until</bold>
                  <bold>single</bold>
                  <bold>digit)</bold>
                </td>
              </tr>
              <tr>
                <td>1</td>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mi>n</mml:mi>
                        <mml:mo>=</mml:mo>
                        <mml:mn>4101</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  . Anchor at 3333:
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mn>4101</mml:mn>
                        <mml:mo>−</mml:mo>
                        <mml:mn>3333</mml:mn>
                        <mml:mo>=</mml:mo>
                        <mml:mn>768</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  (multi-digit remainder).
                </td>
              </tr>
              <tr>
                <td rowspan="4">2</td>
                <td>
                  Iterate to compute
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>768</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  :
                </td>
              </tr>
              <tr>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>768</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>=</mml:mo>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>666</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>+</mml:mo>
                        <mml:mn>666</mml:mn>
                        <mml:mo>⋅</mml:mo>
                        <mml:mn>102</mml:mn>
                        <mml:mo>+</mml:mo>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>102</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>102</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>=</mml:mo>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>99</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>+</mml:mo>
                        <mml:mn>99</mml:mn>
                        <mml:mo>⋅</mml:mo>
                        <mml:mn>3</mml:mn>
                        <mml:mo>+</mml:mo>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mn>3</mml:mn>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>=</mml:mo>
                        <mml:mn>4950</mml:mn>
                        <mml:mo>+</mml:mo>
                        <mml:mn>297</mml:mn>
                        <mml:mo>+</mml:mo>
                        <mml:mn>6</mml:mn>
                        <mml:mo>=</mml:mo>
                        <mml:mn>5253</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mo>⇒</mml:mo>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>768</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>=</mml:mo>
                        <mml:mn>222111</mml:mn>
                        <mml:mo>+</mml:mo>
                        <mml:mn>67932</mml:mn>
                        <mml:mo>+</mml:mo>
                        <mml:mn>5253</mml:mn>
                        <mml:mo>=</mml:mo>
                        <mml:mn>295296</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  .
                </td>
              </tr>
              <tr>
                <td rowspan="3">3</td>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>3333</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>=</mml:mo>
                        <mml:mn>5556111</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  ,
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mn>3333</mml:mn>
                        <mml:mo>⋅</mml:mo>
                        <mml:mn>768</mml:mn>
                        <mml:mo>=</mml:mo>
                        <mml:mn>2559744</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  .
                </td>
              </tr>
              <tr>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>4101</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>=</mml:mo>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>3333</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>+</mml:mo>
                        <mml:mn>3333</mml:mn>
                        <mml:mo>⋅</mml:mo>
                        <mml:mn>768</mml:mn>
                        <mml:mo>+</mml:mo>
                        <mml:mi>T</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>768</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mo>=</mml:mo>
                        <mml:mn>5556111</mml:mn>
                        <mml:mo>+</mml:mo>
                        <mml:mn>2559744</mml:mn>
                        <mml:mo>+</mml:mo>
                        <mml:mn>295296</mml:mn>
                        <mml:mo>=</mml:mo>
                        <mml:mn>8411151</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  .
                </td>
              </tr>
            </tbody>
          </table>
        </table-wrap>
        <p>This step completes the procedure for computing triangular numbers of non-repeating digit sequences using shortcut anchor(s). The approach is amenable to parallelization: for example, in Example B (<inline-formula><mml:math><mml:mrow><mml:mi> n </mml:mi><mml:mo> = </mml:mo><mml:mn> 4101 </mml:mn></mml:mrow></mml:math></inline-formula> ), one can first enumerate the multi-digit remainders generated during the anchor reduction, compute the corresponding triangular components independently, and then aggregate the partial results as in Steps 1 - 2 of Example B. A quantitative evaluation of the runtime benefits of this parallel strategy is left for future work.</p>
      </sec>
      <sec id="sec5dot2">
        <title>5.2. Triangular Numbers of Non-Repdigits (Multi-Base Calculator)</title>
        <p>So far in the paper, we have learnt to effectively write the triangular number of any repetitive digit using constants and patterns. However, repdigits are not the end of the story but a step towards a new way of calculating triangular numbers. The real challenge would be to write the triangular number of any random non-repetitive digit. For the answer to this evident question, we have tried to give using our <italic>change</italic><italic>of</italic><italic>base</italic><italic>theory</italic> in <bold>Table 4</bold>. </p>
        <p>The premise of the idea is that every repdigit’s triangular number in other base systems represents a different but also triangular number in the base 10 system. For example, in the base-7 system, where the highest number is 6, we can easily observe these phenomena. Here are the triangular numbers in base 7 and their corresponding base-10 conversions for the number 6. Let’s look at <bold>Table 4</bold>. Every repdigit of 6 in base-7 represents a non-rep triangular number in base-10. These non-repdigits in base-10, can easily be generated with a logarithm as, </p>
        <p><bold>Table 4</bold><bold>.</bold> Triangular number series of repdigit number of 6 in base-7 with corresponding non-repdigits of them in base-10.</p>
        <table-wrap id="tbl4">
          <label>Table 4</label>
          <table>
            <tbody>
              <tr>
                <td>
                  <bold>Number</bold>
                  <bold>(</bold>
                  <bold>base-7)</bold>
                </td>
                <td>
                  <bold>Trag</bold>
                  <bold>number</bold>
                  (
                  <bold>base-7)</bold>
                </td>
                <td>
                  <bold>Number</bold>
                  (
                  <bold>base-10)</bold>
                </td>
                <td>
                  <bold>Trag</bold>
                  <bold>number</bold>
                  (
                  <bold>base-10)</bold>
                </td>
              </tr>
              <tr>
                <td>66</td>
                <td>3300</td>
                <td>48</td>
                <td>1176</td>
              </tr>
              <tr>
                <td>666</td>
                <td>333000</td>
                <td>342</td>
                <td>58653</td>
              </tr>
              <tr>
                <td>6666</td>
                <td>33330000</td>
                <td>2400</td>
                <td>2881200</td>
              </tr>
              <tr>
                <td>66666</td>
                <td>3333300000</td>
                <td>16806</td>
                <td>141229221</td>
              </tr>
              <tr>
                <td>666666</td>
                <td>333333000000</td>
                <td>117648</td>
                <td>6920584776</td>
              </tr>
              <tr>
                <td>6666666</td>
                <td>33333330000000</td>
                <td>823542</td>
                <td>339111124653</td>
              </tr>
            </tbody>
          </table>
        </table-wrap>
        <p>48 next number is 342 since: 48 + 6 * 7 * 7 = 342 342 next number is 2400 since: 342 + 6 * 7 * 7 * 7 = 2400 2400 next number is 16,806 since: 2400 + 6 * 7 * 7 * 7 * 7 = 16,806 </p>
        <p>Now let’s look at the triangular numbers of these non-repdigits. The triangular number of 48 in the base 10 system corresponds to 3300 in the base 7 system. We must convert the base 7 value (3300) into base 10, yielding 1176. This pattern persists; to determine the triangle number for 342, we convert the base 7 value of 333000 to base 10, yielding a triangular number of 58,653 for 342. The same applies to 2400, as evidenced by <bold>Table 4</bold>.</p>
        <p>The base 36 system produces distinct triangular numbers using patterns that do not exist in any other base system, since the base 36 method generates different numerical sets than those produced by base 7 or base 6. In all numeral systems, we can produce unique numbers that transform into base 10 non-repeating (or repeating) digit triangular numbers. This underscores a significant point that non-repdigit values can serve as anchor points in the same manner as repdigit values in the base-10 system. For instance, the digits 48, 342, 2400, 16,806, 117,648, and 823,542 correspond to the triangular numbers 1176, 58653, 2,881,200, 141,229,221, 6,920,584,776, and 339,111,124,653, respectively. These triangular numbers, akin to repeated digits demonstrated earlier with the calculator, allow for the application of analogous reasoning.</p>
        <p>To compute the triangle number for 49, we can utilise the known triangular number for 48, which is 1176. We only need to calculate 1176 + 49 = 1225 and continue accordingly. This practice expands a calculator to function not just with repdigits but also to utilise non-repdigit triangular numbers as anchors to streamline the system. Using this approach, we can speed up the calculations process since now we have more anchors than just repdigits and can more granularity access the <italic>Triangular</italic><italic>Matrix</italic><italic>System</italic> with more shortcuts.</p>
        <p>This could be done by parallelization of the conversion process by breaking the big n-th base digit into smaller chunks, paralleling the big digit conversion, and finally adding up the sum. For example, let’s take the anchor number from the table of base 6 number 333000 and break it into three chunks of 33, 00, 00, and convert these as a separate parallel task. In the base 10 system, this can be represented as:</p>
        <p>For Chunk 1 (33 base 6): </p>
        <disp-formula id="FD29">
          <mml:math>
            <mml:mrow>
              <mml:mo>=</mml:mo>
              <mml:mn>3</mml:mn>
              <mml:mo>×</mml:mo>
              <mml:msup>
                <mml:mn>6</mml:mn>
                <mml:mn>1</mml:mn>
              </mml:msup>
              <mml:mo>+</mml:mo>
              <mml:mn>3</mml:mn>
              <mml:mo>×</mml:mo>
              <mml:msup>
                <mml:mn>6</mml:mn>
                <mml:mn>0</mml:mn>
              </mml:msup>
              <mml:mo>=</mml:mo>
              <mml:mn>3</mml:mn>
              <mml:mo>×</mml:mo>
              <mml:mn>6</mml:mn>
              <mml:mo>+</mml:mo>
              <mml:mn>3</mml:mn>
              <mml:mo>×</mml:mo>
              <mml:mn>1</mml:mn>
              <mml:mo>=</mml:mo>
              <mml:mn>18</mml:mn>
              <mml:mo>+</mml:mo>
              <mml:mn>3</mml:mn>
              <mml:mo>=</mml:mo>
              <mml:mn>21</mml:mn>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mtext>base</mml:mtext>
                  <mml:mn>10</mml:mn>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>For Chunk 2 (30 base 6): </p>
        <disp-formula id="FD30">
          <mml:math>
            <mml:mrow>
              <mml:mo>=</mml:mo>
              <mml:mn>3</mml:mn>
              <mml:mo>×</mml:mo>
              <mml:msup>
                <mml:mn>6</mml:mn>
                <mml:mn>1</mml:mn>
              </mml:msup>
              <mml:mo>+</mml:mo>
              <mml:mn>0</mml:mn>
              <mml:mo>×</mml:mo>
              <mml:msup>
                <mml:mn>6</mml:mn>
                <mml:mn>0</mml:mn>
              </mml:msup>
              <mml:mo>=</mml:mo>
              <mml:mn>3</mml:mn>
              <mml:mo>×</mml:mo>
              <mml:mn>6</mml:mn>
              <mml:mo>+</mml:mo>
              <mml:mn>0</mml:mn>
              <mml:mo>=</mml:mo>
              <mml:mn>18</mml:mn>
              <mml:mo>+</mml:mo>
              <mml:mn>0</mml:mn>
              <mml:mo>=</mml:mo>
              <mml:mn>18</mml:mn>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mtext>base</mml:mtext>
                  <mml:mn>10</mml:mn>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>For Chunk 3 (00 base 6): </p>
        <disp-formula id="FD31">
          <mml:math>
            <mml:mrow>
              <mml:mo>=</mml:mo>
              <mml:mn>0</mml:mn>
              <mml:mo>×</mml:mo>
              <mml:msup>
                <mml:mn>6</mml:mn>
                <mml:mn>1</mml:mn>
              </mml:msup>
              <mml:mo>+</mml:mo>
              <mml:mn>0</mml:mn>
              <mml:mo>×</mml:mo>
              <mml:msup>
                <mml:mn>6</mml:mn>
                <mml:mn>0</mml:mn>
              </mml:msup>
              <mml:mo>=</mml:mo>
              <mml:mn>0</mml:mn>
              <mml:mo>+</mml:mo>
              <mml:mn>0</mml:mn>
              <mml:mo>=</mml:mo>
              <mml:mn>0</mml:mn>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mtext>base</mml:mtext>
                  <mml:mn>10</mml:mn>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>And the final formula is: </p>
        <disp-formula id="FD32">
          <mml:math>
            <mml:mrow>
              <mml:mn>21</mml:mn>
              <mml:mo>×</mml:mo>
              <mml:msup>
                <mml:mn>6</mml:mn>
                <mml:mn>4</mml:mn>
              </mml:msup>
              <mml:mo>+</mml:mo>
              <mml:mn>18</mml:mn>
              <mml:mo>×</mml:mo>
              <mml:msup>
                <mml:mn>6</mml:mn>
                <mml:mn>2</mml:mn>
              </mml:msup>
              <mml:mo>+</mml:mo>
              <mml:mn>0</mml:mn>
              <mml:mo>×</mml:mo>
              <mml:msup>
                <mml:mn>6</mml:mn>
                <mml:mn>0</mml:mn>
              </mml:msup>
              <mml:mo>=</mml:mo>
              <mml:mn>21</mml:mn>
              <mml:mo>×</mml:mo>
              <mml:mn>1296</mml:mn>
              <mml:mo>+</mml:mo>
              <mml:mn>18</mml:mn>
              <mml:mo>×</mml:mo>
              <mml:mn>36</mml:mn>
              <mml:mo>+</mml:mo>
              <mml:mn>0</mml:mn>
              <mml:mo>=</mml:mo>
              <mml:mn>27864</mml:mn>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p><bold>Multi-Base</bold><bold>Anchors</bold> The following example demonstrates how a multi-base framework can be used to locate the closest anchor point for a non-repdigit number. <xref ref-type="fig" rid="fig6">Figure 6</xref> visualizes this comparison. </p>
        <fig id="fig7">
          <label>Figure 7</label>
          <graphic xlink:href="https://html.scirp.org/file/1101176-rId277.jpeg?20260515035441" />
        </fig>
        <p><bold>Figure 6.</bold> Multi-base anchors for locating the closest repdigit anchor point to a target non-repdigit number in base 10. The target value 5760 is highlighted in red, the closest anchor is highlighted in green, and the corresponding base-10 anchors are highlighted in blue.</p>
        <p><xref ref-type="fig" rid="fig6">Figure 6</xref> illustrates the process of locating the closest anchor point for the target number <bold>5760</bold>. In base 10, this number lies between the anchor points <bold>5555</bold> and <bold>6666</bold>. However, by extending the search to repdigit anchors from nearby bases—such as base-<bold>9</bold>: <bold>8888</bold>, base-<bold>9</bold>: <bold>7777</bold>, base-<bold>11</bold>: <bold>4444</bold>, and base-<bold>12</bold>: <bold>3333</bold>—it is possible to identify anchors that are even closer when converted into base 10.</p>
        <p>This makes it possible to refine the search for the nearest anchor point to <bold>5760</bold> by comparing the corresponding base-10 values obtained from repdigits in different bases. In <xref ref-type="fig" rid="fig6">Figure 6</xref>, the closest anchor point is <bold>5740</bold>, which gives a distance of −<bold>20</bold> (<bold>5740</bold> − <bold>5760</bold> = −<bold>20</bold>). This is the smallest absolute distance shown in the table, and it is obtained from the base-<bold>9</bold> repdigit anchor after conversion into base 10. </p>
        <p><bold>Table 5</bold><bold>.</bold> Base-4 patterns as base-10 triangular anchors.</p>
        <table-wrap id="tbl5">
          <label>Table 5</label>
          <table>
            <tbody>
              <tr>
                <td>
                  <bold>[4</bold>
                  <bold>Base</bold>
                  ]
                </td>
                <td>
                  <bold>[10</bold>
                  <bold>Base</bold>
                  ]
                </td>
              </tr>
              <tr>
                <td>1320 = 33</td>
                <td>15 = 120</td>
              </tr>
              <tr>
                <td>133200 = 333</td>
                <td>63 = 2016</td>
              </tr>
              <tr>
                <td>13332000 = 3333</td>
                <td>255 = 32640</td>
              </tr>
              <tr>
                <td>1333320000 = 33333</td>
                <td>1023 = 523776</td>
              </tr>
              <tr>
                <td>133333200000 = 333333</td>
                <td>4095 = 8386560</td>
              </tr>
              <tr>
                <td>13333332000000 = 3333333</td>
                <td>16383 = 134209536</td>
              </tr>
              <tr>
                <td>1333333320000000 = 33333333</td>
                <td>65535 = 2147450880</td>
              </tr>
              <tr>
                <td>133333333200000000 = 333333333</td>
                <td>262143 = 34359607296</td>
              </tr>
              <tr>
                <td>13333333332000000000 = 3333333333</td>
                <td>1048575 = 549755289600</td>
              </tr>
            </tbody>
          </table>
        </table-wrap>
        <p><bold>Table 5</bold> illustrates how a repdigit triangular-number pattern in base 4 can convert into base-10 non-repdigit anchors and their corresponding triangular numbers. To test the reliability of this process, bases 3 through 36 were examined to determine whether, for each ascending repdigit, the corresponding triangular number—after conversion to base 10—would remain a triangular number in base 10. For each base, the first 100 ascending repdigits were tested for every valid digit (for example, in base 2, digits 1 and 2 were each tested across their first 100 repdigits). The results showed that the corresponding triangular number of every tested repdigit remained triangular in base 10, supporting the reliability of the process illustrated in <xref ref-type="fig" rid="fig6">Figure 6</xref>.</p>
        <p><bold>Note:</bold> A remaining challenge is to make conversion between base systems significantly faster and to implement a software module that improves conversion speed. At present, this paper does not claim high-speed computation for non-repdigit numbers; the demonstrated speed improvements apply to repdigits only, which is sufficient for the cryptographic use case developed in this work.</p>
      </sec>
    </sec>
    <sec id="sec6">
      <title>6. Triangular Number Matrix to Cryptography</title>
      <sec id="sec6dot1">
        <title>6.1. From Triangular Patterns to Catalog-Style Objects</title>
        <p>Sections 2 - 5 establish the <italic>Triangular</italic><italic>Number</italic><italic>Matrix</italic> as a constructive system for generating large triangular numbers from digit-level regularities, rather than by direct evaluation of the conventional formula <inline-formula><mml:math display="inline"><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub><mml:mo> = </mml:mo><mml:mrow><mml:mrow><mml:mi> n </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> n </mml:mi><mml:mo> + </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow><mml:mo> / </mml:mo><mml:mn> 2 </mml:mn></mml:mrow></mml:mrow></mml:math></inline-formula> . The central observation is that, for structured index families—most notably repdigits—the corresponding triangular numbers exhibit stable internal regularities that persist as digit-length grows. This enables an <italic>assembly-first</italic> view of computation: once the relevant constants and scaling rules are identified for a family, increasing the requested length does not require increasingly expensive large-integer multiplication and division, but rather the repeated application of the same pattern rules.</p>
        <p>This view yields a protocol-relevant abstraction. Instead of treating each <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> purely as a scalar, Sections 2 - 5 implicitly define a collection of deterministic <italic>digit</italic><italic>objects</italic> indexed by compact parameters. Concretely, fixing a base <inline-formula><mml:math><mml:mi> b </mml:mi></mml:math></inline-formula> and a repdigit family (or more generally, a pattern identifier), each admissible length <inline-formula><mml:math><mml:mi> ℓ </mml:mi></mml:math></inline-formula> determines a specific base-<inline-formula><mml:math><mml:mi> b </mml:mi></mml:math></inline-formula> digit string representing a triangular number instance generated by the matrix rules. In Section 7, this abstraction is formalized as <italic>catalogs</italic><italic>across</italic><italic>bases</italic>; Section 6 clarifies why the mathematical construction naturally admits such a catalog interpretation and why that interpretation is relevant under modern cybersecurity threats.</p>
      </sec>
      <sec id="sec6dot2">
        <title>6.2. Theorems 1 - 4 as Central Catalog-Generating Results</title>
        <p>A key ingredient for any catalog-style construction is that members can be generated reproducibly from short descriptors. In this work, Theorems 1 - 4 provide precisely the family-level determinism needed for that role.</p>
        <p><bold>Theorems</bold><bold>1 - 3</bold><bold>(closed-form</bold><bold>repdigit</bold><bold>families).</bold> These theorems give explicit digit-structure formulas for repdigits based on 3, 6, and 9, each parameterized by the repdigit length <inline-formula><mml:math><mml:mi> m </mml:mi></mml:math></inline-formula> . The resulting forms specify how the triangular number representation grows with <inline-formula><mml:math><mml:mi> m </mml:mi></mml:math></inline-formula> and therefore define a direct mapping from a short descriptor (family, length) to a unique digit expansion.<bold>Theorem</bold><bold>4</bold><bold>(general</bold><bold>repdigit</bold><bold>assembly</bold><bold>via</bold><bold>scalable</bold><bold>reduction).</bold> Theorem 4 generalizes the construction to repdigits whose triangular numbers are assembled from: 1) horizontal constants <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:msub><mml:mi> L </mml:mi><mml:mrow><mml:mtext> const </mml:mtext></mml:mrow></mml:msub><mml:mo> , </mml:mo><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> const </mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> that repeat around 2) a vertical constant selected by a scale-dependent key. In the notation used throughout the paper, the theorem can be summarized as a structured concatenation: </p>
        <disp-formula id="FD33">
          <label>(11)</label>
          <mml:math>
            <mml:mrow>
              <mml:mtext>Trag</mml:mtext>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:msup>
                    <mml:mrow>
                      <mml:mrow>
                        <mml:mo>[</mml:mo>
                        <mml:mn>1</mml:mn>
                        <mml:mo>]</mml:mo>
                      </mml:mrow>
                    </mml:mrow>
                    <mml:mi>m</mml:mi>
                  </mml:msup>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>=</mml:mo>
              <mml:msup>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:msub>
                        <mml:mi>L</mml:mi>
                        <mml:mrow>
                          <mml:mtext>const</mml:mtext>
                        </mml:mrow>
                      </mml:msub>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mrow>
                  <mml:msub>
                    <mml:mi>P</mml:mi>
                    <mml:mi>ℓ</mml:mi>
                  </mml:msub>
                  <mml:mo>⋅</mml:mo>
                  <mml:mi>q</mml:mi>
                </mml:mrow>
              </mml:msup>
              <mml:mo>∥</mml:mo>
              <mml:msup>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:msub>
                        <mml:mi>L</mml:mi>
                        <mml:mrow>
                          <mml:mtext>cutoff</mml:mtext>
                        </mml:mrow>
                      </mml:msub>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mi>r</mml:mi>
              </mml:msup>
              <mml:mo>∥</mml:mo>
              <mml:mrow>
                <mml:mo>[</mml:mo>
                <mml:mrow>
                  <mml:msub>
                    <mml:mi>V</mml:mi>
                    <mml:mrow>
                      <mml:mtext>const</mml:mtext>
                      <mml:mo>,</mml:mo>
                      <mml:msub>
                        <mml:mi>N</mml:mi>
                        <mml:mrow>
                          <mml:mtext>scale</mml:mtext>
                        </mml:mrow>
                      </mml:msub>
                    </mml:mrow>
                  </mml:msub>
                </mml:mrow>
                <mml:mo>]</mml:mo>
              </mml:mrow>
              <mml:mo>∥</mml:mo>
              <mml:msup>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:msub>
                        <mml:mi>R</mml:mi>
                        <mml:mrow>
                          <mml:mtext>cutoff</mml:mtext>
                        </mml:mrow>
                      </mml:msub>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mi>r</mml:mi>
              </mml:msup>
              <mml:mo>∥</mml:mo>
              <mml:msup>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>[</mml:mo>
                    <mml:mrow>
                      <mml:msub>
                        <mml:mi>R</mml:mi>
                        <mml:mrow>
                          <mml:mtext>const</mml:mtext>
                        </mml:mrow>
                      </mml:msub>
                    </mml:mrow>
                    <mml:mo>]</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mrow>
                  <mml:msub>
                    <mml:mi>P</mml:mi>
                    <mml:mi>ℓ</mml:mi>
                  </mml:msub>
                  <mml:mo>⋅</mml:mo>
                  <mml:mi>q</mml:mi>
                </mml:mrow>
              </mml:msup>
              <mml:mo>,</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>where <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> P </mml:mi><mml:mi> ℓ </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the horizontal pattern length, <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> N </mml:mi><mml:mrow><mml:mi> L </mml:mi><mml:mo> / </mml:mo><mml:mi> R </mml:mi></mml:mrow></mml:msub><mml:mo> = </mml:mo><mml:mi> m </mml:mi><mml:mo> − </mml:mo><mml:mn> 2 </mml:mn></mml:mrow></mml:math></inline-formula> , <inline-formula><mml:math><mml:mrow><mml:mi> r </mml:mi><mml:mo> = </mml:mo><mml:msub><mml:mi> N </mml:mi><mml:mrow><mml:mi> L </mml:mi><mml:mo> / </mml:mo><mml:mi> R </mml:mi></mml:mrow></mml:msub><mml:mi> mod </mml:mi><mml:msub><mml:mi> P </mml:mi><mml:mi> ℓ </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> , and <inline-formula><mml:math><mml:mrow><mml:mi> q </mml:mi><mml:mo> = </mml:mo><mml:mrow><mml:mrow><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:msub><mml:mi> N </mml:mi><mml:mrow><mml:mi> L </mml:mi><mml:mo> / </mml:mo><mml:mi> R </mml:mi></mml:mrow></mml:msub><mml:mo> − </mml:mo><mml:mi> r </mml:mi></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow><mml:mo> / </mml:mo><mml:mrow><mml:msub><mml:mi> P </mml:mi><mml:mi> ℓ </mml:mi></mml:msub></mml:mrow></mml:mrow></mml:mrow></mml:math></inline-formula> . Here <inline-formula><mml:math><mml:mo> ∥ </mml:mo></mml:math></inline-formula> denotes concatenation, and the bracketed repetition notation follows the conventions already established in Sections 2 - 3. </p>
        <p>Together, Theorems 1 - 4 supply the mathematical backbone for catalog construction: they define families of digit objects whose members are determined by compact parameters (family identifier and length) and are generated by rule-driven assembly. This catalog viewpoint does not introduce new mathematics; it is a re-expression of the main results in Sections 2 - 3 in a form that is directly consumable by cryptographic protocol design (formalized later in Section 7).</p>
      </sec>
      <sec id="sec6dot3">
        <title>6.3. Scalable Reduction as Compact Addressing and Reproducible Expansion</title>
        <p>A second requirement for protocol use is that large objects be addressable without transmitting or computing the full expansion. The scalable reduction method (Section 3) provides this property in two complementary ways.</p>
        <p><italic><bold>Compact</bold></italic><italic><bold>addressing.</bold></italic></p>
        <p>The scalable reduction method computes a scale-dependent key (e.g., via a digital-root style reduction) using only a small set of parameters such as the repdigit value and the repdigit length. This key is then used to select the appropriate vertical constant from <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> V </mml:mi><mml:mrow><mml:mtext> const </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> . Because the key computation depends on a compact description rather than on enumerating all digits, the selection step remains feasible even when the repdigit length is extremely large.</p>
        <p><italic><bold>Reproducible</bold></italic><italic><bold>expansion</bold></italic><italic><bold>by</bold></italic><italic><bold>assembly.</bold></italic></p>
        <p>Once the vertical constant is selected, the remainder of the expansion is determined by repeating the horizontal constants and applying the appropriate cutoffs according to <inline-formula><mml:math><mml:mi> q </mml:mi></mml:math></inline-formula> and <inline-formula><mml:math><mml:mi> r </mml:mi></mml:math></inline-formula> (cf. Equation (11)). The expansion procedure is therefore deterministic and repeatable: the same descriptor yields the same digit object, and the generation process avoids full big-integer multiplication and division in favor of pattern concatenation.</p>
        <p>This compact-address plus deterministic-expansion structure is the mathematical precursor to the short-form representations and catalog commitments introduced in Section 7. The present section does not formalize those protocol mechanisms; rather, it motivates why they arise naturally from the constructive content of Sections 2 - 5.</p>
      </sec>
      <sec id="sec6dot4">
        <title>6.4. Multi-Base Construction and Why It Enlarges the Adversarial Search Space</title>
        <p>Section 5 extends the matrix framework beyond base-10 repdigits by leveraging the change-of-base perspective. Two points are central for the cryptographic motivation:</p>
        <p><bold>1)</bold><italic><bold>Multi-</bold></italic><italic><bold>base</bold></italic><italic><bold>generation</bold></italic><italic><bold>increases</bold></italic><italic><bold>the</bold></italic><italic><bold>pool</bold></italic><italic><bold>of</bold></italic><italic><bold>structured</bold></italic><italic><bold>instances.</bold></italic></p>
        <p>Repdigits in other bases yield triangular-number representations that, when converted to base 10, correspond to distinct triangular numbers associated with non-repdigit values (Section 5). This produces a larger library of structured triangular-number instances, which can serve as additional reference points and can be generated efficiently as base-dependent patterns (e.g., the base-7 series for the digit 6 and its corresponding conversions).</p>
        <p><bold>2)</bold><italic><bold>Multi-</bold></italic><italic><bold>base</bold></italic><italic><bold>processing</bold></italic><italic><bold>supports</bold></italic><italic><bold>parallelizable</bold></italic><italic><bold>workflows.</bold></italic></p>
        <p>Section 5 demonstrates that base conversion itself can be parallelized by chunking a large base-<inline-formula><mml:math><mml:mi> b </mml:mi></mml:math></inline-formula> number into smaller blocks, converting each block independently, and combining the results via powers of <inline-formula><mml:math><mml:mi> b </mml:mi></mml:math></inline-formula> . This property aligns with the general computational objective of decomposing large-digit operations into schedulable parallel tasks.</p>
        <p><bold>3)</bold><italic><bold>Multi-base</bold></italic><italic><bold>representations</bold></italic><italic><bold>expand</bold></italic><italic><bold>the</bold></italic><italic><bold>parameter</bold></italic><italic><bold>space</bold></italic><italic><bold>an</bold></italic><italic><bold>attacker</bold></italic><italic><bold>must</bold></italic><italic><bold>consider.</bold></italic></p>
        <p>In the later protocol framing, operations can be expressed over multiple bases and multiple catalog families. Even when catalogs are public, multi-base diversity increases the number of plausible representations and families that may underlie an observed computation. Informally, a larger set of bases increases the combinatorial surface of admissible constructions (base choice × family choice × length choice), which expands the space of hypotheses an adversary must consider when attempting to reverse-engineer or exhaustively search over protocol-relevant parameters. <xref ref-type="fig" rid="fig6">Figure 6</xref> illustrates this concretely in the computational setting by showing that closer anchor points can be obtained by checking repdigits in nearby bases and converting back to base 10; the same multi-base diversity also underpins the protocol design surface considered in Section 7.</p>
      </sec>
      <sec id="sec6dot5">
        <title>6.5. CyberSecurity: What Problem Are We Trying to Solve?</title>
        <p>The preceding sections establish a mathematical engine for producing large, structured, base-dependent triangular digit objects from compact descriptors. This motivates a natural question: <italic>why</italic><italic>should</italic><italic>such</italic><italic>digit</italic><italic>objects</italic><italic>be</italic><italic>considered</italic><italic>in</italic><italic>cryptographic</italic><italic>design</italic><italic>at</italic><italic>all?</italic> Beyond purely computational interest, the motivation is driven by practical authentication risks: large-scale credential theft and password database breaches enable offline guessing attacks that can lead to unauthorized access even when online rate limiting is effective. Section 7 therefore provides the security context for using structured, sliceable digit objects as a protocol substrate and motivates the rolling-state, layered authentication construction formalized in the same section, which is designed to mitigate the use of stolen credentials and reduce unauthorized access. In addition, Section 6 situates this direction within the broader long-horizon threat landscape, including the prospect of cryptographically relevant quantum computing and the corresponding pressure toward post-quantum security assumptions.</p>
        <p>As advances in highly parallel hardware continue to reduce the cost of large-scale computation, cryptographic designs that rely solely on “doing the math faster” face growing pressure—both from commodity GPU acceleration and from longer-term quantum risk to widely deployed public-key primitives. A cryptographically relevant quantum computer would, in principle, undermine RSA and elliptic-curve systems via quantum algorithms, and this prospect has already motivated standardization and migration efforts in post-quantum cryptography (PQC), including NIST’s finalized PQC standards (e.g., ML-KEM for key establishment) and vendor deployments that begin protecting data in transit against “harvest now, decrypt later” (HNDL) threats. In this context, the present work frames an alternative computational emphasis as <italic>assembly</italic><italic>versus</italic><italic>compute</italic>: instead of depending primarily on a small set of algebraic problems aligned with massive parallel arithmetic, the construction explored here emphasizes structured composition—using Triangular Number Matrix patterns and base-dependent representations—so that recovering the message resembles reconstructing a constrained jigsaw (a combinatorial assembly problem) rather than optimizing a single dominant mathematical operation.</p>
      </sec>
      <sec id="sec6dot6">
        <title>6.6. Concluding Remarks and Transition to the TLV Construction</title>
        <p>Taken together, Theorems 1 - 4 provide deterministic pattern families that can be instantiated at scale from compact descriptors, while the multi-base processes in Section 5 enlarge the universe of available structured instances beyond base-10 repdigits. Section 7 formalizes how these families are treated as public catalogs across bases and how compact descriptors enable efficient access to structured digit material within those catalogs. The aim is not to replace standardized post-quantum public-key primitives, but to articulate a complementary design surface in which the dominant operation is structured composition over many base-dependent catalog instances—consistent with the “assembly versus compute” framing introduced above—and to present a proof-of-concept authentication construction (TLV) that leverages this structure under modern breach and offline-attack considerations.</p>
      </sec>
    </sec>
    <sec id="sec7">
      <title>7. Application in Cryptography: Triangular Layered Verification (TLV)</title>
      <p>Until now, we have learned about how fast it is to calculate a triangular number using the matrix method, without directly invoking the <inline-formula><mml:math display="inline"><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub><mml:mo> = </mml:mo><mml:mrow><mml:mrow><mml:mi> n </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> n </mml:mi><mml:mo> + </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow><mml:mo> / </mml:mo><mml:mn> 2 </mml:mn></mml:mrow></mml:mrow></mml:math></inline-formula> formula. Now, we would like to provide a detailed application of this method in cryptography, which we refer to as Triangular Layered Verification (TLV). Before discussing TLV, we would like to provide a brief overview of the short form [<xref ref-type="bibr" rid="B7">7</xref>]. </p>
      <sec id="sec7dot1">
        <title>7.1. Change of Base Rule in Triangular Number Calculation</title>
        <p>Every last digit’s triangular number in any base has a simple pattern that is easily reducible or can be represented in a short form as (base = 4, number = 3, length = 5). For example, (base = 4, number = 3, length = 5) would be equal to reducing 133333200000 for the expansion of number 3, that is written in base 4, and is the 5th triangular number represented as 8,386,560 in base 10, see chart below 4. That’s why we can represent it as (base = 4, length = 5) which could be easily assembled back into its original form of 133333200000 based on the calculator rules presented earlier. </p>
        <p>This pattern is not limited to just base 4, but extends to every base. For example, in Base 3, the number 2 being the highest digit, number 22’s triangular number is 1100; however, we will display an expanded pattern at 20th length, like 111111111111111111111111 000000000000000000000000 to highlight correlations as the pattern grows in length. Similarly, we can write a pattern for different base systems as in <bold>Table 6</bold>.</p>
        <p><bold>Table 6</bold><bold>.</bold> Expanded triangular-number patterns for the highest digit in each base.</p>
        <table-wrap id="tbl6">
          <label>Table 6</label>
          <table>
            <tbody>
              <tr>
                <td>
                  <bold>Base</bold>
                </td>
                <td>
                  <bold>Representation</bold>
                </td>
              </tr>
              <tr>
                <td>3</td>
                <td>111111111111111111111111000000000000000000000000</td>
              </tr>
              <tr>
                <td>4</td>
                <td>
                  <bold>1</bold>
                  333333333333333333333333
                  <bold>2</bold>
                  000000000000000000000000
                </td>
              </tr>
              <tr>
                <td>5</td>
                <td>222222222222222222222222200000000000000000000000000</td>
              </tr>
              <tr>
                <td>6</td>
                <td>
                  <bold>2</bold>
                  55555555555555555555555555
                  <bold>3</bold>
                  00000000000000000000000000
                </td>
              </tr>
              <tr>
                <td>7</td>
                <td>33333333333333333333333333330000000000000000000000000000</td>
              </tr>
              <tr>
                <td>8</td>
                <td>
                  <bold>3</bold>
                  7777777777777777777777777777
                  <bold>4</bold>
                  0000000000000000000000000000
                </td>
              </tr>
              <tr>
                <td>…</td>
                <td>…</td>
              </tr>
            </tbody>
          </table>
        </table-wrap>
      </sec>
      <sec id="sec7dot2">
        <title>7.2. Triangular Layered Verification (TLV)</title>
        <p>TLV proposes a rolling state interactive authentication mechanism to protect against dumping passwords during a data breach when an attacker takes all the data necessary to do an offline brute force attack to crack passwords in the database. The idea is to periodically change user passwords automatically and seamlessly within a defined date threshold (ie, user password/token is older than 2 days). The authentication system precomputes, in memory, the per-layer op templates and their bounded <italic>arg</italic><italic>-tags</italic> from public parameters and the committed catalogs; after the client sends the <italic>session-nonce</italic>, the server transiently returns this bundle to start state assembly. These <italic>arg</italic><italic>-tags/ops</italic> are never persisted server-side and are discarded after the attempt; each new <italic>session-nonce</italic> yields fresh ops and <italic>arg</italic><italic>-tags</italic>. We consider a set of committed catalogs across bases: each catalog (b, n) maps legal lengths. Below, we define the key terminology in TLV mechanisms.</p>
        <p>1) <bold>Per-layer</bold><bold>op</bold><bold>templates</bold>: server-precomputed operation descriptors for each layer (schema: <inline-formula><mml:math><mml:mrow><mml:mi> b </mml:mi><mml:mo> , </mml:mo><mml:mi> n </mml:mi><mml:mo> , </mml:mo><mml:mi> l </mml:mi><mml:mo> , </mml:mo><mml:msub><mml:mi> L </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub><mml:mo> , </mml:mo><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub><mml:mo> , </mml:mo><mml:msub><mml:mi> D </mml:mi><mml:mrow><mml:mtext> len </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> ) derived from public parameters and the committed catalogs, defining exactly which digit slices are read and mixed. </p>
        <p>2) <bold>Bounded</bold><italic><bold>arg</bold></italic><italic><bold>-tags</bold></italic>: server-computed index sets selecting a bounded subset of those op templates per layer; “bounded” ensures indices are in-range for the corresponding templates (no out-of-bounds positions); conveyed transiently and never persisted server-side. </p>
        <p>3) <italic><bold>Session-nonce</bold></italic>: a server-generated, high-entropy per-session nonce that the client echoes back to initiate binding and state assembly for the attempt; each new <italic>session-nonce</italic> triggers fresh op templates and <italic>arg</italic><italic>-tags</italic> that are passed to the user once. </p>
        <p>This builds “private user rules” and periodically syncs with legitimate users to refresh the password/token if the defined date threshold is exceeded. A legitimate user passes the “private user rules” to the server in order to undergo a layered interactive authentication process and gain access to the protected systems. The next section discusses the strategy used for TLV cryptography.</p>
      </sec>
      <sec id="sec7dot3">
        <title>7.3. Layer and Channel Structure in TLV</title>
        <p>To make the TLV architecture precise, we distinguish between <italic>operation</italic><italic>tem</italic><italic>plates</italic>, <italic>layers</italic>, and <italic>channels</italic>. This clarification separates the core interactive authentication construction from higher-level configurable protocol profiles.</p>
        <p><italic><bold>Operation</bold></italic><italic><bold>templates.</bold></italic></p>
        <p>An operation template is a bounded catalog-derived descriptor of the form </p>
        <disp-formula id="FD34">
          <mml:math>
            <mml:mrow>
              <mml:mtext>op</mml:mtext>
              <mml:mo>=</mml:mo>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mi>b</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>n</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>ℓ</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:msub>
                    <mml:mi>L</mml:mi>
                    <mml:mrow>
                      <mml:mtext>pos</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                  <mml:mo>,</mml:mo>
                  <mml:msub>
                    <mml:mi>R</mml:mi>
                    <mml:mrow>
                      <mml:mtext>pos</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                  <mml:mo>,</mml:mo>
                  <mml:msub>
                    <mml:mi>D</mml:mi>
                    <mml:mrow>
                      <mml:mtext>len</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>,</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>where <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> b </mml:mi><mml:mo> , </mml:mo><mml:mi> n </mml:mi><mml:mo> , </mml:mo><mml:mi> ℓ </mml:mi></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> identifies a legal catalog member and <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:msub><mml:mi> L </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub><mml:mo> , </mml:mo><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub><mml:mo> , </mml:mo><mml:msub><mml:mi> D </mml:mi><mml:mrow><mml:mtext> len </mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> determines the left and right windows used in the local rip-and-mix computation. In TLV, these operation templates are precomputed by the server from public parameters and the committed catalogs, and are paired with bounded <italic>arg</italic><italic>-tags</italic> that identify which templates are active for a given attempt.</p>
        <p><italic><bold>Layer.</bold></italic></p>
        <p>A <italic>layer</italic> is a bounded ordered collection of operation templates together with its associated <italic>arg</italic><italic>-tags</italic> and folding rule. Intuitively, a layer represents one verification unit in which only the operations selected by the transmitted <italic>arg</italic><italic>-tags</italic> are evaluated, while the remaining templates in that layer are ignored for that attempt. The outputs of the selected operations are then combined to form a single layer commitment or layer digest. Thus, a layer is not a single operation, but a bounded sequence of eligible operations from which only a transiently selected subset is activated in a given session.</p>
        <p><italic><bold>Channel.</bold></italic></p>
        <p>A <italic>channel</italic> is a use-case-specific verification profile composed of one or more layers, together with the rule by which their outputs are combined and accepted. In this paper, the primary fully described channel is the <italic>authentication</italic><italic>channel</italic>. Other channels are best viewed as configurable extensions built on the same TLV structure rather than as separate cryptographic systems.</p>
        <p><italic><bold>Authentication</bold></italic><italic><bold>channel.</bold></italic></p>
        <p>In the authentication setting, the server first precomputes the per-layer operation templates and bounded <italic>arg</italic><italic>-tags</italic> from the committed catalogs and public parameters, then transiently returns these values after receiving the session nonce. The client uses the received private user rules to assemble the required per-layer responses and returns the resulting verification material. The verifier evaluates only the selected operations in each layer, forms the corresponding layer digests, and then folds these layer outputs into the final commitment checked against the stored authentication state. In this sense, the authentication channel is a layered verification profile in which each layer contributes a bounded and selectively activated portion of the overall proof.</p>
        <p><italic><bold>Why</bold></italic><italic><bold>layering</bold></italic><italic><bold>is</bold></italic><italic><bold>useful.</bold></italic></p>
        <p>This structure serves two purposes. First, it keeps honest verification efficient because only a bounded subset of operations is processed per layer. Second, it increases attacker uncertainty in the offline setting because an adversary must reconstruct not only the underlying catalog-derived operations, but also the correct per-layer selection pattern across multiple layers, while learning only the final verification outcome and not any per-layer oracle. Accordingly, the role of layering in TLV is not merely organizational; it is part of the mechanism by which selective verification, rolling state, and bounded catalog access are combined into one authentication workflow.</p>
        <p><italic><bold>Scope.</bold></italic></p>
        <p>For the purposes of this paper, the term <italic>channel</italic> should therefore be read narrowly: it denotes an application-specific arrangement of TLV layers. The authentication channel is the main proof-of-concept construction developed here. Other possible channels, such as authorization, document access, or distributed transaction verification, are more appropriately presented as configurable TLV channel profiles based on the same layer abstraction (see Section B.3).</p>
        <p>To make this architecture more tangible, <xref ref-type="fig" rid="fig7">Figure 7</xref> illustrates the conceptual composition of TLV layers and shows how selected operations contribute to the final commitment used by the verifier. Each layer contains a bounded set of operation templates together with arg-tags that select which operations are evaluated in a given session. The selected operations produce per-layer digests (<inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> H </mml:mi><mml:mn> 1 </mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> , <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> H </mml:mi><mml:mn> 2 </mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> , <inline-formula><mml:math display="inline"><mml:mo> ⋯ </mml:mo></mml:math></inline-formula> ), and the sequence of layer digests is folded to produce a final commitment <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> H </mml:mi><mml:mrow><mml:mtext> final </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> that is compared with the stored verifier state during authentication.</p>
        <fig id="fig8">
          <label>Figure 8</label>
          <graphic xlink:href="https://html.scirp.org/file/1101176-rId334.jpeg?20260515035456" />
        </fig>
        <p><bold>Figure 7.</bold> Illustrative TLV layer composition. Each layer contains a bounded set of operation templates of the form <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> b </mml:mi><mml:mo> , </mml:mo><mml:mi> n </mml:mi><mml:mo> , </mml:mo><mml:mi> ℓ </mml:mi><mml:mo> , </mml:mo><mml:msub><mml:mi> L </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub><mml:mo> , </mml:mo><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub><mml:mo> , </mml:mo><mml:msub><mml:mi> D </mml:mi><mml:mrow><mml:mtext> len </mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> together with arg-tags that select which operations are evaluated in a given session. The selected operations produce a layer digest (<inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> H </mml:mi><mml:mn> 1 </mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> , <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> H </mml:mi><mml:mn> 2 </mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> , <inline-formula><mml:math display="inline"><mml:mo> ⋯ </mml:mo></mml:math></inline-formula> ), and the sequence of layer digests is folded to produce a final commitment <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> H </mml:mi><mml:mrow><mml:mtext> final </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> that is compared with the stored verifier state during authentication.</p>
      </sec>
      <sec id="sec7dot4">
        <title>7.4. Rip-and-Mix Windows for Per-Layer Computation</title>
        <p>7.4.1. Catalog and op Model</p>
        <p><bold>Catalog.</bold> For each base <inline-formula><mml:math><mml:mi> b </mml:mi></mml:math></inline-formula> and pattern id <inline-formula><mml:math><mml:mi> n </mml:mi></mml:math></inline-formula> , the catalog defines a <italic>digit</italic><italic>language</italic> that yields, for any legal <inline-formula><mml:math><mml:mrow><mml:mi> ℓ </mml:mi><mml:mo> ∈ </mml:mo><mml:msub><mml:mi> S </mml:mi><mml:mrow><mml:mi> b </mml:mi><mml:mo> , </mml:mo><mml:mi> n </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> , a base-<inline-formula><mml:math><mml:mi> b </mml:mi></mml:math></inline-formula> digit string </p>
        <disp-formula id="FD35">
          <mml:math>
            <mml:mrow>
              <mml:mi>D</mml:mi>
              <mml:mo>=</mml:mo>
              <mml:msub>
                <mml:mi>D</mml:mi>
                <mml:mrow>
                  <mml:mi>b</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>n</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>ℓ</mml:mi>
                </mml:mrow>
              </mml:msub>
              <mml:mo>,</mml:mo>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mi>ℓ</mml:mi>
              <mml:mo>∈</mml:mo>
              <mml:msup>
                <mml:mrow>
                  <mml:mrow>
                    <mml:mo>{</mml:mo>
                    <mml:mrow>
                      <mml:mn>0</mml:mn>
                      <mml:mo>,</mml:mo>
                      <mml:mo>⋯</mml:mo>
                      <mml:mo>,</mml:mo>
                      <mml:mi>b</mml:mi>
                      <mml:mo>−</mml:mo>
                      <mml:mn>1</mml:mn>
                    </mml:mrow>
                    <mml:mo>}</mml:mo>
                  </mml:mrow>
                </mml:mrow>
                <mml:mi>N</mml:mi>
              </mml:msup>
              <mml:mo>,</mml:mo>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mi>N</mml:mi>
              <mml:mo>=</mml:mo>
              <mml:mrow>
                <mml:mo>|</mml:mo>
                <mml:mi>D</mml:mi>
                <mml:mo>|</mml:mo>
              </mml:mrow>
              <mml:mo>.</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>Implementations expose random access to <italic>slices</italic> of <inline-formula><mml:math><mml:mi> D </mml:mi></mml:math></inline-formula> (by index and length) without materializing all <inline-formula><mml:math><mml:mi> N </mml:mi></mml:math></inline-formula> digits.</p>
        <p><bold>Op</bold><bold>tuple.</bold> Each operation is </p>
        <disp-formula id="FD36">
          <mml:math>
            <mml:mrow>
              <mml:mtext>op</mml:mtext>
              <mml:mo>=</mml:mo>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mi>b</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>n</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:mi>ℓ</mml:mi>
                  <mml:mo>,</mml:mo>
                  <mml:msub>
                    <mml:mi>L</mml:mi>
                    <mml:mrow>
                      <mml:mtext>pos</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                  <mml:mo>,</mml:mo>
                  <mml:msub>
                    <mml:mi>R</mml:mi>
                    <mml:mrow>
                      <mml:mtext>pos</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                  <mml:mo>,</mml:mo>
                  <mml:msub>
                    <mml:mi>D</mml:mi>
                    <mml:mrow>
                      <mml:mtext>len</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>,</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>with the following constraints: </p>
        <p><inline-formula><mml:math><mml:mi> b </mml:mi></mml:math></inline-formula> base; <inline-formula><mml:math><mml:mi> n </mml:mi></mml:math></inline-formula> pattern id; <inline-formula><mml:math><mml:mrow><mml:mi> ℓ </mml:mi><mml:mo> ∈ </mml:mo><mml:msub><mml:mi> S </mml:mi><mml:mrow><mml:mi> b </mml:mi><mml:mo> , </mml:mo><mml:mi> n </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> selects the specific member; together <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> b </mml:mi><mml:mo> , </mml:mo><mml:mi> n </mml:mi><mml:mo> , </mml:mo><mml:mi> ℓ </mml:mi></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> determine <inline-formula><mml:math><mml:mi> D </mml:mi></mml:math></inline-formula> and <inline-formula><mml:math><mml:mi> N </mml:mi></mml:math></inline-formula> . <bold>Left</bold><bold>window</bold> start <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> L </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is 0-based from the left; <bold>Right</bold><bold>window</bold> offset <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is 0-based from the right. <bold>Window</bold><bold>length</bold><inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> D </mml:mi><mml:mrow><mml:mtext> len </mml:mtext></mml:mrow></mml:msub><mml:mo> ≥ </mml:mo><mml:mn> 1 </mml:mn></mml:mrow></mml:math></inline-formula> . <bold>Bounds:</bold></p>
        <disp-formula id="FD37">
          <mml:math>
            <mml:mrow>
              <mml:mtable columnalign="left">
                <mml:mtr columnalign="left">
                  <mml:mtd columnalign="left">
                    <mml:mrow>
                      <mml:mtext>Left</mml:mtext>
                      <mml:mo>:</mml:mo>
                    </mml:mrow>
                  </mml:mtd>
                  <mml:mtd columnalign="left">
                    <mml:mrow>
                      <mml:msub>
                        <mml:mi>L</mml:mi>
                        <mml:mrow>
                          <mml:mtext>pos</mml:mtext>
                        </mml:mrow>
                      </mml:msub>
                      <mml:mo>≥</mml:mo>
                      <mml:mn>0</mml:mn>
                      <mml:mo>,</mml:mo>
                      <mml:mtext>
                         
                      </mml:mtext>
                      <mml:mtext>
                         
                      </mml:mtext>
                      <mml:msub>
                        <mml:mi>D</mml:mi>
                        <mml:mrow>
                          <mml:mtext>len</mml:mtext>
                        </mml:mrow>
                      </mml:msub>
                      <mml:mo>≥</mml:mo>
                      <mml:mn>0</mml:mn>
                      <mml:mo>,</mml:mo>
                      <mml:mtext>
                         
                      </mml:mtext>
                      <mml:mtext>
                         
                      </mml:mtext>
                      <mml:msub>
                        <mml:mi>L</mml:mi>
                        <mml:mrow>
                          <mml:mtext>pos</mml:mtext>
                        </mml:mrow>
                      </mml:msub>
                      <mml:mo>+</mml:mo>
                      <mml:msub>
                        <mml:mi>D</mml:mi>
                        <mml:mrow>
                          <mml:mtext>len</mml:mtext>
                        </mml:mrow>
                      </mml:msub>
                      <mml:mo>≤</mml:mo>
                      <mml:mi>c</mml:mi>
                      <mml:mo>,</mml:mo>
                    </mml:mrow>
                  </mml:mtd>
                </mml:mtr>
                <mml:mtr columnalign="left">
                  <mml:mtd columnalign="left">
                    <mml:mrow>
                      <mml:mtext>Right</mml:mtext>
                      <mml:mo>:</mml:mo>
                    </mml:mrow>
                  </mml:mtd>
                  <mml:mtd columnalign="left">
                    <mml:mrow>
                      <mml:msub>
                        <mml:mi>R</mml:mi>
                        <mml:mrow>
                          <mml:mtext>pos</mml:mtext>
                        </mml:mrow>
                      </mml:msub>
                      <mml:mo>≥</mml:mo>
                      <mml:mn>0</mml:mn>
                      <mml:mo>,</mml:mo>
                      <mml:mtext>
                         
                      </mml:mtext>
                      <mml:mtext>
                         
                      </mml:mtext>
                      <mml:msub>
                        <mml:mi>D</mml:mi>
                        <mml:mrow>
                          <mml:mtext>len</mml:mtext>
                        </mml:mrow>
                      </mml:msub>
                      <mml:mo>≥</mml:mo>
                      <mml:mn>0</mml:mn>
                      <mml:mo>,</mml:mo>
                      <mml:mtext>
                         
                      </mml:mtext>
                      <mml:mtext>
                         
                      </mml:mtext>
                      <mml:msub>
                        <mml:mi>R</mml:mi>
                        <mml:mrow>
                          <mml:mtext>pos</mml:mtext>
                        </mml:mrow>
                      </mml:msub>
                      <mml:mo>+</mml:mo>
                      <mml:msub>
                        <mml:mi>D</mml:mi>
                        <mml:mrow>
                          <mml:mtext>len</mml:mtext>
                        </mml:mrow>
                      </mml:msub>
                      <mml:mo>≤</mml:mo>
                      <mml:mtext>len</mml:mtext>
                      <mml:mrow>
                        <mml:mo>(</mml:mo>
                        <mml:mi>D</mml:mi>
                        <mml:mo>)</mml:mo>
                      </mml:mrow>
                      <mml:mo>−</mml:mo>
                      <mml:mi>c</mml:mi>
                      <mml:mo>,</mml:mo>
                    </mml:mrow>
                  </mml:mtd>
                </mml:mtr>
              </mml:mtable>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>where <inline-formula><mml:math><mml:mi> c </mml:mi></mml:math></inline-formula> is the center. </p>
        <p>7.4.2. Window Extraction (No Full Expansion)</p>
        <p>Given <inline-formula><mml:math><mml:mi> D </mml:mi></mml:math></inline-formula> and <inline-formula><mml:math><mml:mi> N </mml:mi></mml:math></inline-formula> , define the two windows purely by indices:</p>
        <p><bold>Left</bold><bold>window:</bold></p>
        <disp-formula id="FD38">
          <mml:math>
            <mml:mrow>
              <mml:mi>L</mml:mi>
              <mml:mtext>digits</mml:mtext>
              <mml:mo>=</mml:mo>
              <mml:mi>D</mml:mi>
              <mml:mrow>
                <mml:mo>[</mml:mo>
                <mml:mrow>
                  <mml:mi>c</mml:mi>
                  <mml:mo>−</mml:mo>
                  <mml:mrow>
                    <mml:mo>(</mml:mo>
                    <mml:mrow>
                      <mml:msub>
                        <mml:mi>L</mml:mi>
                        <mml:mrow>
                          <mml:mtext>pos</mml:mtext>
                        </mml:mrow>
                      </mml:msub>
                      <mml:mo>+</mml:mo>
                      <mml:msub>
                        <mml:mi>D</mml:mi>
                        <mml:mrow>
                          <mml:mtext>len</mml:mtext>
                        </mml:mrow>
                      </mml:msub>
                    </mml:mrow>
                    <mml:mo>)</mml:mo>
                  </mml:mrow>
                  <mml:mo>:</mml:mo>
                  <mml:mi>c</mml:mi>
                  <mml:mo>−</mml:mo>
                  <mml:msub>
                    <mml:mi>L</mml:mi>
                    <mml:mrow>
                      <mml:mtext>pos</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                </mml:mrow>
                <mml:mo>]</mml:mo>
              </mml:mrow>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p><bold>Right</bold><bold>window:</bold></p>
        <disp-formula id="FD39">
          <mml:math>
            <mml:mrow>
              <mml:mi>R</mml:mi>
              <mml:mtext>digits</mml:mtext>
              <mml:mo>=</mml:mo>
              <mml:mi>D</mml:mi>
              <mml:mrow>
                <mml:mo>[</mml:mo>
                <mml:mrow>
                  <mml:mi>c</mml:mi>
                  <mml:mo>+</mml:mo>
                  <mml:msub>
                    <mml:mi>R</mml:mi>
                    <mml:mrow>
                      <mml:mtext>pos</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                  <mml:mo>:</mml:mo>
                  <mml:mi>c</mml:mi>
                  <mml:mo>+</mml:mo>
                  <mml:msub>
                    <mml:mi>R</mml:mi>
                    <mml:mrow>
                      <mml:mtext>pos</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                  <mml:mo>+</mml:mo>
                  <mml:msub>
                    <mml:mi>D</mml:mi>
                    <mml:mrow>
                      <mml:mtext>len</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                </mml:mrow>
                <mml:mo>]</mml:mo>
              </mml:mrow>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>Both slices are obtained by the catalog’s <italic>slice</italic><italic>API</italic>; the rest of <inline-formula><mml:math><mml:mi> D </mml:mi></mml:math></inline-formula> is never expanded.</p>
        <p><bold>Catalog’s</bold><bold>slice</bold><bold>API</bold> = a local function/method that returns digits <inline-formula><mml:math><mml:mrow><mml:mi> D </mml:mi><mml:mrow><mml:mo> [ </mml:mo><mml:mrow><mml:mi> a </mml:mi><mml:mo> : </mml:mo><mml:mi> b </mml:mi></mml:mrow><mml:mo> ] </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula><italic>without</italic><italic>expanding</italic><italic>all</italic><italic>of</italic><inline-formula><mml:math><mml:mi> D </mml:mi></mml:math></inline-formula> (e.g., generator or table lookup). No external calls. </p>
        <p>7.4.3. Converting Only the Windows</p>
        <p>We avoid hashing a billion digits by converting only the tiny slices to decimal. Two equivalent choices (pick one for the spec):</p>
        <p><bold>Local</bold><bold>base-</bold><italic><bold>b</bold></italic><bold>value</bold><bold>(simple</bold><bold>and</bold><bold>fast):</bold></p>
        <disp-formula id="FD40">
          <mml:math>
            <mml:mrow>
              <mml:msub>
                <mml:mrow>
                  <mml:mtext>val</mml:mtext>
                </mml:mrow>
                <mml:mi>L</mml:mi>
              </mml:msub>
              <mml:mo>=</mml:mo>
              <mml:munderover>
                <mml:mstyle mathsize="140%" displaystyle="true">
                  <mml:mo>∑</mml:mo>
                </mml:mstyle>
                <mml:mrow>
                  <mml:mi>j</mml:mi>
                  <mml:mo>=</mml:mo>
                  <mml:mn>0</mml:mn>
                </mml:mrow>
                <mml:mrow>
                  <mml:msub>
                    <mml:mi>D</mml:mi>
                    <mml:mrow>
                      <mml:mtext>len</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                  <mml:mo>−</mml:mo>
                  <mml:mn>1</mml:mn>
                </mml:mrow>
              </mml:munderover>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mi>L</mml:mi>
              <mml:mtext>digits</mml:mtext>
              <mml:mrow>
                <mml:mo>[</mml:mo>
                <mml:mi>j</mml:mi>
                <mml:mo>]</mml:mo>
              </mml:mrow>
              <mml:mo>⋅</mml:mo>
              <mml:msup>
                <mml:mi>b</mml:mi>
                <mml:mrow>
                  <mml:msub>
                    <mml:mi>D</mml:mi>
                    <mml:mrow>
                      <mml:mtext>len</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                  <mml:mo>−</mml:mo>
                  <mml:mn>1</mml:mn>
                  <mml:mo>−</mml:mo>
                  <mml:mi>j</mml:mi>
                </mml:mrow>
              </mml:msup>
              <mml:mo>,</mml:mo>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:msub>
                <mml:mrow>
                  <mml:mtext>val</mml:mtext>
                </mml:mrow>
                <mml:mi>R</mml:mi>
              </mml:msub>
              <mml:mo>=</mml:mo>
              <mml:munderover>
                <mml:mstyle mathsize="140%" displaystyle="true">
                  <mml:mo>∑</mml:mo>
                </mml:mstyle>
                <mml:mrow>
                  <mml:mi>j</mml:mi>
                  <mml:mo>=</mml:mo>
                  <mml:mn>0</mml:mn>
                </mml:mrow>
                <mml:mrow>
                  <mml:msub>
                    <mml:mi>D</mml:mi>
                    <mml:mrow>
                      <mml:mtext>len</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                  <mml:mo>−</mml:mo>
                  <mml:mn>1</mml:mn>
                </mml:mrow>
              </mml:munderover>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mi>R</mml:mi>
              <mml:mtext>digits</mml:mtext>
              <mml:mrow>
                <mml:mo>[</mml:mo>
                <mml:mi>j</mml:mi>
                <mml:mo>]</mml:mo>
              </mml:mrow>
              <mml:mo>⋅</mml:mo>
              <mml:msup>
                <mml:mi>b</mml:mi>
                <mml:mrow>
                  <mml:msub>
                    <mml:mi>D</mml:mi>
                    <mml:mrow>
                      <mml:mtext>len</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                  <mml:mo>−</mml:mo>
                  <mml:mn>1</mml:mn>
                  <mml:mo>−</mml:mo>
                  <mml:mi>j</mml:mi>
                </mml:mrow>
              </mml:msup>
              <mml:mo>.</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>Encode each as a fixed-width decimal string (zero-padded to <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> ⌈ </mml:mo><mml:mrow><mml:msub><mml:mi> D </mml:mi><mml:mrow><mml:mtext> len </mml:mtext></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi> log </mml:mi></mml:mrow><mml:mrow><mml:mn> 10 </mml:mn></mml:mrow></mml:msub><mml:mi> b </mml:mi></mml:mrow><mml:mo> ⌉ </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> digits).</p>
        <p><bold>Position-aware</bold><bold>snippet</bold><bold>(still</bold><bold>tiny, binds</bold><bold>to</bold><bold>position)</bold></p>
        <p>Choose a small modulus <inline-formula><mml:math><mml:mrow><mml:msup><mml:mrow><mml:mn> 10 </mml:mn></mml:mrow><mml:mi> t </mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> (e.g., <inline-formula><mml:math><mml:mrow><mml:mi> t </mml:mi><mml:mo> = </mml:mo><mml:mn> 2 </mml:mn><mml:mo> ⋅ </mml:mo><mml:msub><mml:mi> D </mml:mi><mml:mrow><mml:mtext> len </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> ). Let the global position of the <inline-formula><mml:math><mml:mi> j </mml:mi></mml:math></inline-formula> -th digit be <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> P </mml:mi><mml:mi> j </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (0 = most significant). Compute </p>
        <disp-formula id="FD41">
          <mml:math>
            <mml:mrow>
              <mml:mtext>valL</mml:mtext>
              <mml:mo>≡</mml:mo>
              <mml:munderover>
                <mml:mstyle mathsize="140%" displaystyle="true">
                  <mml:mo>∑</mml:mo>
                </mml:mstyle>
                <mml:mrow>
                  <mml:mi>j</mml:mi>
                  <mml:mo>=</mml:mo>
                  <mml:mn>0</mml:mn>
                </mml:mrow>
                <mml:mrow>
                  <mml:msub>
                    <mml:mi>D</mml:mi>
                    <mml:mrow>
                      <mml:mtext>len</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                  <mml:mo>−</mml:mo>
                  <mml:mn>1</mml:mn>
                </mml:mrow>
              </mml:munderover>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:msup>
                <mml:mi>b</mml:mi>
                <mml:mrow>
                  <mml:msub>
                    <mml:mi>P</mml:mi>
                    <mml:mi>j</mml:mi>
                  </mml:msub>
                </mml:mrow>
              </mml:msup>
              <mml:mo>⋅</mml:mo>
              <mml:mi>L</mml:mi>
              <mml:mtext>digits</mml:mtext>
              <mml:mrow>
                <mml:mo>[</mml:mo>
                <mml:mi>j</mml:mi>
                <mml:mo>]</mml:mo>
              </mml:mrow>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mi>mod</mml:mi>
                  <mml:msup>
                    <mml:mrow>
                      <mml:mn>10</mml:mn>
                    </mml:mrow>
                    <mml:mi>t</mml:mi>
                  </mml:msup>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>,</mml:mo>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mtext>valR</mml:mtext>
              <mml:mo>≡</mml:mo>
              <mml:munderover>
                <mml:mstyle mathsize="140%" displaystyle="true">
                  <mml:mo>∑</mml:mo>
                </mml:mstyle>
                <mml:mrow>
                  <mml:mi>j</mml:mi>
                  <mml:mo>=</mml:mo>
                  <mml:mn>0</mml:mn>
                </mml:mrow>
                <mml:mrow>
                  <mml:msub>
                    <mml:mi>D</mml:mi>
                    <mml:mrow>
                      <mml:mtext>len</mml:mtext>
                    </mml:mrow>
                  </mml:msub>
                  <mml:mo>−</mml:mo>
                  <mml:mn>1</mml:mn>
                </mml:mrow>
              </mml:munderover>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:msup>
                <mml:mi>b</mml:mi>
                <mml:mrow>
                  <mml:msub>
                    <mml:mi>P</mml:mi>
                    <mml:mi>j</mml:mi>
                  </mml:msub>
                </mml:mrow>
              </mml:msup>
              <mml:mo>⋅</mml:mo>
              <mml:mi>R</mml:mi>
              <mml:mtext>digits</mml:mtext>
              <mml:mrow>
                <mml:mo>[</mml:mo>
                <mml:mi>j</mml:mi>
                <mml:mo>]</mml:mo>
              </mml:mrow>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mi>mod</mml:mi>
                  <mml:msup>
                    <mml:mrow>
                      <mml:mn>10</mml:mn>
                    </mml:mrow>
                    <mml:mi>t</mml:mi>
                  </mml:msup>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>,</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>using fast modular powers. Emit the last <inline-formula><mml:math><mml:mi> t </mml:mi></mml:math></inline-formula> decimal digits of each.</p>
        <p>(<italic>This</italic><italic>captures</italic> “<italic>considering</italic><italic>their</italic><italic>position</italic>” <italic>without</italic><italic>heavy</italic><italic>big-int</italic><italic>work.</italic>)</p>
        <p>Rip-and-Mix Token</p>
        <p>Normalize the two decimal snippets to equal width and <bold>interleave</bold> them (zip one digit from left, one from right). Optionally permute the interleave with a per-layer salt <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> S </mml:mi><mml:mi> i </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> to prevent reuse:</p>
        <disp-formula id="FD42">
          <mml:math>
            <mml:mrow>
              <mml:mtext>Lstr</mml:mtext>
              <mml:mo>=</mml:mo>
              <mml:mtext>zpad</mml:mtext>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mtext>dec</mml:mtext>
                  <mml:mrow>
                    <mml:mo>(</mml:mo>
                    <mml:mrow>
                      <mml:mtext>valL</mml:mtext>
                    </mml:mrow>
                    <mml:mo>)</mml:mo>
                  </mml:mrow>
                  <mml:mo>,</mml:mo>
                  <mml:mi>W</mml:mi>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <disp-formula id="FD43">
          <mml:math>
            <mml:mrow>
              <mml:mtext>Rstr</mml:mtext>
              <mml:mo>=</mml:mo>
              <mml:mtext>zpad</mml:mtext>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mtext>dec</mml:mtext>
                  <mml:mrow>
                    <mml:mo>(</mml:mo>
                    <mml:mrow>
                      <mml:mtext>valR</mml:mtext>
                    </mml:mrow>
                    <mml:mo>)</mml:mo>
                  </mml:mrow>
                  <mml:mo>,</mml:mo>
                  <mml:mi>W</mml:mi>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <disp-formula id="FD44">
          <mml:math>
            <mml:mrow>
              <mml:mtext>mix</mml:mtext>
              <mml:mo>=</mml:mo>
              <mml:mtext>Interleave</mml:mtext>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mtext>Lstr</mml:mtext>
                  <mml:mo>,</mml:mo>
                  <mml:mtext>Rstr</mml:mtext>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mtext>
                 
              </mml:mtext>
              <mml:mo>#</mml:mo>
              <mml:mtext>orInterleavePerm</mml:mtext>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mtext>Lstr</mml:mtext>
                  <mml:mo>,</mml:mo>
                  <mml:mtext>Rstr</mml:mtext>
                  <mml:mo>,</mml:mo>
                  <mml:msub>
                    <mml:mi>S</mml:mi>
                    <mml:mi>i</mml:mi>
                  </mml:msub>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>Define the op’s <italic>rip-and-mix</italic><italic>token</italic>: </p>
        <disp-formula id="FD45">
          <mml:math>
            <mml:mrow>
              <mml:mi>t</mml:mi>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mi>o</mml:mi>
                  <mml:mi>p</mml:mi>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>=</mml:mo>
              <mml:mi>H</mml:mi>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mo>"</mml:mo>
                  <mml:mtext>RipMix</mml:mtext>
                  <mml:mo>"</mml:mo>
                  <mml:mo>∥</mml:mo>
                  <mml:mi>b</mml:mi>
                  <mml:mo>∥</mml:mo>
                  <mml:mi>n</mml:mi>
                  <mml:mo>∥</mml:mo>
                  <mml:mi>ℓ</mml:mi>
                  <mml:mo>∥</mml:mo>
                  <mml:mi>L</mml:mi>
                  <mml:mi>p</mml:mi>
                  <mml:mi>o</mml:mi>
                  <mml:mi>s</mml:mi>
                  <mml:mo>∥</mml:mo>
                  <mml:mi>R</mml:mi>
                  <mml:mi>p</mml:mi>
                  <mml:mi>o</mml:mi>
                  <mml:mi>s</mml:mi>
                  <mml:mo>∥</mml:mo>
                  <mml:mi>D</mml:mi>
                  <mml:mi>l</mml:mi>
                  <mml:mi>e</mml:mi>
                  <mml:mi>n</mml:mi>
                  <mml:mo>∥</mml:mo>
                  <mml:mi>m</mml:mi>
                  <mml:mi>i</mml:mi>
                  <mml:mi>x</mml:mi>
                  <mml:mo>∥</mml:mo>
                  <mml:msub>
                    <mml:mi>S</mml:mi>
                    <mml:mi>i</mml:mi>
                  </mml:msub>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>,</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>where <inline-formula><mml:math><mml:mi> H </mml:mi></mml:math></inline-formula> is a 256-bit hash (e.g., SHA-256/SHA3-256) and <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> S </mml:mi><mml:mi> i </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is a per-layer salt such as </p>
        <disp-formula id="FD46">
          <mml:math>
            <mml:mrow>
              <mml:msub>
                <mml:mi>S</mml:mi>
                <mml:mi>i</mml:mi>
              </mml:msub>
              <mml:mo>=</mml:mo>
              <mml:mi>H</mml:mi>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mo>"</mml:mo>
                  <mml:mtext>Salt</mml:mtext>
                  <mml:mo>"</mml:mo>
                  <mml:mo>∥</mml:mo>
                  <mml:mi>E</mml:mi>
                  <mml:mo>∥</mml:mo>
                  <mml:mi>s</mml:mi>
                  <mml:mi>e</mml:mi>
                  <mml:mi>s</mml:mi>
                  <mml:mi>s</mml:mi>
                  <mml:mi>i</mml:mi>
                  <mml:mi>o</mml:mi>
                  <mml:mi>n</mml:mi>
                  <mml:mtext>_</mml:mtext>
                  <mml:mi>n</mml:mi>
                  <mml:mi>o</mml:mi>
                  <mml:mi>n</mml:mi>
                  <mml:mi>c</mml:mi>
                  <mml:mi>e</mml:mi>
                  <mml:mo>∥</mml:mo>
                  <mml:mi>s</mml:mi>
                  <mml:mi>t</mml:mi>
                  <mml:mi>a</mml:mi>
                  <mml:mi>t</mml:mi>
                  <mml:msub>
                    <mml:mi>e</mml:mi>
                    <mml:mrow>
                      <mml:mi>i</mml:mi>
                      <mml:mo>−</mml:mo>
                      <mml:mn>1</mml:mn>
                    </mml:mrow>
                  </mml:msub>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>.</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>per-layer index sets supplied by the client that tell the verifier which few operations to evaluate (via a RAM-bound tag) before forming the layer digest. The goal is to keep honest logins fast while forcing offline attackers to search a larger hidden space (witness and indices) with no per-layer oracle. Tag’s scratch is deterministically derived from <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> S </mml:mi><mml:mi> i </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> .</p>
        <p>Example (tiny numbers for illustration)</p>
        <p>Let the catalog define <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> D </mml:mi><mml:mrow><mml:mn> 6 </mml:mn><mml:mo> , </mml:mo><mml:mn> 3 </mml:mn><mml:mo> , </mml:mo><mml:mn> 5 </mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> as the 12-digit base-6 string: </p>
        <p>33333 000000</p>
        <p>op <inline-formula><mml:math><mml:mrow><mml:mo> = </mml:mo><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> b </mml:mi><mml:mo> = </mml:mo><mml:mn> 6 </mml:mn><mml:mo> , </mml:mo><mml:mi> n </mml:mi><mml:mo> = </mml:mo><mml:mn> 3 </mml:mn><mml:mo> , </mml:mo><mml:mi> ℓ </mml:mi><mml:mo> = </mml:mo><mml:mn> 5 </mml:mn><mml:mo> , </mml:mo><mml:msub><mml:mi> L </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub><mml:mo> = </mml:mo><mml:mn> 4 </mml:mn><mml:mo> , </mml:mo><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub><mml:mo> = </mml:mo><mml:mn> 3 </mml:mn><mml:mo> , </mml:mo><mml:msub><mml:mi> D </mml:mi><mml:mrow><mml:mtext> len </mml:mtext></mml:mrow></mml:msub><mml:mo> = </mml:mo><mml:mn> 3 </mml:mn></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> Ldigits <inline-formula><mml:math><mml:mrow><mml:mo> = </mml:mo><mml:mi> D </mml:mi><mml:mrow><mml:mo> [ </mml:mo><mml:mrow><mml:mn> 4 </mml:mn><mml:mo> : </mml:mo><mml:mn> 7 </mml:mn></mml:mrow><mml:mo> ] </mml:mo></mml:mrow><mml:mo> = </mml:mo><mml:mn> 3 </mml:mn><mml:mo> , </mml:mo><mml:mn> 0 </mml:mn><mml:mo> , </mml:mo><mml:mn> 0 </mml:mn><mml:mo> → </mml:mo></mml:mrow></mml:math></inline-formula> local decimal </p>
        <disp-formula id="FD47">
          <mml:math>
            <mml:mrow>
              <mml:mtext>valL</mml:mtext>
              <mml:mo>=</mml:mo>
              <mml:mn>3</mml:mn>
              <mml:mo>⋅</mml:mo>
              <mml:msup>
                <mml:mn>6</mml:mn>
                <mml:mn>2</mml:mn>
              </mml:msup>
              <mml:mo>+</mml:mo>
              <mml:mn>0</mml:mn>
              <mml:mo>⋅</mml:mo>
              <mml:mn>6</mml:mn>
              <mml:mo>+</mml:mo>
              <mml:mn>0</mml:mn>
              <mml:mo>=</mml:mo>
              <mml:mn>108</mml:mn>
              <mml:mo>→</mml:mo>
              <mml:mo>"</mml:mo>
              <mml:mn>108</mml:mn>
              <mml:mo>"</mml:mo>
              <mml:mo>.</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>Rdigits <inline-formula><mml:math><mml:mrow><mml:mo> = </mml:mo><mml:mi> D </mml:mi><mml:mrow><mml:mo> [ </mml:mo><mml:mrow><mml:mn> 12 </mml:mn><mml:mo> − </mml:mo><mml:mn> 3 </mml:mn><mml:mo> − </mml:mo><mml:mn> 3 </mml:mn><mml:mo> : </mml:mo><mml:mn> 12 </mml:mn><mml:mo> − </mml:mo><mml:mn> 3 </mml:mn></mml:mrow><mml:mo> ] </mml:mo></mml:mrow><mml:mo> = </mml:mo><mml:mi> D </mml:mi><mml:mrow><mml:mo> [ </mml:mo><mml:mrow><mml:mn> 6 </mml:mn><mml:mo> : </mml:mo><mml:mn> 9 </mml:mn></mml:mrow><mml:mo> ] </mml:mo></mml:mrow><mml:mo> = </mml:mo><mml:mn> 0 </mml:mn><mml:mo> , </mml:mo><mml:mn> 0 </mml:mn><mml:mo> , </mml:mo><mml:mn> 0 </mml:mn><mml:mo> → </mml:mo></mml:mrow></mml:math></inline-formula></p>
        <disp-formula id="FD48">
          <mml:math>
            <mml:mrow>
              <mml:mtext>valR</mml:mtext>
              <mml:mo>=</mml:mo>
              <mml:mn>0</mml:mn>
              <mml:mo>→</mml:mo>
              <mml:mo>"</mml:mo>
              <mml:mn>000</mml:mn>
              <mml:mo>"</mml:mo>
              <mml:mo>.</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>Interleave: “108” <inline-formula><mml:math><mml:mo> ⊥ </mml:mo></mml:math></inline-formula> “000” <inline-formula><mml:math><mml:mo> → </mml:mo></mml:math></inline-formula> “100800”. Token: </p>
        <disp-formula id="FD49">
          <mml:math>
            <mml:mrow>
              <mml:mi>t</mml:mi>
              <mml:mo>=</mml:mo>
              <mml:mi>H</mml:mi>
              <mml:mrow>
                <mml:mo>(</mml:mo>
                <mml:mrow>
                  <mml:mo>"</mml:mo>
                  <mml:mtext>RipMix</mml:mtext>
                  <mml:mo>"</mml:mo>
                  <mml:mo>∥</mml:mo>
                  <mml:mtext>params</mml:mtext>
                  <mml:mo>∥</mml:mo>
                  <mml:mo>"</mml:mo>
                  <mml:mn>100800</mml:mn>
                  <mml:mo>"</mml:mo>
                  <mml:mo>∥</mml:mo>
                  <mml:msub>
                    <mml:mi>S</mml:mi>
                    <mml:mi>i</mml:mi>
                  </mml:msub>
                </mml:mrow>
                <mml:mo>)</mml:mo>
              </mml:mrow>
              <mml:mo>.</mml:mo>
            </mml:mrow>
          </mml:math>
        </disp-formula>
        <p>You compute such tokens <bold>only</bold> for indices in arg_tags; the rest of the layer is unaffected.</p>
      </sec>
      <sec id="sec7dot5">
        <title>7.5. Security and Performance Notes</title>
        <p><bold>No</bold><bold>full</bold><bold>expansion.</bold> All work is on <inline-formula><mml:math><mml:mrow><mml:mi> O </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:msub><mml:mi> D </mml:mi><mml:mrow><mml:mtext> len </mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> digits per selected op; typical <italic>D</italic><sub>len</sub> is tiny (e.g., 3 - 16). Hash cost is fixed and small.<bold>Client-held</bold><bold>indices</bold><bold>add</bold><bold>search</bold><bold>space.</bold> Offline attackers must guess <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> b </mml:mi><mml:mo> , </mml:mo><mml:mi> n </mml:mi><mml:mo> , </mml:mo><mml:mi> ℓ </mml:mi><mml:mo> , </mml:mo><mml:msub><mml:mi> L </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub><mml:mo> , </mml:mo><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub><mml:mo> , </mml:mo><mml:msub><mml:mi> D </mml:mi><mml:mrow><mml:mtext> len </mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> and the per-layer arg_tags_i across <inline-formula><mml:math><mml:mi> K </mml:mi></mml:math></inline-formula> layers, with <italic>no</italic><italic>per-layer</italic><italic>oracle</italic>—only the final commitment decides.<bold>Salts</bold><bold>prevent</bold><bold>precomputation.</bold> Including <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> S </mml:mi><mml:mi> i </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in <inline-formula><mml:math><mml:mrow><mml:mi> t </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mo> ⋅ </mml:mo><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> i </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> kills table-reuse across sessions/epochs.<bold>Catalog</bold><bold>rotation.</bold> If catalogs change over epochs, you can bind a version <inline-formula><mml:math><mml:mi> V </mml:mi></mml:math></inline-formula> into <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> S </mml:mi><mml:mi> i </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> or the fold; old offline transcripts won’t verify under a new <inline-formula><mml:math><mml:mi> V </mml:mi></mml:math></inline-formula> .<bold>Bounds</bold><bold>enforcement.</bold> Reject ops whose windows fall out of range; do so in constant time and without per-layer leakage (fixed-length transcripts, padded timing). </p>
      </sec>
      <sec id="sec7dot6">
        <title>7.6. Threat-Model Alignment</title>
        <p><bold>Server</bold><bold>breach</bold><bold>(but</bold><bold>not</bold><bold>the</bold><bold>client’s</bold><bold>secrets).</bold> The attacker sees only <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> C </mml:mi><mml:mi> E </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (only final epoch commitment) and system parameters. To test a guess, they must run the <italic>same</italic> selective RAM-walks for the (unknown) per-layer indices and still only learn success/failure at the <italic>final</italic> check.<bold>Catalog</bold><bold>leakage.</bold> Harmless: catalogs are public by design. Strength comes from the client-held indices and salted RAM-walks, and mathematical operations, not catalog secrecy. </p>
      </sec>
      <sec id="sec7dot7">
        <title>7.7. Triangular vs. Other Polygonal Families (Why Triangles Win for “Assemble, Don’t Compute”)</title>
        <p><bold>Scope.</bold> By “polygonal” we refer to the standard figurate families: </p>
        <p><bold>Triangular:</bold><inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub><mml:mo> = </mml:mo><mml:mfrac><mml:mrow><mml:mi> n </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> n </mml:mi><mml:mo> + </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow><mml:mn> 2 </mml:mn></mml:mfrac></mml:mrow></mml:math></inline-formula> .<bold>Square:</bold><inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> S </mml:mi><mml:mi> n </mml:mi></mml:msub><mml:mo> = </mml:mo><mml:msup><mml:mi> n </mml:mi><mml:mn> 2 </mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> .<bold>Pentagonal/Hexagonal</bold><bold>(general</bold><italic><bold>k</bold></italic><bold>-</bold><bold>gonal</bold><bold>):</bold><inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> P </mml:mi><mml:mi> k </mml:mi></mml:msub><mml:mrow><mml:mo> ( </mml:mo><mml:mi> n </mml:mi><mml:mo> ) </mml:mo></mml:mrow><mml:mo> = </mml:mo><mml:mn> 2 </mml:mn><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> k </mml:mi><mml:mo> − </mml:mo><mml:mn> 2 </mml:mn></mml:mrow><mml:mo> ) </mml:mo></mml:mrow><mml:msup><mml:mi> n </mml:mi><mml:mn> 2 </mml:mn></mml:msup><mml:mo> − </mml:mo><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> k </mml:mi><mml:mo> − </mml:mo><mml:mn> 4 </mml:mn></mml:mrow><mml:mo> ) </mml:mo></mml:mrow><mml:mi> n </mml:mi></mml:mrow></mml:math></inline-formula> .</p>
        <p>We compare these families specifically for our <italic>catalog</italic> + <italic>rip-and-mix</italic><italic>windows</italic><italic>model</italic>, where an operation is <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> b </mml:mi><mml:mo> , </mml:mo><mml:mi> n </mml:mi><mml:mo> , </mml:mo><mml:mi> ℓ </mml:mi><mml:mo> , </mml:mo><mml:msub><mml:mi> L </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub><mml:mo> , </mml:mo><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub><mml:mo> , </mml:mo><mml:msub><mml:mi> D </mml:mi><mml:mrow><mml:mtext> len </mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> and we only ever extract tiny slices of the base-<inline-formula><mml:math><mml:mi> b </mml:mi></mml:math></inline-formula> digit string <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> D </mml:mi><mml:mrow><mml:mi> b </mml:mi><mml:mo> , </mml:mo><mml:mi> n </mml:mi><mml:mo> , </mml:mo><mml:mi> ℓ </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> rather than expanding the full number.</p>
        <p>1) Catalog Density &amp; Short Forms Across Bases</p>
        <p><bold>Triangular:</bold> Empirically yields the richest, dense “digit languages” across many bases (e.g., families of repeaters/structured blocks) that map to valid triangular indices for long stretches of <inline-formula><mml:math><mml:mi> ℓ </mml:mi></mml:math></inline-formula> . This yields large legal sets <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> S </mml:mi><mml:mrow><mml:mi> b </mml:mi><mml:mo> , </mml:mo><mml:mi> n </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and many usable short descriptors per base. Multiple bases can be used to further increase richness. <bold>Square:</bold> Productive in a few bases (e.g., patterns that mirror squaring rules), but sparser than triangles; legal length sets <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> S </mml:mi><mml:mrow><mml:mi> b </mml:mi><mml:mo> , </mml:mo><mml:mi> n </mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> tend to be thinner for compact patterns. <bold>Pentagonal</bold>/<bold>hexagonal</bold>/<bold>general</bold><italic><bold>k</bold></italic><bold>-</bold><bold>gonal</bold><bold>:</bold> Catalogs exist, but short-form patterns are rarer, more brittle, and less reusable across bases. </p>
        <p><italic>Why</italic><italic>it</italic><italic>matters</italic>: Denser catalogs <inline-formula><mml:math><mml:mo> ⇒ </mml:mo></mml:math></inline-formula> more valid operations per layer without decimal work, more options for the client, and a larger hidden search space for the attacker.</p>
        <p>2) Sliceability &amp; Local Evaluators (Fast Windows)</p>
        <p><bold>Triangular:</bold> Many patterns allow fetching slices <inline-formula><mml:math><mml:mrow><mml:mi> D </mml:mi><mml:mrow><mml:mo> [ </mml:mo><mml:mrow><mml:mi> a </mml:mi><mml:mo> : </mml:mo><mml:mi> b </mml:mi></mml:mrow><mml:mo> ] </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> with minimal evaluators (no full expansion). <italic>L</italic>/<italic>R</italic> window extraction is cheap and uniform across bases.<bold>Square:</bold> Local evaluation is heavier due to carry interactions from squaring; feasible but less uniform. <bold>Higher</bold><italic><bold>k</bold></italic><bold>-</bold><bold>gonal</bold><bold>:</bold> Often needs more per-digit logic or partial expansions to locate digits, slowing window extraction. </p>
        <p><italic>Why</italic><italic>it</italic><italic>matters</italic>: A rip-and-mix token touches only <inline-formula><mml:math><mml:mrow><mml:mi> O </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:msub><mml:mi> D </mml:mi><mml:mrow><mml:mtext> len </mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> digits; triangular patterns keep this path simple and predictable.</p>
        <p>3) Security Fit to Rip-and-Mix</p>
        <p>All families share the same core security principle: hardness derives from client-held choices (<italic>witness</italic>, <italic>arg_tags</italic>, <italic>windows</italic><inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> L </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub><mml:mo> , </mml:mo><mml:msub><mml:mi> R </mml:mi><mml:mrow><mml:mtext> pos </mml:mtext></mml:mrow></mml:msub><mml:mo> , </mml:mo><mml:msub><mml:mi> D </mml:mi><mml:mrow><mml:mtext> len </mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> ) and final-only commitment. <bold>Triangles</bold><bold>provide</bold><bold>an</bold><bold>edge:</bold> their dense catalogs offer more valid operations (larger <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> m </mml:mi><mml:mi> i </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> ) and more cross-base variants, expanding the attacker’s offline search space for the same per-guess cost. </p>
        <p>4) Operational Cost &amp; Caching</p>
        <p><bold>Triangular:</bold> Best cache reuse (catalog-wide, salt-agnostic) for window locators and tiny digit evaluators; highly predictable performance. <bold>Square</bold>/<bold>others:</bold> More custom evaluators; higher risk of fallback to heavy arithmetic during window extraction. <bold>Performance</bold><bold>knob:</bold> Per-guess RAM and slice counts can be tuned. Total cost is via modular exponentiation—CPU-friendly, highly parallel, and <italic>not</italic> RAM-bound unless configured to be. </p>
      </sec>
    </sec>
    <sec id="sec8">
      <title>8. Conclusions</title>
      <p>To conclude our findings, we have proposed an alternative and direct way of writing the triangular number of any given repetitive digit of number <italic>n</italic> and length <italic>m</italic>, <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mi> N </mml:mi><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> m </mml:mi></mml:msub></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> , based on <italic>the</italic><italic>triangular</italic><italic>number</italic><italic>matrix</italic> formula, without even doing any large multiplication and summation of digits. The formula involves constants and patterns hidden inside the long triangular numbers. This beautiful approach to writing triangular numbers opens a new direction for utilizing hidden symmetries and patterns, thereby avoiding direct, large mathematical operations.</p>
      <p>Moreover, we presented <italic>TLV</italic>, a breach-resilient verifier that uses public triangular digit catalogs, rip-and-mix window tokens, and client-held arg_tags to keep honest work tiny while forcing offline attackers to pay a large, memory-bound cost per guess, with success revealed only at a final commitment.</p>
      <p>Triangles excel in this setting because their catalogs are unusually dense and sliceable across bases, enabling fast, symmetric, seam-free implementations that never need to expand full numbers unless the security model explicitly demands it. Security stems from per-layer salts, selective RAM-walks, and hidden index sets—not from catalog secrecy.</p>
    </sec>
    <sec id="sec9">
      <title>Acknowledgements</title>
      <p>This work was motivated in part by the author’s longstanding fascination with repdigits, numerical structure, and pattern formation in mathematics. The author also gratefully acknowledges Trishul Dhalia for support and assistance in preparing the manuscript.</p>
    </sec>
    <sec id="sec10">
      <title>Data Availability Statement</title>
      <p>The data generated for this study are available within the text.</p>
    </sec>
    <sec id="sec11">
      <title>Supplementary</title>
      <sec id="sec11dot1">
        <title>A. Figures for Repdigit of 2, 4, 5, 7 and 8</title>
        <p>Here, we present the constants and patterns in repdigits of 2, 4, 5, 7, and 8, along with the mapping from digital roots to vertical constants, in the following Supplementary <bold>Figures S1-S6</bold>. </p>
        <fig id="fig9">
          <label>Figure 9</label>
          <graphic xlink:href="https://html.scirp.org/file/1101176-rId506.jpeg?20260515035520" />
        </fig>
        <p><bold>Figure S1.</bold> Triangular series of repdigit (2).</p>
        <fig id="fig10">
          <label>Figure 10</label>
          <graphic xlink:href="https://html.scirp.org/file/1101176-rId507.jpeg?20260515035520" />
        </fig>
        <p><bold>Figure S2.</bold> Triangular series of repdigit (7).</p>
        <fig id="fig11">
          <label>Figure 11</label>
          <graphic xlink:href="https://html.scirp.org/file/1101176-rId508.jpeg?20260515035521" />
        </fig>
        <p><bold>Figure S3.</bold> Triangular series of repdigit (5).</p>
        <fig id="fig12">
          <label>Figure 12</label>
          <graphic xlink:href="https://html.scirp.org/file/1101176-rId509.jpeg?20260515035521" />
        </fig>
        <p><bold>Figure S4.</bold> Triangular series of repdigit (8).</p>
        <fig id="fig13">
          <label>Figure 13</label>
          <graphic xlink:href="https://html.scirp.org/file/1101176-rId510.jpeg?20260515035521" />
        </fig>
        <p><bold>Figure S5.</bold> Triangular series of repdigit (4).</p>
        <fig id="fig14">
          <label>Figure 14</label>
          <graphic xlink:href="https://html.scirp.org/file/1101176-rId511.jpeg?20260515035521" />
        </fig>
        <p><bold>Figure S6.</bold> Mapping from digital roots to the corresponding vertical constants for repdigit (2).</p>
      </sec>
      <sec id="sec11dot2">
        <title>B. Future Directions</title>
        <p>B.1. Parallelization Enhancements</p>
        <p>Both the multi-base method and the GPU-porting approach rely on dividing work into independent tasks that can be executed simultaneously. Instead of generating each triangular number via the direct formula <inline-formula><mml:math display="inline"><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub><mml:mo> = </mml:mo><mml:mrow><mml:mrow><mml:mi> n </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> n </mml:mi><mml:mo> + </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow><mml:mo> / </mml:mo><mml:mn> 2 </mml:mn></mml:mrow></mml:mrow></mml:math></inline-formula> , we precompute anchors across bases and assemble numbers in parallel. Key strategies include: </p>
        <p>1) <bold>Base-level</bold><bold>parallelization:</bold> employ multiple numeral systems (e.g., base 7 and base 10) concurrently to compute repdigit anchors and their triangular numbers; each base yields its own sequence (e.g., 3300, 333000, 33330000 in base 7). </p>
        <p>2) <bold>Task-level</bold><bold>parallelization:</bold> assign independent jobs to disjoint ranges of repdigit or non-repdigit inputs—one process might handle values starting at 3300 while another begins from 33333333330000000000—so anchors and subsequent additions can be generated concurrently. </p>
        <p>3) <bold>Pattern-iteration</bold><bold>parallelization:</bold> treat each pattern length (for example 3300, 333000 or 33330000) as a separate work unit that iterates the additive sequence <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mn> 1 </mml:mn><mml:mo> + </mml:mo><mml:mn> 2 </mml:mn><mml:mo> + </mml:mo><mml:mn> 3 </mml:mn><mml:mo> + </mml:mo><mml:mo> ⋯ </mml:mo></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> in parallel. </p>
        <p>4) <bold>Anchor</bold><bold>search</bold><bold>on</bold><bold>GPUs:</bold> use digit-length heuristics and binary search operations to locate the nearest repdigit anchor for a given input in a massively parallel fashion on GPU hardware. </p>
        <p>5) <bold>Independent</bold><bold>pattern</bold><bold>assembly:</bold> construct the left and right pattern blocks separately on GPU threads, allowing simultaneous assembly of both halves of the triangular number. </p>
        <p>6) <bold>Parallel</bold><bold>reduction:</bold> break the digital-root reduction into hundreds or thousands of small computations across the GPU to obtain the scale-dependent key quickly. </p>
        <p>7) <bold>Block-wise</bold><bold>base</bold><bold>conversion:</bold> split large base-<italic>b</italic> numbers into smaller chunks, convert each chunk independently on the GPU and reassemble them to perform base changes efficiently. </p>
        <p>8) <bold>Parallel</bold><bold>non-repdigit</bold><bold>processing:</bold> apply logarithmic or block-based techniques to non-repdigit triangular numbers so they can be processed alongside repdigits without serial bottlenecks. </p>
        <p>Overall, the objective is to decompose the computation of <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> T </mml:mi><mml:mi> n </mml:mi></mml:msub><mml:mo> = </mml:mo><mml:mrow><mml:mrow><mml:mi> n </mml:mi><mml:mrow><mml:mo> ( </mml:mo><mml:mrow><mml:mi> n </mml:mi><mml:mo> + </mml:mo><mml:mn> 1 </mml:mn></mml:mrow><mml:mo> ) </mml:mo></mml:mrow></mml:mrow><mml:mo> / </mml:mo><mml:mn> 2 </mml:mn></mml:mrow></mml:mrow></mml:math></inline-formula> into schedulable parallel tasks, including string assembly, anchor generation, reduction, and other bounded arithmetic operations that can be distributed across GPU threads. In this way, work that would traditionally be performed through a largely serial large-integer pipeline can instead be reorganized into smaller independent components better suited to multi-threaded GPU architectures. With careful implementation, triangular-number generation may therefore be expressed as a parallel workload in which non-dependent stages are executed concurrently to improve throughput and reduce computation time.</p>
        <p>B.2. Logarithmic Enhancements</p>
        <p><bold>1</bold><bold>)</bold><bold>Auto-generating</bold><bold>vertical</bold><bold>constants</bold><bold>from</bold><bold>inherited</bold><bold>digits</bold><bold>(</bold><xref ref-type="fig" rid="fig2">Figure 2</xref><bold>):</bold> This approach could generate vertical constants automatically, eliminating the need to manually identify them in each base and enabling dynamic formation of these constants for pattern assembly in large-base systems (e.g., base 1000). Since the composition of the horizontal patterns is also linked to the vertical patterns, it may be possible to discover a logarithmic characterization for these relationships as well. </p>
        <p><bold>2</bold><bold>)</bold><bold>Deriving</bold><bold>the</bold><bold>remainder</bold><bold>via</bold><bold>the</bold><bold>pattern</bold><bold>index:</bold> This approach can reduce computation time compared with computing the remainder directly as <inline-formula><mml:math><mml:mrow><mml:mi> r </mml:mi><mml:mo> = </mml:mo><mml:msub><mml:mi> N </mml:mi><mml:mrow><mml:mi> L </mml:mi><mml:mo> / </mml:mo><mml:mi> R </mml:mi></mml:mrow></mml:msub><mml:mi> mod </mml:mi><mml:msub><mml:mi> P </mml:mi><mml:mi> ℓ </mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> . The scalable reduction method yields the digital root of a large repdigit, which is mapped to a pattern index drawn from the nine repeating values <inline-formula><mml:math><mml:mrow><mml:mrow><mml:mo> { </mml:mo><mml:mrow><mml:mn> 1 </mml:mn><mml:mo> , </mml:mo><mml:mn> 2 </mml:mn><mml:mo> , </mml:mo><mml:mn> 3 </mml:mn><mml:mo> , </mml:mo><mml:mn> 4 </mml:mn><mml:mo> , </mml:mo><mml:mn> 5 </mml:mn><mml:mo> , </mml:mo><mml:mn> 6 </mml:mn><mml:mo> , </mml:mo><mml:mn> 7 </mml:mn><mml:mo> , </mml:mo><mml:mn> 8 </mml:mn><mml:mo> , </mml:mo><mml:mn> 9 </mml:mn></mml:mrow><mml:mo> } </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> (see <xref ref-type="fig" rid="fig3">Figure 3</xref>). The remainder could then be obtained by subtracting 1 from pattern index directly without additional computations. </p>
        <p><bold>3</bold><bold>)</bold><bold>Speeding</bold><bold>up</bold><bold>scalable</bold><bold>reduction</bold><bold>via</bold><bold>caching:</bold> The scalable reduction step dominates the runtime of triangular-number generation, so accelerating it can substantially improve overall performance. In addition to parallelization (e.g., multithreading or GPUs), the repdigit setting enables an effective caching strategy keyed by digit and length. This caching approach has already been implemented, and the benchmark results reported in this paper reflect the corresponding increase in speed. For example, to compute the digital root of the repdigit <inline-formula><mml:math><mml:mrow><mml:mi> N </mml:mi><mml:mo> = </mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 2 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn> 140000000 </mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> , it is unnecessary to iterate over 140,000,000 identical digits. Instead, one can cache the contribution of fixed blocks of repeated 2’s—for instance <inline-formula><mml:math><mml:mrow><mml:msub><mml:mi> B </mml:mi><mml:mi> k </mml:mi></mml:msub><mml:mo> = </mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo> [ </mml:mo><mml:mn> 2 </mml:mn><mml:mo> ] </mml:mo></mml:mrow></mml:mrow><mml:mi> k </mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> for selected lengths <inline-formula><mml:math><mml:mi> k </mml:mi></mml:math></inline-formula> (e.g., <inline-formula><mml:math><mml:mrow><mml:mi> k </mml:mi><mml:mo> ∈ </mml:mo><mml:mrow><mml:mo> { </mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mn> 10 </mml:mn></mml:mrow><mml:mn> 3 </mml:mn></mml:msup><mml:mo> , </mml:mo><mml:msup><mml:mrow><mml:mn> 10 </mml:mn></mml:mrow><mml:mn> 6 </mml:mn></mml:msup><mml:mo> , </mml:mo><mml:msup><mml:mrow><mml:mn> 10 </mml:mn></mml:mrow><mml:mn> 7 </mml:mn></mml:msup></mml:mrow><mml:mo> } </mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> )—and then express 140,000,000 as a sum of these cached block lengths (e.g., 140,000,000 = 10 × 14,000,000). The digital root is then obtained by combining the cached block contributions rather than summing digits individually. This optimization relies on the uniform structure of repdigits and is generally not feasible for non-repeating digit strings. </p>
        <p>B.3. Configurable TLV Channels for Future Work</p>
        <p><bold>1</bold><bold>)</bold><bold>Authorization</bold><bold>channel:</bold> A natural extension of the authentication channel is an authorization channel. In this setting, TLV would not only confirm that a client has established a valid session, but would also verify that the client is permitted to perform a specific protected action. Accordingly, a TLV authorization channel is best interpreted as a second verification profile layered on top of successful authentication, where the final layer commitment is bound to operation-specific or resource-specific access conditions rather than to identity alone.</p>
        <p><bold>2</bold><bold>)</bold><bold>Document</bold><bold>access</bold><bold>channel:</bold> A second future direction is a document access channel. Here, the layered verification process would gate retrieval of protected content, decryption material, or indexed ranges within expanded catalogs generated by methods such as tri_matrix_stream. This is a natural fit for the catalog-oriented structure developed in this paper, since TLV already supports bounded windows and selective local extraction rather than requiring full-object processing in every step. In such a setting, a successful channel verification could authorize access to a specific document segment, key fragment, or retrieval range within a stored catalog-backed object. The most realistic interpretation is therefore controlled document access and selective retrieval built on catalog storage, rather than treating TLV itself as a general-purpose document storage system.</p>
        <p><bold>3</bold><bold>)</bold><bold>Distributed</bold><bold>transaction</bold><bold>verification:</bold> A third future direction is a distributed transaction verification profile for blockchain or ledger-linked systems. The intended role here is not consensus replacement, but synchronized verification of transaction-related state, private payload access, or approval logic across distributed participants. In this setting, the TLV channel would act as a structured verification layer whose bounded catalog accesses and folded per-layer commitments are shared across a distributed workflow. This is especially relevant in architectures where subsets of participants require selective visibility or selective validation of protected state, since TLV naturally supports bounded local extraction and final-only acceptance. </p>
        <p><bold>Research</bold><bold>direction:</bold> These examples suggest that the main reusable object in TLV is not a single authentication procedure, but a configurable layered verification profile. Future work may therefore formalize a family of TLV channels in which the same catalog and layer abstractions are retained, while the acceptance rule, protected object, and state-rotation policy are specialized to the intended application.</p>
        <p>Towards the end of this paper, we leave with this final statement: </p>
        <p>There is a symmetric structure in which every repdigit’s triangular number in any base also corresponds to a different triangular number in another base, as demonstrated. This symmetry arises from repdigits, which are themselves symmetric. We hope that these pattern-assembly methods may inspire innovations across multiple scientific domains.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <title>References</title>
      <ref id="B1">
        <label>1.</label>
        <citation-alternatives>
          <mixed-citation publication-type="book">Cormen, T.H., Leiserson, C.E., Rivest, R.L. and Stein, C. (2022) Introduction to Algorithms. MIT Press. https://mitpress.mit.edu/9780262367509/introduction-to-algorithms/</mixed-citation>
          <element-citation publication-type="book">
            <person-group person-group-type="author">
              <string-name>Cormen, T.H.</string-name>
              <string-name>Leiserson, C.E.</string-name>
              <string-name>Rivest, R.L.</string-name>
              <string-name>Stein, C.</string-name>
            </person-group>
            <year>2022</year>
            <article-title>Introduction to Algorithms</article-title>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B2">
        <label>2.</label>
        <citation-alternatives>
          <mixed-citation publication-type="web">Karatsuba, A. (1963) Multiplication of Multidigit Numbers on Automata. <italic>Soviet</italic><italic>Physics</italic><italic>Doklady</italic>, 7, 595-596. https://ui.adsabs.harvard.edu/abs/1963SPhD....7..595K</mixed-citation>
          <element-citation publication-type="web">
            <person-group person-group-type="author">
              <string-name>Karatsuba, A.</string-name>
            </person-group>
            <year>1963</year>
            <article-title>Multiplication of Multidigit Numbers on Automata</article-title>
            <source>Soviet Physics Doklady</source>
            <volume>7</volume>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B3">
        <label>3.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Schönhage, A. and Strassen, V. (1971) Fast Multiplication of Large Numbers. <italic>Computing</italic>, 7, 281-292. https://doi.org/10.1007/bf02242355 <pub-id pub-id-type="doi">10.1007/bf02242355</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1007/bf02242355">https://doi.org/10.1007/bf02242355</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Strassen, V.</string-name>
            </person-group>
            <year>1971</year>
            <article-title>Fast Multiplication of Large Numbers</article-title>
            <source>Computing</source>
            <volume>7</volume>
            <pub-id pub-id-type="doi">10.1007/bf02242355</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B4">
        <label>4.</label>
        <citation-alternatives>
          <mixed-citation publication-type="web">Kessler, G.C. (2003) An Overview of Cryptography. https://garykessler.net/library/crypto.html</mixed-citation>
          <element-citation publication-type="web">
            <person-group person-group-type="author">
              <string-name>Kessler, G.C.</string-name>
            </person-group>
            <year>2003</year>
            <article-title>An Overview of Cryptography</article-title>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B5">
        <label>5.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Buchmann, J. (2004) Introduction to Cryptography, Vol. 335. Springer. https://link.springer.com/book/10.1007/978-1-4684-0496-8 <pub-id pub-id-type="doi">10.1007/978-1-4684-0496-8</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1007/978-1-4684-0496-8">https://doi.org/10.1007/978-1-4684-0496-8</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Buchmann, J.</string-name>
              <string-name>Cryptography, V</string-name>
            </person-group>
            <year>2004</year>
            <article-title>Introduction to Cryptography, Vol</article-title>
            <pub-id pub-id-type="doi">10.1007/978-1-4684-0496-8</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B6">
        <label>6.</label>
        <citation-alternatives>
          <mixed-citation publication-type="confproc">Qadir, A.M. and Varol, N. (2019) A Review Paper on Cryptography. 2019 7 <italic>th International Symposium on Digital Forensics and Security</italic> ( <italic>ISDFS</italic>), Barcelos, 10-12 June 2019, 1-6. https://doi.org/10.1109/isdfs.2019.8757514 <pub-id pub-id-type="doi">10.1109/isdfs.2019.8757514</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1109/isdfs.2019.8757514">https://doi.org/10.1109/isdfs.2019.8757514</ext-link></mixed-citation>
          <element-citation publication-type="confproc">
            <person-group person-group-type="author">
              <string-name>Qadir, A.M.</string-name>
              <string-name>Varol, N.</string-name>
            </person-group>
            <year>2019</year>
            <article-title>A Review Paper on Cryptography</article-title>
            <source>2019 7th International Symposium on Digital Forensics and Security (ISDFS)</source>
            <volume>10</volume>
            <pub-id pub-id-type="doi">10.1109/isdfs.2019.8757514</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B7">
        <label>7.</label>
        <citation-alternatives>
          <mixed-citation publication-type="confproc">Cachin, C. and Chandran, N. (2009) A Secure Cryptographic Token Interface. 2009 22 <italic>nd IEEE Computer Security Foundations Symposium</italic>, Port Jefferson, 8-10 July 2009, 141-153. https://doi.org/10.1109/csf.2009.7 <pub-id pub-id-type="doi">10.1109/csf.2009.7</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1109/csf.2009.7">https://doi.org/10.1109/csf.2009.7</ext-link></mixed-citation>
          <element-citation publication-type="confproc">
            <person-group person-group-type="author">
              <string-name>Cachin, C.</string-name>
              <string-name>Chandran, N.</string-name>
              <string-name>Symposium, P</string-name>
            </person-group>
            <year>2009</year>
            <article-title>A Secure Cryptographic Token Interface</article-title>
            <source>2009 22nd IEEE Computer Security Foundations Symposium</source>
            <volume>8</volume>
            <pub-id pub-id-type="doi">10.1109/csf.2009.7</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
    </ref-list>
  </back>
</article>