<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="default.xsl"?>
<fr:tree toc="true" numbered="true" show-heading="true" show-metadata="true" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
  <fr:frontmatter>
    <fr:anchor>1270</fr:anchor>
    <fr:addr type="user">index</fr:addr>
    <fr:route>index.xml</fr:route>
    <fr:title text="Dr. Derek Sorensen">Dr. Derek Sorensen</fr:title>
    <fr:authors>
      <fr:author>
        <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
      </fr:author>
    </fr:authors>
  </fr:frontmatter>
  <fr:mainmatter>
    <fr:p>I am a mathematician and computer scientist.
  I work on <fr:link type="local" href="dhsorens-0020.xml" addr="dhsorens-0020" title="Protocol Snarkification">Protocol Snarkification</fr:link> at the <fr:link type="local" href="dhsorens-ef.xml" addr="dhsorens-ef" title="Ethereum Foundation">Ethereum Foundation</fr:link>, and these days I am mostly interested in <fr:link type="local" href="dhsorens-lean.xml" addr="dhsorens-lean" title="The Lean Theorem Prover">Lean</fr:link>.</fr:p>
    <fr:p>Here you can see my <fr:link type="local" href="dhsorens-rsrch.xml" addr="dhsorens-rsrch" title="Research">research</fr:link>, <fr:link type="local" href="dhsorens-notes.xml" addr="dhsorens-notes" title="Notes">notes</fr:link>, <fr:link type="local" href="dhsorens-logs.xml" addr="dhsorens-logs" title="Logs">logs</fr:link>, <fr:link type="local" href="dhsorens-001C.xml" addr="dhsorens-001C" title="Work Bio">work history</fr:link>, and <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">bio</fr:link>.</fr:p>
    <fr:p><fr:link type="external" href="https://github.com/dhsorens">GitHub</fr:link> | <fr:link type="external" href="https://orcid.org/0000-0003-4937-6984">ORCID</fr:link> | <fr:link type="external" href="https://www.linkedin.com/in/dhsorens/">LinkedIn</fr:link></fr:p>
    <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
      <fr:frontmatter>
        <fr:anchor>337</fr:anchor>
        <fr:addr type="user">dhsorens-001S</fr:addr>
        <fr:route>dhsorens-001S.xml</fr:route>
        <fr:title text="Featured Article">Featured Article</fr:title>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>10</fr:month>
          <fr:day>9</fr:day>
        </fr:date>
        <fr:authors>
          <fr:author>
            <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
          </fr:author>
        </fr:authors>
        <fr:meta name="toc">true</fr:meta>
      </fr:frontmatter>
      <fr:mainmatter>
        <fr:p>See my latest on <fr:link type="local" href="dhsorens-0027.xml" addr="dhsorens-0027" title="LC3 in Lean">building a formally verified LC3 virtual machine in Lean</fr:link>.</fr:p>
      </fr:mainmatter>
      <fr:backmatter />
    </fr:tree>
    <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
      <fr:frontmatter>
        <fr:anchor>339</fr:anchor>
        <fr:addr type="user">dhsorens-000D</fr:addr>
        <fr:route>dhsorens-000D.xml</fr:route>
        <fr:title text="Education">Education</fr:title>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>6</fr:month>
          <fr:day>15</fr:day>
        </fr:date>
        <fr:authors>
          <fr:author>
            <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
          </fr:author>
        </fr:authors>
        <fr:meta name="toc">true</fr:meta>
      </fr:frontmatter>
      <fr:mainmatter>
        <fr:p><fr:link type="local" href="dhsorens-msc.xml" addr="dhsorens-msc" title="MSc in Algebraic Topology">MSc</fr:link> in Mathematics and Foundations of Computer Science (MFoCS) at the <fr:link type="local" href="dhsorens-oxf.xml" addr="dhsorens-oxf" title="University of Oxford">University of Oxford</fr:link>. <fr:link type="local" href="dhsorens-phd.xml" addr="dhsorens-phd" title="PhD in Formal Methods">PhD</fr:link> in formal methods at the <fr:link type="local" href="dhsorens-cam.xml" addr="dhsorens-cam" title="University of Cambridge">University of Cambridge</fr:link> under <fr:link type="local" href="avsm.xml" addr="avsm" title="Anil Madhavapeddy">Anil Madhavapeddy</fr:link>.</fr:p>
      </fr:mainmatter>
      <fr:backmatter />
    </fr:tree>
    <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
      <fr:frontmatter>
        <fr:anchor>341</fr:anchor>
        <fr:addr type="user">dhsorens-pubs</fr:addr>
        <fr:route>dhsorens-pubs.xml</fr:route>
        <fr:title text="Peer-Reviewed Publications">Peer-Reviewed Publications</fr:title>
        <fr:authors>
          <fr:author>
            <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
          </fr:author>
        </fr:authors>
        <fr:meta name="toc">true</fr:meta>
      </fr:frontmatter>
      <fr:mainmatter>
        <fr:ol><fr:li>Sorensen, D. <fr:em>Formally Specifying Contract Optimizations With Bisimulations in Coq</fr:em>. FMBC (ETAPS) (2025). [<fr:link type="local" href="dhsorens-000J.xml" addr="dhsorens-000J" title="Formally Specifying Contract Optimizations With Bisimulations in Coq">link</fr:link>]</fr:li>

    
    <fr:li>Sorensen, D. <fr:em>Towards Formally Specifying and Verifying Smart Contract Upgrades in Coq</fr:em>. FMBC (ETAPS) (2024). [<fr:link type="local" href="dhsorens-000K.xml" addr="dhsorens-000K" title="Towards Formally Specifying and Verifying Smart Contract Upgrades in Coq">link</fr:link>]</fr:li>

    
    <fr:li>Sorensen, D. <fr:em>(In)Correct Smart Contract Specifications</fr:em>. ICBC (2024). [<fr:link type="local" href="dhsorens-000L.xml" addr="dhsorens-000L" title="(In)Correct Smart Contract Specifications">link</fr:link>]</fr:li>

    
    <fr:li>Jaffer, S., Dales, M., Ferris, P., Sorensen, D., Swinfield, T., Message, R., Keshav, S., and Madhavapeddy, A. <fr:em>Global, robust and comparable digital carbon assets</fr:em>. ICBC (2024). [<fr:link type="local" href="dhsorens-000M.xml" addr="dhsorens-000M" title="Global, robust and comparable digital carbon assets">link</fr:link>]</fr:li>

    
    <fr:li>Sorensen, D. <fr:em>Tokenized Carbon Credits</fr:em>. Ledger (2023). [<fr:link type="local" href="dhsorens-000N.xml" addr="dhsorens-000N" title="Tokenized Carbon Credits">link</fr:link>]</fr:li>

    
    <fr:li>Sorensen, D. <fr:em>Structured Pools for Tokenized Carbon Credits</fr:em>. ICBC CryptoEx (2023). [<fr:link type="local" href="dhsorens-000O.xml" addr="dhsorens-000O" title="Structured Pools for Tokenized Carbon Credits">link</fr:link>]</fr:li>

    
    <fr:li>Butt, K., Sorensen, D. <fr:em>Streamlining Classical Consensus</fr:em>. International Journal of Blockchains and Cryptocurrencies, Vol. 1, No. 4 (2019). [<fr:link type="local" href="dhsorens-000P.xml" addr="dhsorens-000P" title="Streamlining Classical Consensus">link</fr:link>]</fr:li>

    
    <fr:li>Sorensen, D. <fr:em>Establishing Standards for Consensus on Blockchains</fr:em>. ICBC (2019). [<fr:link type="local" href="dhsorens-000Q.xml" addr="dhsorens-000Q" title="Establishing Standards for Consensus on Blockchains">link</fr:link>]</fr:li>

    
    <fr:li>A. Francis, D. Smith, D. Sorensen and B. Webb. <fr:em>Extensions and applications of equitable decompositions for graphs with symmetries</fr:em>. Linear Algebra and its Applications 532 (2017). [<fr:link type="local" href="dhsorens-000R.xml" addr="dhsorens-000R" title="Extensions and applications of equitable decompositions for graphs with symmetries">link</fr:link>]</fr:li></fr:ol>
        <fr:p>I also keep some <fr:link type="local" href="dhsorens-preprints.xml" addr="dhsorens-preprints" title="Preprints">preprints</fr:link> on record.</fr:p>
      </fr:mainmatter>
      <fr:backmatter />
    </fr:tree>
    <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
      <fr:frontmatter>
        <fr:anchor>343</fr:anchor>
        <fr:addr type="user">dhsorens-talks</fr:addr>
        <fr:route>dhsorens-talks.xml</fr:route>
        <fr:title text="Talks">Talks</fr:title>
        <fr:authors>
          <fr:author>
            <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
          </fr:author>
        </fr:authors>
        <fr:meta name="toc">true</fr:meta>
      </fr:frontmatter>
      <fr:mainmatter>
        <fr:p>Some selected talks:
    
    <fr:ul><fr:li><fr:link type="local" href="dhsorens-0028.xml" addr="dhsorens-0028" title="Safely Snarkifying the Ethereum Protocol">CompPoly: Computable Polynomials in Lean</fr:link>. <fr:link type="external" href="https://zkproof.org/events/zkproof-8-rome/">ZKProofs 8</fr:link>, May 2026, Rome, Italy.</fr:li>
        <fr:li><fr:link type="local" href="dhsorens-0023.xml" addr="dhsorens-0023" title="Correct and Computable Specifications in Lean">Correct and Computable Specifications in Lean</fr:link>. <fr:link type="external" href="https://beneficial-ai-foundation.github.io/SVIL2026/">SViL26</fr:link>, April 2026, Paris, France.</fr:li>
        <fr:li><fr:link type="local" href="dhsorens-0022.xml" addr="dhsorens-0022" title="Safely Snarkifying the Ethereum Protocol">Safely Snarkifying the Ethereum Protocol</fr:link>. <fr:link type="external" href="https://ethcc.io">EthCC[9]</fr:link>, March 2026, Cannes, France.</fr:li>
        <fr:li>Formally Specifying Contract Optimizations With Bisimulations in Coq. <fr:link type="external" href="https://fmbc.gitlab.io/2025">FMBC 2025</fr:link>, May 2025, Hamilton, Canada.</fr:li>
        <fr:li><fr:link type="local" href="dhsorens-0024.xml" addr="dhsorens-0024" title="(In)Correct Smart Contract Specifications">(In)Correct Smart Contract Specifications. ICBC, May 2024, Dublin.</fr:link></fr:li>
        <fr:li>Towards Formally Specifying and Verifying Smart Contract Upgrades in Coq. <fr:link type="external" href="https://fmbc.gitlab.io/2024">FMBC 2024</fr:link>, April 2024, Luxembourg.</fr:li>
        <fr:li><fr:link type="external" href="https://mediaserver.univ-nantes.fr/videos/abstraction-specification-and-proof/">Abstraction, Specification, and Proof. Undone Science, February 2024, Nantes, FR.</fr:link></fr:li>
        <fr:li>Structured Pools for Tokenized Carbon Credits. ICBC 2024, Dubai.</fr:li>
        <fr:li>Establishing Standards for Consensus on Blockchains. ICBC 2019, San Diego.</fr:li>
        <fr:li><fr:link type="external" href="https://www.youtube.com/watch?v=NZ2ETPurRFU">K framework and type theory. RCon, May 2019, Berlin.</fr:link></fr:li></fr:ul></fr:p>
        <fr:p>I also keep some of <fr:link type="local" href="dhsorens-slides.xml" addr="dhsorens-slides" title="Slides">my slides here</fr:link>.</fr:p>
      </fr:mainmatter>
      <fr:backmatter />
    </fr:tree>
    <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
      <fr:frontmatter>
        <fr:anchor>345</fr:anchor>
        <fr:addr type="user">dhsorens-000E</fr:addr>
        <fr:route>dhsorens-000E.xml</fr:route>
        <fr:title text="Work History">Work History</fr:title>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>6</fr:month>
          <fr:day>15</fr:day>
        </fr:date>
        <fr:authors>
          <fr:author>
            <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
          </fr:author>
        </fr:authors>
        <fr:meta name="toc">true</fr:meta>
      </fr:frontmatter>
      <fr:mainmatter>
        <fr:p>See my <fr:link type="external" href="docs/sorensen-cv.pdf">CV</fr:link> or a <fr:link type="local" href="dhsorens-001C.xml" addr="dhsorens-001C" title="Work Bio">work bio</fr:link>.</fr:p>
      </fr:mainmatter>
      <fr:backmatter />
    </fr:tree>
  </fr:mainmatter>
  <fr:backmatter>
    <fr:tree toc="false" numbered="false" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
      <fr:frontmatter>
        <fr:title text="Related">Related</fr:title>
        <fr:authors />
      </fr:frontmatter>
      <fr:mainmatter>
        <fr:tree toc="true" numbered="false" show-heading="true" show-metadata="true" expanded="false" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
          <fr:frontmatter>
            <fr:anchor>1272</fr:anchor>
            <fr:addr type="user">dhsorens-ef</fr:addr>
            <fr:route>dhsorens-ef.xml</fr:route>
            <fr:title text="Ethereum Foundation">Ethereum Foundation</fr:title>
            <fr:taxon>Institution</fr:taxon>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>12</fr:month>
              <fr:day>18</fr:day>
            </fr:date>
            <fr:authors>
              <fr:author>
                <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
              </fr:author>
            </fr:authors>
            <fr:meta name="toc">true</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <fr:link type="external" href="https://ethereum.foundation">https://ethereum.foundation</fr:link>
          </fr:mainmatter>
          <fr:backmatter />
        </fr:tree>
        <fr:tree toc="true" numbered="false" show-heading="true" show-metadata="true" expanded="false" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
          <fr:frontmatter>
            <fr:anchor>1274</fr:anchor>
            <fr:addr type="user">dhsorens-0020</fr:addr>
            <fr:route>dhsorens-0020.xml</fr:route>
            <fr:title text="Protocol Snarkification">Protocol Snarkification</fr:title>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>12</fr:month>
              <fr:day>18</fr:day>
            </fr:date>
            <fr:authors>
              <fr:author>
                <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
              </fr:author>
            </fr:authors>
            <fr:meta name="toc">true</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <fr:p>There are ongoing efforts to "snarkify" Ethereum, i.e. to integrate <fr:link type="local" href="dhsorens-001L.xml" addr="dhsorens-001L" title="Zero Knowledge Proofs">zero knowledge proofs</fr:link> into every layer of the Ethereum protocol. I contribute to this via <fr:link type="local" href="dhsorens-000X.xml" addr="dhsorens-000X" title="Formal Specification and Verification">formal verification</fr:link> in <fr:link type="local" href="dhsorens-lean.xml" addr="dhsorens-lean" title="The Lean Theorem Prover">Lean</fr:link>. My main focus is currently on <fr:link type="external" href="https://github.com/Verified-zkEVM/CompPoly">CompPoly</fr:link> and <fr:link type="external" href="https://github.com/Verified-zkEVM/ArkLib">Arklib</fr:link>.</fr:p>
            <fr:p>See <fr:link type="external" href="http://verified-zkevm.org">our website</fr:link> for more information.</fr:p>
          </fr:mainmatter>
          <fr:backmatter />
        </fr:tree>
        <fr:tree toc="true" numbered="false" show-heading="true" show-metadata="true" expanded="false" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
          <fr:frontmatter>
            <fr:anchor>1276</fr:anchor>
            <fr:addr type="user">dhsorens-001C</fr:addr>
            <fr:route>dhsorens-001C.xml</fr:route>
            <fr:title text="Work Bio">Work Bio</fr:title>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>9</fr:month>
              <fr:day>3</fr:day>
            </fr:date>
            <fr:authors>
              <fr:author>
                <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
              </fr:author>
            </fr:authors>
            <fr:meta name="toc">true</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <fr:p>For a summary of my work experience, see my <fr:link type="external" href="docs/sorensen-cv.pdf">CV</fr:link> (updated 11/2025).</fr:p>
            <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
              <fr:frontmatter>
                <fr:anchor>585</fr:anchor>
                <fr:addr type="user">dhsorens-0018</fr:addr>
                <fr:route>dhsorens-0018.xml</fr:route>
                <fr:title text="Summary of Work and Projects">Summary of Work and Projects</fr:title>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>9</fr:month>
                  <fr:day>3</fr:day>
                </fr:date>
                <fr:authors>
                  <fr:author>
                    <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:meta name="toc">true</fr:meta>
              </fr:frontmatter>
              <fr:mainmatter>
                <fr:p>Since early 2018 I have held various roles in crypto, working mostly in research and <fr:link type="local" href="dhsorens-000X.xml" addr="dhsorens-000X" title="Formal Specification and Verification">formal verification</fr:link>.
    My original interests in crypto were in consensus algorithms and formal verification frameworks for verifying smart contracts. When I started, those frameworks and tools were in their infancy, <fr:link type="local" href="dhsorens-001D.xml" addr="dhsorens-001D" title="The K Framework">K Framework</fr:link> being the only tool at the time to my knowledge that was production-ready for actual smart contracts.

    Over time, I became interested in the financial applications of <fr:link type="local" href="dhsorens-000Y.xml" addr="dhsorens-000Y" title="Smart Contracts">smart contracts</fr:link> and I did my <fr:link type="local" href="dhsorens-phd.xml" addr="dhsorens-phd" title="PhD in Formal Methods">PhD</fr:link> in verification strategies for financial <fr:link type="local" href="dhsorens-000W.xml" addr="dhsorens-000W" title="Smart Contract Design, Specification, and Verification">smart contracts</fr:link>.

    Along the way, I became deeply interested in type theory and <fr:link type="local" href="dhsorens-000B.xml" addr="dhsorens-000B" title="Interactive Theorem Provers">proof assistants</fr:link>, and these days am interested broadly in theorem-proving, <fr:link type="local" href="dhsorens-notes.xml" addr="dhsorens-notes" title="Notes">whether applied to software or formalized maths</fr:link>.

    In my day-to-day, I still do a lot of work in the design, construction, and formal verification of smart contracts.</fr:p>
                <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                  <fr:frontmatter>
                    <fr:anchor>376</fr:anchor>
                    <fr:addr type="user">dhsorens-0019</fr:addr>
                    <fr:route>dhsorens-0019.xml</fr:route>
                    <fr:title text="Pre-PhD (2017-2019)">Pre-PhD (2017-2019)</fr:title>
                    <fr:date>
                      <fr:year>2025</fr:year>
                      <fr:month>9</fr:month>
                      <fr:day>3</fr:day>
                    </fr:date>
                    <fr:authors>
                      <fr:author>
                        <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                      </fr:author>
                    </fr:authors>
                  </fr:frontmatter>
                  <fr:mainmatter>
                    <fr:p>I started working in crypto during the two years between my <fr:link type="local" href="dhsorens-msc.xml" addr="dhsorens-msc" title="MSc in Algebraic Topology">MSc</fr:link> and my <fr:link type="local" href="dhsorens-phd.xml" addr="dhsorens-phd" title="PhD in Formal Methods">PhD</fr:link>.
    My first job was at a small, Utah-based crypto startup called Pyrofex, which was mostly providing consulting services to the <fr:link type="external" href="https://github.com/dhsorens/rchain">RChain co-op</fr:link> at the time.
    I was tasked with <fr:link type="external" href="https://github.com/dhsorens/rholang">building the formal semantics for rholang</fr:link>, the smart contracting language on RChain, in <fr:link type="local" href="dhsorens-001D.xml" addr="dhsorens-001D" title="The K Framework">K Framework</fr:link> in order to formally verify rholang contracts down the line.</fr:p>
                    <fr:p>RChain, famously, encountered sudden and urgent financial problems because of a questionable set of decisions from the co-op's president, Greg Meredith, which necessitated a split between RChain and Pyrofex.
    We then pivoted to consensus-level research, designed our own layer-one blockchain and <fr:link type="external" href="docs/Casanova.pdf">consensus protocol</fr:link>.</fr:p>
                    <fr:p>Sadly, we ran out of money, and I had to look for a new job for the few months before my PhD started.
    I took a short internship with Digital Asset, working in Zurich and New York, and <fr:link type="external" href="docs/cantoncoin.pdf">implementing an experimental currency</fr:link> on their blockchain-esque project Canton.</fr:p>
                  </fr:mainmatter>
                  <fr:backmatter />
                </fr:tree>
                <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                  <fr:frontmatter>
                    <fr:anchor>378</fr:anchor>
                    <fr:addr type="user">dhsorens-001A</fr:addr>
                    <fr:route>dhsorens-001A.xml</fr:route>
                    <fr:title text="During the PhD (2019-2023)">During the PhD (2019-2023)</fr:title>
                    <fr:date>
                      <fr:year>2025</fr:year>
                      <fr:month>9</fr:month>
                      <fr:day>3</fr:day>
                    </fr:date>
                    <fr:authors>
                      <fr:author>
                        <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                      </fr:author>
                    </fr:authors>
                  </fr:frontmatter>
                  <fr:mainmatter>
                    <fr:p>During my <fr:link type="local" href="dhsorens-phd.xml" addr="dhsorens-phd" title="PhD in Formal Methods">PhD</fr:link>, I took several part-time jobs with various crypto startups.
    My work ranged from research and formal verification, to DeFi protocol modeling and design, to zero-knowledge proofs, to business development.
    Each of my jobs during the PhD informed my research and helped to broaden and sharpen my thinking.
    I took the last year of my PhD to focus fully on writing up and submitting.</fr:p>
                  </fr:mainmatter>
                  <fr:backmatter />
                </fr:tree>
                <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                  <fr:frontmatter>
                    <fr:anchor>380</fr:anchor>
                    <fr:addr type="user">dhsorens-001B</fr:addr>
                    <fr:route>dhsorens-001B.xml</fr:route>
                    <fr:title text="Post PhD (2024 - 2025)">Post PhD (2024 - 2025)</fr:title>
                    <fr:date>
                      <fr:year>2025</fr:year>
                      <fr:month>9</fr:month>
                      <fr:day>3</fr:day>
                    </fr:date>
                    <fr:authors>
                      <fr:author>
                        <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                      </fr:author>
                    </fr:authors>
                  </fr:frontmatter>
                  <fr:mainmatter>
                    <fr:p>Since my PhD has ended, I went through a process of unifying my various interests in people, proofs, smart contracts, digital money, and zero-knowledge proofs.
    I took a job with <fr:link type="local" href="dhsorens-001Z.xml" addr="dhsorens-001Z" title="Certora">Certora</fr:link> straight out of my PhD, doing a mix of formally verifying smart contracts and project managmenet/business development/product development/client support.
    Ultimately, it became clear that <fr:link type="local" href="dhsorens-001Z.xml" addr="dhsorens-001Z" title="Certora">Certora</fr:link> was not the place that I was going to do my best work, so early 2025 we parted ways.</fr:p>
                    <fr:p>I then took some temporary contract work over the summer of 2025 building, designing, and verifying DeFi protocols (my specific area of expertise) while I looked for something that I can truly sink my teeth into and that would define the next period of my career.</fr:p>
                  </fr:mainmatter>
                  <fr:backmatter />
                </fr:tree>
                <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                  <fr:frontmatter>
                    <fr:anchor>382</fr:anchor>
                    <fr:addr type="user">dhsorens-001E</fr:addr>
                    <fr:route>dhsorens-001E.xml</fr:route>
                    <fr:title text="Ethereum Foundation (2025 - Present)">Ethereum Foundation (2025 - Present)</fr:title>
                    <fr:date>
                      <fr:year>2025</fr:year>
                      <fr:month>11</fr:month>
                      <fr:day>22</fr:day>
                    </fr:date>
                    <fr:authors>
                      <fr:author>
                        <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                      </fr:author>
                    </fr:authors>
                  </fr:frontmatter>
                  <fr:mainmatter>
                    <fr:p>As of November 2025 I joined the Ethereum Foundation, working on <fr:link type="local" href="dhsorens-0020.xml" addr="dhsorens-0020" title="Protocol Snarkification">Protocol Snarkification</fr:link>. This mostly consists of formally specifying and verifying ZK primitives in <fr:link type="local" href="dhsorens-lean.xml" addr="dhsorens-lean" title="The Lean Theorem Prover">Lean</fr:link>.</fr:p>
                    <fr:p><fr:em>Last updated January 2026</fr:em>. For more updates, see <fr:link type="local" href="dhsorens-logs.xml" addr="dhsorens-logs" title="Logs">my logs</fr:link>.</fr:p>
                  </fr:mainmatter>
                  <fr:backmatter />
                </fr:tree>
              </fr:mainmatter>
              <fr:backmatter />
            </fr:tree>
          </fr:mainmatter>
          <fr:backmatter />
        </fr:tree>
        <fr:tree toc="true" numbered="false" show-heading="true" show-metadata="true" expanded="false" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
          <fr:frontmatter>
            <fr:anchor>1278</fr:anchor>
            <fr:addr type="user">dhsorens-lean</fr:addr>
            <fr:route>dhsorens-lean.xml</fr:route>
            <fr:title text="The Lean Theorem Prover">The Lean Theorem Prover</fr:title>
            <fr:taxon>Tool</fr:taxon>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>6</fr:month>
              <fr:day>15</fr:day>
            </fr:date>
            <fr:authors>
              <fr:author>
                <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
              </fr:author>
            </fr:authors>
            <fr:meta name="toc">true</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <fr:link type="external" href="http://lean-lang.org">http://lean-lang.org</fr:link>
          </fr:mainmatter>
          <fr:backmatter />
        </fr:tree>
        <fr:tree toc="true" numbered="false" show-heading="true" show-metadata="true" expanded="false" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
          <fr:frontmatter>
            <fr:anchor>1280</fr:anchor>
            <fr:addr type="user">dhsorens</fr:addr>
            <fr:route>dhsorens.xml</fr:route>
            <fr:title text="Derek Sorensen">Derek Sorensen</fr:title>
            <fr:taxon>Person</fr:taxon>
            <fr:authors />
            <fr:meta name="orcid">0000-0003-4937-6984</fr:meta>
            <fr:meta name="external">https://www.github.com/dhsorens</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <fr:p>Mathematician and computer scientist.
    <fr:link type="local" href="dhsorens-phd.xml" addr="dhsorens-phd" title="PhD in Formal Methods">PhD</fr:link> in computer science with <fr:link type="local" href="avsm.xml" addr="avsm" title="Anil Madhavapeddy">Anil Madhavapeddy</fr:link> at the <fr:link type="local" href="dhsorens-cam.xml" addr="dhsorens-cam" title="University of Cambridge">University of Cambridge</fr:link>, in formal methods applied to financial smart contracts.</fr:p>
            <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
              <fr:frontmatter>
                <fr:anchor>610</fr:anchor>
                <fr:addr type="user">dhsorens-0005</fr:addr>
                <fr:route>dhsorens-0005.xml</fr:route>
                <fr:title text="Intellectual and Educational Bio">Intellectual and Educational Bio</fr:title>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>6</fr:month>
                  <fr:day>14</fr:day>
                </fr:date>
                <fr:authors>
                  <fr:author>
                    <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:meta name="toc">true</fr:meta>
              </fr:frontmatter>
              <fr:mainmatter>
                <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                  <fr:frontmatter>
                    <fr:anchor>612</fr:anchor>
                    <fr:addr type="user">dhsorens-000H</fr:addr>
                    <fr:route>dhsorens-000H.xml</fr:route>
                    <fr:title text="Undergraduate in Mathematics">Undergraduate in Mathematics</fr:title>
                    <fr:date>
                      <fr:year>2025</fr:year>
                      <fr:month>6</fr:month>
                      <fr:day>15</fr:day>
                    </fr:date>
                    <fr:authors>
                      <fr:author>
                        <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                      </fr:author>
                    </fr:authors>
                    <fr:meta name="toc">true</fr:meta>
                  </fr:frontmatter>
                  <fr:mainmatter>
                    <fr:p>I got into mathematics as an undergraduate by accident. My declared majors were first philosophy, then economics, and then mathematics.</fr:p>
                    <fr:p>What really got me into mathematics was the notion of mathematical proof, as taught in the introduction to proofs course. Famous for "weeding people out," the course struck me at the core because I knew that in mathematics I could get to the bottom of any definition or proof, all the way down to axiomatic logic and logical systems. This sense of rigor and precision was precisely what I was craving intellectually at the time. I knew that it would be the best possible training, no matter what I was going to do with my life later.</fr:p>
                    <fr:p>During my undergraduate I had one particularly influential professor, Greg Connor, who let me take topology courses early and who encouraged me to become a research mathematician. I'd known since my early 20's that I wanted to do a PhD, and by the end of my undergraduate mathematics was the clear option.</fr:p>
                    <fr:p>Another professor, Ben Webb, took me on as a research assistant and we did some research in linear algebra and graph theory. It culminated in a paper and was my first taste of research, something I knew was deeply appealing to me.</fr:p>
                  </fr:mainmatter>
                  <fr:backmatter />
                </fr:tree>
                <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                  <fr:frontmatter>
                    <fr:anchor>614</fr:anchor>
                    <fr:addr type="user">dhsorens-000I</fr:addr>
                    <fr:route>dhsorens-000I.xml</fr:route>
                    <fr:title text="Year in Moscow">Year in Moscow</fr:title>
                    <fr:date>
                      <fr:year>2025</fr:year>
                      <fr:month>6</fr:month>
                      <fr:day>15</fr:day>
                    </fr:date>
                    <fr:authors>
                      <fr:author>
                        <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                      </fr:author>
                    </fr:authors>
                    <fr:meta name="toc">true</fr:meta>
                  </fr:frontmatter>
                  <fr:mainmatter>
                    <fr:p>I spent my final year as an undergraduate in <fr:link type="local" href="dhsorens-moscow.xml" addr="dhsorens-moscow" title="Moscow">Moscow</fr:link>, studying mathematics at the <fr:link type="local" href="dhsorens-000F.xml" addr="dhsorens-000F" title="Independent University of Moscow">Independent University of Moscow</fr:link> and the <fr:link type="local" href="dhsorens-000G.xml" addr="dhsorens-000G" title="Higher School of Economics">Higher School of Economics</fr:link> as part of the Math in Moscow program.
    During that time, I learned Russian by teaching kids at church, taking courses, and spending time with as many Russians as I could.</fr:p>
                    <fr:p>The Russians are very intense mathematically. The courses met once a week for three hours each, with a five minute tea break in the middle. They called it the "Russian brainstorm." While my undergraduate education was of very high quality (no complaints really), this was at another level and I was forced to be much more independent mathematically.</fr:p>
                    <fr:p>I had one professor in particular, Alexei Gorinov, who was educated in the French tradition and taught topology exceptionally well. He built off the interest in topology cultivated during my undergraduate. His problem sets in particular were exceptional, and I still keep the links for his <fr:link type="external" href="https://topology1hsemim201516.wordpress.com">Toplogy I</fr:link> and <fr:link type="external" href="https://topology2hsemim201516.wordpress.com">Topology II</fr:link> courses on hand. Gorinov's courses have left a lasting impact on me. If I were to become a professor at any point, I would endeavor to teach courses like he did.</fr:p>
                    <fr:p>During this time, I also got into <fr:link type="local" href="dhsorens-0007.xml" addr="dhsorens-0007" title="Category Theory">category theory</fr:link> by reading Awodey's <fr:link type="external" href="https://github.com/geelon/type-theory/blob/master/awodey-category-theory.pdf">Category Theory</fr:link> on my own. The courses, and my independent study, prepared me for my <fr:link type="local" href="dhsorens-msc.xml" addr="dhsorens-msc" title="MSc in Algebraic Topology">masters degree</fr:link> the following year, in which I continued to pursue algebraic topology.</fr:p>
                  </fr:mainmatter>
                  <fr:backmatter />
                </fr:tree>
                <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                  <fr:frontmatter>
                    <fr:anchor>616</fr:anchor>
                    <fr:addr type="user">dhsorens-msc</fr:addr>
                    <fr:route>dhsorens-msc.xml</fr:route>
                    <fr:title text="MSc in Algebraic Topology">MSc in Algebraic Topology</fr:title>
                    <fr:date>
                      <fr:year>2025</fr:year>
                      <fr:month>6</fr:month>
                      <fr:day>12</fr:day>
                    </fr:date>
                    <fr:authors>
                      <fr:author>
                        <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                      </fr:author>
                    </fr:authors>
                    <fr:meta name="toc">true</fr:meta>
                  </fr:frontmatter>
                  <fr:mainmatter>
                    <fr:p>I did my <fr:link type="local" href="dhsorens-msc.xml" addr="dhsorens-msc" title="MSc in Algebraic Topology">MSc</fr:link> during the 2016-2017 academic year at <fr:link type="local" href="dhsorens-spc.xml" addr="dhsorens-spc" title="St. Peter's College, University of Oxford">St Peter's College</fr:link>, <fr:link type="local" href="dhsorens-oxf.xml" addr="dhsorens-oxf" title="University of Oxford">Oxford</fr:link>. The course spanned through areas of pure mathematics and theoretical computer science. I focused mostly on algebraic topology, homotopy theory, homological algebra, and category theory. Chris Douglas and Andre Henriques were two standout professors to whom I am very grateful.</fr:p>
                    <fr:p>My <fr:link type="external" href="docs/sorensen-msc-dissertation.pdf">MSc dissertation</fr:link> was essentially commentary on one of Oscar Randal-Williams' papers on <fr:em>tautological rings</fr:em> on the connected sums of n-dimensional tauri. It deals with spectral sequences (in particular the Serre spectral sequence) and characteristic classes, among other things. The paper in question proved a result for odd-dimensional spheres, and my masters dissertation was an exploration on why the proof failed to generalize to the even-dimensional case.</fr:p>
                    <fr:p>I have my dissertation <fr:link type="external" href="docs/sorensen-msc-dissertation.pdf">here</fr:link>, but the dissertation included introductory appendices to various useful topics, which I have separated into their individual notes below.</fr:p>
                    <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                      <fr:frontmatter>
                        <fr:anchor>579</fr:anchor>
                        <fr:addr type="user">dhsorens-000T</fr:addr>
                        <fr:route>dhsorens-000T.xml</fr:route>
                        <fr:title text="Some Notes in Algebraic Topology">Some Notes in Algebraic Topology</fr:title>
                        <fr:date>
                          <fr:year>2025</fr:year>
                          <fr:month>8</fr:month>
                          <fr:day>29</fr:day>
                        </fr:date>
                        <fr:authors>
                          <fr:author>
                            <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                          </fr:author>
                        </fr:authors>
                        <fr:meta name="toc">true</fr:meta>
                      </fr:frontmatter>
                      <fr:mainmatter>
                        <fr:ul><fr:li><fr:link type="external" href="docs/sorensen-fiber-bundles.pdf">An introduction to fiber bundles.</fr:link></fr:li>
    <fr:li><fr:link type="external" href="docs/sorensen-principal-bundles.pdf">An introduction to principal bundles.</fr:link></fr:li>
    <fr:li><fr:link type="external" href="docs/sorensen-characteristic-classes.pdf">An introduction to characteristic classes.</fr:link></fr:li>
    <fr:li><fr:link type="external" href="docs/sorensen-local-coefficients.pdf">An introduction to systems of local (twisted) coefficients.</fr:link></fr:li>
    <fr:li><fr:link type="external" href="docs/sorensen-homotopy-groups-spheres.pdf">Homotopy groups of spheres.</fr:link></fr:li>
    <fr:li><fr:link type="external" href="docs/sorensen-algebraic-k-theory.pdf">Introduction to Algebraic K-theory.</fr:link></fr:li>
    <fr:li><fr:link type="external" href="docs/sorensen-serre-spectral-sequence.pdf">Introduction to the Serre Spectral Sequence.</fr:link></fr:li>
    <fr:li><fr:link type="external" href="docs/sorensen-classification-vector-bundles.pdf">Classification of vector bundles over the projective line.</fr:link></fr:li>
    <fr:li><fr:link type="external" href="docs/sorensen-stability-theorems-persistent.pdf">Stability theorems for persistent homology.</fr:link></fr:li></fr:ul>
                      </fr:mainmatter>
                      <fr:backmatter />
                    </fr:tree>
                  </fr:mainmatter>
                  <fr:backmatter />
                </fr:tree>
                <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                  <fr:frontmatter>
                    <fr:anchor>618</fr:anchor>
                    <fr:addr type="user">dhsorens-phd</fr:addr>
                    <fr:route>dhsorens-phd.xml</fr:route>
                    <fr:title text="PhD in Formal Methods">PhD in Formal Methods</fr:title>
                    <fr:date>
                      <fr:year>2025</fr:year>
                      <fr:month>6</fr:month>
                      <fr:day>13</fr:day>
                    </fr:date>
                    <fr:authors>
                      <fr:author>
                        <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                      </fr:author>
                    </fr:authors>
                    <fr:meta name="toc">true</fr:meta>
                  </fr:frontmatter>
                  <fr:mainmatter>
                    <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                      <fr:frontmatter>
                        <fr:anchor>424</fr:anchor>
                        <fr:addr type="user">dhsorens-000C</fr:addr>
                        <fr:route>dhsorens-000C.xml</fr:route>
                        <fr:title text="Links and Referencing my PhD Thesis">Links and Referencing my PhD Thesis</fr:title>
                        <fr:date>
                          <fr:year>2025</fr:year>
                          <fr:month>6</fr:month>
                          <fr:day>15</fr:day>
                        </fr:date>
                        <fr:authors>
                          <fr:author>
                            <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                          </fr:author>
                        </fr:authors>
                        <fr:meta name="toc">true</fr:meta>
                      </fr:frontmatter>
                      <fr:mainmatter>
                        <fr:p>Here is my <fr:link type="external" href="docs/sorensen-phd-thesis.pdf">PhD thesis</fr:link> and the associated <fr:link type="external" href="https://github.com/dhsorens/FinCert">GitHub repo</fr:link>. More information (including citation instructions) can be found using its DOI: <fr:link type="external" href="https://doi.org/10.17863/cam.118487">10.17863/CAM.118487</fr:link>.</fr:p>
                      </fr:mainmatter>
                      <fr:backmatter />
                    </fr:tree>
                    <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                      <fr:frontmatter>
                        <fr:anchor>426</fr:anchor>
                        <fr:addr type="user">dhsorens-0009</fr:addr>
                        <fr:route>dhsorens-0009.xml</fr:route>
                        <fr:title text="The Background to my PhD Thesis">The Background to my PhD Thesis</fr:title>
                        <fr:date>
                          <fr:year>2025</fr:year>
                          <fr:month>6</fr:month>
                          <fr:day>15</fr:day>
                        </fr:date>
                        <fr:authors>
                          <fr:author>
                            <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                          </fr:author>
                        </fr:authors>
                        <fr:meta name="toc">true</fr:meta>
                      </fr:frontmatter>
                      <fr:mainmatter>
                        <fr:p>From October 2019 until December 2023, I was a PhD student at the <fr:link type="local" href="dhsorens-cam.xml" addr="dhsorens-cam" title="University of Cambridge">University of Cambridge</fr:link>. I started my PhD trying to look at the Adam's Spectral Sequence in <fr:link type="local" href="dhsorens-hott.xml" addr="dhsorens-hott" title="Homotopy Type Theory (HoTT)">HoTT</fr:link> (ambitious, by what I'm given to understand), but life and covid lockdowns happened. I ended up pivoting into interactive theorem proving, thinking about financial smart contracts and their specifications.</fr:p>
                        <fr:p>The main question that haunted me during my PhD was this: We can prove software correct with regards to a specification, but how does one know that a <fr:em>specification</fr:em> is correct? What could a notion of "correctness" even look like for software specifications?</fr:p>
                        <fr:p>What followed was a prolonged meditation on the nature of the process of going from ideas and intuition into concrete implementation. My research was mostly an exploration on the formal tools used to write formal specifications. I was particularly fascinated by the use of interactive theorem provers (ITPs)—<fr:link type="local" href="dhsorens-rocq.xml" addr="dhsorens-rocq" title="The Rocq Theorem Prover">Rocq</fr:link>, <fr:link type="local" href="dhsorens-lean.xml" addr="dhsorens-lean" title="The Lean Theorem Prover">Lean</fr:link>, <fr:link type="local" href="dhsorens-0006.xml" addr="dhsorens-0006" title="Isabelle/HOL">Isabelle/HOL</fr:link> and the like—to specify smart contracts because of their extreme flexibility and versatility. You can state and prove <fr:em>anything</fr:em> in these, which can be thrilling but also provides a huge amount of flexibility.</fr:p>
                        <fr:p>At the same time, the formalization of mathematics (in <fr:link type="local" href="dhsorens-lean.xml" addr="dhsorens-lean" title="The Lean Theorem Prover">Lean</fr:link>) was <fr:link type="local" href="dhsorens-0017.xml" addr="dhsorens-0017" title="How the Formalization of Mathematics Relates to My Work">beginning to catch my attention</fr:link>. The computer lab at the time had a weekly seminar on the formalization of mathematics, which I could attend when it didn't conflict with my commitments with <fr:link type="local" href="dhsorens-cccc.xml" addr="dhsorens-cccc" title="Choir of Clare College">Clare choir</fr:link>. While I knew I was not interested in actually doing the formalization myself, I was unquestionably drawn into the research of those that were—in particular, the observations they made about the intricacies of going from pen-and-paper proofs to formal proofs.</fr:p>
                        <fr:p>Mathematicians were finding small, nuanced, and implicit assumptions made and expressed intuitively through notation and definitions that all mathematicians seemed to understand and get, but that had to be both discovered and made explicit during the process of formalization. I really started to learn the role of intuition that a mathematician undergoes when they codify a new mathematical concept into a formal definition—both in the realm of pen-and-paper mathematics as well as in the realm of formal proof.</fr:p>
                        <fr:p>It was during this time that I started to experiment with formal definitions and structures that are common to mathematics, and highly useful for mathematical definitions, for the specification and verification of smart contracts. The structures and definitions I chose, mostly from very basic <fr:link type="local" href="dhsorens-0007.xml" addr="dhsorens-0007" title="Category Theory">category theory</fr:link>, play a heavy role in modern theories of computation and programming languages but do not feature in specifications themselves (<fr:em>e.g.</fr:em> from a behavioral perspective).</fr:p>
                      </fr:mainmatter>
                      <fr:backmatter />
                    </fr:tree>
                    <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                      <fr:frontmatter>
                        <fr:anchor>428</fr:anchor>
                        <fr:addr type="user">dhsorens-000A</fr:addr>
                        <fr:route>dhsorens-000A.xml</fr:route>
                        <fr:title text="The Main Contributions of my PhD Thesis">The Main Contributions of my PhD Thesis</fr:title>
                        <fr:date>
                          <fr:year>2025</fr:year>
                          <fr:month>6</fr:month>
                          <fr:day>15</fr:day>
                        </fr:date>
                        <fr:authors>
                          <fr:author>
                            <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                          </fr:author>
                        </fr:authors>
                        <fr:meta name="toc">true</fr:meta>
                      </fr:frontmatter>
                      <fr:mainmatter>
                        <fr:p>My <fr:link type="external" href="docs/sorensen-phd-thesis.pdf">PhD thesis</fr:link> proposes two different ways of handling the problem of a specification's <fr:em>correctness</fr:em>.
    Both draw heavily on the theoretically robust nature of <fr:link type="local" href="dhsorens-000B.xml" addr="dhsorens-000B" title="Interactive Theorem Provers">proof assistants</fr:link>.</fr:p>
                        <fr:p>The first is through what I would informally call the "meta work," where the specification itself is treated like a mathematical object to study and prove correctness, like the software we're trying to prove correct. This uses prose and specification to articulate desired behaviors of a smart contract that are already easy to define, <fr:em>e.g.</fr:em> desirable economic or game-theoretic properties.</fr:p>
                        <fr:p>The second is through the use of abstract tools that approximate the desired behavior.
    My first motivating example is that of a smart contract upgrade.
    When upgrading any software, intuitively we understand an updated version as incrementally different from a previous version—we're adding feature X, Y, and Z, fixing bugs, removing outdated functionality. 
    All of this frames conversation and understanding of the new software in terms of the old.
    Why not then apply that to the formal specification?</fr:p>
                        <fr:p>I introduced the notion of a <fr:em>contract morphism</fr:em>, or a formal structural relationship between two contracts that could be used in specification. The term "morphism" is <fr:link type="local" href="dhsorens-0007.xml" addr="dhsorens-0007" title="Category Theory">category-theoretic</fr:link>, and is a general mathematical way of establishing a relationship between two objects.
    Once this formal relationship is established, proofs of one contract can be transported over that relationship to another contract.
    If the morphism is <fr:em>invertible</fr:em>, then the formal relationship establishes an equivalence of contracts, which could be useful <fr:em>e.g.</fr:em> for proving optimized code correct with regards to a reference implementation.
    The morphism allows one to use a <fr:em>contract</fr:em> as a specification, something which can be far more intuitive than using prose.</fr:p>
                        <fr:p>All of this is encapsulated fairly well in <fr:link type="external" href="slides/spec-correct.pdf">the slides of this talk</fr:link>.</fr:p>
                      </fr:mainmatter>
                      <fr:backmatter />
                    </fr:tree>
                    <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                      <fr:frontmatter>
                        <fr:anchor>430</fr:anchor>
                        <fr:addr type="user">dhsorens-0008</fr:addr>
                        <fr:route>dhsorens-0008.xml</fr:route>
                        <fr:title text="The Papers of My PhD Thesis">The Papers of My PhD Thesis</fr:title>
                        <fr:date>
                          <fr:year>2025</fr:year>
                          <fr:month>6</fr:month>
                          <fr:day>15</fr:day>
                        </fr:date>
                        <fr:authors>
                          <fr:author>
                            <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                          </fr:author>
                        </fr:authors>
                        <fr:meta name="toc">true</fr:meta>
                      </fr:frontmatter>
                      <fr:mainmatter>
                        <fr:p>
                          <fr:ul><fr:li>Sorensen, D. <fr:em>Formally Specifying Contract Optimizations With Bisimulations in Coq</fr:em>. FMBC (ETAPS) (2025). [<fr:link type="local" href="dhsorens-000J.xml" addr="dhsorens-000J" title="Formally Specifying Contract Optimizations With Bisimulations in Coq">link</fr:link>]</fr:li>

        
    <fr:li>Sorensen, D. <fr:em>Towards Formally Specifying and Verifying Smart Contract Upgrades in Coq</fr:em>. FMBC (ETAPS) (2024). [<fr:link type="local" href="dhsorens-000K.xml" addr="dhsorens-000K" title="Towards Formally Specifying and Verifying Smart Contract Upgrades in Coq">link</fr:link>]</fr:li>

        
    <fr:li>Sorensen, D. <fr:em>(In)Correct Smart Contract Specifications</fr:em>. ICBC (2024). [<fr:link type="local" href="dhsorens-000L.xml" addr="dhsorens-000L" title="(In)Correct Smart Contract Specifications">link</fr:link>]</fr:li>

        
    <fr:li>Sorensen, D. <fr:em>Tokenized Carbon Credits</fr:em>. Ledger (2023). [<fr:link type="local" href="dhsorens-000N.xml" addr="dhsorens-000N" title="Tokenized Carbon Credits">link</fr:link>]</fr:li>

        
    <fr:li>Sorensen, D. <fr:em>Structured Pools for Tokenized Carbon Credits</fr:em>. ICBC CryptoEx (2023). [<fr:link type="local" href="dhsorens-000O.xml" addr="dhsorens-000O" title="Structured Pools for Tokenized Carbon Credits">link</fr:link>]</fr:li></fr:ul>
                        </fr:p>
                      </fr:mainmatter>
                      <fr:backmatter />
                    </fr:tree>
                  </fr:mainmatter>
                  <fr:backmatter />
                </fr:tree>
              </fr:mainmatter>
              <fr:backmatter />
            </fr:tree>
            <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
              <fr:frontmatter>
                <fr:anchor>620</fr:anchor>
                <fr:addr type="user">dhsorens-001C</fr:addr>
                <fr:route>dhsorens-001C.xml</fr:route>
                <fr:title text="Work Bio">Work Bio</fr:title>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>9</fr:month>
                  <fr:day>3</fr:day>
                </fr:date>
                <fr:authors>
                  <fr:author>
                    <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:meta name="toc">true</fr:meta>
              </fr:frontmatter>
              <fr:mainmatter>
                <fr:p>For a summary of my work experience, see my <fr:link type="external" href="docs/sorensen-cv.pdf">CV</fr:link> (updated 11/2025).</fr:p>
                <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                  <fr:frontmatter>
                    <fr:anchor>585</fr:anchor>
                    <fr:addr type="user">dhsorens-0018</fr:addr>
                    <fr:route>dhsorens-0018.xml</fr:route>
                    <fr:title text="Summary of Work and Projects">Summary of Work and Projects</fr:title>
                    <fr:date>
                      <fr:year>2025</fr:year>
                      <fr:month>9</fr:month>
                      <fr:day>3</fr:day>
                    </fr:date>
                    <fr:authors>
                      <fr:author>
                        <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                      </fr:author>
                    </fr:authors>
                    <fr:meta name="toc">true</fr:meta>
                  </fr:frontmatter>
                  <fr:mainmatter>
                    <fr:p>Since early 2018 I have held various roles in crypto, working mostly in research and <fr:link type="local" href="dhsorens-000X.xml" addr="dhsorens-000X" title="Formal Specification and Verification">formal verification</fr:link>.
    My original interests in crypto were in consensus algorithms and formal verification frameworks for verifying smart contracts. When I started, those frameworks and tools were in their infancy, <fr:link type="local" href="dhsorens-001D.xml" addr="dhsorens-001D" title="The K Framework">K Framework</fr:link> being the only tool at the time to my knowledge that was production-ready for actual smart contracts.

    Over time, I became interested in the financial applications of <fr:link type="local" href="dhsorens-000Y.xml" addr="dhsorens-000Y" title="Smart Contracts">smart contracts</fr:link> and I did my <fr:link type="local" href="dhsorens-phd.xml" addr="dhsorens-phd" title="PhD in Formal Methods">PhD</fr:link> in verification strategies for financial <fr:link type="local" href="dhsorens-000W.xml" addr="dhsorens-000W" title="Smart Contract Design, Specification, and Verification">smart contracts</fr:link>.

    Along the way, I became deeply interested in type theory and <fr:link type="local" href="dhsorens-000B.xml" addr="dhsorens-000B" title="Interactive Theorem Provers">proof assistants</fr:link>, and these days am interested broadly in theorem-proving, <fr:link type="local" href="dhsorens-notes.xml" addr="dhsorens-notes" title="Notes">whether applied to software or formalized maths</fr:link>.

    In my day-to-day, I still do a lot of work in the design, construction, and formal verification of smart contracts.</fr:p>
                    <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                      <fr:frontmatter>
                        <fr:anchor>376</fr:anchor>
                        <fr:addr type="user">dhsorens-0019</fr:addr>
                        <fr:route>dhsorens-0019.xml</fr:route>
                        <fr:title text="Pre-PhD (2017-2019)">Pre-PhD (2017-2019)</fr:title>
                        <fr:date>
                          <fr:year>2025</fr:year>
                          <fr:month>9</fr:month>
                          <fr:day>3</fr:day>
                        </fr:date>
                        <fr:authors>
                          <fr:author>
                            <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                          </fr:author>
                        </fr:authors>
                      </fr:frontmatter>
                      <fr:mainmatter>
                        <fr:p>I started working in crypto during the two years between my <fr:link type="local" href="dhsorens-msc.xml" addr="dhsorens-msc" title="MSc in Algebraic Topology">MSc</fr:link> and my <fr:link type="local" href="dhsorens-phd.xml" addr="dhsorens-phd" title="PhD in Formal Methods">PhD</fr:link>.
    My first job was at a small, Utah-based crypto startup called Pyrofex, which was mostly providing consulting services to the <fr:link type="external" href="https://github.com/dhsorens/rchain">RChain co-op</fr:link> at the time.
    I was tasked with <fr:link type="external" href="https://github.com/dhsorens/rholang">building the formal semantics for rholang</fr:link>, the smart contracting language on RChain, in <fr:link type="local" href="dhsorens-001D.xml" addr="dhsorens-001D" title="The K Framework">K Framework</fr:link> in order to formally verify rholang contracts down the line.</fr:p>
                        <fr:p>RChain, famously, encountered sudden and urgent financial problems because of a questionable set of decisions from the co-op's president, Greg Meredith, which necessitated a split between RChain and Pyrofex.
    We then pivoted to consensus-level research, designed our own layer-one blockchain and <fr:link type="external" href="docs/Casanova.pdf">consensus protocol</fr:link>.</fr:p>
                        <fr:p>Sadly, we ran out of money, and I had to look for a new job for the few months before my PhD started.
    I took a short internship with Digital Asset, working in Zurich and New York, and <fr:link type="external" href="docs/cantoncoin.pdf">implementing an experimental currency</fr:link> on their blockchain-esque project Canton.</fr:p>
                      </fr:mainmatter>
                      <fr:backmatter />
                    </fr:tree>
                    <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                      <fr:frontmatter>
                        <fr:anchor>378</fr:anchor>
                        <fr:addr type="user">dhsorens-001A</fr:addr>
                        <fr:route>dhsorens-001A.xml</fr:route>
                        <fr:title text="During the PhD (2019-2023)">During the PhD (2019-2023)</fr:title>
                        <fr:date>
                          <fr:year>2025</fr:year>
                          <fr:month>9</fr:month>
                          <fr:day>3</fr:day>
                        </fr:date>
                        <fr:authors>
                          <fr:author>
                            <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                          </fr:author>
                        </fr:authors>
                      </fr:frontmatter>
                      <fr:mainmatter>
                        <fr:p>During my <fr:link type="local" href="dhsorens-phd.xml" addr="dhsorens-phd" title="PhD in Formal Methods">PhD</fr:link>, I took several part-time jobs with various crypto startups.
    My work ranged from research and formal verification, to DeFi protocol modeling and design, to zero-knowledge proofs, to business development.
    Each of my jobs during the PhD informed my research and helped to broaden and sharpen my thinking.
    I took the last year of my PhD to focus fully on writing up and submitting.</fr:p>
                      </fr:mainmatter>
                      <fr:backmatter />
                    </fr:tree>
                    <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                      <fr:frontmatter>
                        <fr:anchor>380</fr:anchor>
                        <fr:addr type="user">dhsorens-001B</fr:addr>
                        <fr:route>dhsorens-001B.xml</fr:route>
                        <fr:title text="Post PhD (2024 - 2025)">Post PhD (2024 - 2025)</fr:title>
                        <fr:date>
                          <fr:year>2025</fr:year>
                          <fr:month>9</fr:month>
                          <fr:day>3</fr:day>
                        </fr:date>
                        <fr:authors>
                          <fr:author>
                            <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                          </fr:author>
                        </fr:authors>
                      </fr:frontmatter>
                      <fr:mainmatter>
                        <fr:p>Since my PhD has ended, I went through a process of unifying my various interests in people, proofs, smart contracts, digital money, and zero-knowledge proofs.
    I took a job with <fr:link type="local" href="dhsorens-001Z.xml" addr="dhsorens-001Z" title="Certora">Certora</fr:link> straight out of my PhD, doing a mix of formally verifying smart contracts and project managmenet/business development/product development/client support.
    Ultimately, it became clear that <fr:link type="local" href="dhsorens-001Z.xml" addr="dhsorens-001Z" title="Certora">Certora</fr:link> was not the place that I was going to do my best work, so early 2025 we parted ways.</fr:p>
                        <fr:p>I then took some temporary contract work over the summer of 2025 building, designing, and verifying DeFi protocols (my specific area of expertise) while I looked for something that I can truly sink my teeth into and that would define the next period of my career.</fr:p>
                      </fr:mainmatter>
                      <fr:backmatter />
                    </fr:tree>
                    <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                      <fr:frontmatter>
                        <fr:anchor>382</fr:anchor>
                        <fr:addr type="user">dhsorens-001E</fr:addr>
                        <fr:route>dhsorens-001E.xml</fr:route>
                        <fr:title text="Ethereum Foundation (2025 - Present)">Ethereum Foundation (2025 - Present)</fr:title>
                        <fr:date>
                          <fr:year>2025</fr:year>
                          <fr:month>11</fr:month>
                          <fr:day>22</fr:day>
                        </fr:date>
                        <fr:authors>
                          <fr:author>
                            <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                          </fr:author>
                        </fr:authors>
                      </fr:frontmatter>
                      <fr:mainmatter>
                        <fr:p>As of November 2025 I joined the Ethereum Foundation, working on <fr:link type="local" href="dhsorens-0020.xml" addr="dhsorens-0020" title="Protocol Snarkification">Protocol Snarkification</fr:link>. This mostly consists of formally specifying and verifying ZK primitives in <fr:link type="local" href="dhsorens-lean.xml" addr="dhsorens-lean" title="The Lean Theorem Prover">Lean</fr:link>.</fr:p>
                        <fr:p><fr:em>Last updated January 2026</fr:em>. For more updates, see <fr:link type="local" href="dhsorens-logs.xml" addr="dhsorens-logs" title="Logs">my logs</fr:link>.</fr:p>
                      </fr:mainmatter>
                      <fr:backmatter />
                    </fr:tree>
                  </fr:mainmatter>
                  <fr:backmatter />
                </fr:tree>
              </fr:mainmatter>
              <fr:backmatter />
            </fr:tree>
          </fr:mainmatter>
          <fr:backmatter />
        </fr:tree>
        <fr:tree toc="true" numbered="false" show-heading="true" show-metadata="true" expanded="false" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
          <fr:frontmatter>
            <fr:anchor>1281</fr:anchor>
            <fr:addr type="user">dhsorens-logs</fr:addr>
            <fr:route>dhsorens-logs.xml</fr:route>
            <fr:title text="Logs">Logs</fr:title>
            <fr:authors>
              <fr:author>
                <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
              </fr:author>
            </fr:authors>
            <fr:meta name="toc">true</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
              <fr:frontmatter>
                <fr:anchor>251</fr:anchor>
                <fr:addr type="user">dhsorens-002B</fr:addr>
                <fr:route>dhsorens-002B.xml</fr:route>
                <fr:title text="Q2 2026">Q2 2026</fr:title>
                <fr:taxon>Log</fr:taxon>
                <fr:date>
                  <fr:year>2026</fr:year>
                  <fr:month>5</fr:month>
                  <fr:day>10</fr:day>
                </fr:date>
                <fr:authors>
                  <fr:author>
                    <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                  </fr:author>
                </fr:authors>
              </fr:frontmatter>
              <fr:mainmatter>
                <fr:p>We have spent the last few months travelling. I'm writing this in May 2026 from Rome.
    The most recent two trips were Cannes (for EthCC) and Paris (for SViL26). SViL26 was one of the most productive trips yet, only rivaled by HACS. We are now at a point where we can feasibly extract Plonky3 from Rust into Lean and formally prove things!</fr:p>
                <fr:p>In my talk today at zkproofs8, I showed a minimal example of formally verifying Koalabear in Plonky3, in Lean. We're making fast progress on CompPoly, Arklib, and now with the tooling where it's at it looks like it's time to start to marry them and actually formally verifying real code in Lean!</fr:p>
                <fr:p>Once I'm back from Rome, I will basically be full-time on this problem. This is good for me because I have so far avoided learning <fr:em>too much</fr:em> about cryptography, and now that I'll be staring at the implementations in Rust as well as the formal specs, it will be hard to avoid actually understanding things. I'm hoping that this process will stimulate Arklib into grater maturity, starting with CompPoly;
    I'm also hoping that the tooling will get a lot better (with my help) through this project. This will be the main thing this summer, hoping that by the end of the summer we have serious formal proofs of Plonky3!</fr:p>
              </fr:mainmatter>
              <fr:backmatter />
            </fr:tree>
            <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
              <fr:frontmatter>
                <fr:anchor>253</fr:anchor>
                <fr:addr type="user">dhsorens-0026</fr:addr>
                <fr:route>dhsorens-0026.xml</fr:route>
                <fr:title text="Q1 2026">Q1 2026</fr:title>
                <fr:taxon>Log</fr:taxon>
                <fr:date>
                  <fr:year>2026</fr:year>
                  <fr:month>3</fr:month>
                  <fr:day>24</fr:day>
                </fr:date>
                <fr:authors />
              </fr:frontmatter>
              <fr:mainmatter>
                <fr:p>This has been a productive quarter. In early January we gave grants to Runtime Verification to test Hax for extracting code into Lean. They were successful in improving the tool, landing pull requests, and developing some good examples of (toy versions of) Rust programs of interest. Collaborating with them on this helped us see shortcomings in the Arklib specs and get a more realistic idea of what Rust verification could look like for us. Happily, our CompPoly specs did come in useful and they were able to verify some small Rust snippets against them.</fr:p>
                <fr:p>We settled on a roadmap for CompPoly in January, and while I and collaborators took CompPoly Phase 1 to the finish line, we put out a call for grants for Phase 2 of CompPoly. We got a lot of grant applications, and have just sent emails awarding grants for *all* of Phase 2. That should be done by the summer.</fr:p>
                <fr:p>We attended HACS and RWC26 in Taipei in early March, which was extremely productive. I learned a lot about Hax and Aeneas, verified compilers, and cryptography in general. Got strong insights for the upcoming work, and had a chance to evangelize our work on CompPoly. Bolton Bailey and I had a great conversation about the (many many) applications of computable polynomials in Lean. I hope that we can upstream CompPoly to CSLib and have many people using and maintaining it.</fr:p>
                <fr:p>Accomplishments:
    <fr:ul><fr:li>CompPoly roadmap established and merged <fr:link type="external" href="https://github.com/Verified-zkEVM/CompPoly/pull/16">in this pull request</fr:link></fr:li>
        <fr:li>Contributed a lot to CompPoly, established style guides and standards for contribution, integrated into CI, and built out a lot more theory with the help of collaborators, old and new.</fr:li>
        <fr:li>CompPoly Phase 1 of the Roadmap completed - see the <fr:link type="external" href="https://leanprover.zulipchat.com/#narrow/channel/523410-ArkLib/topic/CompPoly.20Phase.201.20Status/with/578352136">Zulip announcement</fr:link></fr:li>
        <fr:li>We have some basic examples of extraction from Rust to Lean (thank you RV) that we can hopefully build on.</fr:li></fr:ul>

    Events:
    <fr:ul><fr:li>Giving two talks at EthCC[9], one (maybe two?) with Alex Hicks and one on my own.</fr:li>
        <fr:li>Invited to give a talk at SViL26 with Leo de Moura, Son Ho, and Karthikeyan Bhargavan in April.</fr:li></fr:ul>

    Next: I am responsible to see CompPoly make it through Phase 2 by the summer, though I will likely not be doing as much coding on it. Instead, I'll take a coordinating role and make sure the codebase fits together well and that the incoming code is high quality. We will likely have 8-10 contributors for Phase 2, which is exciting! This will be serious progress. We continue to integrate AI into our pipelines, successfully. I am currently looking for another chunk of technical work to do while I manage the CompPoly stuff, possibly contributing to <fr:link type="external" href="https://github.com/zksecurity/evm-asm">evm-asm</fr:link>.</fr:p>
              </fr:mainmatter>
              <fr:backmatter />
            </fr:tree>
            <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
              <fr:frontmatter>
                <fr:anchor>254</fr:anchor>
                <fr:addr type="user">dhsorens-0021</fr:addr>
                <fr:route>dhsorens-0021.xml</fr:route>
                <fr:title text="November/December 2025">November/December 2025</fr:title>
                <fr:taxon>Log</fr:taxon>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>12</fr:month>
                  <fr:day>18</fr:day>
                </fr:date>
                <fr:authors />
              </fr:frontmatter>
              <fr:mainmatter>
                <fr:p>I joined the <fr:link type="local" href="dhsorens-ef.xml" addr="dhsorens-ef" title="Ethereum Foundation">EF</fr:link> in November 2025 with a week at Devconnect.
    My first projects will focus on stress-testing formal verification tools, including <fr:link type="external" href="http://hax.cryspen.com">Hax</fr:link> and <fr:link type="external" href="https://github.com/Verified-zkEVM/ArkLib/">Arklib</fr:link> to start.</fr:p>
              </fr:mainmatter>
              <fr:backmatter />
            </fr:tree>
          </fr:mainmatter>
          <fr:backmatter />
        </fr:tree>
        <fr:tree toc="true" numbered="false" show-heading="true" show-metadata="true" expanded="false" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
          <fr:frontmatter>
            <fr:anchor>1283</fr:anchor>
            <fr:addr type="user">dhsorens-notes</fr:addr>
            <fr:route>dhsorens-notes.xml</fr:route>
            <fr:title text="Notes">Notes</fr:title>
            <fr:authors>
              <fr:author>
                <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
              </fr:author>
            </fr:authors>
            <fr:meta name="toc">true</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <fr:p>I am interested, broadly speaking, in formal proposition and proof.
    From a high level, what tends to catch my attention is the nuance of going from an intuitive, abstract idea into something formal—whether it's a formal specification of a program, a formalized theorem statement, or even something simply written out as a program.</fr:p>
            <fr:p>During my PhD this manifested as written work focused on the problem of (correctly) specifying and formally verifying <fr:link type="local" href="dhsorens-000A.xml" addr="dhsorens-000A" title="The Main Contributions of my PhD Thesis">financial smart contracts</fr:link>.
    But I continue to be interested in <fr:link type="local" href="dhsorens-0015.xml" addr="dhsorens-0015" title="Formal Verification in Proof Assistants">software verification more broadly</fr:link>, the ongoing work to <fr:link type="local" href="dhsorens-000Z.xml" addr="dhsorens-000Z" title="Formalization of Mathematics">formalize mathematics</fr:link>, and other developments in using <fr:link type="local" href="dhsorens-000B.xml" addr="dhsorens-000B" title="Interactive Theorem Provers">proof assistants</fr:link> in production.</fr:p>
            <fr:p>I recently started work on formally verifying <fr:link type="local" href="dhsorens-0020.xml" addr="dhsorens-0020" title="Protocol Snarkification">all things zero-knowledge</fr:link> on the Ethereum protocol, so my interests are broadening but are still rooted in the same topics.</fr:p>
            <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
              <fr:frontmatter>
                <fr:anchor>279</fr:anchor>
                <fr:addr type="user">dhsorens-0027</fr:addr>
                <fr:route>dhsorens-0027.xml</fr:route>
                <fr:title text="LC3 in Lean">LC3 in Lean</fr:title>
                <fr:taxon>Blog</fr:taxon>
                <fr:date>
                  <fr:year>2026</fr:year>
                  <fr:month>3</fr:month>
                  <fr:day>27</fr:day>
                </fr:date>
                <fr:authors>
                  <fr:author>
                    <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                  </fr:author>
                </fr:authors>
              </fr:frontmatter>
              <fr:mainmatter>
                <fr:p>I recently implemented a <fr:link type="external" href="https://github.com/dhsorens/LC3-Lean">formally verified virtual machine in Lean</fr:link> on which you can run 2048 in terminal! Try it out!</fr:p>
                <fr:em>ISA-level model</fr:em>
                <fr:p>The LC-3 is a small 16-bit instructional architecture: eight general-purpose registers, a program counter, condition flags, and a <fr:tex display="inline"><![CDATA[2^{16}]]></fr:tex>-word address space.
