<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://blog.eutro.dev/feed/masters-worklog.xml" rel="self" type="application/atom+xml" /><link href="https://blog.eutro.dev/" rel="alternate" type="text/html" /><updated>2026-08-20T23:39:26+00:00</updated><id>https://blog.eutro.dev/feed/masters-worklog.xml</id><title type="html">Beatrice’s “Blog” | Masters-worklog</title><subtitle>I yap at you.</subtitle><author><name>trice</name></author><entry><title type="html">August Update 2</title><link href="https://blog.eutro.dev/masters-worklog/update19/" rel="alternate" type="text/html" title="August Update 2" /><published>2026-08-20T00:00:00+00:00</published><updated>2026-08-20T00:00:00+00:00</updated><id>https://blog.eutro.dev/masters-worklog/update19</id><content type="html" xml:base="https://blog.eutro.dev/masters-worklog/update19/"><![CDATA[<script id="katex_headers" type="application/x-tex">

\newcommand{\orgcode}[1]{\textup{\texttt{#1}}}
\newcommand{\acat}[1]{\mathcal{#1}}
\newcommand{\A}{\acat{A}}
\newcommand{\B}{\acat{B}}
\newcommand{\C}{\acat{C}}
\newcommand{\D}{\acat{D}}
\newcommand{\M}{\acat{M}}
\newcommand{\PP}{\acat{P}}
\newcommand{\NN}{\acat{N}}
\newcommand{\OO}{\acat{O}}
\newcommand{\EE}{\acat{E}}
\newcommand{\GG}{\acat{G}}
\newcommand{\HH}{\acat{H}}
\newcommand{\UU}{\acat{U}}
\newcommand{\El}{\mathsf{El}}
\newcommand{\code}{\mathsf{code}}
\newcommand{\ttN}{\orgcode{N}}
\newcommand{\ttP}{\orgcode{P}}
\newcommand{\ttL}{\orgcode{L}}
\newcommand{\ttR}{\orgcode{R}}
\newcommand{\tteps}{\orgcode{ε}}
\newcommand{\tteta}{\orgcode{η}}
\newcommand{\Cl}[1]{#1_l}
\newcommand{\Ct}[1]{#1_t}
\newcommand{\Ci}[1]{#1_i}
\newcommand{\Cti}[1]{#1_{ti}}
\newcommand{\Cli}[1]{#1_{li}}
\newcommand{\Clt}[1]{#1_{lt}}
\newcommand{\Clti}[1]{#1_{lti}}
\newcommand{\Cn}[1]{#1^\ominus}
\newcommand{\Cp}[1]{#1^\oplus}
\newcommand{\Csn}[2]{#1^{\ominus#2}}
\newcommand{\Csp}[2]{#1^{\oplus#2}}
\newcommand{\Cnl}[1]{\Cn{\Cl{#1}}}
\newcommand{\Cpt}[1]{\Cp{\Ct{#1}}}
\newcommand{\Csnl}[2]{\Csn{\Cl{#1}}{#2}}
\newcommand{\Cspt}[2]{\Csp{\Ct{#1}}{#2}}
\newcommand{\Ctl}[1]{\Clt{#1}}
\newcommand{\Cnt}[1]{\Cn{#1}}
\newcommand{\Cpl}[1]{\Cp{#1}}
\newcommand{\wkcat}[1]{\mathbf{#1}}
\renewcommand{\Set}{\wkcat{Set}}
\newcommand{\Cat}{\wkcat{Cat}}
\newcommand{\UnivCat}{\wkcat{Cat}_{\univ}}
\newcommand{\Dupl}{\wkcat{Dupl}}
\newcommand{\UnivDupl}{\wkcat{Dupl}_{\univ}}
\newcommand{\WAdj}{\texttt{Adj}}
\newcommand{\coll}{\wkcat{coll}}
\newcommand{\Terminal}{\wkcat{1}}
\newcommand{\Obl}[1]{\OO[#1]}
\newcommand{\Env}[1]{\EE[#1]}
\DeclareMathOperator{\ob}{\mathsf{ob}}
\DeclareMathOperator{\mor}{\mathsf{mor}}
\DeclareMathOperator{\vertex}{\mathsf{vertex}}
\newcommand{\op}{{\mathsf{op}}}
\newcommand{\eq}{{\mathsf{eq}}}
\newcommand{\id}{\mathsf{id}}
\newcommand{\Id}{\mathsf{Id}}
\newcommand{\rx}{\mathsf{rx}}
\newcommand{\yo}{\mathsf{y}}
\newcommand{\univ}{\mathsf{univ}}
\newcommand{\acomp}{\circ}
\newcommand{\dcomp}{\fatsemi}
\newcommand{\syndcomp}{\mathop{;}}
\newcommand{\bindersep}{\mathpunct{.}}
\newcommand{\morsof}[3]{{#1}\llbracket{#2},{#3}\rrbracket}
\newcommand{\defeq}{\overset{\mathrm{\textup{def}}}{=}}
\newcommand{\defequiv}{\overset{\mathrm{\textup{def}}}{\equiv}}
\newcommand{\iscontr}{\orgcode{iscontr}}
\newcommand{\isaprop}{\orgcode{isaprop}}
\newcommand{\isaset}{\orgcode{isaset}}
\newcommand{\isweq}{\orgcode{isweq}}
\newcommand{\refl}{\mathsf{refl}}
\newcommand{\fib}[1]{\mathsf{wfib}_{#1}}
\newcommand{\cmdcode}[1]{\orgcode{#1}}
\newcommand{\punctcolor}[1]{\textcolor[rgb]{0.20,0.20,0.20}{#1}}
\newcommand{\print}{\cmdcode{print}}
\newcommand{\ttlet}{\cmdcode{let}\ }
\newcommand{\ttin}{\mathrel{\cmdcode{in}}}
\newcommand{\ttseq}{\orgcode{;}\ }
\newcommand{\ttbe}{\mathrel{\cmdcode{be}}}
\newcommand{\ttLP}{\Big(}
\newcommand{\ttRP}{\Big)}
\newcommand{\bool}{\orgcode{bool}}
\newcommand{\unit}{\orgcode{unit}}
\newcommand{\ttempty}{\orgcode{empty}}
\newcommand{\nat}{\mathbb{N}}
\newcommand{\hSet}{\orgcode{hSet}}
\newcommand{\hProp}{\orgcode{hProp}}
\newcommand{\idtoiso}{\orgcode{id\_to\_iso}}
\newcommand{\idtoweq}{\orgcode{id\_to\_weq}}
\newcommand{\idtomor}{\orgcode{id\_to\_edge}}
\newcommand{\proptrunc}[1]{\left\|#1\right\|}
\newcommand{\type}{\ \mathsf{type}}
\newcommand{\interp}[1]{\left\llbracket#1\right\rrbracket}
\newcommand{\stn}[1]{\mathbf{#1}}
\newcommand{\ndUniqueChoice}{\operatorname{\mathsf{unique}}}
\newcommand{\ofan}[2]{\{#2\}^{{\Rightarrow}}_{#1}}
\newcommand{\ifan}[2]{\{#2\}^{{\Leftarrow}}_{#1}}
\newcommand{\functorcat}[2]{\mathbf{Fn}[#1, #2]}
\newcommand{\rxfunctorcat}[2]{\mathbf{RxFn}[#1, #2]}
\newcommand{\natrxfunctorcat}[2]{\mathbf{RxFn}_{\mathsf{nat}}[#1, #2]}
\newcommand*{\State}[1]{\operatorname{State}_{#1}}
\newcommand{\rxfunctor}{\densedashrightarrow}
\newcommand{\nattrans}{\Rightarrow}
\newcommand{\unnattrans}{\Rightharpoonup}
\newcommand{\morpath}{\rightarrow\cdots\rightarrow}
\newcommand{\force}{\mathop{\orgcode{force}}\nolimits}
\newcommand{\delay}{\mathop{\orgcode{delay}}\nolimits}
\newcommand{\wrap}{\mathop{\orgcode{wrap}}\nolimits}
\newcommand{\unwrap}{\mathop{\orgcode{unwrap}}\nolimits}
\newcommand{\upshift}{\mathord{\Uparrow}}
\newcommand{\downshift}{\mathord{\Downarrow}}
\newcommand{\negliftO}{\mathop{\mathsf{lift}^{\ominus}}}
\newcommand{\posliftO}{\mathop{\mathsf{lift}^{\oplus}}}
\newcommand{\neglift}[1]{\negliftO{}#1}
\newcommand{\poslift}[1]{\posliftO{}#1}
\newcommand{\inneg}{\mathop{\iota^{\ominus}}}
\newcommand{\inpos}{\mathop{\iota^{\oplus}}}
\newcommand{\projneg}{\mathop{\pi^{\ominus}}}
\newcommand{\projpos}{\mathop{\pi^{\oplus}}}
\newcommand{\crossmor}{\mathop{\mathsf{cross}}}
\newcommand{\innegE}{\mathop{\iota^{\ominus}_{\EE}}}
\newcommand{\inposE}{\mathop{\iota^{\oplus}_{\EE}}}
\newcommand{\projnegE}{\mathop{\pi^{\ominus}_{\EE}}}
\newcommand{\projposE}{\mathop{\pi^{\oplus}_{\EE}}}
\newcommand{\crossmorE}{\mathop{\mathsf{cross}_{\EE}}}
\newcommand{\innegO}{\mathop{\iota^{\ominus}_{\OO}}}
\newcommand{\inposO}{\mathop{\iota^{\oplus}_{\OO}}}
\newcommand{\projnegO}{\mathop{\pi^{\ominus}_{\OO}}}
\newcommand{\projposO}{\mathop{\pi^{\oplus}_{\OO}}}
\newcommand{\crossmorO}{\mathop{\mathsf{cross}_{\OO}}}
\newcommand{\Rezk}{\mathfrak{R}}
\newcommand{\rezk}{\mathfrak{r}}
\newcommand{\NOTE}{\colorbox{orange}{NOTE}}
\newcommand{\TODO}{\colorbox{red}{TODO}}
\newcommand{\FIXME}{\colorbox{red}{FIXME}}

</script>

<p>I have been writing and thinking and writing and thinking. Here are
some thoughts.</p>

<h1 id="cutting-down">Cutting Down</h1>

<p>I have reduced the body by one (1) more page since last time. This has
involved reducing proofs and removing some definitions. I will
continue to do so. Eventually I will have to do fresh read-overs to
make sure everything is still coherent.</p>

<p>One definition cut was unnatural transformations, as it was only used
in my appendix. I will be sad to see my <code class="language-plaintext highlighter-rouge">\Rightharpoonup</code> arrow
go. For anyone willing to gaze upon the Tikz incantation used for the
arrow, here it is:</p>

<div class="language-latex highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">\newsavebox</span><span class="p">{</span><span class="k">\Rightharpoonupbox</span><span class="p">}</span>
<span class="nt">\begin{lrbox}</span><span class="p">{</span><span class="k">\Rightharpoonupbox</span><span class="p">}</span><span class="c">%</span>
  <span class="k">\tikz</span><span class="na">[baseline=-0.53ex, semithick, line cap=round]</span><span class="p">{</span>
    <span class="k">\draw</span><span class="na">[arrows={-&gt;[width=10pt,length=4pt,harpoon]</span><span class="p">}</span>] (0,-0.225ex)--(0.4cm,0.-0.225ex);
    <span class="k">\draw</span>(0,0.225ex)--(0.4cm-2.85px,0.225ex);
  <span class="p">}</span><span class="c">%</span>
<span class="nt">\end{lrbox}</span>
<span class="k">\newcommand*\Rightharpoonup</span><span class="p">{</span><span class="k">\mathrel</span><span class="p">{</span><span class="k">\usebox</span><span class="p">{</span><span class="k">\Rightharpoonupbox</span><span class="p">}}}</span>
</code></pre></div></div>

<h1 id="rewriting-the-duploids-from-adjunctions-section">Rewriting the Duploids from Adjunctions Section?</h1>

<p>One thing I was dissatisfied with was the presentation of the
duploids-from-an-adjunction chapter. In particular:</p>

<ul>
  <li>There was very little prose.</li>
  <li>There was a lack of smooth reasoning for how the envelope duploid
arose from gazing at the oblique duploid construction for too long.</li>
  <li>There is a lot of duplication between the definition of the oblique
duploid and the envelope duploid. Some duplication arose from me
(intentionally!) defining the oblique duploid’s composition
effectively as that of the envelope duploid. The rest arises from
generalizing Guillaume’s theorems about the oblique duploid to the
envelope duploid.</li>
</ul>

<p>I believe I can kill three birds with one stone by defining and
motivating the envelope duploid in a more unbundled fashion
(i.e. objects, then composition, then shifts) with more prose and
motivation. Then I can simply bundle them together for the envelope
duploid, and define the oblique duploid by its forgetful functor into
the envelope duploid. This is probably fine, though I am worried about
having unbundled definitions too far from their uses. The original
oblique duploid construction has appeared in other literature, whereas
the envelope duploid and its univalence is my novel contribution, so
it stands to reason that I ought to focus on that, rather than
effectively duplicating my definitions to include the oblique duploid
construction first.</p>

<p>I have already made progress on rewriting the section in this form
(<a href="https://notes.eutro.dev/cs/diss/output/abridged.pdf#chapter.5">chapter link</a>), up to motivating envelope objects, and I believe it is
more effective in motivating the definition. I can foresee it being
more effective in flowing into the definition of composition too.</p>]]></content><author><name>Beatrice Szilvasy</name><uri>https://eutro.dev/</uri></author><category term="masters-worklog" /><summary type="html"><![CDATA[I have been writing and thinking and writing and thinking. Here are some thoughts. Cutting Down I have reduced the body by one (1) more page since last time. This has involved reducing proofs and removing some definitions. I will continue to do so. Eventually I will have to do fresh read-overs to make sure everything is still coherent. One definition cut was unnatural transformations, as it was only used in my appendix. I will be sad to see my \Rightharpoonup arrow go. For anyone willing to gaze upon the Tikz incantation used for the arrow, here it is: \newsavebox{\Rightharpoonupbox} \begin{lrbox}{\Rightharpoonupbox}% \tikz[baseline=-0.53ex, semithick, line cap=round]{ \draw[arrows={-&gt;[width=10pt,length=4pt,harpoon]}] (0,-0.225ex)--(0.4cm,0.-0.225ex); \draw(0,0.225ex)--(0.4cm-2.85px,0.225ex); }% \end{lrbox} \newcommand*\Rightharpoonup{\mathrel{\usebox{\Rightharpoonupbox}}} Rewriting the Duploids from Adjunctions Section? One thing I was dissatisfied with was the presentation of the duploids-from-an-adjunction chapter. In particular: There was very little prose. There was a lack of smooth reasoning for how the envelope duploid arose from gazing at the oblique duploid construction for too long. There is a lot of duplication between the definition of the oblique duploid and the envelope duploid. Some duplication arose from me (intentionally!) defining the oblique duploid’s composition effectively as that of the envelope duploid. The rest arises from generalizing Guillaume’s theorems about the oblique duploid to the envelope duploid. I believe I can kill three birds with one stone by defining and motivating the envelope duploid in a more unbundled fashion (i.e. objects, then composition, then shifts) with more prose and motivation. Then I can simply bundle them together for the envelope duploid, and define the oblique duploid by its forgetful functor into the envelope duploid. This is probably fine, though I am worried about having unbundled definitions too far from their uses. The original oblique duploid construction has appeared in other literature, whereas the envelope duploid and its univalence is my novel contribution, so it stands to reason that I ought to focus on that, rather than effectively duplicating my definitions to include the oblique duploid construction first. I have already made progress on rewriting the section in this form (chapter link), up to motivating envelope objects, and I believe it is more effective in motivating the definition. I can foresee it being more effective in flowing into the definition of composition too.]]></summary></entry><entry><title type="html">August Update 1</title><link href="https://blog.eutro.dev/masters-worklog/update18/" rel="alternate" type="text/html" title="August Update 1" /><published>2026-08-11T00:00:00+00:00</published><updated>2026-08-11T00:00:00+00:00</updated><id>https://blog.eutro.dev/masters-worklog/update18</id><content type="html" xml:base="https://blog.eutro.dev/masters-worklog/update18/"><![CDATA[<script id="katex_headers" type="application/x-tex">

\newcommand{\orgcode}[1]{\textup{\texttt{#1}}}
\newcommand{\acat}[1]{\mathcal{#1}}
\newcommand{\A}{\acat{A}}
\newcommand{\B}{\acat{B}}
\newcommand{\C}{\acat{C}}
\newcommand{\D}{\acat{D}}
\newcommand{\M}{\acat{M}}
\newcommand{\PP}{\acat{P}}
\newcommand{\NN}{\acat{N}}
\newcommand{\OO}{\acat{O}}
\newcommand{\EE}{\acat{E}}
\newcommand{\GG}{\acat{G}}
\newcommand{\HH}{\acat{H}}
\newcommand{\UU}{\acat{U}}
\newcommand{\El}{\mathsf{El}}
\newcommand{\code}{\mathsf{code}}
\newcommand{\ttN}{\orgcode{N}}
\newcommand{\ttP}{\orgcode{P}}
\newcommand{\ttL}{\orgcode{L}}
\newcommand{\ttR}{\orgcode{R}}
\newcommand{\tteps}{\orgcode{ε}}
\newcommand{\tteta}{\orgcode{η}}
\newcommand{\Cl}[1]{#1_l}
\newcommand{\Ct}[1]{#1_t}
\newcommand{\Ci}[1]{#1_i}
\newcommand{\Cti}[1]{#1_{ti}}
\newcommand{\Cli}[1]{#1_{li}}
\newcommand{\Clt}[1]{#1_{lt}}
\newcommand{\Clti}[1]{#1_{lti}}
\newcommand{\Cn}[1]{#1^\ominus}
\newcommand{\Cp}[1]{#1^\oplus}
\newcommand{\Csn}[2]{#1^{\ominus#2}}
\newcommand{\Csp}[2]{#1^{\oplus#2}}
\newcommand{\Cnl}[1]{\Cn{\Cl{#1}}}
\newcommand{\Cpt}[1]{\Cp{\Ct{#1}}}
\newcommand{\Csnl}[2]{\Csn{\Cl{#1}}{#2}}
\newcommand{\Cspt}[2]{\Csp{\Ct{#1}}{#2}}
\newcommand{\Ctl}[1]{\Clt{#1}}
\newcommand{\Cnt}[1]{\Cn{#1}}
\newcommand{\Cpl}[1]{\Cp{#1}}
\newcommand{\wkcat}[1]{\mathbf{#1}}
\renewcommand{\Set}{\wkcat{Set}}
\newcommand{\Cat}{\wkcat{Cat}}
\newcommand{\UnivCat}{\wkcat{Cat}_{\univ}}
\newcommand{\Dupl}{\wkcat{Dupl}}
\newcommand{\UnivDupl}{\wkcat{Dupl}_{\univ}}
\newcommand{\WAdj}{\texttt{Adj}}
\newcommand{\coll}{\wkcat{coll}}
\newcommand{\Terminal}{\wkcat{1}}
\newcommand{\Obl}[1]{\OO[#1]}
\newcommand{\Env}[1]{\EE[#1]}
\DeclareMathOperator{\ob}{\mathsf{ob}}
\DeclareMathOperator{\mor}{\mathsf{mor}}
\DeclareMathOperator{\vertex}{\mathsf{vertex}}
\newcommand{\op}{{\mathsf{op}}}
\newcommand{\eq}{{\mathsf{eq}}}
\newcommand{\id}{\mathsf{id}}
\newcommand{\Id}{\mathsf{Id}}
\newcommand{\rx}{\mathsf{rx}}
\newcommand{\yo}{\mathsf{y}}
\newcommand{\univ}{\mathsf{univ}}
\newcommand{\acomp}{\circ}
\newcommand{\dcomp}{\fatsemi}
\newcommand{\syndcomp}{\mathop{;}}
\newcommand{\bindersep}{\mathpunct{.}}
\newcommand{\morsof}[3]{{#1}\llbracket{#2},{#3}\rrbracket}
\newcommand{\defeq}{\overset{\mathrm{\textup{def}}}{=}}
\newcommand{\defequiv}{\overset{\mathrm{\textup{def}}}{\equiv}}
\newcommand{\iscontr}{\orgcode{iscontr}}
\newcommand{\isaprop}{\orgcode{isaprop}}
\newcommand{\isaset}{\orgcode{isaset}}
\newcommand{\isweq}{\orgcode{isweq}}
\newcommand{\refl}{\mathsf{refl}}
\newcommand{\fib}[1]{\mathsf{wfib}_{#1}}
\newcommand{\cmdcode}[1]{\orgcode{#1}}
\newcommand{\punctcolor}[1]{\textcolor[rgb]{0.20,0.20,0.20}{#1}}
\newcommand{\print}{\cmdcode{print}}
\newcommand{\ttlet}{\cmdcode{let}\ }
\newcommand{\ttin}{\mathrel{\cmdcode{in}}}
\newcommand{\ttseq}{\orgcode{;}\ }
\newcommand{\ttbe}{\mathrel{\cmdcode{be}}}
\newcommand{\ttLP}{\Big(}
\newcommand{\ttRP}{\Big)}
\newcommand{\bool}{\orgcode{bool}}
\newcommand{\unit}{\orgcode{unit}}
\newcommand{\ttempty}{\orgcode{empty}}
\newcommand{\nat}{\mathbb{N}}
\newcommand{\hSet}{\orgcode{hSet}}
\newcommand{\hProp}{\orgcode{hProp}}
\newcommand{\idtoiso}{\orgcode{id\_to\_iso}}
\newcommand{\idtoweq}{\orgcode{id\_to\_weq}}
\newcommand{\idtomor}{\orgcode{id\_to\_edge}}
\newcommand{\proptrunc}[1]{\left\|#1\right\|}
\newcommand{\type}{\ \mathsf{type}}
\newcommand{\interp}[1]{\left\llbracket#1\right\rrbracket}
\newcommand{\stn}[1]{\mathbf{#1}}
\newcommand{\ndUniqueChoice}{\operatorname{\mathsf{unique}}}
\newcommand{\ofan}[2]{\{#2\}^{{\Rightarrow}}_{#1}}
\newcommand{\ifan}[2]{\{#2\}^{{\Leftarrow}}_{#1}}
\newcommand{\functorcat}[2]{\mathbf{Fn}[#1, #2]}
\newcommand{\rxfunctorcat}[2]{\mathbf{RxFn}[#1, #2]}
\newcommand{\natrxfunctorcat}[2]{\mathbf{RxFn}_{\mathsf{nat}}[#1, #2]}
\newcommand*{\State}[1]{\operatorname{State}_{#1}}
\newcommand{\rxfunctor}{\densedashrightarrow}
\newcommand{\nattrans}{\Rightarrow}
\newcommand{\unnattrans}{\Rightharpoonup}
\newcommand{\morpath}{\rightarrow\cdots\rightarrow}
\newcommand{\force}{\mathop{\orgcode{force}}\nolimits}
\newcommand{\delay}{\mathop{\orgcode{delay}}\nolimits}
\newcommand{\wrap}{\mathop{\orgcode{wrap}}\nolimits}
\newcommand{\unwrap}{\mathop{\orgcode{unwrap}}\nolimits}
\newcommand{\upshift}{\mathord{\Uparrow}}
\newcommand{\downshift}{\mathord{\Downarrow}}
\newcommand{\negliftO}{\mathop{\mathsf{lift}^{\ominus}}}
\newcommand{\posliftO}{\mathop{\mathsf{lift}^{\oplus}}}
\newcommand{\neglift}[1]{\negliftO{}#1}
\newcommand{\poslift}[1]{\posliftO{}#1}
\newcommand{\inneg}{\mathop{\iota^{\ominus}}}
\newcommand{\inpos}{\mathop{\iota^{\oplus}}}
\newcommand{\projneg}{\mathop{\pi^{\ominus}}}
\newcommand{\projpos}{\mathop{\pi^{\oplus}}}
\newcommand{\crossmor}{\mathop{\mathsf{cross}}}
\newcommand{\innegE}{\mathop{\iota^{\ominus}_{\EE}}}
\newcommand{\inposE}{\mathop{\iota^{\oplus}_{\EE}}}
\newcommand{\projnegE}{\mathop{\pi^{\ominus}_{\EE}}}
\newcommand{\projposE}{\mathop{\pi^{\oplus}_{\EE}}}
\newcommand{\crossmorE}{\mathop{\mathsf{cross}_{\EE}}}
\newcommand{\innegO}{\mathop{\iota^{\ominus}_{\OO}}}
\newcommand{\inposO}{\mathop{\iota^{\oplus}_{\OO}}}
\newcommand{\projnegO}{\mathop{\pi^{\ominus}_{\OO}}}
\newcommand{\projposO}{\mathop{\pi^{\oplus}_{\OO}}}
\newcommand{\crossmorO}{\mathop{\mathsf{cross}_{\OO}}}
\newcommand{\Rezk}{\mathfrak{R}}
\newcommand{\rezk}{\mathfrak{r}}
\newcommand{\NOTE}{\colorbox{orange}{NOTE}}
\newcommand{\TODO}{\colorbox{red}{TODO}}
\newcommand{\FIXME}{\colorbox{red}{FIXME}}

</script>

<p>In the past few weeks I prodded a little more at bicategorical proofs
about left universal arrows. However, in the interest of time, I’m
turning my attention more to (re)writing.</p>

<h1 id="the-abridged-version">The Abridged Version</h1>

<p>The abridged draft of my dissertation, to be suitable for publication
in a conference, will be available at
<a href="https://notes.eutro.dev/cs/diss/output/abridged.pdf">https://notes.eutro.dev/cs/diss/output/abridged.pdf</a>
shortly. Currently, the <em>Preliminary Type Theory</em> section has been
considerably reduced, but I intend to reintroduce pointers to relevant
material. I am thinking about how best to treat the introduction and
<em>Semantics and Evaluation Order</em> sections. I have also cut various
proofs and explicit definitions, where I’ll be reading through to make
sure things are still coherent. The body is currently at 36 pages,
down from 49 for the dissertation, but I’ll have to make sure there is
enough information for things to be clear.</p>

<h1 id="the-introduction">The Introduction</h1>

<p>I am wondering if the introduction I wrote for my dissertation is the
best introduction to the actual content, viewed as a mathematics
paper. (The introduction walks through call-by-name and call-by-value
giving rise to (an example of) non-associative composition.) From my
perspective, thinking about programming language semantics is entirely
irrelevant to the mathematics I did, even though it is a substantial
motivator for duploids. On the other hand, the context is important,
especially in referencing the related work like Levy’s contextual
isomorphisms.</p>

<p>Comparing to other papers, the introduction of Mangel et
al. <a href="#citeproc_bib_item_1">[1]</a> conveys somewhat similar information to my
dissertation. This makes sense, because their paper is actually about
duploids and semantics, which mine is not. By contrast, the work of
van der Weide <a href="#citeproc_bib_item_2">[2]</a> on monads in Univalent Foundations
does little more than mention the uses of monads, without belabouring
the details. This also makes sense, in part because the use of monads
is well-established.</p>

<p>In my paper I believe it will be sufficient to mention programming
language semantics only in passing, so I can focus more on the
specific motivation of my own work instead. I’m not sure how much I
need to motivate duploids themselves, though. I will see how it goes.</p>

<h1 id="references">References</h1>

<style>.csl-left-margin{float: left; padding-right: 0em;}
 .csl-right-inline{margin: 0 0 0 1em;}</style>
<div class="csl-bib-body">
  <div class="csl-entry"><a id="citeproc_bib_item_1"></a>
    <div class="csl-left-margin">[1]</div><div class="csl-right-inline">É. Mangel, P.-A. Melliès, and G. Munch-Maccagnoni, “Classical notions of computation and the Hasegawa-Thielecke theorem,” <i>Proc. acm program. lang.</i>, vol. 10, no. POPL, Jan. 2026, doi: <a href="https://doi.org/10.1145/3776715">10.1145/3776715</a>. </div>
  </div>
  <div class="csl-entry"><a id="citeproc_bib_item_2"></a>
    <div class="csl-left-margin">[2]</div><div class="csl-right-inline">N. van der Weide, “The formal theory of monads, univalently,” <i>Logical methods in computer science</i>, vol. Volume 21, Issue 1, Feb. 2025, doi: <a href="https://doi.org/10.46298/lmcs-21(1:16)2025">10.46298/lmcs-21(1:16)2025</a>. </div>
  </div>
</div>]]></content><author><name>Beatrice Szilvasy</name><uri>https://eutro.dev/</uri></author><category term="masters-worklog" /><summary type="html"><![CDATA[In the past few weeks I prodded a little more at bicategorical proofs about left universal arrows. However, in the interest of time, I’m turning my attention more to (re)writing. The Abridged Version The abridged draft of my dissertation, to be suitable for publication in a conference, will be available at https://notes.eutro.dev/cs/diss/output/abridged.pdf shortly. Currently, the Preliminary Type Theory section has been considerably reduced, but I intend to reintroduce pointers to relevant material. I am thinking about how best to treat the introduction and Semantics and Evaluation Order sections. I have also cut various proofs and explicit definitions, where I’ll be reading through to make sure things are still coherent. The body is currently at 36 pages, down from 49 for the dissertation, but I’ll have to make sure there is enough information for things to be clear. The Introduction I am wondering if the introduction I wrote for my dissertation is the best introduction to the actual content, viewed as a mathematics paper. (The introduction walks through call-by-name and call-by-value giving rise to (an example of) non-associative composition.) From my perspective, thinking about programming language semantics is entirely irrelevant to the mathematics I did, even though it is a substantial motivator for duploids. On the other hand, the context is important, especially in referencing the related work like Levy’s contextual isomorphisms. Comparing to other papers, the introduction of Mangel et al. [1] conveys somewhat similar information to my dissertation. This makes sense, because their paper is actually about duploids and semantics, which mine is not. By contrast, the work of van der Weide [2] on monads in Univalent Foundations does little more than mention the uses of monads, without belabouring the details. This also makes sense, in part because the use of monads is well-established. In my paper I believe it will be sufficient to mention programming language semantics only in passing, so I can focus more on the specific motivation of my own work instead. I’m not sure how much I need to motivate duploids themselves, though. I will see how it goes. References [1]É. Mangel, P.-A. Melliès, and G. Munch-Maccagnoni, “Classical notions of computation and the Hasegawa-Thielecke theorem,” Proc. acm program. lang., vol. 10, no. POPL, Jan. 2026, doi: 10.1145/3776715. [2]N. van der Weide, “The formal theory of monads, univalently,” Logical methods in computer science, vol. Volume 21, Issue 1, Feb. 2025, doi: 10.46298/lmcs-21(1:16)2025.]]></summary></entry><entry><title type="html">July Update 2</title><link href="https://blog.eutro.dev/masters-worklog/update17/" rel="alternate" type="text/html" title="July Update 2" /><published>2026-07-21T00:00:00+00:00</published><updated>2026-07-21T00:00:00+00:00</updated><id>https://blog.eutro.dev/masters-worklog/update17</id><content type="html" xml:base="https://blog.eutro.dev/masters-worklog/update17/"><![CDATA[<script id="katex_headers" type="application/x-tex">

\newcommand{\orgcode}[1]{\textup{\texttt{#1}}}
\newcommand{\acat}[1]{\mathcal{#1}}
\newcommand{\A}{\acat{A}}
\newcommand{\B}{\acat{B}}
\newcommand{\C}{\acat{C}}
\newcommand{\D}{\acat{D}}
\newcommand{\M}{\acat{M}}
\newcommand{\PP}{\acat{P}}
\newcommand{\NN}{\acat{N}}
\newcommand{\OO}{\acat{O}}
\newcommand{\EE}{\acat{E}}
\newcommand{\GG}{\acat{G}}
\newcommand{\HH}{\acat{H}}
\newcommand{\UU}{\acat{U}}
\newcommand{\El}{\mathsf{El}}
\newcommand{\code}{\mathsf{code}}
\newcommand{\ttN}{\orgcode{N}}
\newcommand{\ttP}{\orgcode{P}}
\newcommand{\ttL}{\orgcode{L}}
\newcommand{\ttR}{\orgcode{R}}
\newcommand{\tteps}{\orgcode{ε}}
\newcommand{\tteta}{\orgcode{η}}
\newcommand{\Cl}[1]{#1_l}
\newcommand{\Ct}[1]{#1_t}
\newcommand{\Ci}[1]{#1_i}
\newcommand{\Cti}[1]{#1_{ti}}
\newcommand{\Cli}[1]{#1_{li}}
\newcommand{\Clt}[1]{#1_{lt}}
\newcommand{\Clti}[1]{#1_{lti}}
\newcommand{\Cn}[1]{#1^\ominus}
\newcommand{\Cp}[1]{#1^\oplus}
\newcommand{\Csn}[2]{#1^{\ominus#2}}
\newcommand{\Csp}[2]{#1^{\oplus#2}}
\newcommand{\Cnl}[1]{\Cn{\Cl{#1}}}
\newcommand{\Cpt}[1]{\Cp{\Ct{#1}}}
\newcommand{\Csnl}[2]{\Csn{\Cl{#1}}{#2}}
\newcommand{\Cspt}[2]{\Csp{\Ct{#1}}{#2}}
\newcommand{\Ctl}[1]{\Clt{#1}}
\newcommand{\Cnt}[1]{\Cn{#1}}
\newcommand{\Cpl}[1]{\Cp{#1}}
\newcommand{\wkcat}[1]{\mathbf{#1}}
\renewcommand{\Set}{\wkcat{Set}}
\newcommand{\Cat}{\wkcat{Cat}}
\newcommand{\UnivCat}{\wkcat{Cat}_{\univ}}
\newcommand{\Dupl}{\wkcat{Dupl}}
\newcommand{\UnivDupl}{\wkcat{Dupl}_{\univ}}
\newcommand{\WAdj}{\texttt{Adj}}
\newcommand{\coll}{\wkcat{coll}}
\newcommand{\Terminal}{\wkcat{1}}
\newcommand{\Obl}[1]{\OO[#1]}
\newcommand{\Env}[1]{\EE[#1]}
\DeclareMathOperator{\ob}{\mathsf{ob}}
\DeclareMathOperator{\mor}{\mathsf{mor}}
\DeclareMathOperator{\vertex}{\mathsf{vertex}}
\newcommand{\op}{{\mathsf{op}}}
\newcommand{\eq}{{\mathsf{eq}}}
\newcommand{\id}{\mathsf{id}}
\newcommand{\Id}{\mathsf{Id}}
\newcommand{\rx}{\mathsf{rx}}
\newcommand{\yo}{\mathsf{y}}
\newcommand{\univ}{\mathsf{univ}}
\newcommand{\acomp}{\circ}
\newcommand{\dcomp}{\fatsemi}
\newcommand{\syndcomp}{\mathop{;}}
\newcommand{\bindersep}{\mathpunct{.}}
\newcommand{\morsof}[3]{{#1}\llbracket{#2},{#3}\rrbracket}
\newcommand{\defeq}{\overset{\mathrm{\textup{def}}}{=}}
\newcommand{\defequiv}{\overset{\mathrm{\textup{def}}}{\equiv}}
\newcommand{\iscontr}{\orgcode{iscontr}}
\newcommand{\isaprop}{\orgcode{isaprop}}
\newcommand{\isaset}{\orgcode{isaset}}
\newcommand{\isweq}{\orgcode{isweq}}
\newcommand{\refl}{\mathsf{refl}}
\newcommand{\fib}[1]{\mathsf{wfib}_{#1}}
\newcommand{\cmdcode}[1]{\orgcode{#1}}
\newcommand{\punctcolor}[1]{\textcolor[rgb]{0.20,0.20,0.20}{#1}}
\newcommand{\print}{\cmdcode{print}}
\newcommand{\ttlet}{\cmdcode{let}\ }
\newcommand{\ttin}{\mathrel{\cmdcode{in}}}
\newcommand{\ttseq}{\orgcode{;}\ }
\newcommand{\ttbe}{\mathrel{\cmdcode{be}}}
\newcommand{\ttLP}{\Big(}
\newcommand{\ttRP}{\Big)}
\newcommand{\bool}{\orgcode{bool}}
\newcommand{\unit}{\orgcode{unit}}
\newcommand{\ttempty}{\orgcode{empty}}
\newcommand{\nat}{\mathbb{N}}
\newcommand{\hSet}{\orgcode{hSet}}
\newcommand{\hProp}{\orgcode{hProp}}
\newcommand{\idtoiso}{\orgcode{id\_to\_iso}}
\newcommand{\idtoweq}{\orgcode{id\_to\_weq}}
\newcommand{\idtomor}{\orgcode{id\_to\_edge}}
\newcommand{\proptrunc}[1]{\left\|#1\right\|}
\newcommand{\type}{\ \mathsf{type}}
\newcommand{\interp}[1]{\left\llbracket#1\right\rrbracket}
\newcommand{\stn}[1]{\mathbf{#1}}
\newcommand{\ndUniqueChoice}{\operatorname{\mathsf{unique}}}
\newcommand{\ofan}[2]{\{#2\}^{{\Rightarrow}}_{#1}}
\newcommand{\ifan}[2]{\{#2\}^{{\Leftarrow}}_{#1}}
\newcommand{\functorcat}[2]{\mathbf{Fn}[#1, #2]}
\newcommand{\rxfunctorcat}[2]{\mathbf{RxFn}[#1, #2]}
\newcommand{\natrxfunctorcat}[2]{\mathbf{RxFn}_{\mathsf{nat}}[#1, #2]}
\newcommand*{\State}[1]{\operatorname{State}_{#1}}
\newcommand{\rxfunctor}{\densedashrightarrow}
\newcommand{\nattrans}{\Rightarrow}
\newcommand{\unnattrans}{\Rightharpoonup}
\newcommand{\morpath}{\rightarrow\cdots\rightarrow}
\newcommand{\force}{\mathop{\orgcode{force}}\nolimits}
\newcommand{\delay}{\mathop{\orgcode{delay}}\nolimits}
\newcommand{\wrap}{\mathop{\orgcode{wrap}}\nolimits}
\newcommand{\unwrap}{\mathop{\orgcode{unwrap}}\nolimits}
\newcommand{\upshift}{\mathord{\Uparrow}}
\newcommand{\downshift}{\mathord{\Downarrow}}
\newcommand{\negliftO}{\mathop{\mathsf{lift}^{\ominus}}}
\newcommand{\posliftO}{\mathop{\mathsf{lift}^{\oplus}}}
\newcommand{\neglift}[1]{\negliftO{}#1}
\newcommand{\poslift}[1]{\posliftO{}#1}
\newcommand{\inneg}{\mathop{\iota^{\ominus}}}
\newcommand{\inpos}{\mathop{\iota^{\oplus}}}
\newcommand{\projneg}{\mathop{\pi^{\ominus}}}
\newcommand{\projpos}{\mathop{\pi^{\oplus}}}
\newcommand{\crossmor}{\mathop{\mathsf{cross}}}
\newcommand{\innegE}{\mathop{\iota^{\ominus}_{\EE}}}
\newcommand{\inposE}{\mathop{\iota^{\oplus}_{\EE}}}
\newcommand{\projnegE}{\mathop{\pi^{\ominus}_{\EE}}}
\newcommand{\projposE}{\mathop{\pi^{\oplus}_{\EE}}}
\newcommand{\crossmorE}{\mathop{\mathsf{cross}_{\EE}}}
\newcommand{\innegO}{\mathop{\iota^{\ominus}_{\OO}}}
\newcommand{\inposO}{\mathop{\iota^{\oplus}_{\OO}}}
\newcommand{\projnegO}{\mathop{\pi^{\ominus}_{\OO}}}
\newcommand{\projposO}{\mathop{\pi^{\oplus}_{\OO}}}
\newcommand{\crossmorO}{\mathop{\mathsf{cross}_{\OO}}}
\newcommand{\Rezk}{\mathfrak{R}}
\newcommand{\rezk}{\mathfrak{r}}
\newcommand{\NOTE}{\colorbox{orange}{NOTE}}
\newcommand{\TODO}{\colorbox{red}{TODO}}
\newcommand{\FIXME}{\colorbox{red}{FIXME}}

</script>

<p>This week I spent more time bashing my head against UniMath’s
bicategories. <!--more--> This has resulted in me proving 2.5
more coherence laws for the pseudofunctor-from-left-universal-arrows,
leaving only 1.5 more to go. Mind, the computationally relevant data
of the pseudofunctor is already well-defined, so this grunt work is
unnecessary if my interest is in using Rocq as a
blackboard<sup><a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup>.</p>

<p>A 2-categorical way to define the equalizing requirement is helpful
for studying adjunctions and their relation to duploids. Every
adjunction \(L \dashv R : \NN \to \PP\) gives rise to a <em>comparison
functor</em> \(K^{RL} \colon \NN \to \PP^{RL}\) to the Eilenberg-Moore
category of the monad \(RL\). It is known that an adjunction is
negative equalizing if and only if \(K^{RL}\) is fully-faithful, and I
have now proven this in UniMath. Likewise, this can be dualized to
comonads for the positive side. This functor and its
fully-faithfulness can both be expressed 2-categorically, which (I
hope) will be easier to work with for the 2-categorically-defined
image-of-an-adjunction-in-a-pseudofunctor.</p>

<p>It is clear that the 2-categorical Rezk completion via adjunctions and
the envelope duploid still has lots of work to be done. Given this, I
may take a fresh stab at defining a Rezk completion of duploids
directly. Such a construction may provide more insight anyhow, and it
will force me to refactor some existing code too (e.g. the cursed
Yoneda stuff).</p>

<h1 id="footnotes">Footnotes</h1>

<p><sup><a id="fn.1" href="#fnr.1">1</a></sup> Someone else proved these theorems on paper for
2-categories so it must be true! I can safely use <code class="language-plaintext highlighter-rouge">admit</code>, right?</p>]]></content><author><name>Beatrice Szilvasy</name><uri>https://eutro.dev/</uri></author><category term="masters-worklog" /><summary type="html"><![CDATA[This week I spent more time bashing my head against UniMath’s bicategories.]]></summary></entry><entry><title type="html">July Update 1</title><link href="https://blog.eutro.dev/masters-worklog/update16/" rel="alternate" type="text/html" title="July Update 1" /><published>2026-07-13T00:00:00+00:00</published><updated>2026-07-13T00:00:00+00:00</updated><id>https://blog.eutro.dev/masters-worklog/update16</id><content type="html" xml:base="https://blog.eutro.dev/masters-worklog/update16/"><![CDATA[<script id="katex_headers" type="application/x-tex">

\newcommand{\orgcode}[1]{\textup{\texttt{#1}}}
\newcommand{\acat}[1]{\mathcal{#1}}
\newcommand{\A}{\acat{A}}
\newcommand{\B}{\acat{B}}
\newcommand{\C}{\acat{C}}
\newcommand{\D}{\acat{D}}
\newcommand{\M}{\acat{M}}
\newcommand{\PP}{\acat{P}}
\newcommand{\NN}{\acat{N}}
\newcommand{\OO}{\acat{O}}
\newcommand{\EE}{\acat{E}}
\newcommand{\GG}{\acat{G}}
\newcommand{\HH}{\acat{H}}
\newcommand{\UU}{\acat{U}}
\newcommand{\El}{\mathsf{El}}
\newcommand{\code}{\mathsf{code}}
\newcommand{\ttN}{\orgcode{N}}
\newcommand{\ttP}{\orgcode{P}}
\newcommand{\ttL}{\orgcode{L}}
\newcommand{\ttR}{\orgcode{R}}
\newcommand{\tteps}{\orgcode{ε}}
\newcommand{\tteta}{\orgcode{η}}
\newcommand{\Cl}[1]{#1_l}
\newcommand{\Ct}[1]{#1_t}
\newcommand{\Ci}[1]{#1_i}
\newcommand{\Cti}[1]{#1_{ti}}
\newcommand{\Cli}[1]{#1_{li}}
\newcommand{\Clt}[1]{#1_{lt}}
\newcommand{\Clti}[1]{#1_{lti}}
\newcommand{\Cn}[1]{#1^\ominus}
\newcommand{\Cp}[1]{#1^\oplus}
\newcommand{\Csn}[2]{#1^{\ominus#2}}
\newcommand{\Csp}[2]{#1^{\oplus#2}}
\newcommand{\Cnl}[1]{\Cn{\Cl{#1}}}
\newcommand{\Cpt}[1]{\Cp{\Ct{#1}}}
\newcommand{\Csnl}[2]{\Csn{\Cl{#1}}{#2}}
\newcommand{\Cspt}[2]{\Csp{\Ct{#1}}{#2}}
\newcommand{\Ctl}[1]{\Clt{#1}}
\newcommand{\Cnt}[1]{\Cn{#1}}
\newcommand{\Cpl}[1]{\Cp{#1}}
\newcommand{\wkcat}[1]{\mathbf{#1}}
\renewcommand{\Set}{\wkcat{Set}}
\newcommand{\Cat}{\wkcat{Cat}}
\newcommand{\UnivCat}{\wkcat{Cat}_{\univ}}
\newcommand{\Dupl}{\wkcat{Dupl}}
\newcommand{\UnivDupl}{\wkcat{Dupl}_{\univ}}
\newcommand{\WAdj}{\texttt{Adj}}
\newcommand{\coll}{\wkcat{coll}}
\newcommand{\Terminal}{\wkcat{1}}
\newcommand{\Obl}[1]{\OO[#1]}
\newcommand{\Env}[1]{\EE[#1]}
\DeclareMathOperator{\ob}{\mathsf{ob}}
\DeclareMathOperator{\mor}{\mathsf{mor}}
\DeclareMathOperator{\vertex}{\mathsf{vertex}}
\newcommand{\op}{{\mathsf{op}}}
\newcommand{\eq}{{\mathsf{eq}}}
\newcommand{\id}{\mathsf{id}}
\newcommand{\Id}{\mathsf{Id}}
\newcommand{\rx}{\mathsf{rx}}
\newcommand{\yo}{\mathsf{y}}
\newcommand{\univ}{\mathsf{univ}}
\newcommand{\acomp}{\circ}
\newcommand{\dcomp}{\fatsemi}
\newcommand{\syndcomp}{\mathop{;}}
\newcommand{\bindersep}{\mathpunct{.}}
\newcommand{\morsof}[3]{{#1}\llbracket{#2},{#3}\rrbracket}
\newcommand{\defeq}{\overset{\mathrm{\textup{def}}}{=}}
\newcommand{\defequiv}{\overset{\mathrm{\textup{def}}}{\equiv}}
\newcommand{\iscontr}{\orgcode{iscontr}}
\newcommand{\isaprop}{\orgcode{isaprop}}
\newcommand{\isaset}{\orgcode{isaset}}
\newcommand{\isweq}{\orgcode{isweq}}
\newcommand{\refl}{\mathsf{refl}}
\newcommand{\fib}[1]{\mathsf{wfib}_{#1}}
\newcommand{\cmdcode}[1]{\orgcode{#1}}
\newcommand{\punctcolor}[1]{\textcolor[rgb]{0.20,0.20,0.20}{#1}}
\newcommand{\print}{\cmdcode{print}}
\newcommand{\ttlet}{\cmdcode{let}\ }
\newcommand{\ttin}{\mathrel{\cmdcode{in}}}
\newcommand{\ttseq}{\orgcode{;}\ }
\newcommand{\ttbe}{\mathrel{\cmdcode{be}}}
\newcommand{\ttLP}{\Big(}
\newcommand{\ttRP}{\Big)}
\newcommand{\bool}{\orgcode{bool}}
\newcommand{\unit}{\orgcode{unit}}
\newcommand{\ttempty}{\orgcode{empty}}
\newcommand{\nat}{\mathbb{N}}
\newcommand{\hSet}{\orgcode{hSet}}
\newcommand{\hProp}{\orgcode{hProp}}
\newcommand{\idtoiso}{\orgcode{id\_to\_iso}}
\newcommand{\idtoweq}{\orgcode{id\_to\_weq}}
\newcommand{\idtomor}{\orgcode{id\_to\_edge}}
\newcommand{\proptrunc}[1]{\left\|#1\right\|}
\newcommand{\type}{\ \mathsf{type}}
\newcommand{\interp}[1]{\left\llbracket#1\right\rrbracket}
\newcommand{\stn}[1]{\mathbf{#1}}
\newcommand{\ndUniqueChoice}{\operatorname{\mathsf{unique}}}
\newcommand{\ofan}[2]{\{#2\}^{{\Rightarrow}}_{#1}}
\newcommand{\ifan}[2]{\{#2\}^{{\Leftarrow}}_{#1}}
\newcommand{\functorcat}[2]{\mathbf{Fn}[#1, #2]}
\newcommand{\rxfunctorcat}[2]{\mathbf{RxFn}[#1, #2]}
\newcommand{\natrxfunctorcat}[2]{\mathbf{RxFn}_{\mathsf{nat}}[#1, #2]}
\newcommand*{\State}[1]{\operatorname{State}_{#1}}
\newcommand{\rxfunctor}{\densedashrightarrow}
\newcommand{\nattrans}{\Rightarrow}
\newcommand{\unnattrans}{\Rightharpoonup}
\newcommand{\morpath}{\rightarrow\cdots\rightarrow}
\newcommand{\force}{\mathop{\orgcode{force}}\nolimits}
\newcommand{\delay}{\mathop{\orgcode{delay}}\nolimits}
\newcommand{\wrap}{\mathop{\orgcode{wrap}}\nolimits}
\newcommand{\unwrap}{\mathop{\orgcode{unwrap}}\nolimits}
\newcommand{\upshift}{\mathord{\Uparrow}}
\newcommand{\downshift}{\mathord{\Downarrow}}
\newcommand{\negliftO}{\mathop{\mathsf{lift}^{\ominus}}}
\newcommand{\posliftO}{\mathop{\mathsf{lift}^{\oplus}}}
\newcommand{\neglift}[1]{\negliftO{}#1}
\newcommand{\poslift}[1]{\posliftO{}#1}
\newcommand{\inneg}{\mathop{\iota^{\ominus}}}
\newcommand{\inpos}{\mathop{\iota^{\oplus}}}
\newcommand{\projneg}{\mathop{\pi^{\ominus}}}
\newcommand{\projpos}{\mathop{\pi^{\oplus}}}
\newcommand{\crossmor}{\mathop{\mathsf{cross}}}
\newcommand{\innegE}{\mathop{\iota^{\ominus}_{\EE}}}
\newcommand{\inposE}{\mathop{\iota^{\oplus}_{\EE}}}
\newcommand{\projnegE}{\mathop{\pi^{\ominus}_{\EE}}}
\newcommand{\projposE}{\mathop{\pi^{\oplus}_{\EE}}}
\newcommand{\crossmorE}{\mathop{\mathsf{cross}_{\EE}}}
\newcommand{\innegO}{\mathop{\iota^{\ominus}_{\OO}}}
\newcommand{\inposO}{\mathop{\iota^{\oplus}_{\OO}}}
\newcommand{\projnegO}{\mathop{\pi^{\ominus}_{\OO}}}
\newcommand{\projposO}{\mathop{\pi^{\oplus}_{\OO}}}
\newcommand{\crossmorO}{\mathop{\mathsf{cross}_{\OO}}}
\newcommand{\Rezk}{\mathfrak{R}}
\newcommand{\rezk}{\mathfrak{r}}
\newcommand{\NOTE}{\colorbox{orange}{NOTE}}
\newcommand{\TODO}{\colorbox{red}{TODO}}
\newcommand{\FIXME}{\colorbox{red}{FIXME}}

</script>

<p>These past few weeks I have spent some time working on the Rezk
completion for duploids. Otherwise, I would like to collect my
thoughts on what I wish to do, now that I have submitted the final
version of the part III project and graduated.</p>

<p>I intend to write a post here presenting the final version of my
dissertation,<sup><a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup> but that is not yet
written. In the meantime, please find it at
<a href="https://notes.eutro.dev/cs/diss/output/writeup.pdf">https://notes.eutro.dev/cs/diss/output/writeup.pdf</a><sup><a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink">2</a></sup></p>

<h1 id="future-work">Future Work</h1>

<p>These are some ideas for what I could do going forward. This also
serves as a reminder of what my unfinished/future work was, and the
progress I made on them nevertheless.</p>

<ul>
  <li>Clean up of my UniMath fork, for niceness and potential
upstreaming. This involves:
    <ul>
      <li>Cleaning up existing code. (e.g. exploring nice abstractions for
“wide subcategories” of morphisms, moving things around.)</li>
      <li>Clean up my <em>commit history</em>. (e.g. hoist commits for reflexive
graphs.)</li>
    </ul>
  </li>
  <li>Refine the text of my dissertation into a potential publication.</li>
  <li>Explore the 2-category of duploids and duploid functors.
    <ul>
      <li>Explore their relationship with the 2-category (or categories) of
adjunctions.</li>
      <li>(We can work with the functors and natural transformations
unbundled if necessary, especially if defining the 2-categories is
too annoying.)</li>
    </ul>
  </li>
  <li>Explore the envelope-duploid Rezk completion of duploids. One path
(as I mentioned in <a href="/masters-worklog/update8/#rezk-completion">March</a>) may be:
    <ul class="task-list">
      <li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Defining the action of a pseudofunctor on an adjunction.</li>
      <li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" />Defining a pseudofunctor from a “left universal arrow”
        <ul>
          <li>…which would give us a Rezk completion pseudofunctor
\(\UnivCat \to \Cat\).</li>
          <li>This should be possible following Fiore <a href="#citeproc_bib_item_1">[1]</a>. (The
proof also includes that it is a left biadjoint, but we shall
see if that ends up being necessary.)</li>
        </ul>
      </li>
      <li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" />Showing that the Rezk completion pseudofunctor preserves the
equalizing requirement.
        <ul>
          <li>There ought to be a 2-categorical way to show this, which might
make things easier. (Although it might also require more effort
than it is worth.)</li>
        </ul>
      </li>
      <li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" />Showing that the resulting duploid is equivalent to the
original
        <ul>
          <li>It may be worth exploring the 2-category of duploids and
adjunctions more first.</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

<h1 id="progress">Progress</h1>

<p>I have made some progress formalizing the pseudofunctor from a left
universal arrow of 2-categories.</p>

<p><strong>Definition 1.</strong> Let \(R : \C \to \D\) be a pseudofunctor. A <em>left universal arrow</em>
\((L_0x, \eta_x)\) from \(x : \D\) to \(R\) consists of:</p>

<ul>
  <li>An object \(L_0x : \C\).</li>
  <li>A 1-cell \(x \xrightarrow{\eta_x} RL_0x\).</li>
  <li>These must satisfy that, for each \(y : \C\), the following functor is an
adjoint equivalence:
\[\begin{aligned}
  \varphi_y &amp;: \morsof\C{L_0x}{y} \to \morsof\D{x}{Ry}
  \\ \varphi_y\left(L_0x \xrightarrow{g} y\right) &amp;\defequiv \left(x \xrightarrow{\eta_x} RL_0x \xrightarrow{Rg} Ry\right)
  \\ \varphi_y\left(f \xRightarrow{\nu} g\right) &amp;\defequiv \left(\eta_x \mathop; Rf \xRightarrow{\eta_x \triangleleft R\nu} \eta_x \mathop; Rg\right)
  \end{aligned}\]</li>
</ul>

<p><strong>Proposition 2.</strong> A family \((L_0x, \eta_x)_{x : \D}\) of left universal arrows to \(R :
\C \to \D\) assembles into a pseudofunctor \(L : \D \to \C\).</p>

<p>The proof of Thomas Fiore’s Theorem 9.17 <a href="#citeproc_bib_item_1">[1]</a> should
somewhat be usable.  However, it is complicated by UniMath using weak
2-categories (i.e. bicategories) rather than <em>strict</em> 2-categories as
Fiore does.</p>

<p>I am… getting through it. I have got the data of the pseudofunctor,
have proven that its identitor and compositor are invertible, and have
proven a couple easier laws. It remains to prove the more difficult
laws, for which I’m better served by some pen-on-paper diagram chasing
than by the proof assistant.</p>

<h1 id="references">References</h1>

<style>.csl-left-margin{float: left; padding-right: 0em;}
 .csl-right-inline{margin: 0 0 0 1em;}</style>
<div class="csl-bib-body">
  <div class="csl-entry"><a id="citeproc_bib_item_1"></a>
    <div class="csl-left-margin">[1]</div><div class="csl-right-inline">T. M. Fiore, “Pseudo limits, biadjoints, and pseudo algebras: categorical foundations of conformal field theory,” <i>Memoirs of the AMS</i>, vol. 182, no. 860, 2006, doi: <a href="https://doi.org/10.1090/memo/0860">10.1090/memo/0860</a>. [Online]. Available: <a href="https://www.ams.org/memo/0860">https://www.ams.org/memo/0860</a>. [Accessed: Jul. 13, 2026]</div>
  </div>
</div>

<h1 id="footnotes">Footnotes</h1>

<p><sup><a id="fn.1" href="#fnr.1">1</a></sup> Sorry, “part III project”.</p>

<p><sup><a id="fn.2" href="#fnr.2">2</a></sup> The newest
version of <code class="language-plaintext highlighter-rouge">writeup.pdf</code> is a different rendering to that submitted
for marking. It links directly to GitHub for source links. The links
from the <a href="https://notes.eutro.dev/cs/diss/output/writeup-2026-06-02.pdf">submitted rendering</a> claim to redirect, but they do not.</p>]]></content><author><name>Beatrice Szilvasy</name><uri>https://eutro.dev/</uri></author><category term="masters-worklog" /><summary type="html"><![CDATA[These past few weeks I have spent some time working on the Rezk completion for duploids. Otherwise, I would like to collect my thoughts on what I wish to do, now that I have submitted the final version of the part III project and graduated. I intend to write a post here presenting the final version of my dissertation,1 but that is not yet written. In the meantime, please find it at https://notes.eutro.dev/cs/diss/output/writeup.pdf2 Future Work These are some ideas for what I could do going forward. This also serves as a reminder of what my unfinished/future work was, and the progress I made on them nevertheless. Clean up of my UniMath fork, for niceness and potential upstreaming. This involves: Cleaning up existing code. (e.g. exploring nice abstractions for “wide subcategories” of morphisms, moving things around.) Clean up my commit history. (e.g. hoist commits for reflexive graphs.) Refine the text of my dissertation into a potential publication. Explore the 2-category of duploids and duploid functors. Explore their relationship with the 2-category (or categories) of adjunctions. (We can work with the functors and natural transformations unbundled if necessary, especially if defining the 2-categories is too annoying.) Explore the envelope-duploid Rezk completion of duploids. One path (as I mentioned in March) may be: Defining the action of a pseudofunctor on an adjunction. Defining a pseudofunctor from a “left universal arrow” …which would give us a Rezk completion pseudofunctor \(\UnivCat \to \Cat\). This should be possible following Fiore [1]. (The proof also includes that it is a left biadjoint, but we shall see if that ends up being necessary.) Showing that the Rezk completion pseudofunctor preserves the equalizing requirement. There ought to be a 2-categorical way to show this, which might make things easier. (Although it might also require more effort than it is worth.) Showing that the resulting duploid is equivalent to the original It may be worth exploring the 2-category of duploids and adjunctions more first. Progress I have made some progress formalizing the pseudofunctor from a left universal arrow of 2-categories. Definition 1. Let \(R : \C \to \D\) be a pseudofunctor. A left universal arrow \((L_0x, \eta_x)\) from \(x : \D\) to \(R\) consists of: An object \(L_0x : \C\). A 1-cell \(x \xrightarrow{\eta_x} RL_0x\). These must satisfy that, for each \(y : \C\), the following functor is an adjoint equivalence: \[\begin{aligned} \varphi_y &amp;: \morsof\C{L_0x}{y} \to \morsof\D{x}{Ry} \\ \varphi_y\left(L_0x \xrightarrow{g} y\right) &amp;\defequiv \left(x \xrightarrow{\eta_x} RL_0x \xrightarrow{Rg} Ry\right) \\ \varphi_y\left(f \xRightarrow{\nu} g\right) &amp;\defequiv \left(\eta_x \mathop; Rf \xRightarrow{\eta_x \triangleleft R\nu} \eta_x \mathop; Rg\right) \end{aligned}\] Proposition 2. A family \((L_0x, \eta_x)_{x : \D}\) of left universal arrows to \(R : \C \to \D\) assembles into a pseudofunctor \(L : \D \to \C\). The proof of Thomas Fiore’s Theorem 9.17 [1] should somewhat be usable. However, it is complicated by UniMath using weak 2-categories (i.e. bicategories) rather than strict 2-categories as Fiore does. I am… getting through it. I have got the data of the pseudofunctor, have proven that its identitor and compositor are invertible, and have proven a couple easier laws. It remains to prove the more difficult laws, for which I’m better served by some pen-on-paper diagram chasing than by the proof assistant. References [1]T. M. Fiore, “Pseudo limits, biadjoints, and pseudo algebras: categorical foundations of conformal field theory,” Memoirs of the AMS, vol. 182, no. 860, 2006, doi: 10.1090/memo/0860. [Online]. Available: https://www.ams.org/memo/0860. [Accessed: Jul. 13, 2026] Footnotes 1 Sorry, “part III project”. 2 The newest version of writeup.pdf is a different rendering to that submitted for marking. It links directly to GitHub for source links. The links from the submitted rendering claim to redirect, but they do not.]]></summary></entry><entry><title type="html">May Update 3</title><link href="https://blog.eutro.dev/masters-worklog/update15/" rel="alternate" type="text/html" title="May Update 3" /><published>2026-05-22T00:00:00+00:00</published><updated>2026-05-22T00:00:00+00:00</updated><id>https://blog.eutro.dev/masters-worklog/update15</id><content type="html" xml:base="https://blog.eutro.dev/masters-worklog/update15/"><![CDATA[<p>The most recent draft of my dissertation is now uploaded at
<a href="https://notes.eutro.dev/cs/diss/output/writeup-2026-05-22.pdf">https://notes.eutro.dev/cs/diss/output/writeup-2026-05-22.pdf</a>.
<!--more--> I have updated the abstract, introduction and
background chapters the most since last week. What I have left is to
write my conclusions, and to fix up some minor <code class="language-plaintext highlighter-rouge">TODO</code>-s. Then I intend
to enter an editing phase in time for submission by June 1st.</p>]]></content><author><name>Beatrice Szilvasy</name><uri>https://eutro.dev/</uri></author><category term="masters-worklog" /><summary type="html"><![CDATA[The most recent draft of my dissertation is now uploaded at https://notes.eutro.dev/cs/diss/output/writeup-2026-05-22.pdf.]]></summary></entry><entry><title type="html">May Update 3</title><link href="https://blog.eutro.dev/masters-worklog/update14/" rel="alternate" type="text/html" title="May Update 3" /><published>2026-05-15T00:00:00+00:00</published><updated>2026-05-15T00:00:00+00:00</updated><id>https://blog.eutro.dev/masters-worklog/update14</id><content type="html" xml:base="https://blog.eutro.dev/masters-worklog/update14/"><![CDATA[<script id="katex_headers" type="application/x-tex">

\newcommand{\orgcode}[1]{\textup{\texttt{#1}}}
\newcommand{\acat}[1]{\mathcal{#1}}
\newcommand{\A}{\acat{A}}
\newcommand{\B}{\acat{B}}
\newcommand{\C}{\acat{C}}
\newcommand{\D}{\acat{D}}
\newcommand{\M}{\acat{M}}
\newcommand{\PP}{\acat{P}}
\newcommand{\NN}{\acat{N}}
\newcommand{\OO}{\acat{O}}
\newcommand{\EE}{\acat{E}}
\newcommand{\GG}{\acat{G}}
\newcommand{\HH}{\acat{H}}
\newcommand{\UU}{\acat{U}}
\newcommand{\El}{\mathsf{El}}
\newcommand{\code}{\mathsf{code}}
\newcommand{\ttN}{\orgcode{N}}
\newcommand{\ttP}{\orgcode{P}}
\newcommand{\ttL}{\orgcode{L}}
\newcommand{\ttR}{\orgcode{R}}
\newcommand{\tteps}{\orgcode{ε}}
\newcommand{\tteta}{\orgcode{η}}
\newcommand{\Cl}[1]{#1_l}
\newcommand{\Ct}[1]{#1_t}
\newcommand{\Ci}[1]{#1_i}
\newcommand{\Cti}[1]{#1_{ti}}
\newcommand{\Cli}[1]{#1_{li}}
\newcommand{\Clt}[1]{#1_{lt}}
\newcommand{\Clti}[1]{#1_{lti}}
\newcommand{\Cn}[1]{#1^\ominus}
\newcommand{\Cp}[1]{#1^\oplus}
\newcommand{\Csn}[2]{#1^{\ominus#2}}
\newcommand{\Csp}[2]{#1^{\oplus#2}}
\newcommand{\Cnl}[1]{\Cn{\Cl{#1}}}
\newcommand{\Cpt}[1]{\Cp{\Ct{#1}}}
\newcommand{\Csnl}[2]{\Csn{\Cl{#1}}{#2}}
\newcommand{\Cspt}[2]{\Csp{\Ct{#1}}{#2}}
\newcommand{\Ctl}[1]{\Clt{#1}}
\newcommand{\Cnt}[1]{\Cn{#1}}
\newcommand{\Cpl}[1]{\Cp{#1}}
\newcommand{\wkcat}[1]{\mathbf{#1}}
\renewcommand{\Set}{\wkcat{Set}}
\newcommand{\Cat}{\wkcat{Cat}}
\newcommand{\UnivCat}{\wkcat{Cat}_{\univ}}
\newcommand{\Dupl}{\wkcat{Dupl}}
\newcommand{\UnivDupl}{\wkcat{Dupl}_{\univ}}
\newcommand{\WAdj}{\texttt{Adj}}
\newcommand{\coll}{\wkcat{coll}}
\newcommand{\Terminal}{\wkcat{1}}
\newcommand{\Obl}[1]{\OO[#1]}
\newcommand{\Env}[1]{\EE[#1]}
\DeclareMathOperator{\ob}{\mathsf{ob}}
\DeclareMathOperator{\mor}{\mathsf{mor}}
\DeclareMathOperator{\vertex}{\mathsf{vertex}}
\newcommand{\op}{{\mathsf{op}}}
\newcommand{\eq}{{\mathsf{eq}}}
\newcommand{\id}{\mathsf{id}}
\newcommand{\Id}{\mathsf{Id}}
\newcommand{\rx}{\mathsf{rx}}
\newcommand{\yo}{\mathsf{y}}
\newcommand{\univ}{\mathsf{univ}}
\newcommand{\acomp}{\circ}
\newcommand{\dcomp}{\fatsemi}
\newcommand{\syndcomp}{\mathop{;}}
\newcommand{\bindersep}{\mathpunct{.}}
\newcommand{\morsof}[3]{{#1}\llbracket{#2},{#3}\rrbracket}
\newcommand{\defeq}{\overset{\mathrm{\textup{def}}}{=}}
\newcommand{\defequiv}{\overset{\mathrm{\textup{def}}}{\equiv}}
\newcommand{\iscontr}{\orgcode{iscontr}}
\newcommand{\isaprop}{\orgcode{isaprop}}
\newcommand{\isaset}{\orgcode{isaset}}
\newcommand{\isweq}{\orgcode{isweq}}
\newcommand{\refl}{\mathsf{refl}}
\newcommand{\fib}[1]{\mathsf{wfib}_{#1}}
\newcommand{\cmdcode}[1]{\orgcode{#1}}
\newcommand{\punctcolor}[1]{\textcolor[rgb]{0.20,0.20,0.20}{#1}}
\newcommand{\print}{\cmdcode{print}}
\newcommand{\ttlet}{\cmdcode{let}\ }
\newcommand{\ttin}{\mathrel{\cmdcode{in}}}
\newcommand{\ttseq}{\orgcode{;}\ }
\newcommand{\ttbe}{\mathrel{\cmdcode{be}}}
\newcommand{\ttLP}{\Big(}
\newcommand{\ttRP}{\Big)}
\newcommand{\bool}{\orgcode{bool}}
\newcommand{\unit}{\orgcode{unit}}
\newcommand{\ttempty}{\orgcode{empty}}
\newcommand{\nat}{\mathbb{N}}
\newcommand{\hSet}{\orgcode{hSet}}
\newcommand{\hProp}{\orgcode{hProp}}
\newcommand{\idtoiso}{\orgcode{id\_to\_iso}}
\newcommand{\idtoweq}{\orgcode{id\_to\_weq}}
\newcommand{\idtomor}{\orgcode{id\_to\_edge}}
\newcommand{\proptrunc}[1]{\left\|#1\right\|}
\newcommand{\type}{\ \mathsf{type}}
\newcommand{\interp}[1]{\left\llbracket#1\right\rrbracket}
\newcommand{\stn}[1]{\mathbf{#1}}
\newcommand{\ndUniqueChoice}{\operatorname{\mathsf{unique}}}
\newcommand{\ofan}[2]{\{#2\}^{{\Rightarrow}}_{#1}}
\newcommand{\ifan}[2]{\{#2\}^{{\Leftarrow}}_{#1}}
\newcommand{\functorcat}[2]{\mathbf{Fn}[#1, #2]}
\newcommand{\rxfunctorcat}[2]{\mathbf{RxFn}[#1, #2]}
\newcommand{\natrxfunctorcat}[2]{\mathbf{RxFn}_{\mathsf{nat}}[#1, #2]}
\newcommand*{\State}[1]{\operatorname{State}_{#1}}
\newcommand{\rxfunctor}{\densedashrightarrow}
\newcommand{\nattrans}{\Rightarrow}
\newcommand{\unnattrans}{\Rightharpoonup}
\newcommand{\morpath}{\rightarrow\cdots\rightarrow}
\newcommand{\force}{\mathop{\orgcode{force}}\nolimits}
\newcommand{\delay}{\mathop{\orgcode{delay}}\nolimits}
\newcommand{\wrap}{\mathop{\orgcode{wrap}}\nolimits}
\newcommand{\unwrap}{\mathop{\orgcode{unwrap}}\nolimits}
\newcommand{\upshift}{\mathord{\Uparrow}}
\newcommand{\downshift}{\mathord{\Downarrow}}
\newcommand{\negliftO}{\mathop{\mathsf{lift}^{\ominus}}}
\newcommand{\posliftO}{\mathop{\mathsf{lift}^{\oplus}}}
\newcommand{\neglift}[1]{\negliftO{}#1}
\newcommand{\poslift}[1]{\posliftO{}#1}
\newcommand{\inneg}{\mathop{\iota^{\ominus}}}
\newcommand{\inpos}{\mathop{\iota^{\oplus}}}
\newcommand{\projneg}{\mathop{\pi^{\ominus}}}
\newcommand{\projpos}{\mathop{\pi^{\oplus}}}
\newcommand{\crossmor}{\mathop{\mathsf{cross}}}
\newcommand{\innegE}{\mathop{\iota^{\ominus}_{\EE}}}
\newcommand{\inposE}{\mathop{\iota^{\oplus}_{\EE}}}
\newcommand{\projnegE}{\mathop{\pi^{\ominus}_{\EE}}}
\newcommand{\projposE}{\mathop{\pi^{\oplus}_{\EE}}}
\newcommand{\crossmorE}{\mathop{\mathsf{cross}_{\EE}}}
\newcommand{\innegO}{\mathop{\iota^{\ominus}_{\OO}}}
\newcommand{\inposO}{\mathop{\iota^{\oplus}_{\OO}}}
\newcommand{\projnegO}{\mathop{\pi^{\ominus}_{\OO}}}
\newcommand{\projposO}{\mathop{\pi^{\oplus}_{\OO}}}
\newcommand{\crossmorO}{\mathop{\mathsf{cross}_{\OO}}}
\newcommand{\Rezk}{\mathfrak{R}}
\newcommand{\rezk}{\mathfrak{r}}
\newcommand{\NOTE}{\colorbox{orange}{NOTE}}
\newcommand{\TODO}{\colorbox{red}{TODO}}
\newcommand{\FIXME}{\colorbox{red}{FIXME}}

</script>

<p>The most recent draft of my dissertation is now uploaded at
<a href="https://notes.eutro.dev/cs/diss/output/writeup-2026-05-15.pdf">https://notes.eutro.dev/cs/diss/output/writeup-2026-05-15.pdf</a>.  In
the past couple of days I have written some more of the final theorems
about univalence of the envelope and oblique duploids, and made minor
revisions to the unital magmoids chapter. I have revised some of the
background chapter and introduction, but more revision is still due.</p>

<p>I am likely still missing some theorems here and there, and I am quite
a few pages over the limit already, even without some necessary prose
that still needs to be (re)written. The pruning and revision necessary
to bring me under the limit, and of course to a more coherent paper,
will require a thorough read-through and of the whole paper, that I
intend to make a start on this weekend. There are also definitely
grammar mistakes and typos that I feel the need to apologise for.</p>]]></content><author><name>Beatrice Szilvasy</name><uri>https://eutro.dev/</uri></author><category term="masters-worklog" /><summary type="html"><![CDATA[The most recent draft of my dissertation is now uploaded at https://notes.eutro.dev/cs/diss/output/writeup-2026-05-15.pdf. In the past couple of days I have written some more of the final theorems about univalence of the envelope and oblique duploids, and made minor revisions to the unital magmoids chapter. I have revised some of the background chapter and introduction, but more revision is still due. I am likely still missing some theorems here and there, and I am quite a few pages over the limit already, even without some necessary prose that still needs to be (re)written. The pruning and revision necessary to bring me under the limit, and of course to a more coherent paper, will require a thorough read-through and of the whole paper, that I intend to make a start on this weekend. There are also definitely grammar mistakes and typos that I feel the need to apologise for.]]></summary></entry><entry><title type="html">May Update 2</title><link href="https://blog.eutro.dev/masters-worklog/update13/" rel="alternate" type="text/html" title="May Update 2" /><published>2026-05-12T00:00:00+00:00</published><updated>2026-05-12T00:00:00+00:00</updated><id>https://blog.eutro.dev/masters-worklog/update13</id><content type="html" xml:base="https://blog.eutro.dev/masters-worklog/update13/"><![CDATA[<script id="katex_headers" type="application/x-tex">

\newcommand{\orgcode}[1]{\textup{\texttt{#1}}}
\newcommand{\acat}[1]{\mathcal{#1}}
\newcommand{\A}{\acat{A}}
\newcommand{\B}{\acat{B}}
\newcommand{\C}{\acat{C}}
\newcommand{\D}{\acat{D}}
\newcommand{\M}{\acat{M}}
\newcommand{\PP}{\acat{P}}
\newcommand{\NN}{\acat{N}}
\newcommand{\OO}{\acat{O}}
\newcommand{\EE}{\acat{E}}
\newcommand{\GG}{\acat{G}}
\newcommand{\HH}{\acat{H}}
\newcommand{\UU}{\acat{U}}
\newcommand{\El}{\mathsf{El}}
\newcommand{\code}{\mathsf{code}}
\newcommand{\ttN}{\orgcode{N}}
\newcommand{\ttP}{\orgcode{P}}
\newcommand{\ttL}{\orgcode{L}}
\newcommand{\ttR}{\orgcode{R}}
\newcommand{\tteps}{\orgcode{ε}}
\newcommand{\tteta}{\orgcode{η}}
\newcommand{\Cl}[1]{#1_l}
\newcommand{\Ct}[1]{#1_t}
\newcommand{\Ci}[1]{#1_i}
\newcommand{\Cti}[1]{#1_{ti}}
\newcommand{\Cli}[1]{#1_{li}}
\newcommand{\Clt}[1]{#1_{lt}}
\newcommand{\Clti}[1]{#1_{lti}}
\newcommand{\Cn}[1]{#1^\ominus}
\newcommand{\Cp}[1]{#1^\oplus}
\newcommand{\Csn}[2]{#1^{\ominus#2}}
\newcommand{\Csp}[2]{#1^{\oplus#2}}
\newcommand{\Cnl}[1]{\Cn{\Cl{#1}}}
\newcommand{\Cpt}[1]{\Cp{\Ct{#1}}}
\newcommand{\Csnl}[2]{\Csn{\Cl{#1}}{#2}}
\newcommand{\Cspt}[2]{\Csp{\Ct{#1}}{#2}}
\newcommand{\Ctl}[1]{\Clt{#1}}
\newcommand{\Cnt}[1]{\Cn{#1}}
\newcommand{\Cpl}[1]{\Cp{#1}}
\newcommand{\wkcat}[1]{\mathbf{#1}}
\renewcommand{\Set}{\wkcat{Set}}
\newcommand{\Cat}{\wkcat{Cat}}
\newcommand{\UnivCat}{\wkcat{Cat}_{\univ}}
\newcommand{\Dupl}{\wkcat{Dupl}}
\newcommand{\UnivDupl}{\wkcat{Dupl}_{\univ}}
\newcommand{\WAdj}{\texttt{Adj}}
\newcommand{\coll}{\wkcat{coll}}
\newcommand{\Terminal}{\wkcat{1}}
\newcommand{\Obl}[1]{\OO[#1]}
\newcommand{\Env}[1]{\EE[#1]}
\DeclareMathOperator{\ob}{\mathsf{ob}}
\DeclareMathOperator{\mor}{\mathsf{mor}}
\DeclareMathOperator{\vertex}{\mathsf{vertex}}
\newcommand{\op}{{\mathsf{op}}}
\newcommand{\eq}{{\mathsf{eq}}}
\newcommand{\id}{\mathsf{id}}
\newcommand{\Id}{\mathsf{Id}}
\newcommand{\rx}{\mathsf{rx}}
\newcommand{\yo}{\mathsf{y}}
\newcommand{\univ}{\mathsf{univ}}
\newcommand{\acomp}{\circ}
\newcommand{\dcomp}{\fatsemi}
\newcommand{\syndcomp}{\mathop{;}}
\newcommand{\bindersep}{\mathpunct{.}}
\newcommand{\morsof}[3]{{#1}\llbracket{#2},{#3}\rrbracket}
\newcommand{\defeq}{\overset{\mathrm{\textup{def}}}{=}}
\newcommand{\defequiv}{\overset{\mathrm{\textup{def}}}{\equiv}}
\newcommand{\iscontr}{\orgcode{iscontr}}
\newcommand{\isaprop}{\orgcode{isaprop}}
\newcommand{\isaset}{\orgcode{isaset}}
\newcommand{\isweq}{\orgcode{isweq}}
\newcommand{\refl}{\mathsf{refl}}
\newcommand{\fib}[1]{\mathsf{wfib}_{#1}}
\newcommand{\cmdcode}[1]{\orgcode{#1}}
\newcommand{\punctcolor}[1]{\textcolor[rgb]{0.20,0.20,0.20}{#1}}
\newcommand{\print}{\cmdcode{print}}
\newcommand{\ttlet}{\cmdcode{let}\ }
\newcommand{\ttin}{\mathrel{\cmdcode{in}}}
\newcommand{\ttseq}{\orgcode{;}\ }
\newcommand{\ttbe}{\mathrel{\cmdcode{be}}}
\newcommand{\ttLP}{\Big(}
\newcommand{\ttRP}{\Big)}
\newcommand{\bool}{\orgcode{bool}}
\newcommand{\unit}{\orgcode{unit}}
\newcommand{\ttempty}{\orgcode{empty}}
\newcommand{\nat}{\mathbb{N}}
\newcommand{\hSet}{\orgcode{hSet}}
\newcommand{\hProp}{\orgcode{hProp}}
\newcommand{\idtoiso}{\orgcode{id\_to\_iso}}
\newcommand{\idtoweq}{\orgcode{id\_to\_weq}}
\newcommand{\idtomor}{\orgcode{id\_to\_edge}}
\newcommand{\proptrunc}[1]{\left\|#1\right\|}
\newcommand{\type}{\ \mathsf{type}}
\newcommand{\interp}[1]{\left\llbracket#1\right\rrbracket}
\newcommand{\stn}[1]{\mathbf{#1}}
\newcommand{\ndUniqueChoice}{\operatorname{\mathsf{unique}}}
\newcommand{\ofan}[2]{\{#2\}^{{\Rightarrow}}_{#1}}
\newcommand{\ifan}[2]{\{#2\}^{{\Leftarrow}}_{#1}}
\newcommand{\functorcat}[2]{\mathbf{Fn}[#1, #2]}
\newcommand{\rxfunctorcat}[2]{\mathbf{RxFn}[#1, #2]}
\newcommand{\natrxfunctorcat}[2]{\mathbf{RxFn}_{\mathsf{nat}}[#1, #2]}
\newcommand*{\State}[1]{\operatorname{State}_{#1}}
\newcommand{\rxfunctor}{\densedashrightarrow}
\newcommand{\nattrans}{\Rightarrow}
\newcommand{\unnattrans}{\Rightharpoonup}
\newcommand{\morpath}{\rightarrow\cdots\rightarrow}
\newcommand{\force}{\mathop{\orgcode{force}}\nolimits}
\newcommand{\delay}{\mathop{\orgcode{delay}}\nolimits}
\newcommand{\wrap}{\mathop{\orgcode{wrap}}\nolimits}
\newcommand{\unwrap}{\mathop{\orgcode{unwrap}}\nolimits}
\newcommand{\upshift}{\mathord{\Uparrow}}
\newcommand{\downshift}{\mathord{\Downarrow}}
\newcommand{\negliftO}{\mathop{\mathsf{lift}^{\ominus}}}
\newcommand{\posliftO}{\mathop{\mathsf{lift}^{\oplus}}}
\newcommand{\neglift}[1]{\negliftO{}#1}
\newcommand{\poslift}[1]{\posliftO{}#1}
\newcommand{\inneg}{\mathop{\iota^{\ominus}}}
\newcommand{\inpos}{\mathop{\iota^{\oplus}}}
\newcommand{\projneg}{\mathop{\pi^{\ominus}}}
\newcommand{\projpos}{\mathop{\pi^{\oplus}}}
\newcommand{\crossmor}{\mathop{\mathsf{cross}}}
\newcommand{\innegE}{\mathop{\iota^{\ominus}_{\EE}}}
\newcommand{\inposE}{\mathop{\iota^{\oplus}_{\EE}}}
\newcommand{\projnegE}{\mathop{\pi^{\ominus}_{\EE}}}
\newcommand{\projposE}{\mathop{\pi^{\oplus}_{\EE}}}
\newcommand{\crossmorE}{\mathop{\mathsf{cross}_{\EE}}}
\newcommand{\innegO}{\mathop{\iota^{\ominus}_{\OO}}}
\newcommand{\inposO}{\mathop{\iota^{\oplus}_{\OO}}}
\newcommand{\projnegO}{\mathop{\pi^{\ominus}_{\OO}}}
\newcommand{\projposO}{\mathop{\pi^{\oplus}_{\OO}}}
\newcommand{\crossmorO}{\mathop{\mathsf{cross}_{\OO}}}
\newcommand{\Rezk}{\mathfrak{R}}
\newcommand{\rezk}{\mathfrak{r}}
\newcommand{\NOTE}{\colorbox{orange}{NOTE}}
\newcommand{\TODO}{\colorbox{red}{TODO}}
\newcommand{\FIXME}{\colorbox{red}{FIXME}}

</script>

<p>This past week I made a great deal of progress on writing. The new
version is up on my <a href="https://notes.eutro.dev/cs/diss/output/writeup-2026-05-12.pdf">notes site</a>.  Notably, I
reorganized the <em>Unital Magmoids</em> chapter to include the definition of
categories (and hence its generalizations more closely), added most
definitions to the <em>Duploids</em> chapter, and wrote most of the
definitions for the “Adjunctions and Duploids” chapter, which includes
definitions of the oblique and envelope duploids. I have also made
some minor stylistic and notational changes.</p>

<p>I still have to write about the equalizing requirement, and how it
makes the envelope duploid univalent; and the oblique duploid, when
univalence is defined to include the polarization choice structure
(see <a href="https://github.com/eutro/UniMath/blob/859188a448a960af0014651d49b8fafaff42c228/UniMath/CategoryTheory/Nonassociative/Duploids/Oblique.v#L775"><code class="language-plaintext highlighter-rouge">is_univalent_split_oblique_duploid</code></a>). My remaining results are
then the weak equivalence of each duploid to the envelope duploid on
its shifts (<a href="https://github.com/eutro/UniMath/blob/859188a448a960af0014651d49b8fafaff42c228/UniMath/CategoryTheory/Nonassociative/Duploids/StructureTheorem.v#L316"><code class="language-plaintext highlighter-rouge">weak_dupoid_equivalence_duploid_to_envelope_on_shifts</code></a>),
my beautiful 2-categorical <span style="font-variant: small-caps;"> UniMath </span> formalization that
adjunctions are preserved by pseudofunctors
(<a href="https://github.com/eutro/UniMath/blob/859188a448a960af0014651d49b8fafaff42c228/UniMath/Bicategories/Morphisms/Examples/MapAdjunction.v#L91"><code class="language-plaintext highlighter-rouge">map_left_adjoint_axioms</code></a>), and then a <del>handwave</del> hint at the Rezk
completion which is ever too painful to actually formalize.  I also
might have a handful of theorems missing here and there, and some of
the existing ones are just tedious computations that have been evading
nicer proofs than “<em>Proof.</em> This computation is an exercise for the
reader. \(\square\)” It is the primary benefit of Rocq that I can do
like <code class="language-plaintext highlighter-rouge">induction x, y, z; reflexivity.</code> and eat through a bunch of
tedious cases…</p>

<p>Outside of technical results to write down, I have a great deal of
prose (outline, conclusions, related work, future work, etc.) and
exposition to write, and yet I am running out of space. In the next
week or so I shall have to tackle these more seriously, now that most
of the technical content is written up.</p>]]></content><author><name>Beatrice Szilvasy</name><uri>https://eutro.dev/</uri></author><category term="masters-worklog" /><summary type="html"><![CDATA[This past week I made a great deal of progress on writing. The new version is up on my notes site. Notably, I reorganized the Unital Magmoids chapter to include the definition of categories (and hence its generalizations more closely), added most definitions to the Duploids chapter, and wrote most of the definitions for the “Adjunctions and Duploids” chapter, which includes definitions of the oblique and envelope duploids. I have also made some minor stylistic and notational changes. I still have to write about the equalizing requirement, and how it makes the envelope duploid univalent; and the oblique duploid, when univalence is defined to include the polarization choice structure (see is_univalent_split_oblique_duploid). My remaining results are then the weak equivalence of each duploid to the envelope duploid on its shifts (weak_dupoid_equivalence_duploid_to_envelope_on_shifts), my beautiful 2-categorical UniMath formalization that adjunctions are preserved by pseudofunctors (map_left_adjoint_axioms), and then a handwave hint at the Rezk completion which is ever too painful to actually formalize. I also might have a handful of theorems missing here and there, and some of the existing ones are just tedious computations that have been evading nicer proofs than “Proof. This computation is an exercise for the reader. \(\square\)” It is the primary benefit of Rocq that I can do like induction x, y, z; reflexivity. and eat through a bunch of tedious cases… Outside of technical results to write down, I have a great deal of prose (outline, conclusions, related work, future work, etc.) and exposition to write, and yet I am running out of space. In the next week or so I shall have to tackle these more seriously, now that most of the technical content is written up.]]></summary></entry><entry><title type="html">May Update 1</title><link href="https://blog.eutro.dev/masters-worklog/update12/" rel="alternate" type="text/html" title="May Update 1" /><published>2026-05-05T00:00:00+00:00</published><updated>2026-05-05T00:00:00+00:00</updated><id>https://blog.eutro.dev/masters-worklog/update12</id><content type="html" xml:base="https://blog.eutro.dev/masters-worklog/update12/"><![CDATA[<script id="katex_headers" type="application/x-tex">

\newcommand{\orgcode}[1]{\textup{\texttt{#1}}}
\newcommand{\acat}[1]{\mathcal{#1}}
\newcommand{\A}{\acat{A}}
\newcommand{\B}{\acat{B}}
\newcommand{\C}{\acat{C}}
\newcommand{\D}{\acat{D}}
\newcommand{\M}{\acat{M}}
\newcommand{\PP}{\acat{P}}
\newcommand{\NN}{\acat{N}}
\newcommand{\OO}{\acat{O}}
\newcommand{\EE}{\acat{E}}
\newcommand{\GG}{\acat{G}}
\newcommand{\HH}{\acat{H}}
\newcommand{\UU}{\acat{U}}
\newcommand{\El}{\mathsf{El}}
\newcommand{\code}{\mathsf{code}}
\newcommand{\ttN}{\orgcode{N}}
\newcommand{\ttP}{\orgcode{P}}
\newcommand{\ttL}{\orgcode{L}}
\newcommand{\ttR}{\orgcode{R}}
\newcommand{\tteps}{\orgcode{ε}}
\newcommand{\tteta}{\orgcode{η}}
\newcommand{\Cl}[1]{#1_l}
\newcommand{\Ct}[1]{#1_t}
\newcommand{\Ci}[1]{#1_i}
\newcommand{\Cti}[1]{#1_{ti}}
\newcommand{\Cli}[1]{#1_{li}}
\newcommand{\Clt}[1]{#1_{lt}}
\newcommand{\Clti}[1]{#1_{lti}}
\newcommand{\Cn}[1]{#1^\ominus}
\newcommand{\Cp}[1]{#1^\oplus}
\newcommand{\Csn}[2]{#1^{\ominus#2}}
\newcommand{\Csp}[2]{#1^{\oplus#2}}
\newcommand{\Cnl}[1]{\Cn{\Cl{#1}}}
\newcommand{\Cpt}[1]{\Cp{\Ct{#1}}}
\newcommand{\Csnl}[2]{\Csn{\Cl{#1}}{#2}}
\newcommand{\Cspt}[2]{\Csp{\Ct{#1}}{#2}}
\newcommand{\Ctl}[1]{\Clt{#1}}
\newcommand{\Cnt}[1]{\Cn{#1}}
\newcommand{\Cpl}[1]{\Cp{#1}}
\newcommand{\wkcat}[1]{\mathbf{#1}}
\renewcommand{\Set}{\wkcat{Set}}
\newcommand{\Cat}{\wkcat{Cat}}
\newcommand{\UnivCat}{\wkcat{Cat}_{\univ}}
\newcommand{\Dupl}{\wkcat{Dupl}}
\newcommand{\UnivDupl}{\wkcat{Dupl}_{\univ}}
\newcommand{\WAdj}{\texttt{Adj}}
\newcommand{\coll}{\wkcat{coll}}
\newcommand{\Terminal}{\wkcat{1}}
\newcommand{\Obl}[1]{\OO[#1]}
\newcommand{\Env}[1]{\EE[#1]}
\DeclareMathOperator{\ob}{\mathsf{ob}}
\DeclareMathOperator{\mor}{\mathsf{mor}}
\DeclareMathOperator{\vertex}{\mathsf{vertex}}
\newcommand{\op}{{\mathsf{op}}}
\newcommand{\eq}{{\mathsf{eq}}}
\newcommand{\id}{\mathsf{id}}
\newcommand{\Id}{\mathsf{Id}}
\newcommand{\rx}{\mathsf{rx}}
\newcommand{\yo}{\mathsf{y}}
\newcommand{\univ}{\mathsf{univ}}
\newcommand{\acomp}{\circ}
\newcommand{\dcomp}{\fatsemi}
\newcommand{\syndcomp}{\mathop{;}}
\newcommand{\bindersep}{\mathpunct{.}}
\newcommand{\morsof}[3]{{#1}\llbracket{#2},{#3}\rrbracket}
\newcommand{\defeq}{\overset{\mathrm{\textup{def}}}{=}}
\newcommand{\defequiv}{\overset{\mathrm{\textup{def}}}{\equiv}}
\newcommand{\iscontr}{\orgcode{iscontr}}
\newcommand{\isaprop}{\orgcode{isaprop}}
\newcommand{\isaset}{\orgcode{isaset}}
\newcommand{\isweq}{\orgcode{isweq}}
\newcommand{\refl}{\mathsf{refl}}
\newcommand{\fib}[1]{\mathsf{wfib}_{#1}}
\newcommand{\cmdcode}[1]{\orgcode{#1}}
\newcommand{\punctcolor}[1]{\textcolor[rgb]{0.20,0.20,0.20}{#1}}
\newcommand{\print}{\cmdcode{print}}
\newcommand{\ttlet}{\cmdcode{let}\ }
\newcommand{\ttin}{\mathrel{\cmdcode{in}}}
\newcommand{\ttseq}{\orgcode{;}\ }
\newcommand{\ttbe}{\mathrel{\cmdcode{be}}}
\newcommand{\ttLP}{\Big(}
\newcommand{\ttRP}{\Big)}
\newcommand{\bool}{\orgcode{bool}}
\newcommand{\unit}{\orgcode{unit}}
\newcommand{\ttempty}{\orgcode{empty}}
\newcommand{\nat}{\mathbb{N}}
\newcommand{\hSet}{\orgcode{hSet}}
\newcommand{\hProp}{\orgcode{hProp}}
\newcommand{\idtoiso}{\orgcode{id\_to\_iso}}
\newcommand{\idtoweq}{\orgcode{id\_to\_weq}}
\newcommand{\idtomor}{\orgcode{id\_to\_edge}}
\newcommand{\proptrunc}[1]{\left\|#1\right\|}
\newcommand{\type}{\ \mathsf{type}}
\newcommand{\interp}[1]{\left\llbracket#1\right\rrbracket}
\newcommand{\stn}[1]{\mathbf{#1}}
\newcommand{\ndUniqueChoice}{\operatorname{\mathsf{unique}}}
\newcommand{\ofan}[2]{\{#2\}^{{\Rightarrow}}_{#1}}
\newcommand{\ifan}[2]{\{#2\}^{{\Leftarrow}}_{#1}}
\newcommand{\functorcat}[2]{\mathbf{Fn}[#1, #2]}
\newcommand{\rxfunctorcat}[2]{\mathbf{RxFn}[#1, #2]}
\newcommand{\natrxfunctorcat}[2]{\mathbf{RxFn}_{\mathsf{nat}}[#1, #2]}
\newcommand*{\State}[1]{\operatorname{State}_{#1}}
\newcommand{\rxfunctor}{\densedashrightarrow}
\newcommand{\nattrans}{\Rightarrow}
\newcommand{\unnattrans}{\Rightharpoonup}
\newcommand{\morpath}{\rightarrow\cdots\rightarrow}
\newcommand{\force}{\mathop{\orgcode{force}}\nolimits}
\newcommand{\delay}{\mathop{\orgcode{delay}}\nolimits}
\newcommand{\wrap}{\mathop{\orgcode{wrap}}\nolimits}
\newcommand{\unwrap}{\mathop{\orgcode{unwrap}}\nolimits}
\newcommand{\upshift}{\mathord{\Uparrow}}
\newcommand{\downshift}{\mathord{\Downarrow}}
\newcommand{\negliftO}{\mathop{\mathsf{lift}^{\ominus}}}
\newcommand{\posliftO}{\mathop{\mathsf{lift}^{\oplus}}}
\newcommand{\neglift}[1]{\negliftO{}#1}
\newcommand{\poslift}[1]{\posliftO{}#1}
\newcommand{\inneg}{\mathop{\iota^{\ominus}}}
\newcommand{\inpos}{\mathop{\iota^{\oplus}}}
\newcommand{\projneg}{\mathop{\pi^{\ominus}}}
\newcommand{\projpos}{\mathop{\pi^{\oplus}}}
\newcommand{\crossmor}{\mathop{\mathsf{cross}}}
\newcommand{\innegE}{\mathop{\iota^{\ominus}_{\EE}}}
\newcommand{\inposE}{\mathop{\iota^{\oplus}_{\EE}}}
\newcommand{\projnegE}{\mathop{\pi^{\ominus}_{\EE}}}
\newcommand{\projposE}{\mathop{\pi^{\oplus}_{\EE}}}
\newcommand{\crossmorE}{\mathop{\mathsf{cross}_{\EE}}}
\newcommand{\innegO}{\mathop{\iota^{\ominus}_{\OO}}}
\newcommand{\inposO}{\mathop{\iota^{\oplus}_{\OO}}}
\newcommand{\projnegO}{\mathop{\pi^{\ominus}_{\OO}}}
\newcommand{\projposO}{\mathop{\pi^{\oplus}_{\OO}}}
\newcommand{\crossmorO}{\mathop{\mathsf{cross}_{\OO}}}
\newcommand{\Rezk}{\mathfrak{R}}
\newcommand{\rezk}{\mathfrak{r}}
\newcommand{\NOTE}{\colorbox{orange}{NOTE}}
\newcommand{\TODO}{\colorbox{red}{TODO}}
\newcommand{\FIXME}{\colorbox{red}{FIXME}}

</script>

<p>I have written the bulk of the background chapter of my dissertation,
these past few days spent writing the section titled “Mixed Evaluation
Order.” <!--more--> I went back-and-forth on whether to put
this section before or after the other two sections (currently titled
“Preliminary Type Theory” and “Univalent Categories and Reflexive
Graphs,” despite a stark lack of Reflexive Graphs in the latter…). I
have decided to put it first, because it flows on nicer from the
introduction and motivation, and means we can forget about the syntax
of these non-associative languages as soon as we have mentioned them.</p>

<p>I have written all the sections of the background and introduction,
but have not yet had the opportunity to rewrite them to fit a
completely coherent narrative. I believe they are legible, mostly
stand on their own (except the new section which I feel is a bit
weak), and cover most of the background I think I should need.
The version at time of writing may be read <a href="https://notes.eutro.dev/cs/diss/output/writeup-2026-05-05.pdf#chapter.1">here</a>. I still include many
notes and TODOs, if you can forgive me.</p>

<h1 id="yoneda-and-univalence-of-unital-mamoids">Yoneda and Univalence of Unital Mamoids</h1>

<p>I have finally found some use of the barely salvageable Yoneda lemma
which so horribly fails for unital magmoids. In particular, I can use
this to show that linear-and-thunkable-and-intermediate isomorphisms
correspond to the indiscernibilities derived mechanically by Ahrens et
al. <a href="#citeproc_bib_item_1">[1]</a>. I did this because I was dreading writing down
the univalence principle for unital magmoids without being
sufficiently reassured that it is the correct notion.</p>

<p>Part of the Yoneda lemma for categories is that the
Yoneda/post-composition functor \(\yo(a : \C) \defequiv
\morsof\C{-}{a} : [\C^\op, \Set]\) is fully-faithful. As a
consequence, morphisms \(a \to b\) are in correspondence with natural
transformations \(\morsof\C{-}{a} \Rightarrow \morsof\C{-}{b}\), and
isomorphisms \(a \cong b\) are in correspondence with natural
isomorphisms \(\morsof\C{-}{a} \cong \morsof\C{-}{b}\).</p>

<p>Unfortunately, in a unital magmoid most of this fails, but we can
scrape back some useful corollaries even in the absence of a full
(i.e. nicely stated) Yoneda lemma.</p>

<p><strong>Lemma 1.</strong> In a unital magmoid \(\M\), the morphism \(f : \morsof\M{a}{b}\) is
linear if and only if the post-composition transformation \((g \mapsto
g \dcomp f) : \morsof\M{-}{a} \to \morsof\M{-}{b}\) between reflexive
graph functors \(\morsof\M{-}{a} : \M^\op \to \Set\) is natural.</p>

<p><em>Proof.</em> This is amounts to unfolding the definition of naturality.</p>

<div class="text-right" style="margin-top:-1.5em;margin-bottom:1em">\(\square\)</div>

<p><strong>Lemma 2.</strong> The Yoneda/post-composition functor restricted to linear morphisms
\(\Cl\yo(a : \Cl\M) \defequiv \morsof\M{-}{a} : [\M^\op, \Set]\):</p>

<ul>
  <li>Preserves composition (i.e. is a functor of unital magmoids, not
just reflexive graphs).</li>
  <li>Has as codomain the category \([\M^\op, \Set]\) of reflexive graph
functors \(\M^\op \to \Set\) and natural transformations.</li>
  <li>Is fully-faithful.</li>
</ul>

<p><em>Proof.</em> Following your nose (<a href="https://github.com/eutro/UniMath/blob/154bff64487c28836d817c7718ea7b713d454e2e/UniMath/CategoryTheory/Nonassociative/UnitalMagmoids/Yoneda.v#L645"><code class="language-plaintext highlighter-rouge">um_yoneda_linear_fully_faithful</code></a>).</p>

<div class="text-right" style="margin-top:-1.5em;margin-bottom:1em">\(\square\)</div>

<p><strong>Remark 3.</strong> This is a little bit stronger than just applying Yoneda’s lemma to the
linear subcategory \(\Cl\M\), because only one of the hom-sets in the
entire equation is forced to be linear.</p>

<p><strong>Corollary 4.</strong> Linear isomorphisms \(a \Cl\cong b\) in \(\M\) are equivalently
natural isomorphisms \(\morsof\M{-}{a} \cong \morsof\M{-}{b}\).</p>

<p><em>Proof.</em> This follows from usual properties of fully faithful functors.</p>

<div class="text-right" style="margin-top:-1.5em;margin-bottom:1em">\(\square\)</div>

<p><strong>Corollary 5.</strong> Thunkable isomorphisms \(a \Ct\cong b\) in \(\M\) are equivalently
natural isomorphisms \(\morsof\M{a}{-} \cong \morsof\M{b}{-}\).</p>

<p><em>Proof.</em> This is formally dual to the previous statement.</p>

<div class="text-right" style="margin-top:-1.5em;margin-bottom:1em">\(\square\)</div>

<p><strong>Theorem 6.</strong> Linear-and-thunkable-and-intermediate isomorphisms \(a \Clti\cong b\)
in a unital magmoid \(\M\) correspond to indistinguishabilities \(a
\asymp b\) obtained by following the procedure of Ahrens et
al. <a href="#citeproc_bib_item_1">[1]</a>.</p>

<p><em>Proof.</em> Our diagram signature is exactly the same as categories, but we do not
impose the associativity axiom. Therefore most of the extended example
in chapter 3 <a href="#citeproc_bib_item_1">[1]</a> applies. One can verify that the data
and properties (3.13–3.26) of indiscernibilities in section 3.4
correspond to a linear-and-thunkable-and-intermediate isomorphism. The
data of an indiscernibility \(a \asymp b\) includes a natural
isomorphism in the codomain (3.13, 3.16) \(\morsof\M{-}{a} \cong
\morsof\M{-}{b}\), hence a linear isomorphism \(p : a \Cl\cong b\);
and a natural isomorphism in the domain (3.14, 3.18) \(\morsof\M{a}{-}
\cong \morsof\M{b}{-}\), hence a thunkable isomorphism \(q : a
\Ct\cong b\). These are forced to be the same by the equation \((f
\dcomp p) \dcomp (q^{-1} \dcomp g) = f \dcomp g\) for all \(x
\xrightarrow{f} a \xrightarrow{g} z\) (3.17), and the same property
also forces the isomorphism to be intermediate. Thus we have \(p = q : a
\Clti\cong b\). The last bit of data is an identity-preserving
isomorphism (3.15, 3.23) \(\morsof\M{a}{a} \cong \morsof\M{b}{b}\)
which is forced to be \(f \mapsto p^{-1} \dcomp f \dcomp p\)
(3.19–3.21). The remaining properties (3.22–3.23, 3.24–3.26) are
automatic.</p>

<div class="text-right" style="margin-top:-1.5em;margin-bottom:1em">\(\square\)</div>

<p>This justifies the following definition.</p>

<p><strong>Definition 7.</strong> A unital magmoid \(\M\) is univalent when the
linear-and-thunkable-and-intermediate subcategory \(\Clti\M\) is
univalent.</p>

<p>We already know that this coincides with univalence for
preduploids 🙂.</p>

<h1 id="references">References</h1>

<style>.csl-left-margin{float: left; padding-right: 0em;}
 .csl-right-inline{margin: 0 0 0 1em;}</style>
<div class="csl-bib-body">
  <div class="csl-entry"><a id="citeproc_bib_item_1"></a>
    <div class="csl-left-margin">[1]</div><div class="csl-right-inline">B. Ahrens, P. R. North, M. Shulman, and D. Tsementzis, “The univalence principle.” 2022 [Online]. Available: <a href="https://arxiv.org/abs/2102.06275">https://arxiv.org/abs/2102.06275</a></div>
  </div>
</div>]]></content><author><name>Beatrice Szilvasy</name><uri>https://eutro.dev/</uri></author><category term="masters-worklog" /><summary type="html"><![CDATA[I have written the bulk of the background chapter of my dissertation, these past few days spent writing the section titled “Mixed Evaluation Order.”]]></summary></entry><entry><title type="html">April Update 2</title><link href="https://blog.eutro.dev/masters-worklog/update11/" rel="alternate" type="text/html" title="April Update 2" /><published>2026-04-26T00:00:00+00:00</published><updated>2026-04-26T00:00:00+00:00</updated><id>https://blog.eutro.dev/masters-worklog/update11</id><content type="html" xml:base="https://blog.eutro.dev/masters-worklog/update11/"><![CDATA[<script id="katex_headers" type="application/x-tex">

\newcommand{\orgcode}[1]{\textup{\texttt{#1}}}
\newcommand{\acat}[1]{\mathcal{#1}}
\newcommand{\A}{\acat{A}}
\newcommand{\B}{\acat{B}}
\newcommand{\C}{\acat{C}}
\newcommand{\D}{\acat{D}}
\newcommand{\M}{\acat{M}}
\newcommand{\PP}{\acat{P}}
\newcommand{\NN}{\acat{N}}
\newcommand{\OO}{\acat{O}}
\newcommand{\EE}{\acat{E}}
\newcommand{\GG}{\acat{G}}
\newcommand{\HH}{\acat{H}}
\newcommand{\UU}{\acat{U}}
\newcommand{\El}{\mathsf{El}}
\newcommand{\code}{\mathsf{code}}
\newcommand{\ttN}{\orgcode{N}}
\newcommand{\ttP}{\orgcode{P}}
\newcommand{\ttL}{\orgcode{L}}
\newcommand{\ttR}{\orgcode{R}}
\newcommand{\tteps}{\orgcode{ε}}
\newcommand{\tteta}{\orgcode{η}}
\newcommand{\Cl}[1]{#1_l}
\newcommand{\Ct}[1]{#1_t}
\newcommand{\Ci}[1]{#1_i}
\newcommand{\Cti}[1]{#1_{ti}}
\newcommand{\Cli}[1]{#1_{li}}
\newcommand{\Clt}[1]{#1_{lt}}
\newcommand{\Clti}[1]{#1_{lti}}
\newcommand{\Cn}[1]{#1^\ominus}
\newcommand{\Cp}[1]{#1^\oplus}
\newcommand{\Csn}[2]{#1^{\ominus#2}}
\newcommand{\Csp}[2]{#1^{\oplus#2}}
\newcommand{\Cnl}[1]{\Cn{\Cl{#1}}}
\newcommand{\Cpt}[1]{\Cp{\Ct{#1}}}
\newcommand{\Csnl}[2]{\Csn{\Cl{#1}}{#2}}
\newcommand{\Cspt}[2]{\Csp{\Ct{#1}}{#2}}
\newcommand{\Ctl}[1]{\Clt{#1}}
\newcommand{\Cnt}[1]{\Cn{#1}}
\newcommand{\Cpl}[1]{\Cp{#1}}
\newcommand{\wkcat}[1]{\mathbf{#1}}
\renewcommand{\Set}{\wkcat{Set}}
\newcommand{\Cat}{\wkcat{Cat}}
\newcommand{\UnivCat}{\wkcat{Cat}_{\univ}}
\newcommand{\Dupl}{\wkcat{Dupl}}
\newcommand{\UnivDupl}{\wkcat{Dupl}_{\univ}}
\newcommand{\WAdj}{\texttt{Adj}}
\newcommand{\coll}{\wkcat{coll}}
\newcommand{\Terminal}{\wkcat{1}}
\newcommand{\Obl}[1]{\OO[#1]}
\newcommand{\Env}[1]{\EE[#1]}
\DeclareMathOperator{\ob}{\mathsf{ob}}
\DeclareMathOperator{\mor}{\mathsf{mor}}
\DeclareMathOperator{\vertex}{\mathsf{vertex}}
\newcommand{\op}{{\mathsf{op}}}
\newcommand{\eq}{{\mathsf{eq}}}
\newcommand{\id}{\mathsf{id}}
\newcommand{\Id}{\mathsf{Id}}
\newcommand{\rx}{\mathsf{rx}}
\newcommand{\yo}{\mathsf{y}}
\newcommand{\univ}{\mathsf{univ}}
\newcommand{\acomp}{\circ}
\newcommand{\dcomp}{\fatsemi}
\newcommand{\syndcomp}{\mathop{;}}
\newcommand{\bindersep}{\mathpunct{.}}
\newcommand{\morsof}[3]{{#1}\llbracket{#2},{#3}\rrbracket}
\newcommand{\defeq}{\overset{\mathrm{\textup{def}}}{=}}
\newcommand{\defequiv}{\overset{\mathrm{\textup{def}}}{\equiv}}
\newcommand{\iscontr}{\orgcode{iscontr}}
\newcommand{\isaprop}{\orgcode{isaprop}}
\newcommand{\isaset}{\orgcode{isaset}}
\newcommand{\isweq}{\orgcode{isweq}}
\newcommand{\refl}{\mathsf{refl}}
\newcommand{\fib}[1]{\mathsf{wfib}_{#1}}
\newcommand{\cmdcode}[1]{\orgcode{#1}}
\newcommand{\punctcolor}[1]{\textcolor[rgb]{0.20,0.20,0.20}{#1}}
\newcommand{\print}{\cmdcode{print}}
\newcommand{\ttlet}{\cmdcode{let}\ }
\newcommand{\ttin}{\mathrel{\cmdcode{in}}}
\newcommand{\ttseq}{\orgcode{;}\ }
\newcommand{\ttbe}{\mathrel{\cmdcode{be}}}
\newcommand{\ttLP}{\Big(}
\newcommand{\ttRP}{\Big)}
\newcommand{\bool}{\orgcode{bool}}
\newcommand{\unit}{\orgcode{unit}}
\newcommand{\ttempty}{\orgcode{empty}}
\newcommand{\nat}{\mathbb{N}}
\newcommand{\hSet}{\orgcode{hSet}}
\newcommand{\hProp}{\orgcode{hProp}}
\newcommand{\idtoiso}{\orgcode{id\_to\_iso}}
\newcommand{\idtoweq}{\orgcode{id\_to\_weq}}
\newcommand{\idtomor}{\orgcode{id\_to\_edge}}
\newcommand{\proptrunc}[1]{\left\|#1\right\|}
\newcommand{\type}{\ \mathsf{type}}
\newcommand{\interp}[1]{\left\llbracket#1\right\rrbracket}
\newcommand{\stn}[1]{\mathbf{#1}}
\newcommand{\ndUniqueChoice}{\operatorname{\mathsf{unique}}}
\newcommand{\ofan}[2]{\{#2\}^{{\Rightarrow}}_{#1}}
\newcommand{\ifan}[2]{\{#2\}^{{\Leftarrow}}_{#1}}
\newcommand{\functorcat}[2]{\mathbf{Fn}[#1, #2]}
\newcommand{\rxfunctorcat}[2]{\mathbf{RxFn}[#1, #2]}
\newcommand{\natrxfunctorcat}[2]{\mathbf{RxFn}_{\mathsf{nat}}[#1, #2]}
\newcommand*{\State}[1]{\operatorname{State}_{#1}}
\newcommand{\rxfunctor}{\densedashrightarrow}
\newcommand{\nattrans}{\Rightarrow}
\newcommand{\unnattrans}{\Rightharpoonup}
\newcommand{\morpath}{\rightarrow\cdots\rightarrow}
\newcommand{\force}{\mathop{\orgcode{force}}\nolimits}
\newcommand{\delay}{\mathop{\orgcode{delay}}\nolimits}
\newcommand{\wrap}{\mathop{\orgcode{wrap}}\nolimits}
\newcommand{\unwrap}{\mathop{\orgcode{unwrap}}\nolimits}
\newcommand{\upshift}{\mathord{\Uparrow}}
\newcommand{\downshift}{\mathord{\Downarrow}}
\newcommand{\negliftO}{\mathop{\mathsf{lift}^{\ominus}}}
\newcommand{\posliftO}{\mathop{\mathsf{lift}^{\oplus}}}
\newcommand{\neglift}[1]{\negliftO{}#1}
\newcommand{\poslift}[1]{\posliftO{}#1}
\newcommand{\inneg}{\mathop{\iota^{\ominus}}}
\newcommand{\inpos}{\mathop{\iota^{\oplus}}}
\newcommand{\projneg}{\mathop{\pi^{\ominus}}}
\newcommand{\projpos}{\mathop{\pi^{\oplus}}}
\newcommand{\crossmor}{\mathop{\mathsf{cross}}}
\newcommand{\innegE}{\mathop{\iota^{\ominus}_{\EE}}}
\newcommand{\inposE}{\mathop{\iota^{\oplus}_{\EE}}}
\newcommand{\projnegE}{\mathop{\pi^{\ominus}_{\EE}}}
\newcommand{\projposE}{\mathop{\pi^{\oplus}_{\EE}}}
\newcommand{\crossmorE}{\mathop{\mathsf{cross}_{\EE}}}
\newcommand{\innegO}{\mathop{\iota^{\ominus}_{\OO}}}
\newcommand{\inposO}{\mathop{\iota^{\oplus}_{\OO}}}
\newcommand{\projnegO}{\mathop{\pi^{\ominus}_{\OO}}}
\newcommand{\projposO}{\mathop{\pi^{\oplus}_{\OO}}}
\newcommand{\crossmorO}{\mathop{\mathsf{cross}_{\OO}}}
\newcommand{\Rezk}{\mathfrak{R}}
\newcommand{\rezk}{\mathfrak{r}}
\newcommand{\NOTE}{\colorbox{orange}{NOTE}}
\newcommand{\TODO}{\colorbox{red}{TODO}}
\newcommand{\FIXME}{\colorbox{red}{FIXME}}

</script>

<p>I have continued to write this week. I do not have much to say on
this, except that I have now made it so that I can keep multiple dated
versions of the rendered writeup available at
<a href="https://notes.eutro.dev/cs/diss/output/">https://notes.eutro.dev/cs/diss/output/</a>.<sup><a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup> <!--more-->
As well as writing, it seems inevitable that I will continue to ponder
the outstanding mathematical problems. Fortunately, working with
bicategories in <span style="font-variant: small-caps;"> UniMath </span> is incredibly painful, so that keeps me
away for the most part. My most significant achievement this week is
that I have constructed a unital magmoid with a linear-and-thunkable
isomorphism which is not intermediate.</p>

<h1 id="a-linear-and-thunkable-isomorphism-which-is-not-intermediate">A Linear-and-Thunkable Isomorphism which is Not Intermediate</h1>

<p>One of my early concerns was this: what is a suitable notion of an
“indistinguishability” in a unital magmoid? This would be a type of
morphism \(p : a \cong_* b\) for which “indistinguishability
induction” (handling only \(b \equiv a\) and \(p \equiv \id_a\)) is
valid. In other words, a type for which an equivalence \((a = b) \cong
(a \cong_* b)\) (taking \(\refl_a\) to \(\id_a\)) could feasibly
exist. This is the same as asking, “what morphisms in a unital magmoid
correspond to identifications when we consider a <em>univalent</em> unital
magmoid?”</p>

<p>As is the case for isomorphisms in categories, an indistinguishability
\(p : a \cong_* b\) in a unital magmoid must have an inverse
\(p^{-1} : b \cong_* a\). However, this is not sufficient in a unital
magmoid: we need to place further associativity conditions on \(p\)
for it to be able to behave like an indistinguishability. That is, to
have all the properties of \(\id_a\).</p>

<p>In a duploid, we have seen that being a linear-and-thunkable
isomorphism seems to be the correct notion of an
indistinguishability. We have also seen that all linear-and-thunkable
isomorphisms in a preduploid are intermediate (see the definition
below). However, this does not appear to be true in a unital magmoid
in general, and I have been trying to pin down a counterexample. I
present one today.</p>

<p>The terms “linear” and “thunkable” are the names Guillaume gave them,
and “intermediate” is a name I made up. The following is a definition
from my <a href="https://notes.eutro.dev/cs/diss/output/writeup.pdf">writeup</a>. Note that I have taken to using \(f \dcomp g\) to
denote composition in diagrammatic order, rather than taking \(f \cdot
g\) from <span style="font-variant: small-caps;"> UniMath </span>.</p>

<p><strong>Definition 1.</strong> We say that a path of morphisms</p>

<p>\begin{equation}
a_0 \xrightarrow{f_1} a_1
\xrightarrow{f_2} a_2 \rightarrow \cdots \rightarrow a_{n-1}
\xrightarrow{f_n} a_n
\end{equation}</p>

<p>in a unital magmoid <em>associates</em> when all ways
of parenthesising their composite \(f_1 \dcomp f_2 \dcomp \cdots
\dcomp f_n\) are equal. In the simplest case, a triple of morphisms
\(a \xrightarrow{f} b \xrightarrow{g} c \xrightarrow{h} d\) associates
if and only if we have \(f \dcomp (g \dcomp h) = (f \dcomp g) \dcomp
h\).</p>

<p>We say that:</p>

<ul>
  <li>\(f\) is <em>thunkable</em> when all triples \((f,g,h)\) associate.</li>
  <li>\(h\) is <em>linear</em> when all triples \((f,g,h)\) associate.</li>
  <li>\(g\) is <em>intermediate</em> when all triples \((f,g,h)\) associate.</li>
  <li>\(b\) is (<em>semantically</em>) <em>negative</em> when all
morphisms into \(b\) are thunkable.</li>
  <li>\(c\) is (<em>semantically</em>) <em>positive</em>
when all morphisms out of \(c\) are linear.</li>
</ul>

<p><strong>Notation 2.</strong> Let \(a, b : \M\) be objects in a unital magmoid \(\M\). We may write
the subscripts from <a href="/masters-worklog/update3/#subcategories-of-a-unital-magmoid">the Subcategories of a Unital Magmoid</a> onto the
binary operators \(a \rightarrow b\) (morphisms) or \(a \cong b\)
(isomorphisms) to denote that the morphism or isomorphism resides in
the corresponding subcategory of the unital magmoid. For example, \(a
\Cl\rightarrow b\) denotes a linear morphism; \(a \Clt\cong b\)
denotes a <em>linear-and-thunkable isomorphism</em>: an isomorphism which is
linear-and-thunkable, and has a linear-and-thunkable inverse.</p>

<p>The question I wanted to answer is this:</p>

<p><strong>Proposition 3.</strong> Let \(\M\) be a unital magmoid. Could there be a linear-and-thunkable
isomorphism \(a \Clt\cong b\) in \(\M\) which is not intermediate?</p>

<p>I can answer this in the affirmative today with a small
counterexample.</p>

<p><strong>Definition 4.</strong> There is a unital magmoid \(\wkcat{Lini}\)<sup><a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink">2</a></sup> generated by four
objects: \(a,b,c,d:\wkcat{Lini}\) and the morphisms \[\begin{gathered}
a \xrightarrow{f} b \xrightarrow{g} c \\ b \Clt{\xrightarrow{p}} d
\Clt{\xrightarrow{q}} b \end{gathered}\] such that \(p \dcomp q =
\id_b\) and \(q \dcomp p = \id_a\). In other words, \(p\) and \(q\)
form a linear-and-thunkable isomorphism \(p : b \Clt\cong d\) such
that \(p^{-1} = q\). This is depicted in the diagram below.</p>

<iframe class="quiver-embed" src="https://q.uiver.app/#q=WzAsNCxbMCwwLCJhIl0sWzEsMCwiYiJdLFsyLDAsImMiXSxbMSwxLCJkIl0sWzAsMSwiZiJdLFsxLDIsImciXSxbMSwzLCJwIiwyLHsiY3VydmUiOjF9XSxbMywxLCJxIiwyLHsiY3VydmUiOjF9XV0=&amp;embed" width="432" height="304" style="border-radius: 8px; border: none;"></iframe>

<p><strong>Theorem 5.</strong> The unital magmoid \(\wkcat{Lini}\) provides a counterexample to the
above proposition. In particular, \(p : b \Clt\cong d\) is not intermediate.</p>

<p><em>Proof.</em> The unital magmoid \(\wkcat{Lini}\) can be described explicitly in the
following way. The type of objects \(\ob\wkcat{Lini}\) is, of course,
the 4-element finite type \(\llbracket4\rrbracket\), whose elements I
will write \(a,b,c,d:\wkcat{Lini}\). The hom-sets
\(\morsof{\wkcat{Lini}}{x}{y}\) are given by the following table:</p>

<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">


<colgroup>
<col class="org-left" />

<col class="org-left" />

<col class="org-left" />

<col class="org-left" />

<col class="org-left" />

<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">\(\morsof{\wkcat{Lini}}{x}{y}\)</th>
<th scope="col" class="org-left">\(y=\)</th>
<th scope="col" class="org-left">\(a\)</th>
<th scope="col" class="org-left">\(b\)</th>
<th scope="col" class="org-left">\(c\)</th>
<th scope="col" class="org-left">\(d\)</th>
</tr>


<tr>
<th scope="col" class="org-left">\(x=\)</th>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-left">&#xa0;</th>
</tr>
</thead>

<tbody>
<tr>
<td class="org-left">\(a\)</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">\(\unit\)</td>
<td class="org-left">\(\unit\)</td>
<td class="org-left">\(\bool\)</td>
<td class="org-left">\(\unit\)</td>
</tr>


<tr>
<td class="org-left">\(b\)</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">\(\ttempty\)</td>
<td class="org-left">\(\unit\)</td>
<td class="org-left">\(\unit\)</td>
<td class="org-left">\(\unit\)</td>
</tr>


<tr>
<td class="org-left">\(c\)</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">\(\ttempty\)</td>
<td class="org-left">\(\ttempty\)</td>
<td class="org-left">\(\unit\)</td>
<td class="org-left">\(\ttempty\)</td>
</tr>


<tr>
<td class="org-left">\(d\)</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">\(\ttempty\)</td>
<td class="org-left">\(\unit\)</td>
<td class="org-left">\(\unit\)</td>
<td class="org-left">\(\unit\)</td>
</tr>
</tbody>
</table>

<p>This is rather opaque. We may instead write the elements more
informatively as formal composites generated by \(f,g,p\) and \(q\).</p>

<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">


<colgroup>
<col class="org-left" />

<col class="org-left" />

<col class="org-left" />

<col class="org-left" />

<col class="org-left" />

<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">\(\morsof{\wkcat{Lini}}{x}{y}\)</th>
<th scope="col" class="org-left">\(y=\)</th>
<th scope="col" class="org-left">\(a\)</th>
<th scope="col" class="org-left">\(b\)</th>
<th scope="col" class="org-left">\(c\)</th>
<th scope="col" class="org-left">\(d\)</th>
</tr>


<tr>
<th scope="col" class="org-left">\(x=\)</th>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-left">&#xa0;</th>
</tr>
</thead>

<tbody>
<tr>
<td class="org-left">\(a\)</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">\(\{\id_a\}\)</td>
<td class="org-left">\(\{f\}\)</td>
<td class="org-left">\(\{[f\dcomp g], [[f\dcomp p]\dcomp[q\dcomp g]]\}\)</td>
<td class="org-left">\(\{[f\dcomp p]\}\)</td>
</tr>


<tr>
<td class="org-left">\(b\)</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">\(\emptyset\)</td>
<td class="org-left">\(\{\id_b\}\)</td>
<td class="org-left">\(\{g\}\)</td>
<td class="org-left">\(\{p\}\)</td>
</tr>


<tr>
<td class="org-left">\(c\)</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">\(\emptyset\)</td>
<td class="org-left">\(\emptyset\)</td>
<td class="org-left">\(\{\id_c\}\)</td>
<td class="org-left">\(\emptyset\)</td>
</tr>


<tr>
<td class="org-left">\(d\)</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">\(\emptyset\)</td>
<td class="org-left">\(\{q\}\)</td>
<td class="org-left">\(\{[q \dcomp g]\}\)</td>
<td class="org-left">\(\{\id_d\}\)</td>
</tr>
</tbody>
</table>

<p>The element \([f\dcomp g] : \morsof{\wkcat{Lini}}{a}{c}\) is just
notation for, say \(\orgcode{false} : \bool\). Composition in
\(\wkcat{Lini}\) is defined so that these formal composites do in fact
denote the composition of the respective morphisms. In particular, we
set \[\begin{aligned}
f \dcomp g &amp;\defequiv [f \dcomp g] : \morsof{\wkcat{Lini}}{a}{c}
\end{aligned}\] and \[[f \dcomp p] \dcomp
[q\dcomp g] \defequiv [[f \dcomp p] \dcomp [q\dcomp g]] :
\morsof{\wkcat{Lini}}{a}{c}\]
for the two non-\(\id\) cases which compose into \(\morsof{\wkcat{Lini}}{a}{c}\).
All other composites are either vacuous or defined to be the single
element \(\orgcode{tt} : \unit\), by whichever name it is given.</p>

<p>We may reassure ourselves that this does in fact construct
\(\wkcat{Lini}\) as described initially, in that the morphisms of this
construction are no more and no less than those generated by \(f\),
\(g\) and linear-and-thunkable inverses \(p\) and \(q\). In most
cases, it is easy to identify the composite in this construction with
the corresponding formal-composite-of-morphisms-modulo-laws-and-assumptions.
For example, we hypothesized that \(p\) and \(q\) are inverses in
\(\wkcat{Lin}\), and we can compute that we have
\[\begin{aligned}
p \dcomp q &amp;\equiv \id_b
\\ q \dcomp p &amp;\equiv \id_d\,.
\end{aligned}\]
More interestingly, we have
\[\begin{aligned}
[f \dcomp p] \dcomp q &amp;\equiv f
\\ p \dcomp [q \dcomp g] &amp;\equiv g\,.
\end{aligned}\]
This too is as it should be for a construction of \(\wkcat{Lini}\). We
<em>must</em> have \[(f \dcomp p) \dcomp q = f \dcomp (p \dcomp q)\] for
\(q\) to be linear, and we must have \[f \dcomp (p \dcomp q) = f\] for
\(p\) and \(q\) to be inverses. The case with \(g\) is analogous.</p>

<p>It is easy to verify that \(p\) and \(q\) are linear-and-thunkable. To
do so,<sup><a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink">3</a></sup> observe that for all \(x : \wkcat{Lini}\) we have that
\(\morsof{\wkcat{Lini}}{b}{x}\) and \(\morsof{\wkcat{Lini}}{x}{d}\)
are propositional (they are each either \(\ttempty\) or \(\unit\)).
Thus all composites starting with \(p\) are equal, all composites
ending with \(p\) are equal, and likewise for \(q\).  Given this, we
can see that \(p\) is a linear-and-thunkable isomorphism \(p : b
\Clt\cong d\). Again, this is as it should be for a construction of
\(\wkcat{Lini}\).</p>

<p>The linear-and-thunkable isomorphism \(p : b \Clt\cong d\) is not
intermediate, however. This may be verified by the counterexample of
the triple \[a \xrightarrow{f} b \xrightarrow{p} d \xrightarrow{[q
\dcomp g]} c\] which does not associate. We can compute \[(f \dcomp p)
\dcomp [q \dcomp g] \equiv [f \dcomp p] \dcomp [q \dcomp g] \equiv [[f
\dcomp p] \dcomp [q \dcomp g]]\,,\] but \[f \dcomp (p \dcomp [q \dcomp
g]) \equiv f \dcomp g \equiv [f \dcomp g]\,.\] These are the two
distinct elements of \(\morsof{\wkcat{Lini}}{a}{c} \equiv
\bool\). Thus the triple does not associate, and so \(p : b \Clt\cong
d\) is not intermediate.</p>

<div class="text-right" style="margin-top:-1.5em;margin-bottom:1em">\(\square\)</div>

<h1 id="footnotes">Footnotes</h1>

<p><sup><a id="fn.1" href="#fnr.1">1</a></sup> The name I use for myself on <a href="https://notes.eutro.dev">https://notes.eutro.dev</a> is
pronounced like the final syllable of my given name, but stressed.</p>

<p><sup><a id="fn.2" href="#fnr.2">2</a></sup> An initialism of “Linear-and-thunkable Isomorphisms are Not (in
general) Intermediate”</p>

<p><sup><a id="fn.3" href="#fnr.3">3</a></sup> Sixty-four cases of computation are the easier solution on a
computer.</p>]]></content><author><name>Beatrice Szilvasy</name><uri>https://eutro.dev/</uri></author><category term="masters-worklog" /><summary type="html"><![CDATA[I have continued to write this week. I do not have much to say on this, except that I have now made it so that I can keep multiple dated versions of the rendered writeup available at https://notes.eutro.dev/cs/diss/output/.1]]></summary></entry><entry><title type="html">April Update 1</title><link href="https://blog.eutro.dev/masters-worklog/update10/" rel="alternate" type="text/html" title="April Update 1" /><published>2026-04-17T00:00:00+00:00</published><updated>2026-04-17T00:00:00+00:00</updated><id>https://blog.eutro.dev/masters-worklog/update10</id><content type="html" xml:base="https://blog.eutro.dev/masters-worklog/update10/"><![CDATA[<script id="katex_headers" type="application/x-tex">

\newcommand{\orgcode}[1]{\textup{\texttt{#1}}}
\newcommand{\acat}[1]{\mathcal{#1}}
\newcommand{\A}{\acat{A}}
\newcommand{\B}{\acat{B}}
\newcommand{\C}{\acat{C}}
\newcommand{\D}{\acat{D}}
\newcommand{\M}{\acat{M}}
\newcommand{\PP}{\acat{P}}
\newcommand{\NN}{\acat{N}}
\newcommand{\OO}{\acat{O}}
\newcommand{\EE}{\acat{E}}
\newcommand{\GG}{\acat{G}}
\newcommand{\HH}{\acat{H}}
\newcommand{\UU}{\acat{U}}
\newcommand{\El}{\mathsf{El}}
\newcommand{\code}{\mathsf{code}}
\newcommand{\ttN}{\orgcode{N}}
\newcommand{\ttP}{\orgcode{P}}
\newcommand{\ttL}{\orgcode{L}}
\newcommand{\ttR}{\orgcode{R}}
\newcommand{\tteps}{\orgcode{ε}}
\newcommand{\tteta}{\orgcode{η}}
\newcommand{\Cl}[1]{#1_l}
\newcommand{\Ct}[1]{#1_t}
\newcommand{\Ci}[1]{#1_i}
\newcommand{\Cti}[1]{#1_{ti}}
\newcommand{\Cli}[1]{#1_{li}}
\newcommand{\Clt}[1]{#1_{lt}}
\newcommand{\Clti}[1]{#1_{lti}}
\newcommand{\Cn}[1]{#1^\ominus}
\newcommand{\Cp}[1]{#1^\oplus}
\newcommand{\Csn}[2]{#1^{\ominus#2}}
\newcommand{\Csp}[2]{#1^{\oplus#2}}
\newcommand{\Cnl}[1]{\Cn{\Cl{#1}}}
\newcommand{\Cpt}[1]{\Cp{\Ct{#1}}}
\newcommand{\Csnl}[2]{\Csn{\Cl{#1}}{#2}}
\newcommand{\Cspt}[2]{\Csp{\Ct{#1}}{#2}}
\newcommand{\Ctl}[1]{\Clt{#1}}
\newcommand{\Cnt}[1]{\Cn{#1}}
\newcommand{\Cpl}[1]{\Cp{#1}}
\newcommand{\wkcat}[1]{\mathbf{#1}}
\renewcommand{\Set}{\wkcat{Set}}
\newcommand{\Cat}{\wkcat{Cat}}
\newcommand{\UnivCat}{\wkcat{Cat}_{\univ}}
\newcommand{\Dupl}{\wkcat{Dupl}}
\newcommand{\UnivDupl}{\wkcat{Dupl}_{\univ}}
\newcommand{\WAdj}{\texttt{Adj}}
\newcommand{\coll}{\wkcat{coll}}
\newcommand{\Terminal}{\wkcat{1}}
\newcommand{\Obl}[1]{\OO[#1]}
\newcommand{\Env}[1]{\EE[#1]}
\DeclareMathOperator{\ob}{\mathsf{ob}}
\DeclareMathOperator{\mor}{\mathsf{mor}}
\DeclareMathOperator{\vertex}{\mathsf{vertex}}
\newcommand{\op}{{\mathsf{op}}}
\newcommand{\eq}{{\mathsf{eq}}}
\newcommand{\id}{\mathsf{id}}
\newcommand{\Id}{\mathsf{Id}}
\newcommand{\rx}{\mathsf{rx}}
\newcommand{\yo}{\mathsf{y}}
\newcommand{\univ}{\mathsf{univ}}
\newcommand{\acomp}{\circ}
\newcommand{\dcomp}{\fatsemi}
\newcommand{\syndcomp}{\mathop{;}}
\newcommand{\bindersep}{\mathpunct{.}}
\newcommand{\morsof}[3]{{#1}\llbracket{#2},{#3}\rrbracket}
\newcommand{\defeq}{\overset{\mathrm{\textup{def}}}{=}}
\newcommand{\defequiv}{\overset{\mathrm{\textup{def}}}{\equiv}}
\newcommand{\iscontr}{\orgcode{iscontr}}
\newcommand{\isaprop}{\orgcode{isaprop}}
\newcommand{\isaset}{\orgcode{isaset}}
\newcommand{\isweq}{\orgcode{isweq}}
\newcommand{\refl}{\mathsf{refl}}
\newcommand{\fib}[1]{\mathsf{wfib}_{#1}}
\newcommand{\cmdcode}[1]{\orgcode{#1}}
\newcommand{\punctcolor}[1]{\textcolor[rgb]{0.20,0.20,0.20}{#1}}
\newcommand{\print}{\cmdcode{print}}
\newcommand{\ttlet}{\cmdcode{let}\ }
\newcommand{\ttin}{\mathrel{\cmdcode{in}}}
\newcommand{\ttseq}{\orgcode{;}\ }
\newcommand{\ttbe}{\mathrel{\cmdcode{be}}}
\newcommand{\ttLP}{\Big(}
\newcommand{\ttRP}{\Big)}
\newcommand{\bool}{\orgcode{bool}}
\newcommand{\unit}{\orgcode{unit}}
\newcommand{\ttempty}{\orgcode{empty}}
\newcommand{\nat}{\mathbb{N}}
\newcommand{\hSet}{\orgcode{hSet}}
\newcommand{\hProp}{\orgcode{hProp}}
\newcommand{\idtoiso}{\orgcode{id\_to\_iso}}
\newcommand{\idtoweq}{\orgcode{id\_to\_weq}}
\newcommand{\idtomor}{\orgcode{id\_to\_edge}}
\newcommand{\proptrunc}[1]{\left\|#1\right\|}
\newcommand{\type}{\ \mathsf{type}}
\newcommand{\interp}[1]{\left\llbracket#1\right\rrbracket}
\newcommand{\stn}[1]{\mathbf{#1}}
\newcommand{\ndUniqueChoice}{\operatorname{\mathsf{unique}}}
\newcommand{\ofan}[2]{\{#2\}^{{\Rightarrow}}_{#1}}
\newcommand{\ifan}[2]{\{#2\}^{{\Leftarrow}}_{#1}}
\newcommand{\functorcat}[2]{\mathbf{Fn}[#1, #2]}
\newcommand{\rxfunctorcat}[2]{\mathbf{RxFn}[#1, #2]}
\newcommand{\natrxfunctorcat}[2]{\mathbf{RxFn}_{\mathsf{nat}}[#1, #2]}
\newcommand*{\State}[1]{\operatorname{State}_{#1}}
\newcommand{\rxfunctor}{\densedashrightarrow}
\newcommand{\nattrans}{\Rightarrow}
\newcommand{\unnattrans}{\Rightharpoonup}
\newcommand{\morpath}{\rightarrow\cdots\rightarrow}
\newcommand{\force}{\mathop{\orgcode{force}}\nolimits}
\newcommand{\delay}{\mathop{\orgcode{delay}}\nolimits}
\newcommand{\wrap}{\mathop{\orgcode{wrap}}\nolimits}
\newcommand{\unwrap}{\mathop{\orgcode{unwrap}}\nolimits}
\newcommand{\upshift}{\mathord{\Uparrow}}
\newcommand{\downshift}{\mathord{\Downarrow}}
\newcommand{\negliftO}{\mathop{\mathsf{lift}^{\ominus}}}
\newcommand{\posliftO}{\mathop{\mathsf{lift}^{\oplus}}}
\newcommand{\neglift}[1]{\negliftO{}#1}
\newcommand{\poslift}[1]{\posliftO{}#1}
\newcommand{\inneg}{\mathop{\iota^{\ominus}}}
\newcommand{\inpos}{\mathop{\iota^{\oplus}}}
\newcommand{\projneg}{\mathop{\pi^{\ominus}}}
\newcommand{\projpos}{\mathop{\pi^{\oplus}}}
\newcommand{\crossmor}{\mathop{\mathsf{cross}}}
\newcommand{\innegE}{\mathop{\iota^{\ominus}_{\EE}}}
\newcommand{\inposE}{\mathop{\iota^{\oplus}_{\EE}}}
\newcommand{\projnegE}{\mathop{\pi^{\ominus}_{\EE}}}
\newcommand{\projposE}{\mathop{\pi^{\oplus}_{\EE}}}
\newcommand{\crossmorE}{\mathop{\mathsf{cross}_{\EE}}}
\newcommand{\innegO}{\mathop{\iota^{\ominus}_{\OO}}}
\newcommand{\inposO}{\mathop{\iota^{\oplus}_{\OO}}}
\newcommand{\projnegO}{\mathop{\pi^{\ominus}_{\OO}}}
\newcommand{\projposO}{\mathop{\pi^{\oplus}_{\OO}}}
\newcommand{\crossmorO}{\mathop{\mathsf{cross}_{\OO}}}
\newcommand{\Rezk}{\mathfrak{R}}
\newcommand{\rezk}{\mathfrak{r}}
\newcommand{\NOTE}{\colorbox{orange}{NOTE}}
\newcommand{\TODO}{\colorbox{red}{TODO}}
\newcommand{\FIXME}{\colorbox{red}{FIXME}}

</script>

<p>I have been writing the text of my dissertation and made the rendered
draft available at
<a href="https://notes.eutro.dev/cs/diss/output/writeup.pdf">https://notes.eutro.dev/cs/diss/output/writeup.pdf</a>.<sup><a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup>
<!--more--> I have taken the liberty of sprinkling it with
all kinds of notes intended for the reader, about omissions and
planned direction. The reader most usually being me, but it could
potentially even be you!  This is of course a fairly early draft so I
am not expecting detailed feedback at this time.</p>

<p>At the moment, the “best-written” part is the introduction. This let me
motivate a little bit the project and set out what I intend to
include. It is also something I can point to for anyone who asks “what
is your dissertation on?” with the hope that it might take at least
<em>two</em> sentences before they get completely lost.</p>

<p>Other than that, I am still piecing together the work I have done and
text I have already written, trying to fit them neatly into a coherent
linear narrative, at points where they will make sense to the
reader. I have made some progress so far, but not quite as much as I
would have liked. For instance, I am struggling with the placement and
explanation of the envelope duploid’s construction. I think I am
getting into a workable rhythm with writing though, and my plan and
prose are developing healthily in tandem.</p>

<p>I have done some thinking and proving towards the Rezk completion of
duploids. In summary: on paper, everything just works. I won’t write
about it today though, since I’m just trying to get the draft text up.</p>

<h1 id="footnotes">Footnotes</h1>

<p><sup><a id="fn.1" href="#fnr.1">1</a></sup> This link always points to the most up-to-date draft that I
have committed and pushed.</p>]]></content><author><name>Beatrice Szilvasy</name><uri>https://eutro.dev/</uri></author><category term="masters-worklog" /><summary type="html"><![CDATA[I have been writing the text of my dissertation and made the rendered draft available at https://notes.eutro.dev/cs/diss/output/writeup.pdf.1]]></summary></entry></feed>