<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/default.xsl"?>
<fr:tree xmlns:fr="http://www.forester-notes.org" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xml="http://www.w3.org/XML/1998/namespace" root="true" base-url="/">
  <fr:frontmatter>
    <fr:authors />
    <fr:uri>https://um-catlab.github.io/index/</fr:uri>
    <fr:display-uri>index</fr:display-uri>
    <fr:route>/index/</fr:route>
    <fr:title text="UM CatLab">UM CatLab</fr:title>
  </fr:frontmatter>
  <fr:mainmatter>
    <html:p>
      <html:img src="/bafkrmicxob4rk4wt74r5vjlvm5e2v7l3qvvspaisccc2pnkcbowgkpvj7e.png" width="250" height="250" />
    </html:p>
    <fr:tree show-metadata="false" numbered="false">
      <fr:frontmatter>
        <fr:authors />
        <fr:uri>https://um-catlab.github.io/mission/</fr:uri>
        <fr:display-uri>mission</fr:display-uri>
        <fr:route>/mission/</fr:route>
        <fr:title text="Mission">Mission</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>Research laboratory at the <fr:link href="https://cse.engin.umich.edu/" type="external">University of Michigan</fr:link> studying programming languages and semantics. We leverage logic, type theory, and category theory to aid in the design, analysis, and implementation of provably correct software.
</html:p>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="false" numbered="false">
      <fr:frontmatter>
        <fr:authors />
        <fr:uri>https://um-catlab.github.io/members/</fr:uri>
        <fr:display-uri>members</fr:display-uri>
        <fr:route>/members/</fr:route>
        <fr:title text="Members">Members</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:uri>https://um-catlab.github.io/ericbond/</fr:uri>
            <fr:display-uri>ericbond</fr:display-uri>
            <fr:route>/ericbond/</fr:route>
            <fr:title text="Eric Bond">Eric Bond</fr:title>
            <fr:taxon>person</fr:taxon>
            <fr:meta name="external">https://externalhom.com/</fr:meta>
            <fr:meta name="position">PhD Student</fr:meta>
            <fr:meta name="orcid">0009-0008-1575-9606</fr:meta>
            <fr:meta name="institution">University of Michigan</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter />
        </fr:tree>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:uri>https://um-catlab.github.io/ericgiovannini/</fr:uri>
            <fr:display-uri>ericgiovannini</fr:display-uri>
            <fr:route>/ericgiovannini/</fr:route>
            <fr:title text="Eric Giovannini">Eric Giovannini</fr:title>
            <fr:taxon>person</fr:taxon>
            <fr:meta name="external">https://websites.umich.edu/~ericgio/index.html</fr:meta>
            <fr:meta name="position">PhD Student</fr:meta>
            <fr:meta name="orcid">0009-0003-6871-1714</fr:meta>
            <fr:meta name="institution">University of Michigan</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter />
        </fr:tree>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:uri>https://um-catlab.github.io/jesseslater/</fr:uri>
            <fr:display-uri>jesseslater</fr:display-uri>
            <fr:route>/jesseslater/</fr:route>
            <fr:title text="Jesse Slater">Jesse Slater</fr:title>
            <fr:taxon>person</fr:taxon>
            <fr:meta name="position">PhD Student</fr:meta>
            <fr:meta name="institution">University of Michigan</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>