At each step the machine fetches a word from memory at the PC, decodes it as one of <fr:strong>fourteen</fr:strong> opcodes (from arithmetic and bitwise operations to loads, stores, branches, jumps, and subroutine calls), then updates registers, memory, and control flow accordingly.
Beyond those opcodes, LC-3 programs rely on <fr:em>trap</fr:em> routines for console I/O and on <fr:em>memory-mapped I/O</fr:em> for the keyboard—so a faithful simulator must implement both the core instructions and this I/O story. For more on the architecture, <fr:link type="external" href="https://www.jmeiners.com/lc3-vm/">see here</fr:link>.</fr:p>
                <fr:p>The code in <fr:link type="external" href="https://github.com/dhsorens/LC3-Lean">LC3-Lean</fr:link> is laid out as follows:
<fr:ol><fr:li>register and flag state lives in <fr:code>LC3Lean/Registers.lean</fr:code>,</fr:li>
    <fr:li>the flat memory model in <fr:code>LC3Lean/Memory.lean</fr:code>,</fr:li>
    <fr:li>opcode decoding in <fr:code>LC3Lean/Instructions.lean</fr:code>,</fr:li>
    <fr:li>the fetch–decode–execute step and per-opcode semantics in <fr:code>LC3Lean/Execution.lean</fr:code>,</fr:li>
    <fr:li>The runnable binary wires together loading of <fr:code>.obj</fr:code> files, the execution loop, and MMIO in <fr:code>Main.lean</fr:code>. If you open those modules, every informal claim in this paragraph—word size, register count, opcode coverage, traps, MMIO—is meant to be visible as definitions and executable code rather than hand-waving.</fr:li></fr:ol>
   The runnable binary wires together loading of <fr:code>.obj</fr:code> files, the execution loop, and MMIO in <fr:code>Main.lean</fr:code>.</fr:p>
                <fr:p>For full details, <fr:link type="local" href="dhsorens-0029.xml" addr="dhsorens-0029" title="The ISA-level details of LC3-Lean">see this page</fr:link>.</fr:p>
                <fr:em>Formal proofs</fr:em>
                <fr:p>"Formally verified" here means that Lean checks mathematical theorems relating the implementation above to an explicit ISA-level specification of how each instruction may read and write registers and memory.