Coadvised by <fr:link href="/xinyuwang/" title="Xinyu Wang" uri="https://um-catlab.github.io/xinyuwang/" display-uri="xinyuwang" type="local">Xinyu Wang</fr:link>.
</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:uri>https://um-catlab.github.io/maxsnew/</fr:uri>
            <fr:display-uri>maxsnew</fr:display-uri>
            <fr:route>/maxsnew/</fr:route>
            <fr:title text="Max S. New">Max S. New</fr:title>
            <fr:taxon>person</fr:taxon>
            <fr:meta name="external">https://maxsnew.com/</fr:meta>
            <fr:meta name="position">Assistant Professor</fr:meta>
            <fr:meta name="orcid">0000-0001-8141-195X</fr:meta>
            <fr:meta name="institution">University of Michigan</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>Posts</html:p>
            <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/maxsnew/" title="Max S. New" uri="https://um-catlab.github.io/maxsnew/" display-uri="maxsnew" type="local">Max S. New</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2026</fr:year>
                  <fr:month>6</fr:month>
                  <fr:day>2</fr:day>
                </fr:date>
                <fr:uri>https://um-catlab.github.io/1WP4/</fr:uri>
                <fr:display-uri>1WP4</fr:display-uri>
                <fr:route>/1WP4/</fr:route>
                <fr:title text="Relative Monad">Relative Monad</fr:title>
                <fr:taxon>definition</fr:taxon>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>A monad relative to a profunctor <fr:tex display="inline"><![CDATA[\mathcal  J : \mathcal  D \to  \textrm {Psh} \mathcal  C]]></fr:tex> is a function <fr:tex display="inline"><![CDATA[T : |\mathcal  C| \to  |\mathcal  D|]]></fr:tex> with operations <fr:tex display="inline"><![CDATA[\eta _X : \mathcal  J(X,TX)]]></fr:tex> and <fr:tex display="inline"><![CDATA[-^\dagger  : \mathcal  J(X,TY) \to  \mathcal  D(TX,TY)]]></fr:tex> satisfying three laws <fr:tex display="block"><![CDATA[\eta ^\dagger  = \textrm {id}]]></fr:tex> <fr:tex display="block"><![CDATA[j^\dagger  \circ  \eta  = j]]></fr:tex> <fr:tex display="block"><![CDATA[(j^\dagger  \circ  k)^\dagger  = j^\dagger  \circ  k^\dagger ]]></fr:tex></html:p>
              </fr:mainmatter>
            </fr:tree>
            <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/maxsnew/" title="Max S. New" uri="https://um-catlab.github.io/maxsnew/" display-uri="maxsnew" type="local">Max S. New</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2026</fr:year>
                  <fr:month>6</fr:month>
                  <fr:day>1</fr:day>
                </fr:date>
                <fr:uri>https://um-catlab.github.io/DWP5/</fr:uri>
                <fr:display-uri>DWP5</fr:display-uri>
                <fr:route>/DWP5/</fr:route>
                <fr:title text="Example of a monad with no strength: Allocation on Indexed Sets">Example of a monad with no strength: Allocation on Indexed Sets</fr:title>
                <fr:taxon>theorem</fr:taxon>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>Consider the following monad on <fr:tex display="inline"><![CDATA[\textrm {Set}^\mathbb {N}]]></fr:tex>:
<fr:tex display="block"><![CDATA[
\begin {align*}
  T(X) n &= \sum _{m : \mathbb {N}} X (n + m)\\
  \eta  n x &= (0, x) \\
  (f : X \to  TY)^\dagger  n (m , x) &= (m + p , y) && \textrm {where } f (n + m) x = (p , y)
\end {align*}]]></fr:tex>
Our intuition is that <fr:tex display="inline"><![CDATA[\textrm {Set}^\mathbb {N}]]></fr:tex> is a simple (but deficient) model of allocation: the <fr:tex display="inline"><![CDATA[\mathbb {N}]]></fr:tex> represents the number of resources that have been allocated, so that the meaning of types can be dependent on this. Then this monad is an attempt at an allocation monad: an element tells you how many new cells are allocated and gives you a value valid in that future. But this monad does not work for typical denotational semantics because the monad cannot be given a <fr:link href="/KAYO/" title="Strong Monad" uri="https://um-catlab.github.io/KAYO/" display-uri="KAYO" type="local">strength</fr:link> with respect to the cartesian product monoidal structure.</html:p>
                <html:p>Aside: The easiest way to verify that this is a monad is to see that the construction is left adjoint to the forgetful <fr:tex display="inline"><![CDATA[U : \textrm {Set}^{\omega ^\textrm {op}} \to  \textrm {Set}^\mathbb {N}]]></fr:tex> and this is the induced monad. In fact this adjunction is monadic.</html:p>
                <html:p>A strength would be a natural <fr:tex display="inline"><![CDATA[\sigma  : \Gamma \times  T(X) \to  T(\Gamma  \times  X)]]></fr:tex>. Intuitively such a morphism would send <fr:tex display="inline"><![CDATA[(\gamma  , (m , x))]]></fr:tex> to <fr:tex display="inline"><![CDATA[(m , (\uparrow  \gamma  , x))]]></fr:tex> but the problem is that no such <fr:tex display="inline"><![CDATA[\uparrow  \gamma ]]></fr:tex> is guaranteed to exist, and therefore a strength cannot be constructed.</html:p>
                <html:p>As a concrete counterexample, pick <fr:tex display="inline"><![CDATA[\Gamma  = y(0)]]></fr:tex> and <fr:tex display="inline"><![CDATA[A = y(1)]]></fr:tex> where <fr:tex display="inline"><![CDATA[y(m) n = m \equiv  n]]></fr:tex> is the Yoneda embedding/Dirac <fr:tex display="inline"><![CDATA[\delta ]]></fr:tex>. Note that <fr:tex display="inline"><![CDATA[T 0 \cong  0]]></fr:tex> and <fr:tex display="inline"><![CDATA[y(0) \times  y(1) \cong  0]]></fr:tex>. But the strength gives us a morphism <fr:tex display="inline"><![CDATA[y(0)\times  T(y(1)) \to  T(y(0)\times  y(1)) \cong  T0\cong  0]]></fr:tex>. Since <fr:tex display="inline"><![CDATA[\textrm {Set}^\mathbb {N}]]></fr:tex> is cartesian closed, <fr:tex display="inline"><![CDATA[0]]></fr:tex> is strict initial so this implies that <fr:tex display="inline"><![CDATA[y(0)\times  T(y(1)) \cong  0]]></fr:tex> but this is false as there is an element <fr:tex display="inline"><![CDATA[(\textrm {refl}(0), (1, \textrm {refl}(1))) : (y(0) \times  T(y(1))) 0]]></fr:tex>.</html:p>
                <html:p>What is the "algebraic" structure that this monad captures? Well as above it is equivalent to a presheaf structure <fr:tex display="inline"><![CDATA[\textrm {Set}^{\omega ^\textrm {op}}]]></fr:tex>. This can be equivalently stated as a family of maps <fr:tex display="inline"><![CDATA[\uparrow _n : X (n+1) \to  X n]]></fr:tex> for every <fr:tex display="inline"><![CDATA[n : \mathbb {N}]]></fr:tex>. This can be expressed as a morphism <fr:tex display="inline"><![CDATA[(y1 \multimap  X) \to  X]]></fr:tex> in <fr:tex display="inline"><![CDATA[\textrm {Set}^\mathbb {N}]]></fr:tex>. So this also provides an example of an algebra with respect to "linear" arities that is not a strong monad. This is why <fr:link href="/Staton-FOSSACS-2010/" title="Completeness for algebraic theories of local state" uri="https://um-catlab.github.io/Staton-FOSSACS-2010/" display-uri="Staton-FOSSACS-2010" type="local">Staton</fr:link> reformulates the notion of a block-algebra, which <fr:link href="/PlotkinPower-FOSSACS-2002/" title="Notions of Computation Determine Monads" uri="https://um-catlab.github.io/PlotkinPower-FOSSACS-2002/" display-uri="PlotkinPower-FOSSACS-2002" type="local">Plotkin and Power</fr:link> had stated as a similar linear operation.</html:p>
              </fr:mainmatter>
            </fr:tree>
            <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/maxsnew/" title="Max S. New" uri="https://um-catlab.github.io/maxsnew/" display-uri="maxsnew" type="local">Max S. New</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2026</fr:year>
                  <fr:month>6</fr:month>
                  <fr:day>1</fr:day>
                </fr:date>
                <fr:uri>https://um-catlab.github.io/KAYO/</fr:uri>
                <fr:display-uri>KAYO</fr:display-uri>
                <fr:route>/KAYO/</fr:route>
                <fr:title text="Strong Monad">Strong Monad</fr:title>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>A (left) strength of a monad <fr:tex display="inline"><![CDATA[T]]></fr:tex> with respect to a monoidal structure <fr:tex display="inline"><![CDATA[\otimes ]]></fr:tex> is a natural transformation <fr:tex display="inline"><![CDATA[\sigma  : \Gamma  \otimes  T A \to  T (\Gamma  \otimes  A)]]></fr:tex> satisfying certain laws. A concise formulation is that a left-strength is a lifting of <fr:tex display="inline"><![CDATA[T]]></fr:tex> from a monad on categories to a monad on actegories, with the monoidal category <fr:tex display="inline"><![CDATA[\mathcal  C]]></fr:tex> acting on itself. If <fr:tex display="inline"><![CDATA[\mathcal  C]]></fr:tex> is a monoidal closed category, then strength is equivalently an enrichment of <fr:tex display="inline"><![CDATA[T]]></fr:tex>.</html:p>
                <html:p>The most general version of this is <fr:link href="/Slattery-TAC-2023/" title="Pseudocommutativity and lax idempotency for relative pseudomonads" uri="https://um-catlab.github.io/Slattery-TAC-2023/" display-uri="Slattery-TAC-2023" type="local">given by Slattery</fr:link>: a strong monad on multicategories is given by a unit map <fr:tex display="inline"><![CDATA[\mathcal  C(X;T X)]]></fr:tex> and an extension map <fr:tex display="inline"><![CDATA[\mathcal  C(\Gamma ,X,\Delta ;TY) \to  \mathcal  C(\Gamma ,TX,\Delta ;TY)]]></fr:tex> satisfying some laws. This makes the connection to the semantics of effectful programming languages apparent: a monad only has an extension map for unary morphisms but a strength allows for an extension of any single input of a multimorphism. In programming languages terms, the strength is what allows for the use of a monadic bind in the presence of other variables.</html:p>
                <html:p>Despite the common term strong monad, a strength is in general a <html:em>structure</html:em>, though in some special cases it is a property.</html:p>
                <html:p>All monads on the category of sets are canonically Set-enriched and therefore carry a strength. Non-trivial strengths abound in (pre)sheaf semantics.</html:p>
              </fr:mainmatter>
            </fr:tree>
            <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/maxsnew/" title="Max S. New" uri="https://um-catlab.github.io/maxsnew/" display-uri="maxsnew" type="local">Max S. New</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2026</fr:year>
                  <fr:month>5</fr:month>
                  <fr:day>27</fr:day>
                </fr:date>
                <fr:uri>https://um-catlab.github.io/XO0Z/</fr:uri>
                <fr:display-uri>XO0Z</fr:display-uri>
                <fr:route>/XO0Z/</fr:route>
                <fr:title text="Topos of Step-indexed Sets">Topos of Step-indexed Sets</fr:title>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>The topos of step-indexed sets, more commonly called the <html:em>topos of trees</html:em> is a simple model of step-indexing.</html:p>
                <html:p>There are many equivalent formulations of this category, that all give slightly different definitions of what a step-indexed set is.