Those theorems are stated and proved in the <fr:code>LC3Correct</fr:code> package—especially <fr:code>LC3Correct/ExecutionCorrect.lean</fr:code>, with supporting lemmas about registers and memory in <fr:code>LC3Correct/RegisterLemmas.lean</fr:code> and <fr:code>LC3Correct/MemoryLemmas.lean</fr:code>. Together they aim to capture, opcode by opcode, that the Lean executor’s effect on machine state matches the spec encoded alongside it. All proofs pass without <fr:code>sorry</fr:code>!</fr:p>
                <fr:em>Trust Base and Verification Boundary</fr:em>
                <fr:p>The boundary worth keeping in mind is the thin C shim (<fr:code>c/terminal.c</fr:code>) used for POSIX terminal raw mode and polling: it affects how characters reach your screen and keyboard, but the LC-3 machine semantics and the correctness proofs live on the Lean side. Readers who want the precise logical statement for a single opcode should start from <fr:code>LC3Correct/ExecutionCorrect.lean</fr:code> and follow the definitions it references—the prose here is only a map to those lemmas.</fr:p>
                <fr:p>For full details, <fr:link type="local" href="dhsorens-002A.xml" addr="dhsorens-002A" title="Details on the Proofs of Correctness for LC3-Lean">see this page</fr:link>.</fr:p>
              </fr:mainmatter>
              <fr:backmatter />
            </fr:tree>
            <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
              <fr:frontmatter>
                <fr:anchor>281</fr:anchor>
                <fr:addr type="user">dhsorens-0025</fr:addr>
                <fr:route>dhsorens-0025.xml</fr:route>
                <fr:title text="CompPoly and Computable Specifications">CompPoly and Computable Specifications</fr:title>
                <fr:date>
                  <fr:year>2026</fr:year>
                  <fr:month>3</fr:month>
                  <fr:day>11</fr:day>
                </fr:date>
                <fr:authors>
                  <fr:author>
                    <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                  </fr:author>
                </fr:authors>
              </fr:frontmatter>
              <fr:mainmatter>
                <fr:p>During <fr:link type="local" href="dhsorens-0026.xml" addr="dhsorens-0026" title="Q1 2026">Q1 of 2026</fr:link> we worked building out <fr:link type="external" href="https://github.com/Verified-zkEVM/CompPoly">CompPoly</fr:link>, a formally verified
    model of computable polynomials in <fr:link type="local" href="dhsorens-lean.xml" addr="dhsorens-lean" title="The Lean Theorem Prover">Lean</fr:link>.
    The purpose of CompPoly is to provide a computable base for the specs in <fr:link type="external" href="https://github.com/Verified-zkEVM/ArkLib">Arklib</fr:link>.</fr:p>
                <fr:p>My thoughts on computable specifications are still developing. They are growing out of an interest during my PhD in the integrity of formal specifications <fr:link type="local" href="dhsorens-001J.xml" addr="dhsorens-001J" title="Smart Contract Specification">in the case of smart contracts</fr:link>. zkVMs and SNARKS also have complicated specifications, but for a different reason than smart contracts. Whereas smart contract specifications have difficult-to-define, high-level, socio-economic properties that one must aim at with a spec, the specs of zkVMs are complex because they correspond to some pretty intense mathematics. Just stating the desired properties requires quite a bit of machinery -- see <fr:link type="external" href="https://github.com/Verified-zkEVM/ArkLib/">Arklib</fr:link> for a taste of that.</fr:p>
                <fr:p>So, we can write complex mathematical specifications in <fr:link type="local" href="dhsorens-lean.xml" addr="dhsorens-lean" title="The Lean Theorem Prover">Lean</fr:link> - great, what does computability add to this, or any specification? For one, it lets you run tests. Having tests lets you test the integrity of your spec and test it in sort of a meta- way. It helps build confidence that the spec was built out correctly, something that is difficult (impossible?) to really know.</fr:p>
                <fr:p>I have written before about <fr:link type="local" href="dhsorens-000L.xml" addr="dhsorens-000L" title="(In)Correct Smart Contract Specifications"><fr:em>metaspecifications</fr:em></fr:link>, or formal specifications of specifications, in the context of smart contracts. I really believe that metaspecifications can add a lot to the security of smart contracts, but a lot of theory has to be built up (even just developed from a cryptoeconomic point of view) before this becomes a reasonable strategy for contracts in the wild.</fr:p>
                <fr:p>However, metaspecifications already show up in cryptography! An implementation has a specification, the design of the cryptographic system or protocol (e.g. FRI). The system or protocol is defined in mathematical terms, with assumptions, and with associated proofs of security. Security proofs (reduction proofs) show that if the cryptographic protocol fails, then some assumption of the system was violated. This is a metaspecification!</fr:p>
                <fr:p>But, as with all specifications, it is very hard to be sure that your specification is correct. This is where computability comes in. Having an executable/computable specification means that you can run tests on it, further extending your specification in an informal way. It makes your spec act more like software, and in some sense makes it stronger as a specification because as a program that runs it is closer to the thing that you're verifying.</fr:p>
                <fr:p><fr:link type="local" href="dhsorens-lean.xml" addr="dhsorens-lean" title="The Lean Theorem Prover">Lean</fr:link> is of course a great place for this. It is easy to go between computable and non-computable terms, spec and implementation, and more and more of the infrastructure of verification is becoming available in <fr:link type="local" href="dhsorens-lean.xml" addr="dhsorens-lean" title="The Lean Theorem Prover">Lean</fr:link>.</fr:p>
              </fr:mainmatter>
              <fr:backmatter />
            </fr:tree>
            <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
              <fr:frontmatter>
                <fr:anchor>283</fr:anchor>
                <fr:addr type="user">dhsorens-0020</fr:addr>
                <fr:route>dhsorens-0020.xml</fr:route>
                <fr:title text="Protocol Snarkification">Protocol Snarkification</fr:title>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>12</fr:month>
                  <fr:day>18</fr:day>
                </fr:date>
                <fr:authors>
                  <fr:author>
                    <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:meta name="toc">true</fr:meta>
              </fr:frontmatter>
              <fr:mainmatter>
                <fr:p>There are ongoing efforts to "snarkify" Ethereum, i.e. to integrate <fr:link type="local" href="dhsorens-001L.xml" addr="dhsorens-001L" title="Zero Knowledge Proofs">zero knowledge proofs</fr:link> into every layer of the Ethereum protocol. I contribute to this via <fr:link type="local" href="dhsorens-000X.xml" addr="dhsorens-000X" title="Formal Specification and Verification">formal verification</fr:link> in <fr:link type="local" href="dhsorens-lean.xml" addr="dhsorens-lean" title="The Lean Theorem Prover">Lean</fr:link>. My main focus is currently on <fr:link type="external" href="https://github.com/Verified-zkEVM/CompPoly">CompPoly</fr:link> and <fr:link type="external" href="https://github.com/Verified-zkEVM/ArkLib">Arklib</fr:link>.</fr:p>
                <fr:p>See <fr:link type="external" href="http://verified-zkevm.org">our website</fr:link> for more information.</fr:p>
              </fr:mainmatter>
              <fr:backmatter />
            </fr:tree>
            <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
              <fr:frontmatter>
                <fr:anchor>285</fr:anchor>
                <fr:addr type="user">dhsorens-000U</fr:addr>
                <fr:route>dhsorens-000U.xml</fr:route>
                <fr:title text="Formal Specification and Verification">Formal Specification and Verification</fr:title>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>8</fr:month>
                  <fr:day>29</fr:day>
                </fr:date>
                <fr:authors>
                  <fr:author>
                    <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:meta name="toc">true</fr:meta>
              </fr:frontmatter>
              <fr:mainmatter>
                <fr:p>Most of my formal research work is in <fr:link type="local" href="dhsorens-000X.xml" addr="dhsorens-000X" title="Formal Specification and Verification">formal specification and verification</fr:link>, especially in <fr:link type="local" href="dhsorens-000B.xml" addr="dhsorens-000B" title="Interactive Theorem Provers">proof assistants</fr:link> like <fr:link type="local" href="dhsorens-lean.xml" addr="dhsorens-lean" title="The Lean Theorem Prover">Lean</fr:link>, <fr:link type="local" href="dhsorens-rocq.xml" addr="dhsorens-rocq" title="The Rocq Theorem Prover">Rocq</fr:link>, and the like.

    During my <fr:link type="local" href="dhsorens-phd.xml" addr="dhsorens-phd" title="PhD in Formal Methods">PhD</fr:link> and in the years after a lot of time thinking about <fr:link type="local" href="dhsorens-000Y.xml" addr="dhsorens-000Y" title="Smart Contracts">smart contract</fr:link> design, specification, and verification.</fr:p>
                <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                  <fr:frontmatter>
                    <fr:anchor>287</fr:anchor>
                    <fr:addr type="user">dhsorens-000W</fr:addr>
                    <fr:route>dhsorens-000W.xml</fr:route>
                    <fr:title text="Smart Contract Design, Specification, and Verification">Smart Contract Design, Specification, and Verification</fr:title>
                    <fr:date>
                      <fr:year>2025</fr:year>
                      <fr:month>8</fr:month>
                      <fr:day>29</fr:day>
                    </fr:date>
                    <fr:authors>
                      <fr:author>
                        <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                      </fr:author>
                    </fr:authors>
                  </fr:frontmatter>
                  <fr:mainmatter>
                    <fr:p><fr:link type="local" href="dhsorens-000Y.xml" addr="dhsorens-000Y" title="Smart Contracts">Smart contracts</fr:link> are interesting from the perspective of formal specification and verification because:</fr:p>
                    <fr:ol><fr:li>they are risk- and property-dense,</fr:li>
    <fr:li>they are typically small in size, with a deterministic and well-defined execution environment, making them feasible to formally reason about in a short time frame, and</fr:li>
    <fr:li>they often manage huge sums of money (so the incentives line up).</fr:li></fr:ol>
                    <fr:p>Furthermore, because smart contracts act as social and financial intermediaries, they often have extremely <fr:link type="local" href="dhsorens-001J.xml" addr="dhsorens-001J" title="Smart Contract Specification">interesting (and nontrivia) specifications</fr:link>, which warrants a study not only of the science of going from specification to verification (formal proof), but of the <fr:em>specifications themselves</fr:em> as independent, mathematical objects.</fr:p>
                  </fr:mainmatter>
                  <fr:backmatter />
                </fr:tree>
                <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
                  <fr:frontmatter>
                    <fr:anchor>289</fr:anchor>
                    <fr:addr type="user">dhsorens-0015</fr:addr>
                    <fr:route>dhsorens-0015.xml</fr:route>
                    <fr:title text="Formal Verification in Proof Assistants">Formal Verification in Proof Assistants</fr:title>
                    <fr:date>
                      <fr:year>2025</fr:year>
                      <fr:month>9</fr:month>
                      <fr:day>2</fr:day>
                    </fr:date>
                    <fr:authors>
                      <fr:author>
                        <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                      </fr:author>
                    </fr:authors>
                    <fr:meta name="toc">true</fr:meta>
                  </fr:frontmatter>
                  <fr:mainmatter>
                    <fr:p>Speaking more broadly, <fr:link type="local" href="dhsorens-000X.xml" addr="dhsorens-000X" title="Formal Specification and Verification">formal verification</fr:link> in <fr:link type="local" href="dhsorens-000B.xml" addr="dhsorens-000B" title="Interactive Theorem Provers">proof assistants</fr:link> is interesting because in the robustly mathematical setting provided by proof assistants, one can state and prove arbitrary properties.

    This may be a blessing and a curse.
    Much like with programming languages, being able to state and do arbitrary things is not always an advantage.
    
    Due to the extreme flexibility, formal counterparts of informal specifications can vary widely without an obvious way to compare them or evaluate them for correctness or practical utility (for more on this see the introduction to my <fr:link type="local" href="dhsorens-000C.xml" addr="dhsorens-000C" title="Links and Referencing my PhD Thesis">PhD thesis</fr:link>).</fr:p>
                    <fr:p>In my <fr:link type="local" href="dhsorens-phd.xml" addr="dhsorens-phd" title="PhD in Formal Methods">PhD</fr:link> and my subsequent writing (e.g. <fr:link type="local" href="dhsorens-000L.xml" addr="dhsorens-000L" title="(In)Correct Smart Contract Specifications">this paper</fr:link> or my <fr:link type="local" href="dhsorens-000S.xml" addr="dhsorens-000S" title="Research Statement">research statement</fr:link>), I have argued that the robustly mathematical setting of proof assistants offers us an opportunity for unmatched rigor, but we must draw on mathematical practice and tradition and use them in a more sophisticated way than we are using them now.
    There is much to be learned from the ongoing work in the <fr:link type="local" href="dhsorens-000Z.xml" addr="dhsorens-000Z" title="Formalization of Mathematics">formalization of mathematics</fr:link> and <fr:link type="local" href="dhsorens-000X.xml" addr="dhsorens-000X" title="Formal Specification and Verification">formal specification and verification in proof assistants</fr:link> more broadly,
    from theoretical and practical perspectives.</fr:p>
                  </fr:mainmatter>
                  <fr:backmatter />
                </fr:tree>
              </fr:mainmatter>
              <fr:backmatter />
            </fr:tree>
            <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
              <fr:frontmatter>
                <fr:anchor>291</fr:anchor>
                <fr:addr type="user">dhsorens-000V</fr:addr>
                <fr:route>dhsorens-000V.xml</fr:route>
                <fr:title text="Type Theory and Formal Proof">Type Theory and Formal Proof</fr:title>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>8</fr:month>
                  <fr:day>29</fr:day>
                </fr:date>
                <fr:authors>
                  <fr:author>
                    <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:meta name="toc">true</fr:meta>
              </fr:frontmatter>
              <fr:mainmatter>
                <fr:p>I am also interested more broadly in type theory and formal proof, especially as they relate to <fr:link type="local" href="dhsorens-000B.xml" addr="dhsorens-000B" title="Interactive Theorem Provers">proof assistants</fr:link>. This has included some <fr:link type="local" href="dhsorens-0009.xml" addr="dhsorens-0009" title="The Background to my PhD Thesis">preliminary work</fr:link> in <fr:link type="local" href="dhsorens-hott.xml" addr="dhsorens-hott" title="Homotopy Type Theory (HoTT)">HoTT</fr:link> on the formal side, but ongoing work in the <fr:link type="local" href="dhsorens-000Z.xml" addr="dhsorens-000Z" title="Formalization of Mathematics">formalization of mathematics</fr:link> in <fr:link type="local" href="dhsorens-lean.xml" addr="dhsorens-lean" title="The Lean Theorem Prover">Lean</fr:link> is deeply interesting to me as a <fr:link type="local" href="dhsorens-0017.xml" addr="dhsorens-0017" title="How the Formalization of Mathematics Relates to My Work">peripheral development to my work</fr:link>.</fr:p>
              </fr:mainmatter>
              <fr:backmatter />
            </fr:tree>
          </fr:mainmatter>
          <fr:backmatter />
        </fr:tree>
        <fr:tree toc="true" numbered="false" show-heading="true" show-metadata="true" expanded="false" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
          <fr:frontmatter>
            <fr:anchor>1285</fr:anchor>
            <fr:addr type="user">dhsorens-rsrch</fr:addr>
            <fr:route>dhsorens-rsrch.xml</fr:route>
            <fr:title text="Research">Research</fr:title>
            <fr:authors>
              <fr:author>
                <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
              </fr:author>
            </fr:authors>
            <fr:meta name="toc">true</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
              <fr:frontmatter>
                <fr:anchor>700</fr:anchor>
                <fr:addr type="user">dhsorens-000S</fr:addr>
                <fr:route>dhsorens-000S.xml</fr:route>
                <fr:title text="Research Statement">Research Statement</fr:title>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>8</fr:month>
                  <fr:day>13</fr:day>
                </fr:date>
                <fr:authors />
              </fr:frontmatter>
              <fr:mainmatter>
                <fr:p>Formal proposition and proof, especially in <fr:link type="local" href="dhsorens-lean.xml" addr="dhsorens-lean" title="The Lean Theorem Prover">Lean</fr:link> and <fr:link type="local" href="dhsorens-rocq.xml" addr="dhsorens-rocq" title="The Rocq Theorem Prover">Rocq</fr:link>, catch my attention from various angles. 
    This is my most recent research statement as a <fr:link type="external" href="docs/sorensen-research-statement.pdf">PDF</fr:link>.
    <fr:em>(Last updated 09/2025.)</fr:em></fr:p>
              </fr:mainmatter>
              <fr:backmatter />
            </fr:tree>
            <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
              <fr:frontmatter>
                <fr:anchor>701</fr:anchor>
                <fr:addr type="user">dhsorens-pubs</fr:addr>
                <fr:route>dhsorens-pubs.xml</fr:route>
                <fr:title text="Peer-Reviewed Publications">Peer-Reviewed Publications</fr:title>
                <fr:authors>
                  <fr:author>
                    <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:meta name="toc">true</fr:meta>
              </fr:frontmatter>
              <fr:mainmatter>
                <fr:ol><fr:li>Sorensen, D. <fr:em>Formally Specifying Contract Optimizations With Bisimulations in Coq</fr:em>. FMBC (ETAPS) (2025). [<fr:link type="local" href="dhsorens-000J.xml" addr="dhsorens-000J" title="Formally Specifying Contract Optimizations With Bisimulations in Coq">link</fr:link>]</fr:li>

    
    <fr:li>Sorensen, D. <fr:em>Towards Formally Specifying and Verifying Smart Contract Upgrades in Coq</fr:em>. FMBC (ETAPS) (2024). [<fr:link type="local" href="dhsorens-000K.xml" addr="dhsorens-000K" title="Towards Formally Specifying and Verifying Smart Contract Upgrades in Coq">link</fr:link>]</fr:li>

    
    <fr:li>Sorensen, D. <fr:em>(In)Correct Smart Contract Specifications</fr:em>. ICBC (2024). [<fr:link type="local" href="dhsorens-000L.xml" addr="dhsorens-000L" title="(In)Correct Smart Contract Specifications">link</fr:link>]</fr:li>

    
    <fr:li>Jaffer, S., Dales, M., Ferris, P., Sorensen, D., Swinfield, T., Message, R., Keshav, S., and Madhavapeddy, A. <fr:em>Global, robust and comparable digital carbon assets</fr:em>. ICBC (2024). [<fr:link type="local" href="dhsorens-000M.xml" addr="dhsorens-000M" title="Global, robust and comparable digital carbon assets">link</fr:link>]</fr:li>

    
    <fr:li>Sorensen, D. <fr:em>Tokenized Carbon Credits</fr:em>. Ledger (2023). [<fr:link type="local" href="dhsorens-000N.xml" addr="dhsorens-000N" title="Tokenized Carbon Credits">link</fr:link>]</fr:li>

    
    <fr:li>Sorensen, D. <fr:em>Structured Pools for Tokenized Carbon Credits</fr:em>. ICBC CryptoEx (2023). [<fr:link type="local" href="dhsorens-000O.xml" addr="dhsorens-000O" title="Structured Pools for Tokenized Carbon Credits">link</fr:link>]</fr:li>

    
    <fr:li>Butt, K., Sorensen, D. <fr:em>Streamlining Classical Consensus</fr:em>. International Journal of Blockchains and Cryptocurrencies, Vol. 1, No. 4 (2019). [<fr:link type="local" href="dhsorens-000P.xml" addr="dhsorens-000P" title="Streamlining Classical Consensus">link</fr:link>]</fr:li>

    
    <fr:li>Sorensen, D. <fr:em>Establishing Standards for Consensus on Blockchains</fr:em>. ICBC (2019). [<fr:link type="local" href="dhsorens-000Q.xml" addr="dhsorens-000Q" title="Establishing Standards for Consensus on Blockchains">link</fr:link>]</fr:li>

    
    <fr:li>A. Francis, D. Smith, D. Sorensen and B. Webb. <fr:em>Extensions and applications of equitable decompositions for graphs with symmetries</fr:em>. Linear Algebra and its Applications 532 (2017). [<fr:link type="local" href="dhsorens-000R.xml" addr="dhsorens-000R" title="Extensions and applications of equitable decompositions for graphs with symmetries">link</fr:link>]</fr:li></fr:ol>
                <fr:p>I also keep some <fr:link type="local" href="dhsorens-preprints.xml" addr="dhsorens-preprints" title="Preprints">preprints</fr:link> on record.</fr:p>
              </fr:mainmatter>
              <fr:backmatter />
            </fr:tree>
            <fr:tree toc="true" numbered="true" show-heading="true" show-metadata="false" expanded="true" root="false" xmlns:fr="http://www.jonmsterling.com/jms-005P.xml">
              <fr:frontmatter>
                <fr:anchor>703</fr:anchor>
                <fr:addr type="user">dhsorens-talks</fr:addr>
                <fr:route>dhsorens-talks.xml</fr:route>
                <fr:title text="Talks">Talks</fr:title>
                <fr:authors>
                  <fr:author>
                    <fr:link type="local" href="dhsorens.xml" addr="dhsorens" title="Derek Sorensen">Derek Sorensen</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:meta name="toc">true</fr:meta>
              </fr:frontmatter>
              <fr:mainmatter>
                <fr:p>Some selected talks:
    
    <fr:ul><fr:li><fr:link type="local" href="dhsorens-0028.xml" addr="dhsorens-0028" title="Safely Snarkifying the Ethereum Protocol">CompPoly: Computable Polynomials in Lean</fr:link>. <fr:link type="external" href="https://zkproof.org/events/zkproof-8-rome/">ZKProofs 8</fr:link>, May 2026, Rome, Italy.</fr:li>
        <fr:li><fr:link type="local" href="dhsorens-0023.xml" addr="dhsorens-0023" title="Correct and Computable Specifications in Lean">Correct and Computable Specifications in Lean</fr:link>. <fr:link type="external" href="https://beneficial-ai-foundation.github.io/SVIL2026/">SViL26</fr:link>, April 2026, Paris, France.</fr:li>
        <fr:li><fr:link type="local" href="dhsorens-0022.xml" addr="dhsorens-0022" title="Safely Snarkifying the Ethereum Protocol">Safely Snarkifying the Ethereum Protocol</fr:link>. <fr:link type="external" href="https://ethcc.io">EthCC[9]</fr:link>, March 2026, Cannes, France.</fr:li>
        <fr:li>Formally Specifying Contract Optimizations With Bisimulations in Coq. <fr:link type="external" href="https://fmbc.gitlab.io/2025">FMBC 2025</fr:link>, May 2025, Hamilton, Canada.</fr:li>
        <fr:li><fr:link type="local" href="dhsorens-0024.xml" addr="dhsorens-0024" title="(In)Correct Smart Contract Specifications">(In)Correct Smart Contract Specifications. ICBC, May 2024, Dublin.</fr:link></fr:li>
        <fr:li>Towards Formally Specifying and Verifying Smart Contract Upgrades in Coq. <fr:link type="external" href="https://fmbc.gitlab.io/2024">FMBC 2024</fr:link>, April 2024, Luxembourg.</fr:li>
        <fr:li><fr:link type="external" href="https://mediaserver.univ-nantes.fr/videos/abstraction-specification-and-proof/">Abstraction, Specification, and Proof. Undone Science, February 2024, Nantes, FR.</fr:link></fr:li>
        <fr:li>Structured Pools for Tokenized Carbon Credits. ICBC 2024, Dubai.</fr:li>
        <fr:li>Establishing Standards for Consensus on Blockchains. ICBC 2019, San Diego.</fr:li>
        <fr:li><fr:link type="external" href="https://www.youtube.com/watch?v=NZ2ETPurRFU">K framework and type theory. RCon, May 2019, Berlin.</fr:link></fr:li></fr:ul></fr:p>
                <fr:p>I also keep some of <fr:link type="local" href="dhsorens-slides.xml" addr="dhsorens-slides" title="Slides">my slides here</fr:link>.</fr:p>
              </fr:mainmatter>
              <fr:backmatter />
            </fr:tree>
          </fr:mainmatter>
          <fr:backmatter />
        </fr:tree>
      </fr:mainmatter>
      <fr:backmatter />
    </fr:tree>
  </fr:backmatter>
</fr:tree>