<html:ol><html:li>Presheaves on the ordinal category <fr:tex display="inline"><![CDATA[\omega ]]></fr:tex>.</html:li>
<html:li>Sheaves on <fr:tex display="inline"><![CDATA[\omega ]]></fr:tex> with the sheaf condition being that <fr:tex display="inline"><![CDATA[P(0)]]></fr:tex> is a one-element set.</html:li>
<html:li>Sheaves on <fr:tex display="inline"><![CDATA[\omega  + 1]]></fr:tex> with the sheaf condition being that the projections from <fr:tex display="inline"><![CDATA[P(\omega )]]></fr:tex> to <fr:tex display="inline"><![CDATA[P(n)]]></fr:tex> for all finite <fr:tex display="inline"><![CDATA[n]]></fr:tex> is a limit cone.</html:li>
<html:li>Sheaves on <fr:tex display="inline"><![CDATA[\omega  + 1]]></fr:tex> with the sheaf condition being that the projections from <fr:tex display="inline"><![CDATA[P(\omega )]]></fr:tex> to <fr:tex display="inline"><![CDATA[P(n)]]></fr:tex> for all finite <fr:tex display="inline"><![CDATA[n]]></fr:tex> is a limit cone and that <fr:tex display="inline"><![CDATA[P(0)]]></fr:tex> is a one-element set</html:li>
<html:li>(Assuming <fr:link href="/QCIE/" title="Markov's Principle" uri="https://um-catlab.github.io/QCIE/" display-uri="QCIE" type="local">Markov's Principle</fr:link>) Sheaves on the topological space whose points are natural numbers and opens are downward-closed subsets.</html:li></html:ol>
The last two are essentially the same if we identify the downward closed subsets of <fr:tex display="inline"><![CDATA[\omega ]]></fr:tex> with their cardinality. The first two are equivalent by identifying the presheaf <fr:tex display="inline"><![CDATA[P(n)]]></fr:tex> with the sheaf's <fr:tex display="inline"><![CDATA[P(n+1)]]></fr:tex>. For the remainder of this note we will use definition (4).
</html:p>
                <html:p>The global sections functor <fr:tex display="inline"><![CDATA[\Gamma  : \textrm {Sh}(\omega  + 1) \to  \textrm {Set}]]></fr:tex> is a forgetful functor projecting out the set <fr:tex display="inline"><![CDATA[X(\omega )]]></fr:tex>. Under this point of view we can think of the topos of step-indexed sets as a category of sets with structure (though note that the functor is not faithful). The left adjoint <fr:tex display="inline"><![CDATA[\Delta  : \textrm {Set} \to  \textrm {Sh}(\omega  + 1)]]></fr:tex> is defined as <fr:tex display="inline"><![CDATA[\Delta (A)(0) = 1]]></fr:tex> and <fr:tex display="inline"><![CDATA[\Delta (A)(n) = A]]></fr:tex> otherwise.</html:p>
                <html:p>This category is useful in denotational semantics as it supports the definition of <html:em>guarded</html:em> recursive functions and types.</html:p>
                <html:p>First we define an endofunctor, <fr:tex display="inline"><![CDATA[\triangleright ]]></fr:tex>, pronounced <html:em>later</html:em> or <html:em>guard</html:em>. The functor is defined as the restriction of sheaves along the truncated predecessor function <fr:tex display="inline"><![CDATA[\textrm {pred} : \omega  + 1 \to  \omega  + 1]]></fr:tex>, which can be verified to preserve the sheaf condition. Since <fr:tex display="inline"><![CDATA[\textrm {pred} \leq  \textrm {id}]]></fr:tex> we get a natural transformation <fr:tex display="inline"><![CDATA[\textrm {next} : \textrm {Id} \Rightarrow  \triangleright ]]></fr:tex>, on components this is just the restriction map <fr:tex display="inline"><![CDATA[X(n) \to  X(\textrm {pred}(n))]]></fr:tex>. Since <fr:tex display="inline"><![CDATA[\omega ]]></fr:tex> is a fixed point of the predecessor function, the global sections functor "erases" the later <fr:tex display="inline"><![CDATA[\Gamma (\triangleright  X) = \Gamma  X]]></fr:tex>.</html:p>
                <html:p>A <html:em>later algebra</html:em> is defined as a sheaf <fr:tex display="inline"><![CDATA[X]]></fr:tex> with a morphism <fr:tex display="inline"><![CDATA[\alpha  : \triangleright  X \to  X]]></fr:tex>. Expanding the definition this gives us a natural family of functions <fr:tex display="inline"><![CDATA[X(\textrm {pred}(n)) \to  X(n)]]></fr:tex>. We can compose <fr:tex display="inline"><![CDATA[\alpha  \circ  \textrm {next} : X \to  X]]></fr:tex> to get an endofunction. The guarded recursion principle says that this endofunction has a unique fixed point <fr:tex display="inline"><![CDATA[\textrm {gfix}(\alpha ) : 1 \to  X]]></fr:tex> satisfying <fr:tex display="block"><![CDATA[\alpha  \circ  \textrm {next} \circ  \textrm {gfix}(\alpha ) = \textrm {gfix}(\alpha )]]></fr:tex>. Under the global sections functor, a later algebra just becomes an endofunction and the guarded fixed point is just a fixed point. In this way, the topos of step-indexed sets can be used as a technical device for recursive definitions in <fr:tex display="inline"><![CDATA[\textrm {Set}]]></fr:tex>.</html:p>
                <html:p>The <html:em>free later algebra</html:em> <fr:tex display="inline"><![CDATA[D X]]></fr:tex> is the step-indexed analog of the <fr:link href="/O9R3/" title="Delay Monad on Set" uri="https://um-catlab.github.io/O9R3/" display-uri="O9R3" type="local">Delay Monad</fr:link>. The global sections functor sends the step-indexed delay monad to the set-based delay monad <fr:tex display="inline"><![CDATA[\Gamma (D (\Delta (X))) \cong  D(X)]]></fr:tex>. This is a resolution of the "algebraicity" of the Delay monad: in Set, the Delay monad is algebraic if and only if Markov's principle holds, but constructively the step-indexed delay monad is "algebraic" but in a generalized sense that it is freely generated by an algebraic operation of non-standard arity.</html:p>
              </fr:mainmatter>
            </fr:tree>
            <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/maxsnew/" title="Max S. New" uri="https://um-catlab.github.io/maxsnew/" display-uri="maxsnew" type="local">Max S. New</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2026</fr:year>
                  <fr:month>5</fr:month>
                  <fr:day>26</fr:day>
                </fr:date>
                <fr:uri>https://um-catlab.github.io/VWNF/</fr:uri>
                <fr:display-uri>VWNF</fr:display-uri>
                <fr:route>/VWNF/</fr:route>
                <fr:title text="Extended Natural Numbers">Extended Natural Numbers</fr:title>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>The extended natural numbers <fr:tex display="inline"><![CDATA[\mathbb {N}_\infty ]]></fr:tex> are the final coalgebra for the functor <fr:tex display="inline"><![CDATA[X \mapsto  X \uplus  1]]></fr:tex> in the category of sets. Concretely these can be constructed as monotone functions from <fr:tex display="inline"><![CDATA[\mathbb {N}]]></fr:tex> to the booleans. Since the natural numbers are the initial algebra for the same functor we get an canonical injective function <fr:tex display="inline"><![CDATA[\mathbb {N} \to  \mathbb {N}_\infty ]]></fr:tex>. We say an extended natural number is <html:em>finite</html:em> if it is in the image of this function.</html:p>
                <html:p>In classical mathematics, the extended natural numbers are simply a coproduct of the natural numbers with a single "infinite" point. Constructively, we can define a function <fr:tex display="inline"><![CDATA[\mathbb {N} \uplus  1 \to  \mathbb {N} \to  \mathbb {N}_\infty ]]></fr:tex> and it being an isomorphism is one of the formulations of <fr:link href="/QCIE/" title="Markov's Principle" uri="https://um-catlab.github.io/QCIE/" display-uri="QCIE" type="local">Markov's principle</fr:link>.</html:p>
              </fr:mainmatter>
            </fr:tree>
            <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/maxsnew/" title="Max S. New" uri="https://um-catlab.github.io/maxsnew/" display-uri="maxsnew" type="local">Max S. New</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2026</fr:year>
                  <fr:month>5</fr:month>
                  <fr:day>26</fr:day>
                </fr:date>
                <fr:uri>https://um-catlab.github.io/QCIE/</fr:uri>
                <fr:display-uri>QCIE</fr:display-uri>
                <fr:route>/QCIE/</fr:route>
                <fr:title text="Markov's Principle">Markov's Principle</fr:title>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>Markov's Principle is a weak choice principle, weaker than the law of excluded middle.
It can be formulated in many equivalent ways:
<html:ol><html:li>Any sequence of booleans <fr:tex display="inline"><![CDATA[\mathbb {N} \to  \mathbb {B}]]></fr:tex> that is not always 0 must contain a 1.</html:li>
<html:li>The <fr:link href="/VWNF/" title="Extended Natural Numbers" uri="https://um-catlab.github.io/VWNF/" display-uri="VWNF" type="local">extended natural numbers</fr:link> are equivalent to the natural numbers with a point adjoined. More precisely, the inclusion <fr:tex display="inline"><![CDATA[\mathbb {N}\uplus \{\Omega \} \to  \mathbb {N}_\infty ]]></fr:tex> is surjective (and thus a bijection).</html:li></html:ol></html:p>
              </fr:mainmatter>
            </fr:tree>
            <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/maxsnew/" title="Max S. New" uri="https://um-catlab.github.io/maxsnew/" display-uri="maxsnew" type="local">Max S. New</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2026</fr:year>
                  <fr:month>5</fr:month>
                  <fr:day>23</fr:day>
                </fr:date>
                <fr:uri>https://um-catlab.github.io/O9R3/</fr:uri>
                <fr:display-uri>O9R3</fr:display-uri>
                <fr:route>/O9R3/</fr:route>
                <fr:title text="Delay Monad on Set">Delay Monad on Set</fr:title>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>The Delay monad on Sets is given by the final coalgebra <fr:tex display="inline"><![CDATA[D X = X \uplus  D X]]></fr:tex>. This is monad used as a simple model of programs that may diverge where the number of "steps" is observable.</html:p>
                <html:p>An explicit construction of the Delay monad can be given by <fr:tex display="block"><![CDATA[D X = \{f : \mathbb {N} \rightharpoonup  X \uplus  1 | f(n) = \textrm {inl}(x) \Rightarrow  f(n+1) = \textrm {inl}(x) ]]></fr:tex> in other words, monotone functions from the natural numbers to the maybe monad on <fr:tex display="inline"><![CDATA[X]]></fr:tex> where the maybe monad is given the ordering that adjoins a bottom element to a discrete order.</html:p>
                <html:p>The delay monad can be given an inductive characterization as the free <fr:link href="/MYZG/" title="Algebraic Theory of an endofunction with a fixed point" uri="https://um-catlab.github.io/MYZG/" display-uri="MYZG" type="local">fixed point algebra</fr:link> if and only if Markov's principle holds. Without Markov's principle, <fr:tex display="inline"><![CDATA[DX]]></fr:tex> can be given the structure of a fixed point algebra but we cannot prove it is free.</html:p>
                <html:p>In fact, the delay monad is finitary (and thus the free algebras for an <fr:link href="/L94N/" title="Finitary Algebraic Theory" uri="https://um-catlab.github.io/L94N/" display-uri="L94N" type="local">algebraic theory</fr:link>) if and only if Markov's principle holds. Therefore if the delay monad is finitary then it is the free fixed point algebra.</html:p>
              </fr:mainmatter>
            </fr:tree>
            <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/maxsnew/" title="Max S. New" uri="https://um-catlab.github.io/maxsnew/" display-uri="maxsnew" type="local">Max S. New</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2026</fr:year>
                  <fr:month>5</fr:month>
                  <fr:day>22</fr:day>
                </fr:date>
                <fr:uri>https://um-catlab.github.io/MYZG/</fr:uri>
                <fr:display-uri>MYZG</fr:display-uri>
                <fr:route>/MYZG/</fr:route>
                <fr:title text="Algebraic Theory of an endofunction with a fixed point">Algebraic Theory of an endofunction with a fixed point</fr:title>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>The algebraic theory of an endofunction with a fixed point consists of two operations</html:p>
                <html:ol><html:li><fr:tex display="inline"><![CDATA[\delta (1)]]></fr:tex></html:li>
<html:li><fr:tex display="inline"><![CDATA[\Omega (0)]]></fr:tex></html:li></html:ol>
                <html:p>satisfying one equation <fr:tex display="inline"><![CDATA[\delta (\Omega ) = \Omega ]]></fr:tex>.</html:p>
                <html:p>A computational intuition is that <fr:tex display="inline"><![CDATA[\delta (x)]]></fr:tex> is an internal computation step and that <fr:tex display="inline"><![CDATA[\Omega ]]></fr:tex> is a diverging computation.</html:p>
                <html:p>The free algebra on <fr:tex display="inline"><![CDATA[X]]></fr:tex> can be explicitly described as having underlying set <fr:tex display="inline"><![CDATA[(\mathbb {N}\times  X) \uplus  \{\Omega \}]]></fr:tex>, i.e. an intensional computation either terminates with a result after some finite number of steps, or it diverges.</html:p>
              </fr:mainmatter>
            </fr:tree>
            <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/maxsnew/" title="Max S. New" uri="https://um-catlab.github.io/maxsnew/" display-uri="maxsnew" type="local">Max S. New</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2026</fr:year>
                  <fr:month>5</fr:month>
                  <fr:day>21</fr:day>
                </fr:date>
                <fr:uri>https://um-catlab.github.io/E1XK/</fr:uri>
                <fr:display-uri>E1XK</fr:display-uri>
                <fr:route>/E1XK/</fr:route>
                <fr:title text="Algebraic Theory of Global Mutable Finite State">Algebraic Theory of Global Mutable Finite State</fr:title>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>The <fr:link href="/L94N/" title="Finitary Algebraic Theory" uri="https://um-catlab.github.io/L94N/" display-uri="L94N" type="local">algebraic theory</fr:link> of global mutable finite state for a finite set <fr:tex display="inline"><![CDATA[S]]></fr:tex> has operations</html:p>
                <html:p>
                  <html:ol><html:li><fr:tex display="inline"><![CDATA[l(S)]]></fr:tex>, short for "lookup"</html:li> <html:li>For each <fr:tex display="inline"><![CDATA[s : S]]></fr:tex>, <fr:tex display="inline"><![CDATA[u{[s]}(1)]]></fr:tex> short for "update"</html:li></html:ol>
                </html:p>
                <html:p>subject to the equations</html:p>
                <html:p>
                  <html:ol><html:li><fr:tex display="inline"><![CDATA[l(\lambda  s. u{[s]}(x)) = x]]></fr:tex></html:li> <html:li><fr:tex display="inline"><![CDATA[u{[s]}(u{[s']}(x)) = u{[s']}(x)]]></fr:tex></html:li> <html:li><fr:tex display="inline"><![CDATA[u{[s]}(l(t)) = u{[s]}(t(s))]]></fr:tex></html:li></html:ol>
                </html:p>
                <html:p>Intuitively the lookup operation branches on the value of the state, picking the appopriate argument as continuation and update sets the value of the state and then proceeds with the continuation.</html:p>
                <html:p>The equations say that (1) updating the state to what you just read does nothing (2) updating overwrites a preceding update and (3) lookup executes the continuation corresponding to the most recent update.</html:p>
                <html:p>The <fr:link href="/L94N/" title="Finitary Algebraic Theory" uri="https://um-catlab.github.io/L94N/" display-uri="L94N" type="local">free state algebra</fr:link> on a set <fr:tex display="inline"><![CDATA[X]]></fr:tex> can be constructed explicitly as the stateful functions <fr:tex display="inline"><![CDATA[(S \times  X)^S]]></fr:tex> and the state monad is the corresponding free algebra monad.</html:p>
              </fr:mainmatter>
            </fr:tree>
            <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/maxsnew/" title="Max S. New" uri="https://um-catlab.github.io/maxsnew/" display-uri="maxsnew" type="local">Max S. New</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2026</fr:year>
                  <fr:month>5</fr:month>
                  <fr:day>21</fr:day>
                </fr:date>
                <fr:uri>https://um-catlab.github.io/L94N/</fr:uri>
                <fr:display-uri>L94N</fr:display-uri>
                <fr:route>/L94N/</fr:route>
                <fr:title text="Finitary Algebraic Theory">Finitary Algebraic Theory</fr:title>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>A finitary signature is a collection <fr:tex display="inline"><![CDATA[\Sigma ]]></fr:tex> of operation symbols with assigned <html:em>arities</html:em> which are natural numbers</html:p>
                <html:p>Given a signature, we can form the type of trees <fr:tex display="inline"><![CDATA[\Sigma ^*X]]></fr:tex>. A finitary algebraic theory is a signature with a collection of axioms, which are pairs of trees <fr:tex display="inline"><![CDATA[\Sigma ^*X]]></fr:tex> for finite <fr:tex display="inline"><![CDATA[X]]></fr:tex>.</html:p>
                <html:p>An <html:em>algebra</html:em> of a theory <fr:tex display="inline"><![CDATA[\mathcal {A} = (\Sigma , E)]]></fr:tex> consists of a carrier <fr:tex display="inline"><![CDATA[A]]></fr:tex>, for each operation <fr:tex display="inline"><![CDATA[\sigma (n)]]></fr:tex> an operation <fr:tex display="inline"><![CDATA[\sigma  : A^n \to  A]]></fr:tex> such that the induced equations from <fr:tex display="inline"><![CDATA[E]]></fr:tex> are all satisfied. A homomorphism of algebras is a function that commutes with all of the operations. These form into a category <fr:tex display="inline"><![CDATA[(\mathcal {A}-)\textrm {Alg}]]></fr:tex> with a forgetful functor <fr:tex display="inline"><![CDATA[U : \textrm {Alg} \to  \textrm {Set}]]></fr:tex></html:p>
                <html:p>A <html:em>free algebra</html:em> for a set <fr:tex display="inline"><![CDATA[X]]></fr:tex> is a left adjoint to <fr:tex display="inline"><![CDATA[U]]></fr:tex> at <fr:tex display="inline"><![CDATA[X]]></fr:tex>. Free algebras always exist: they can be constructed as a quotient of <fr:tex display="inline"><![CDATA[\Sigma ^*X]]></fr:tex>, but it is useful when possible to come up with an equivalent description of free algebras as "normal forms" of these quotiented trees.</html:p>
              </fr:mainmatter>
            </fr:tree>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:uri>https://um-catlab.github.io/stevenschaefer/</fr:uri>
            <fr:display-uri>stevenschaefer</fr:display-uri>
            <fr:route>/stevenschaefer/</fr:route>
            <fr:title text="Steven Schaefer">Steven Schaefer</fr:title>
            <fr:taxon>person</fr:taxon>
            <fr:meta name="external">https://www.stevenschaefer.net/</fr:meta>
            <fr:meta name="institution">University of Michigan</fr:meta>
            <fr:meta name="orcid">0009-0007-1258-9501</fr:meta>
            <fr:meta name="position">PhD Student</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>Please reach me at <fr:link href="mailto:stschaef@umich.edu" type="external">stschaef@umich.edu</fr:link>.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:uri>https://um-catlab.github.io/yuchenjiang/</fr:uri>
            <fr:display-uri>yuchenjiang</fr:display-uri>
            <fr:route>/yuchenjiang/</fr:route>
            <fr:title text="Yuchen Jiang">Yuchen Jiang</fr:title>
            <fr:taxon>person</fr:taxon>
            <fr:meta name="external">https://lighghteeloo.github.io/</fr:meta>
            <fr:meta name="position">PhD Student</fr:meta>
            <fr:meta name="institution">University of Michigan</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter />
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
  </fr:mainmatter>
  <fr:backmatter>
    <fr:tree show-metadata="false" hidden-when-empty="true">
      <fr:frontmatter>
        <fr:authors />
        <fr:title text="References">References</fr:title>
      </fr:frontmatter>
      <fr:mainmatter />
    </fr:tree>
    <fr:tree show-metadata="false" hidden-when-empty="true">
      <fr:frontmatter>
        <fr:authors />
        <fr:title text="Context">Context</fr:title>
      </fr:frontmatter>
      <fr:mainmatter />
    </fr:tree>
    <fr:tree show-metadata="false" hidden-when-empty="true">
      <fr:frontmatter>
        <fr:authors />
        <fr:title text="Backlinks">Backlinks</fr:title>
      </fr:frontmatter>
      <fr:mainmatter />
    </fr:tree>
    <fr:tree show-metadata="false" hidden-when-empty="true">
      <fr:frontmatter>
        <fr:authors />
        <fr:title text="Related">Related</fr:title>
      </fr:frontmatter>
      <fr:mainmatter />
    </fr:tree>
    <fr:tree show-metadata="false" hidden-when-empty="true">
      <fr:frontmatter>
        <fr:authors />
        <fr:title text="Contributions">Contributions</fr:title>
      </fr:frontmatter>
      <fr:mainmatter />
    </fr:tree>
  </fr:backmatter>
</fr:tree>
