<?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>7935</fr:anchor><fr:addr>st-0001</fr:addr><fr:route>st-0001.xml</fr:route><fr:title>Categorical Systems Theory</fr:title><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>
	Systems are ubiquitous, in science as in life.
	People regularly deal with physical systems, political systems, economical systems, living systems, learning systems, writing systems, voting systems, computing systems, etc.
	As we zoom into a thing, we inevitably realize it is comprised of smaller interacting parts. As we zoom out, we realize it is itself part of an even more complex system.
</fr:p><fr:p>
	Given the staggering variety systems come in, it is no surprise the existing scientific and mathematical frameworks to describe them are manifold and often incompatible with one another.
	Studying each of these frameworks by themselves is surely a useful endeavour, but that doesn't mean there is nothing to learn from a generalist approach which aims to distill the common motifs underpinning each paradigm.
	Hence in approaching the study of systems theory, the category theorist (a label that indicates a philosophy more than a subject of study) asks: <fr:strong>what are the formal structures underlying all the different approaches to systems?</fr:strong></fr:p><fr:p>
	An important consequence of this approach is <fr:em>removing opacity</fr:em>.
	In fact, each framework created to deal with systems makes certain assumptions regarding the structure of these systems, the way they compose and the way they relate, as well as what behaviour they are interested in and what even means to display a certain behaviour.
	It's easy to get lost in these questions, and to miss important insight because of <fr:link
type="local"
href="blindness-to-structure.xml"
addr="blindness-to-structure"
title="Blindness to Structure">Blindness to Structure</fr:link>.
	So an important contribution of categorical systems theory is to clarify, within each individual framework, what are the choices that have been made.
</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>2195</fr:anchor><fr:addr>st-history</fr:addr><fr:route>st-history.xml</fr:route><fr:title>History</fr:title><fr:authors /></fr:frontmatter><fr:mainmatter><fr:p>
	Categorical Systems Theory has an old tradition, probably starting with Rosen's 1958 paper.
	It lived in a pre-paradigmatic phase for a long time, until <fr:link
type="local"
href="david-jaz-myers.xml"
addr="david-jaz-myers"
title="David Jaz Myers">David Jaz Myers</fr:link> tied up some loose ends and produced an organized theory, expounded in his book <fr:link
type="local"
href="djm-categorical-systems-theory.xml"
addr="djm-categorical-systems-theory"
title="Categorical Systems Theory">Categorical Systems Theory</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>2196</fr:anchor><fr:addr>st-0002</fr:addr><fr:route>st-0002.xml</fr:route><fr:title>A quick tour of the ideas</fr:title><fr:authors /></fr:frontmatter><fr:mainmatter><fr:p>
	In Greek, the word `system' means `composite'. Categorical systems theory takes this etymology very seriously, approaching the study of systems as the study of `things that compose'. Thankfully, the mathematical theory of composition is rich and has been abundantly studied before, under the guise of <fr:strong>operads</fr:strong>. The idea that systems are algebras of operads is more than a decade old now, being first proposed by <fr:link
type="local"
href="david-spivak.xml"
addr="david-spivak"
title="David Spivak">Spivak</fr:link> in <fr:link
type="local"
href="spivak-wiring-diagrams-2013.xml"
addr="spivak-wiring-diagrams-2013"
title="The operad of wiring diagrams: formalizing a graphical language for databases, recursion, and plug-and-play circuits">his 2013 paper</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>2197</fr:anchor><fr:addr>#952</fr:addr><fr:route>unstable-952.xml</fr:route><fr:taxon>Remark</fr:taxon><fr:authors /><fr:parent>st-0002</fr:parent></fr:frontmatter><fr:mainmatter>
	The word operad is quite overloaded, and, in some sense, not overloaded enough. An <html:span
xmlns:html="http://www.w3.org/1999/xhtml"
class="nlab"><fr:link
type="external"
href="https://ncatlab.org/nlab/show/operad">operad</fr:link></html:span>, traditionally, is a structure encoding formal operations of arbitrary finite arity which compose associatively and have a unit. In fact, the idea can be easily generalized much further, by having "arities" being structured objects.
	In this generalized form, operads are usually called <fr:em>multicategories</fr:em>, but I'd like to keep calling them operads because (a) morally, they still are and (b) operad is a much nicer and less scary word than multicategory.
	This translates to their even-more-generalized form, <fr:tex
display="inline"><![CDATA[T]]></fr:tex>-multicategories, which I call <fr:tex
display="inline"><![CDATA[T]]></fr:tex>-operads.
</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>2199</fr:anchor><fr:addr>#953</fr:addr><fr:route>unstable-953.xml</fr:route><fr:title>Idea.</fr:title><fr:authors /><fr:parent>st-0002</fr:parent></fr:frontmatter><fr:mainmatter>
	<fr:em>Operads</fr:em> are <fr:strong>theories of composition</fr:strong>.
	<fr:em>Theories of systems</fr:em> should be algebras of theories of compositions.
</fr:mainmatter><fr:backmatter /></fr:tree>
<fr:p>
	This is the <fr:em>algebraic</fr:em> aspect of systems theory: it concerns the way systems are put together by operations (incidentally, also the word <fr:em>algebra</fr:em> is etymologically related to composition)!
	There is also a <fr:em>geometric</fr:em> aspect to systems theory, if we might abuse the algebro-geometric duality.
	Systems are objects with an internal structure, which can be probed by morphisms which compare systems to each other.
	Having this extra geometric structure is quite important, albeit often overlooked. It is not overlooked in coalgebraic automata theory, where the algebraic aspect is neglected but the idea that systems shall be objects of a category is taken in great consideration.
</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>2200</fr:anchor><fr:addr>#954</fr:addr><fr:route>unstable-954.xml</fr:route><fr:title>Idea.</fr:title><fr:authors /><fr:parent>st-0002</fr:parent></fr:frontmatter><fr:mainmatter>
	<fr:strong>Theories of systems</fr:strong> should be algebras of <fr:em>double operads</fr:em>, i.e. operads in categories.
</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>2201</fr:anchor><fr:addr>#955</fr:addr><fr:route>unstable-955.xml</fr:route><fr:taxon>Remark</fr:taxon><fr:authors /><fr:parent>st-0002</fr:parent></fr:frontmatter><fr:mainmatter>
	This 'definition' is preemptively general.
	While the ideal, for both <fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">me</fr:link> and <fr:link
type="local"
href="david-jaz-myers.xml"
addr="david-jaz-myers"
title="David Jaz Myers">David</fr:link>, is to eventually work in terms of general <fr:tex
display="inline"><![CDATA[T]]></fr:tex>-operads (that being the 'morally right' setting), at the minute  most of categorical systems theory is done for <fr:tex
display="inline"><![CDATA[T = \mathsf {S}[-]]]></fr:tex>, where <fr:tex
display="inline"><![CDATA[\mathsf {S}[-]]]></fr:tex> is a made-up notation for the <fr:em>free symmetric monoidal category</fr:em> 2-monad on <fr:tex
display="inline"><![CDATA[\mathsf {Cat}]]></fr:tex> (Example 4.1.16 in <fr:link
type="local"
href="leinster-higher-operads-2004.xml"
addr="leinster-higher-operads-2004"
title="Higher operads, higher categories">Higher operads, higher categories</fr:link>).
	Concretely, this means that a double <fr:tex
display="inline"><![CDATA[\mathsf {S}[-]]]></fr:tex>-operad is a <fr:em>symmetric monoidal double category</fr:em>.
</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>2202</fr:anchor><fr:addr>st-0003</fr:addr><fr:route>st-0003.xml</fr:route><fr:title>Theories, Doctrines, Paradigms</fr:title><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>
	The narratology of categorical systems theory can be organized in three levels of decreasing abstraction.
	It's easier to start from the topmost level:
</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>2204</fr:anchor><fr:addr>#940</fr:addr><fr:route>unstable-940.xml</fr:route><fr:title>Paradigm</fr:title><fr:taxon>Preliminary definition</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors><fr:parent>st-0003</fr:parent></fr:frontmatter><fr:mainmatter>
	A <fr:strong>paradigm</fr:strong> of systems theory is a way to answer the following questions:
	<fr:ol><fr:li>What kind of <fr:em>comparisons</fr:em> between systems we want to ponder?</fr:li>
		<fr:li>What kind of <fr:em>compositions</fr:em> of systems we want to ponder?</fr:li></fr:ol>
</fr:mainmatter><fr:backmatter /></fr:tree>
<fr:p>
	The most familiar paradigms in applied category theory are the following:
</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>2206</fr:anchor><fr:addr>#941</fr:addr><fr:route>unstable-941.xml</fr:route><fr:title>Paradigm of sets</fr:title><fr:taxon>Example</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors><fr:parent>st-0003</fr:parent></fr:frontmatter><fr:mainmatter>
	In this paradigm, systems are organized in sets, thus can only be compared for equality.
	Composition is described by symmetric operads, thus basically symmetric monoidal categories.
	This is a fairly common paradigm in the literature, e.g. Spivak's <fr:link
type="local"
href="spivak-wiring-diagrams-2013.xml"
addr="spivak-wiring-diagrams-2013"
title="The operad of wiring diagrams: formalizing a graphical language for databases, recursion, and plug-and-play circuits">paper on wiring diagrams</fr:link> can be considered to work in the paradigm of sets.
</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>2208</fr:anchor><fr:addr>#942</fr:addr><fr:route>unstable-942.xml</fr:route><fr:title>Paradigm of categories</fr:title><fr:taxon>Example</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors><fr:parent>st-0003</fr:parent></fr:frontmatter><fr:mainmatter>
	In this paradigm, systems are organized in categories, thus can be compared with morphisms
	Composition is described by symmetric double operads, thus basically symmetric monoidal double categories.
	<fr:strong>This is the default paradigm in categorical systems theory</fr:strong>.
</fr:mainmatter><fr:backmatter /></fr:tree>
<fr:p>
	One could conceive other paradigms.
	For instance, one might want to compare systems by quantifying their similarity with a number, a cohomology class, or some other extensive measurement.
	One could compose them in different ways, for instance by glueing them instead of wiring them.
</fr:p><fr:p>
	Mathematically, the answers to the questions posed by a choice of paradigm correspond to the following:
</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>2210</fr:anchor><fr:addr>#943</fr:addr><fr:route>unstable-943.xml</fr:route><fr:title>Paradigm</fr:title><fr:taxon>Definition</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors><fr:parent>st-0003</fr:parent></fr:frontmatter><fr:mainmatter>
	A <fr:strong>paradigm</fr:strong> is an equipment <fr:tex
display="inline"><![CDATA[\mathsf {\mathbb  E}]]></fr:tex> along with a monad <fr:tex
display="inline"><![CDATA[T:\mathsf {\mathbb  E} \to  \mathsf {\mathbb  E}]]></fr:tex>, i.e. a way to define what 'operad' and 'algebra' mean.
</fr:mainmatter><fr:backmatter /></fr:tree>
<fr:p>
	From a paradigm, we can build a 2-category of theories, whose objects are theories of systems and whose maps are lax maps thereof.
</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>2212</fr:anchor><fr:addr>#944</fr:addr><fr:route>unstable-944.xml</fr:route><fr:title>2-Category of theories</fr:title><fr:taxon>Definition</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors><fr:parent>st-0003</fr:parent></fr:frontmatter><fr:mainmatter>
	Let <fr:tex
display="inline"><![CDATA[{(\mathsf {\mathbb  E}, T)}]]></fr:tex> be a paradigm.
	The associated <fr:strong>2-category of theories</fr:strong> <fr:tex
display="inline"><![CDATA[{\mathsf {\mathbb  Th}}^{(\mathsf {\mathbb  E}, T)}]]></fr:tex> is the 2-category of <fr:tex
display="inline"><![CDATA[T]]></fr:tex>-operads and right algebras thereof, with <fr:em>lax</fr:em> maps and 2-cells.
	Objects are thus pairs <fr:tex
display="inline"><![CDATA[(\mathsf {\mathbb  C}, \mathsf {Sys})]]></fr:tex> where <fr:tex
display="inline"><![CDATA[\mathsf {\mathbb  C}]]></fr:tex> is a <fr:tex
display="inline"><![CDATA[T]]></fr:tex>-operad and <fr:tex
display="inline"><![CDATA[\mathsf {Sys}]]></fr:tex> a right algebra thereof.
</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>2214</fr:anchor><fr:addr>#945</fr:addr><fr:route>unstable-945.xml</fr:route><fr:title>Theory</fr:title><fr:taxon>Preliminary definition</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors><fr:parent>st-0003</fr:parent></fr:frontmatter><fr:mainmatter>
	A <fr:strong>theory</fr:strong> for a paradigm <fr:tex
display="inline"><![CDATA[{(\mathsf {\mathbb  E}, T)}]]></fr:tex> is an object of <fr:tex
display="inline"><![CDATA[{\mathsf {\mathbb  Th}}^{(\mathsf {\mathbb  E}, T)}]]></fr:tex>.
</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>2216</fr:anchor><fr:addr>#946</fr:addr><fr:route>unstable-946.xml</fr:route><fr:title>Theories in the set paradigm</fr:title><fr:taxon>Example</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors><fr:parent>st-0003</fr:parent></fr:frontmatter><fr:mainmatter>
	The 2-category of theories for the paradigm <fr:tex
display="inline"><![CDATA[(\mathsf {\mathbb  Set}, S[-])]]></fr:tex> is the 2-category whose objects are pairs <fr:tex
display="inline"><![CDATA[(\mathsf {C}, \mathrm {Sys})]]></fr:tex> were the first is a symmetric monoidal category and the latter is a symmetric monoidal copresheaf <fr:tex
display="inline"><![CDATA[\mathrm {Sys} : \mathsf {C} \to  \mathsf {Set}]]></fr:tex>.
	A map of theories is given by a symmetric lax monoidal functor between the base categories and a natural transformation.
</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>2218</fr:anchor><fr:addr>#947</fr:addr><fr:route>unstable-947.xml</fr:route><fr:title>Theories in the categories paradigm</fr:title><fr:taxon>Example</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors><fr:parent>st-0003</fr:parent></fr:frontmatter><fr:mainmatter>
	The 2-category of theories for the paradigm <fr:tex
display="inline"><![CDATA[(\mathsf {\mathbb  Cat}, \mathsf {S}[-])]]></fr:tex> is the 2-category whose objects are pairs <fr:tex
display="inline"><![CDATA[(\mathsf {\mathbb  C}, \mathsf {Sys})]]></fr:tex> were the first is a symmetric monoidal double category and the latter is a symmetric monoidal lax copresheaf <fr:tex
display="inline"><![CDATA[\mathsf {Sys}:\mathsf {\mathbb  C} \to  \mathsf {\mathbb  Set}]]></fr:tex>, also known as a doubly indexed category.
	A map of theories is given by a symmetric lax monoidal lax double functor between the base double categories and a lax natural transformation.
</fr:mainmatter><fr:backmatter /></fr:tree>
<fr:p>
	However, the concept of theory at the minute is underspecified.
	Most times we describe a theory we are actually giving a description of class of theories all parametrized by some common data (e.g. a category with pullbacks, a category together with a monad, etc.).
	So a theory is often just some data we can use to get an operad and an algebra in a specified way.
	Informally, one defines a doctrine as follows (this one is straight from <fr:link
type="local"
href="david-jaz-myers.xml"
addr="david-jaz-myers"
title="David Jaz Myers">David</fr:link>'s book <fr:link
type="local"
href="djm-categorical-systems-theory.xml"
addr="djm-categorical-systems-theory"
title="Categorical Systems Theory">Categorical Systems Theory</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>2220</fr:anchor><fr:addr>#948</fr:addr><fr:route>unstable-948.xml</fr:route><fr:title>Doctrine</fr:title><fr:taxon>Preliminary definition</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors><fr:parent>st-0003</fr:parent></fr:frontmatter><fr:mainmatter>
	A <fr:strong>doctrine</fr:strong> of systems is a particular way to answer the following questions about it means to be a systems theory:
	<fr:ol><fr:li>What does it mean to be a system? Does it have a notion of states, or of behaviors?
		Or is it a diagram describing the way some primitive parts are organized?</fr:li>
		<fr:li>What should the interface of a system be?</fr:li>
		<fr:li>How can interfaces be connected in composition patterns?</fr:li>
		<fr:li>How are systems composed through composition patterns between their interfaces?</fr:li>
		<fr:li>What is a map between systems, and how does it affect their interfaces?</fr:li>
		<fr:li>When can maps between systems be composed along the same composition patterns as the systems?</fr:li></fr:ol>
</fr:mainmatter><fr:backmatter /></fr:tree>
<fr:p>
	Thus a doctrine is a <fr:em>uniform</fr:em>, meaning <fr:em>functorial</fr:em>, <fr:em>way of building theories</fr:em>:

</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>2222</fr:anchor><fr:addr>#949</fr:addr><fr:route>unstable-949.xml</fr:route><fr:title>Doctrine</fr:title><fr:taxon>Definition</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors><fr:parent>st-0003</fr:parent></fr:frontmatter><fr:mainmatter>
	A <fr:strong>doctrine</fr:strong> <fr:tex
display="inline"><![CDATA[\mathfrak {Doc}]]></fr:tex> in the paradigm <fr:tex
display="inline"><![CDATA[{(\mathsf {\mathbb  E}, T)}]]></fr:tex> is a 2-functor
	<fr:tex
display="block"><![CDATA[\mathsf {Sys}^{\mathfrak {Doc}} : {\mathsf {\mathbb  Th}}^{\mathfrak {Doc}} \longrightarrow  {\mathsf {\mathbb  Th}}^{(\mathsf {\mathbb  E}, T)}]]></fr:tex>
	The objects of <fr:tex
display="inline"><![CDATA[{\mathsf {\mathbb  Th}}^{\mathfrak {Doc}}]]></fr:tex> are called <fr:strong>theories for the doctrine <fr:tex
display="inline"><![CDATA[\mathfrak {Doc}]]></fr:tex></fr:strong>.
</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>2224</fr:anchor><fr:addr>#950</fr:addr><fr:route>unstable-950.xml</fr:route><fr:taxon>Remark</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors><fr:parent>st-0003</fr:parent></fr:frontmatter><fr:mainmatter>
	The reason we already called <fr:tex
display="inline"><![CDATA[{\mathsf {\mathbb  Th}}^{(\mathsf {\mathbb  E}, T)}]]></fr:tex> the 2-category of <fr:em>theories</fr:em> is easily seen: clearly the identity functor of <fr:tex
display="inline"><![CDATA[{\mathsf {\mathbb  Th}}^{(\mathsf {\mathbb  E}, T)}]]></fr:tex> is a doctrine, and in fact the 'universal one', since it is terminal among doctrines over <fr:tex
display="inline"><![CDATA[{(\mathsf {\mathbb  E}, T)}]]></fr:tex>.
	Thus all right algebras for <fr:tex
display="inline"><![CDATA[T]]></fr:tex>-operads in <fr:tex
display="inline"><![CDATA[\mathsf {\mathbb  E}]]></fr:tex> are theories for the universal doctrine for the paradigm <fr:tex
display="inline"><![CDATA[{(\mathsf {\mathbb  E}, T)}]]></fr:tex>.

	The definitive definition of theory mentions directly the doctrine:
</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>2226</fr:anchor><fr:addr>#951</fr:addr><fr:route>unstable-951.xml</fr:route><fr:title>Theory</fr:title><fr:taxon>Definition</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors><fr:parent>st-0003</fr:parent></fr:frontmatter><fr:mainmatter>
	A <fr:strong>theory</fr:strong> <fr:tex
display="inline"><![CDATA[\mathsf {Sys}]]></fr:tex> for a doctrine <fr:tex
display="inline"><![CDATA[\mathfrak {Doc}]]></fr:tex> is an object in <fr:tex
display="inline"><![CDATA[{\mathsf {\mathbb  Th}}^\mathfrak {Doc}]]></fr:tex>.
</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>2228</fr:anchor><fr:addr>st-examples</fr:addr><fr:route>st-examples.xml</fr:route><fr:title>A zoo of theories of systems</fr:title><fr:authors /></fr:frontmatter><fr:mainmatter><fr:p>
	A list of examples.
</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>2229</fr:anchor><fr:addr>st-ex-0001</fr:addr><fr:route>st-ex-0001.xml</fr:route><fr:title>Fully observable open dynamical systems</fr:title><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>
	The doctrine <fr:tex
display="inline"><![CDATA[\mathfrak {FullObs}]]></fr:tex> is parametrized by cartesian categories.
	Given <fr:tex
display="inline"><![CDATA[\mathsf {C}]]></fr:tex>, the theory <fr:tex
display="inline"><![CDATA[\mathsf {FullObs}_{\mathsf {C}}]]></fr:tex> has as its theory of compositions the cartesian double category <fr:tex
display="inline"><![CDATA[\mathsf {\mathbb  Lens}_v(\mathsf {C})]]></fr:tex> of lenses whose forward part is an identity.
	Its indexing part is the doubly indexed functor sending <fr:tex
display="inline"><![CDATA[{I \choose  O}]]></fr:tex> to the discrete category of maps
	<fr:tex
display="block"><![CDATA[ 		\mathsf {FullObs}_{\mathsf {C}}{I \choose  O} := \{\delta  : I \times  O \to  O\} 	]]></fr:tex>
	which are functorially acted upon by forward-trivial lenses <fr:tex
display="inline"><![CDATA[{p^\sharp  \choose  O} : {I \choose  O} \leftrightarrows  {I' \choose  O}]]></fr:tex> as follows:
	<fr:tex
display="block"><![CDATA[ 		\mathsf {FullObs}_{\mathsf {C}}{p^\sharp  \choose  O} : I \times  O \xrightarrow {\delta } O \mapsto  I' \times  O \xrightarrow {(p^\sharp , O)} I \times  O \xrightarrow {\delta } O 	]]></fr:tex>
	Indexing by charts is works as usual, sending a chart <fr:tex
display="inline"><![CDATA[{h^\flat  \choose  h} : {I \choose  O} \rightrightarrows  {J \choose  Q}]]></fr:tex> to the discrete profunctor
	<fr:tex
display="block"><![CDATA[ 		\mathsf {FullObs}_{\mathsf {C}}{h^\flat  \choose  h}(\delta , \upsilon ) = 	]]></fr:tex>
	
  <html:center
xmlns:html="http://www.w3.org/1999/xhtml"><fr:embedded-tex
hash="e3d28031866b4644600bbbcce7b294e7"><fr:embedded-tex-preamble><![CDATA[\usepackage {quiver, amsopn, amssymb, mathrsfs}]]></fr:embedded-tex-preamble><fr:embedded-tex-body><![CDATA[\begin {tikzcd}
		{I \times  O} && {J \times  Q} \\
		O && Q
		\arrow ["{(h^\flat ,h\pi _O)}", from=1-1, to=1-3]
		\arrow ["\delta "', from=1-1, to=2-1]
		\arrow ["\upsilon ", from=1-3, to=2-3]
		\arrow ["h"', from=2-1, to=2-3]
	\end {tikzcd}]]></fr:embedded-tex-body></fr:embedded-tex></html:center></fr:p></fr:mainmatter><fr:backmatter /></fr:tree></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>References</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>7937</fr:anchor><fr:addr>djm-categorical-systems-theory</fr:addr><fr:route>djm-categorical-systems-theory.xml</fr:route><fr:title>Categorical Systems Theory</fr:title><fr:taxon>Reference</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="david-jaz-myers.xml"
addr="david-jaz-myers"
title="David Jaz Myers">David Jaz Myers</fr:link></fr:author></fr:authors></fr:frontmatter><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>7939</fr:anchor><fr:addr>leinster-higher-operads-2004</fr:addr><fr:route>leinster-higher-operads-2004.xml</fr:route><fr:title>Higher operads, higher categories</fr:title><fr:taxon>Reference</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="tom-leinster.xml"
addr="tom-leinster"
title="Tom Leinster">Tom Leinster</fr:link></fr:author></fr:authors></fr:frontmatter><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>7941</fr:anchor><fr:addr>spivak-wiring-diagrams-2013</fr:addr><fr:route>spivak-wiring-diagrams-2013.xml</fr:route><fr:title>The operad of wiring diagrams: formalizing a graphical language for databases, recursion, and plug-and-play circuits</fr:title><fr:taxon>Reference</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="david-spivak.xml"
addr="david-spivak"
title="David Spivak">David Spivak</fr:link></fr:author></fr:authors><fr:meta
name="doi">10.48550/arXiv.1305.0297</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>6524</fr:anchor><fr:addr>#843</fr:addr><fr:route>unstable-843.xml</fr:route><fr:title>Abstract</fr:title><fr:authors><fr:author><fr:link
type="local"
href="david-spivak.xml"
addr="david-spivak"
title="David Spivak">David Spivak</fr:link></fr:author></fr:authors><fr:parent>spivak-wiring-diagrams-2013</fr:parent></fr:frontmatter><fr:mainmatter>Wiring diagrams, as seen in digital circuits, can be nested hierarchically and thus have an aspect of self-similarity. We show that wiring diagrams form the morphisms of an operad <fr:tex
display="inline"><![CDATA[\cal  T]]></fr:tex>, capturing this self-similarity. We discuss the algebra <fr:tex
display="inline"><![CDATA[\mathrm {\mathcal  Rel}]]></fr:tex> of mathematical relations on <fr:tex
display="inline"><![CDATA[\cal  T]]></fr:tex>, and in so doing use wiring diagrams as a graphical language with which to structure queries on relational databases. We give the example of circuit diagrams as a special case. We move on to show how plug-and-play devices and also recursion can be formulated in the operadic framework as well. Throughout we include many examples and figures.</fr:mainmatter><fr:backmatter /></fr:tree>
</fr:mainmatter><fr:backmatter /></fr:tree></fr:mainmatter><fr:backmatter /></fr:tree><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>Backlinks</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>7943</fr:anchor><fr:addr>ocl-001V</fr:addr><fr:route>ocl-001V.xml</fr:route><fr:title>Grothendieck lenses for functors into 2Cat</fr:title><fr:date><fr:year>2024</fr:year><fr:month>4</fr:month><fr:day>13</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>The classical story for morphisms between systems as given in <fr:link
type="external"
href="myers_Categorical_2023">myers_Categorical_2023</fr:link> requires a certain square to commute strictly. However, in the case of non-deterministic systems, which use morphims in the Kleisli category for the powerset monad, it makes sense to ask this square to be filled by a 2-cell.</fr:p><fr:p>Specifically, a closed nondeterministic discrete system is a set <fr:tex
display="inline"><![CDATA[S]]></fr:tex> with a function <fr:tex
display="inline"><![CDATA[u \colon  S \to  \mathcal {P}(S)]]></fr:tex>, where <fr:tex
display="inline"><![CDATA[\mathcal {P}]]></fr:tex> is the powerset monad. A morphism from <fr:tex
display="inline"><![CDATA[(S, u)]]></fr:tex> to <fr:tex
display="inline"><![CDATA[(S', u')]]></fr:tex> is a function <fr:tex
display="inline"><![CDATA[f \colon  S \to  S']]></fr:tex> such that the following commutes


  <html:center
xmlns:html="http://www.w3.org/1999/xhtml"><fr:embedded-tex
hash="1342ce9109ab26cefa10ee0a1f947dce"><fr:embedded-tex-preamble><![CDATA[\usepackage {quiver, amsopn, amssymb, mathrsfs}]]></fr:embedded-tex-preamble><fr:embedded-tex-body><![CDATA[
\begin {tikzcd}
	S & {\mathcal {P}(S)} \\
	{S'} & {\mathcal {P}(S')}
	\arrow ["{\mathcal {P}(f)}", from=1-2, to=2-2]
	\arrow ["f"', from=1-1, to=2-1]
	\arrow ["u", from=1-1, to=1-2]
	\arrow ["{u'}"', from=2-1, to=2-2]
\end {tikzcd}
]]></fr:embedded-tex-body></fr:embedded-tex></html:center></fr:p><fr:p>However, the Kleisli category of the powerset monad is in fact a 2-category (or a poset-enriched category), because we can relate <fr:tex
display="inline"><![CDATA[h,k \colon  A \to  \mathcal {P}(B)]]></fr:tex> via <fr:tex
display="inline"><![CDATA[h \leq  k]]></fr:tex> if for all <fr:tex
display="inline"><![CDATA[a \in  A]]></fr:tex>, <fr:tex
display="inline"><![CDATA[h(a) \subseteq  k(a)]]></fr:tex>. If we write the above square as a square in the Kleisli category of powerset, it looks like


  <html:center
xmlns:html="http://www.w3.org/1999/xhtml"><fr:embedded-tex
hash="5ccfa23c05a815b1f92e7909c9b3a1c2"><fr:embedded-tex-preamble><![CDATA[\usepackage {quiver, amsopn, amssymb, mathrsfs}]]></fr:embedded-tex-preamble><fr:embedded-tex-body><![CDATA[
\begin {tikzcd}
	S & S \\
	{S'} & S
	\arrow ["f", from=1-2, to=2-2]
	\arrow ["f"', from=1-1, to=2-1]
	\arrow ["u", from=1-1, to=1-2]
	\arrow ["{u'}"', from=2-1, to=2-2]
\end {tikzcd}
]]></fr:embedded-tex-body></fr:embedded-tex></html:center>


and we can ask that rather than commuting, we have a filler 2-cell given by


  <html:center
xmlns:html="http://www.w3.org/1999/xhtml"><fr:embedded-tex
hash="6bff6fc7023c7a9d7ed53ceb428f9236"><fr:embedded-tex-preamble><![CDATA[\usepackage {quiver, amsopn, amssymb, mathrsfs}]]></fr:embedded-tex-preamble><fr:embedded-tex-body><![CDATA[
\begin {tikzcd}
	S & S \\
	{S'} & S
	\arrow ["f", from=1-2, to=2-2]
	\arrow ["f"', from=1-1, to=2-1]
	\arrow [""{name=0, anchor=center, inner sep=0}, "u", from=1-1, to=1-2]
	\arrow [""{name=1, anchor=center, inner sep=0}, "{u'}"', from=2-1, to=2-2]
	\arrow ["\leq "{description}, draw=none, from=1, to=0]
\end {tikzcd}
]]></fr:embedded-tex-body></fr:embedded-tex></html:center></fr:p><fr:p>How can we allow this in categorical systems theory?</fr:p><fr:p>Essentially, the idea is to generalize Definition 4.1.0.1 from <fr:link
type="external"
href="myers_Categorical_2023">myers_Categorical_2023</fr:link> (see also Matteo's <fr:link
type="local"
href="st-0001.xml"
addr="st-0001"
title="Categorical Systems Theory">Categorical Systems Theory</fr:link> for more general context) in the following way. Instead of starting with an indexed category <fr:tex
display="inline"><![CDATA[\mathcal {A} \colon  \mathcal {C}^\mathrm {op} \to  \mathsf {Cat}]]></fr:tex>, start with an indexed 2-category <fr:tex
display="inline"><![CDATA[\mathcal {A} \colon  \mathcal {C}^\mathrm {op} \to  \mathsf {2\text {-}Cat}]]></fr:tex>.</fr:p><fr:p>Then, we build the double category of lenses and charts in the following way. The horizontal and vertical morphisms (i.e. the lenses and the charts) are precisely the horizontal and vertical morphisms that we would get if we postcomposed <fr:tex
display="inline"><![CDATA[\mathcal {A}]]></fr:tex> with the forgetful functor <fr:tex
display="inline"><![CDATA[\mathsf {2\text {-}Cat} \to  \mathsf {Cat}]]></fr:tex>. However, a 2-cell filling the outer boundary


  <html:center
xmlns:html="http://www.w3.org/1999/xhtml"><fr:embedded-tex
hash="2b1a62dadcde28f34ab4fa80a119cb7d"><fr:embedded-tex-preamble><![CDATA[\usepackage {quiver, amsopn, amssymb, mathrsfs}]]></fr:embedded-tex-preamble><fr:embedded-tex-body><![CDATA[
\begin {tikzcd}
	{{\bar {A}_1 \choose  A_1}} & {{\bar {B}_1 \choose  B_1}} \\
	{{\bar {A}_2 \choose  A_2}} & {{\bar {B}_2 \choose  B_2}}
	\arrow ["{h_1}"', shift right, from=1-1, to=1-2]
	\arrow ["f"', shift right, from=1-1, to=2-1]
	\arrow ["{f_\flat }", shift left, from=1-1, to=2-1]
	\arrow ["{h_1^\sharp }"', shift right, from=1-2, to=1-1]
	\arrow ["g"', shift right, from=1-2, to=2-2]
	\arrow ["{g_\flat }", shift left, from=1-2, to=2-2]
	\arrow ["{h_2}"', shift right, from=2-1, to=2-2]
	\arrow ["{h^\sharp _2}"', shift right, from=2-2, to=2-1]
\end {tikzcd}
]]></fr:embedded-tex-body></fr:embedded-tex></html:center>


consists of the assertion that


  <html:center
xmlns:html="http://www.w3.org/1999/xhtml"><fr:embedded-tex
hash="8fd01e97ac5e09a2ebfa6e2dcb556b48"><fr:embedded-tex-preamble><![CDATA[\usepackage {quiver, amsopn, amssymb, mathrsfs}]]></fr:embedded-tex-preamble><fr:embedded-tex-body><![CDATA[
\begin {tikzcd}
	{A_1} & {B_1} \\
	{A_2} & {B_2}
	\arrow ["{h_1}", from=1-1, to=1-2]
	\arrow ["f"', from=1-1, to=2-1]
	\arrow ["k"{description}, from=1-1, to=2-2]
	\arrow ["g", from=1-2, to=2-2]
	\arrow ["{h_2}"', from=2-1, to=2-2]
\end {tikzcd}
]]></fr:embedded-tex-body></fr:embedded-tex></html:center>


commutes (we call the composite <fr:tex
display="inline"><![CDATA[k]]></fr:tex>), and a 2-morphism


  <html:center
xmlns:html="http://www.w3.org/1999/xhtml"><fr:embedded-tex
hash="5a4b8fcc6c15fd5b9ae24761e3d92f2e"><fr:embedded-tex-preamble><![CDATA[\usepackage {quiver, amsopn, amssymb, mathrsfs}]]></fr:embedded-tex-preamble><fr:embedded-tex-body><![CDATA[
\begin {tikzcd}
	{h_1^\ast (\bar {B}_1)} & {\bar {A}_1} \\
	{k^\ast (\bar {B}_2)} & {f^\ast (\bar {A}_2)}
	\arrow [""{name=0, anchor=center, inner sep=0}, "{h_1^\sharp }", from=1-1, to=1-2]
	\arrow ["{h_1^\ast (g_\flat )}"', from=1-1, to=2-1]
	\arrow ["{f_\flat }", from=1-2, to=2-2]
	\arrow [""{name=1, anchor=center, inner sep=0}, "{f^\ast (h_2^\sharp )}"', from=2-1, to=2-2]
	\arrow ["\alpha ", shorten <=6pt, shorten >=6pt, Rightarrow, from=0, to=1]
\end {tikzcd}
]]></fr:embedded-tex-body></fr:embedded-tex></html:center></fr:p><fr:p>For example, consider the following indexed 2-category.</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>2187</fr:anchor><fr:addr>ocl-001W</fr:addr><fr:route>ocl-001W.xml</fr:route><fr:title>The two-categorical nondeterministic systems theory</fr:title><fr:taxon>Definition</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>4</fr:month><fr:day>13</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p>Let <fr:tex
display="inline"><![CDATA[\mathcal {C} = \mathsf {Set}]]></fr:tex> and consider the indexed category <fr:tex
display="inline"><![CDATA[\mathcal {A} \colon  \mathcal {C}^\mathrm {op} \to  \mathsf {2\text {-}Cat}]]></fr:tex> defined in the following way. <fr:tex
display="inline"><![CDATA[\mathcal {A}(X)]]></fr:tex> is the biKleisli category (see <html:span
xmlns:html="http://www.w3.org/1999/xhtml"
class="nlab"><fr:link
type="external"
href="https://ncatlab.org/nlab/show/Kleisli%20category">Kleisli category</fr:link></html:span>, Proposition 2.7) of the powerset monad <fr:tex
display="inline"><![CDATA[\mathcal {P}]]></fr:tex> and the comonad <fr:tex
display="inline"><![CDATA[(-) \times  X]]></fr:tex>. Said more concretely, let <fr:tex
display="inline"><![CDATA[\mathcal {A}]]></fr:tex> be the category where the objects are sets, and a morphism from <fr:tex
display="inline"><![CDATA[A]]></fr:tex> to <fr:tex
display="inline"><![CDATA[B]]></fr:tex> is a function <fr:tex
display="inline"><![CDATA[A \times  X \to  \mathcal {P}(B)]]></fr:tex>.</fr:p><fr:p>Then <fr:tex
display="inline"><![CDATA[\mathcal {A}(X)]]></fr:tex> has a natural poset enrichment, where <fr:tex
display="inline"><![CDATA[f \leq  g \colon  A \times  X \to  \mathcal {P}_{+}(B)]]></fr:tex> iff for all <fr:tex
display="inline"><![CDATA[(a, x) \in  A \times  X]]></fr:tex>, <fr:tex
display="inline"><![CDATA[f(a,x) \subset  g(a,x)]]></fr:tex>.</fr:p><fr:p>We could also do the same thing for the non-empty powerset monad <fr:tex
display="inline"><![CDATA[\mathcal {P}_{+}]]></fr:tex>.</fr:p></fr:mainmatter><fr:backmatter /></fr:tree><fr:p>Now, build a double category category of lenses and charts for the indexed 2-category for the non-empty powerset monad as described above. There is then a corresponding systems theory on this double category, built via the section <fr:tex
display="inline"><![CDATA[T \colon  (X \colon  \mathsf {Set}) \to  \mathcal {A}(X)]]></fr:tex> defined by <fr:tex
display="inline"><![CDATA[TX = {X \choose  X}]]></fr:tex>.</fr:p><fr:p>This systems theory allows us to have more morphisms between systems than we previously could. For instance, suppose that we have a closed system


  <html:center
xmlns:html="http://www.w3.org/1999/xhtml"><fr:embedded-tex
hash="015d4b3646e1d4570fdccad8b651a1a3"><fr:embedded-tex-preamble><![CDATA[\usepackage {quiver, amsopn, amssymb, mathrsfs}]]></fr:embedded-tex-preamble><fr:embedded-tex-body><![CDATA[
\begin {tikzcd}
	{{S \choose  S}} & {{1 \choose  1}}
	\arrow [shift right, from=1-1, to=1-2]
	\arrow [shift right, from=1-2, to=1-1]
\end {tikzcd}
]]></fr:embedded-tex-body></fr:embedded-tex></html:center>


Then for a subset <fr:tex
display="inline"><![CDATA[U \subset  S]]></fr:tex>, the existence of a <fr:em>strict</fr:em> morphism (i.e. morphism in the systems theory for the indexed 1-category)


  <html:center
xmlns:html="http://www.w3.org/1999/xhtml"><fr:embedded-tex
hash="d1ed80ed57b7480c705066b8aef41dd7"><fr:embedded-tex-preamble><![CDATA[\usepackage {quiver, amsopn, amssymb, mathrsfs}]]></fr:embedded-tex-preamble><fr:embedded-tex-body><![CDATA[
\begin {tikzcd}
	{{U \choose  U}} & {{1 \choose  1}} \\
	{{S \choose  S}} & {{1 \choose  1}}
	\arrow [shift right, from=1-1, to=1-2]
	\arrow [shift right, from=1-1, to=2-1]
	\arrow [shift left, from=1-1, to=2-1]
	\arrow [shift right, from=1-2, to=1-1]
	\arrow [Rightarrow, no head, from=1-2, to=2-2]
	\arrow [shift right, from=2-1, to=2-2]
	\arrow [shift right, from=2-2, to=2-1]
\end {tikzcd}
]]></fr:embedded-tex-body></fr:embedded-tex></html:center>


implies that <fr:em>all possible</fr:em> paths according to the dynamics of <fr:tex
display="inline"><![CDATA[S]]></fr:tex> that start in <fr:tex
display="inline"><![CDATA[U]]></fr:tex> must stay in <fr:tex
display="inline"><![CDATA[U]]></fr:tex> for all time. This is because the update function on <fr:tex
display="inline"><![CDATA[U]]></fr:tex> must send a state <fr:tex
display="inline"><![CDATA[u]]></fr:tex> to the same subset of <fr:tex
display="inline"><![CDATA[S]]></fr:tex> that the update function on <fr:tex
display="inline"><![CDATA[S]]></fr:tex> sends it to, which is only possible if this subset is a subset of <fr:tex
display="inline"><![CDATA[U]]></fr:tex>.</fr:p><fr:p>On the other hand, a <fr:em>lax</fr:em> morphism (i.e. morphism in the systems theory for the indexed 2-category)


  <html:center
xmlns:html="http://www.w3.org/1999/xhtml"><fr:embedded-tex
hash="e20a3ba9f129e652e3caf4702a693ff1"><fr:embedded-tex-preamble><![CDATA[\usepackage {quiver, amsopn, amssymb, mathrsfs}]]></fr:embedded-tex-preamble><fr:embedded-tex-body><![CDATA[
\begin {tikzcd}
	{{U \choose  U}} & {{1 \choose  1}} \\
	{{S \choose  S}} & {{1 \choose  1}}
	\arrow [""{name=0, anchor=center, inner sep=0}, shift right, from=1-1, to=1-2]
	\arrow [shift right, from=1-1, to=2-1]
	\arrow [shift left, from=1-1, to=2-1]
	\arrow [shift right, from=1-2, to=1-1]
	\arrow [Rightarrow, no head, from=1-2, to=2-2]
	\arrow [shift right, from=2-1, to=2-2]
	\arrow [""{name=1, anchor=center, inner sep=0}, shift right, from=2-2, to=2-1]
	\arrow ["\leq "{description}, draw=none, from=0, to=1]
\end {tikzcd}
]]></fr:embedded-tex-body></fr:embedded-tex></html:center>


just implies that for each state in <fr:tex
display="inline"><![CDATA[U]]></fr:tex>, it is possible to stay in <fr:tex
display="inline"><![CDATA[U]]></fr:tex> in the future. This is because we have more freedom in our choice of dynamics for <fr:tex
display="inline"><![CDATA[U]]></fr:tex>, we only have to send <fr:tex
display="inline"><![CDATA[u \in  U]]></fr:tex> to a <fr:em>subset</fr:em> of the possible states that the update function for <fr:tex
display="inline"><![CDATA[S]]></fr:tex> would send it to. Because we chose the non-empty powerset monad, this subset must be non-empty, so the existence of this morphism implies that there is always a possibility to stay in <fr:tex
display="inline"><![CDATA[U]]></fr:tex> when we update, assuming that we start in <fr:tex
display="inline"><![CDATA[U]]></fr:tex>.</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>7945</fr:anchor><fr:addr>aria-0001</fr:addr><fr:route>aria-0001.xml</fr:route><fr:title>Formal and Informal Collaboration</fr:title><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:meta
name="institute">Topos Institute</fr:meta><fr:meta
name="subtitle">A presentation at Davidad's second ARIA workshop</fr:meta><fr:meta
name="comments">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>2585</fr:anchor><fr:addr>#249</fr:addr><fr:route>unstable-249.xml</fr:route><fr:title>Overview</fr:title><fr:taxon>Slide</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent></fr:frontmatter><fr:mainmatter>
  <fr:p>Follow along at <fr:link
type="external"
href="https://forest.localcharts.org/aria-0001.xml">forest.localcharts.org/aria-0001.xml</fr:link>!</fr:p>

  <fr:ol><fr:li>Motivation</fr:li>
    <fr:li>Informal collaboration</fr:li>
    <fr:li>Formal collaboration</fr:li></fr:ol>

  <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>2587</fr:anchor><fr:addr>#248</fr:addr><fr:route>unstable-248.xml</fr:route><fr:taxon>Notes</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent><fr:meta
name="toc">false</fr:meta></fr:frontmatter><fr:mainmatter>
    <fr:p>This is the source document for my talk at Davidad's second ARIA workshop in Birmingham on safe-by-design AI. From this document, I produce the <fr:link
type="external"
href="/aria-0001.pdf">pdf presentation slides</fr:link> and this HTML forester page.</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>2589</fr:anchor><fr:addr>#251</fr:addr><fr:route>unstable-251.xml</fr:route><fr:title>Motivation: What does success mean?</fr:title><fr:taxon>Slide</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent></fr:frontmatter><fr:mainmatter>

  
  <fr:p>Successful implementation of <fr:link
type="external"
href="https://www.aria.org.uk/wp-content/uploads/2024/01/ARIA-Safeguarded-AI-Programme-Thesis-V1.pdf">Davidad's program thesis</fr:link> over the next 3 years implies something like</fr:p>

  <fr:ul><fr:li>Several new fields worth of novel math research</fr:li>
    <fr:li><fr:tex
display="inline"><![CDATA[>]]></fr:tex>1,000,000 lines of code</fr:li></fr:ul>

  <html:pause
xmlns:html="http://www.w3.org/1999/xhtml" />

  <fr:p>This is only possible if we either:</fr:p>

  <fr:ul><fr:li>Clone Urs and ekmett a couple of times and form them into an (aligned) borg-like mindmass, or</fr:li>
    <html:pause
xmlns:html="http://www.w3.org/1999/xhtml" />
    <fr:li>Get really good at collaboration.</fr:li></fr:ul>

  <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>2593</fr:anchor><fr:addr>#250</fr:addr><fr:route>unstable-250.xml</fr:route><fr:taxon>Notes</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent><fr:meta
name="toc">false</fr:meta></fr:frontmatter><fr:mainmatter>
    <fr:p>The code also needs to be correct and efficient.</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>2595</fr:anchor><fr:addr>#253</fr:addr><fr:route>unstable-253.xml</fr:route><fr:title>Motivation: Current de-facto standards for collaboration</fr:title><fr:taxon>Slide</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent></fr:frontmatter><fr:mainmatter>
  <fr:ul><fr:li>Informal technical writing: overleaf+arXiv</fr:li>
    <fr:li>Technical computing: github repositories containing arbitrary code</fr:li></fr:ul>

  <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>2597</fr:anchor><fr:addr>#252</fr:addr><fr:route>unstable-252.xml</fr:route><fr:taxon>Notes</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent><fr:meta
name="toc">false</fr:meta></fr:frontmatter><fr:mainmatter>
    <fr:p>If you are really lucky, the github repository will be a maintained package installable through a package manager, and if you are really really lucky, the maintainer won't graduate in a year and forget about it.</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>2599</fr:anchor><fr:addr>#255</fr:addr><fr:route>unstable-255.xml</fr:route><fr:title>Informal collaboration: options</fr:title><fr:taxon>Hiddenslide</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent></fr:frontmatter><fr:mainmatter>
  <fr:ul><fr:li>Papers: too slow, standalone.</fr:li>
    <fr:li>Blog posts: better as advertisements/summaries for a larger audience. Also usually fairly standalone.</fr:li>
    <fr:li>Slack/zulip: too fragmented, too short</fr:li>
    <fr:li><fr:link
type="external"
href="https://roamresearch.com/">Roam Research</fr:link>: not designed for real <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">book-length</html:inquotes> mathematics.</fr:li>
    <fr:li><fr:link
type="external"
href="https://ncatlab.org/nlab/show/HomePage">nLab</fr:link>: past attempts to encourage people other than Urs to do novel math on the nLab have failed, unclear why</fr:li>
    <fr:li><fr:link
type="external"
href="https://gerby-project.github.io/">Gerby</fr:link> (stacks project software): powers arguably one of the most successful giant mathematical collaborations in history. Not explorative, janky</fr:li>
    <fr:li><fr:link
type="external"
href="link">Forester</fr:link>... just might work??</fr:li></fr:ul>


  <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>2602</fr:anchor><fr:addr>#254</fr:addr><fr:route>unstable-254.xml</fr:route><fr:taxon>Notes</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent><fr:meta
name="toc">false</fr:meta></fr:frontmatter><fr:mainmatter>
    <fr:p>I've thought about this a lot: see a more complete survey <fr:link
type="external"
href="https://www.localcharts.org/t/desiderata-for-an-adequate-scientific-publishing-platform/11367">here</fr:link>.</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>2604</fr:anchor><fr:addr>#257</fr:addr><fr:route>unstable-257.xml</fr:route><fr:title>Informal collaboration: A dream</fr:title><fr:taxon>Slide</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent></fr:frontmatter><fr:mainmatter>
  <fr:ul><fr:li>Monday morning (UK time): DJM writes down new definition</fr:li>
    <fr:li>Monday afternoon (EU time): Matteo adds some key lemmas</fr:li>
    <fr:li>Monday afternoon (Pacific time): Sophie spots hole</fr:li>
    <fr:li>Tuesday morning (EU time): A long-time lurker comments for the first time on idea for patching hole</fr:li>
    <fr:li>... <html:pause
xmlns:html="http://www.w3.org/1999/xhtml" /></fr:li>
    <fr:li>By Thursday night: Enough material for a paper</fr:li>
    <fr:li>Friday morning (UK time): Organize material into a paper by writing an abstract, collating background+new material into a reasonable order, and then exporting to arXiv-compatible LaTeX. All authors of transcluded material notified and given a chance to review.</fr:li>
    <fr:li>Friday afternoon (UK time): pub.</fr:li></fr:ul>
  <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>2607</fr:anchor><fr:addr>#256</fr:addr><fr:route>unstable-256.xml</fr:route><fr:taxon>Notes</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent><fr:meta
name="toc">false</fr:meta></fr:frontmatter><fr:mainmatter>
    <fr:p>AND THEN WE DO IT AGAIN THE NEXT WEEK.</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>2609</fr:anchor><fr:addr>#259</fr:addr><fr:route>unstable-259.xml</fr:route><fr:title>Informal collaboration: How does forester work?</fr:title><fr:taxon>Slide</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent></fr:frontmatter><fr:mainmatter>
  <fr:p><fr:link
type="external"
href="http://www.jonmsterling.com/jms-005P.xml">Forester</fr:link> takes a collection of files with TeX-like syntax and produces both a static website and LaTeX.</fr:p>

  <fr:p>Key features:</fr:p>

  <fr:ul><fr:li>Transclusion</fr:li>
    <fr:li>Linking, backlinking, and citation</fr:li>
    <fr:li>Macros</fr:li>
    <fr:li>TikZ<fr:tex
display="inline"><![CDATA[\to ]]></fr:tex>SVG</fr:li>
    <fr:li>Customizable LaTeX export</fr:li>
    <fr:li>Better error messages than LaTeX</fr:li></fr:ul>

  <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>2611</fr:anchor><fr:addr>#258</fr:addr><fr:route>unstable-258.xml</fr:route><fr:taxon>Notes</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent><fr:meta
name="toc">false</fr:meta></fr:frontmatter><fr:mainmatter>
    <fr:p><fr:link
type="local"
href="lc-0002.xml"
addr="lc-0002"
title="Forester for the Woodland Skeptic">Forester for the Woodland Skeptic</fr:link> is an introduction to forester for localcharts, and the official introduction is <fr:link
type="external"
href="http://www.jonmsterling.com/jms-0052.xml">Build your own Stacks Project in 10 minutes</fr:link>. You can see the <fr:link
type="external"
href="https://codeberg.org/LocalCharts/forest">README</fr:link></fr:p>

    <fr:ul><fr:li>Transclusion: the operad of writing</fr:li>
      <fr:li>Linking, backlinking, and citation: the best organization method known to humanity</fr:li>
      <fr:li>Macros: separation of intent from style</fr:li>
      <fr:li>TikZ<fr:tex
display="inline"><![CDATA[\to ]]></fr:tex>SVG: diagrams, diagrams everywhere</fr:li>
      <fr:li>Customizable LaTeX export: the magic of XML</fr:li>
      <fr:li>Better error messages than LaTeX</fr:li></fr:ul>

    <fr:p>Definitions, theorems, sections, references, etc. are all separate units (called trees) in Forester which can be freely included into other documents via <fr:em>transclusion</fr:em>, possibly recursively.</fr:p>

    <fr:p>In addition to transclusion, you can also just link other pages, which will automatically show up as a link to, say, Definition 3.4 if it happens to be on the same page, or Definition [double-category] if not. Each tree records which other trees link to it, and displays those trees at the bottom.</fr:p>

    <fr:p>Forester mimics the LaTeX macro system, and expands a single macro definition within text, inline math (which is displayed via KaTeX), and TikZ that gets compiled to svg. Macros also are tree-local rather than global to the whole forest, though one tree can import the macros from another tree.</fr:p>

    <fr:p>Specifically, you can just copy-paste commutative diagrams from quiver into forester.</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>2613</fr:anchor><fr:addr>#261</fr:addr><fr:route>unstable-261.xml</fr:route><fr:title>Informal collaboration: Just add (more) users</fr:title><fr:taxon>Slide</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent></fr:frontmatter><fr:mainmatter>
  <fr:p><fr:link
type="external"
href="https://www.localcharts.org/t/localcharts-is-live/5714">LocalCharts is live!</fr:link></fr:p>

  <fr:ul><fr:li>Medium-sized forum</fr:li>
    <fr:li>Small but growing forester instance</fr:li>
    <fr:li>This talk built via forester</fr:li>
    <fr:li>Compatible with UK law for government projects</fr:li></fr:ul>
  <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>2615</fr:anchor><fr:addr>#260</fr:addr><fr:route>unstable-260.xml</fr:route><fr:taxon>Notes</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent><fr:meta
name="toc">false</fr:meta></fr:frontmatter><fr:mainmatter>
    <fr:p>I have spent the last year (actually funnily enough starting with the first time I met Davidad) setting up the <fr:link
type="external"
href="link%20localcharts%20is%20live">localcharts</fr:link> ecosystem, which includes a <fr:link
type="external"
href="https://docs.localcharts.org">collaborative markdown editor</fr:link>, a <fr:link
type="external"
href="https://www.localcharts.org">discourse server</fr:link>, and an automated build system for forester which builds <fr:link
type="external"
href="https://forest.localcharts.org">the localcharts forest</fr:link> from its <fr:link
type="external"
href="https://github.com/LocalCharts/forest">git repository</fr:link>.</fr:p>
    <fr:p>We have <fr:link
type="local"
href="lc-0002.xml"
addr="lc-0002"
title="Forester for the Woodland Skeptic">docs on how to use the localcharts forest</fr:link>.</fr:p>
    <fr:p>And the whole system runs on (EU/UK)-hosted services, fit for use in a program sponsored by the UK government.</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>2617</fr:anchor><fr:addr>#263</fr:addr><fr:route>unstable-263.xml</fr:route><fr:title>Formal collaboration: Math on the computer</fr:title><fr:taxon>Slide</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent></fr:frontmatter><fr:mainmatter>
  <fr:p>What does it mean to do math on the computer?</fr:p>

  <fr:ul><fr:li>Logician: propositions as types.
      <fr:ul><fr:li>Characteristic Algorithms: Martin-Lof type checking</fr:li>
        <fr:li>Programming languages: Isabelle, Lean, Coq, Agda</fr:li></fr:ul></fr:li>
    <fr:li>Algebraist: Symbolic rewriting
      <fr:ul><fr:li>Characteristic Algorithms: Groebner bases, e-graphs</fr:li>
        <fr:li>Programming languages: Mathematica, Macaulay2, OBJ3, Z3</fr:li></fr:ul></fr:li>
    <fr:li>Engineer/statistician: Numerical computing
      <fr:ul><fr:li>Characteristic Algorithms: Euler's method, MCMC, gradient descent</fr:li>
        <fr:li>Programming languages: Fortran, MATLAB, Julia</fr:li></fr:ul></fr:li></fr:ul>

  <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>2619</fr:anchor><fr:addr>#262</fr:addr><fr:route>unstable-262.xml</fr:route><fr:taxon>Notes</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent><fr:meta
name="toc">false</fr:meta></fr:frontmatter><fr:mainmatter>
    We are going to be <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">doing math on the computer</html:inquotes> a lot in this program. But what does that actually mean?
      <fr:ul><fr:li>To a logician, that means turning propositions into types, and proofs into terms of those types, in a language like Agda, Coq, Lean, etc. In this way of <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">doing math</html:inquotes>, however, the only algorithm is the type-checking algorithm. Of course, by the Curry-Howard correspondence constructive proofs are equivalent to functions, and those functions might be interesting algorithms. But there is a significant difference between the use cases of <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">formal verification of an algorithm</html:inquotes> and <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">proof by typechecking.</html:inquotes> It's nice to formally verify your algorithms, but when your task is <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">write an algorithm for a task</html:inquotes>, the constraint that your program has to also be a proof of that program's correctness slows things down. And there are many algorithms other than the typechecking algorithm that we care about. For instance...</fr:li>
        <fr:li>To an algebraist, doing math on a computer means <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">using a variety of algorithms to rewrite symbolic equations.</html:inquotes> One could see this as tactics for proof, but I have yet to see a <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">Groebner base</html:inquotes> tactic or an <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">e-graph</html:inquotes> tactic implemented in a proof assistant. It could be an interesting research task to build such a proof assistant, but this is somewhat of a distraction when prototyping new symbolic algorithms. And additionally, the task of <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">writing a tactic engine</html:inquotes> is significantly enough different from <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">writing proofs using that tactic engine</html:inquotes> that it's worth thinking about as a <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">different way of doing math on the computer</html:inquotes>. Classically computer algebra is often done in in dialects of LISP, or special-purpose solvers written in high-performance languages like C++; we might want to do it in Rust or Julia. But that is not the extent of math on a computer.</fr:li>
        <fr:li>To an analyst, <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">math on a computer</html:inquotes> means numerical methods. In the glorious future, we will have numerical methods written in Lean that compile to the GPU. But we are not yet in the glorious future. Especially for experimentation, we will want to use languages suited for high-performance which classically meant Fortran or C, but now includes Julia, Rust, <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">the ecosystem of prewritten Fortran/C/C++ that has python wrappers,</html:inquotes> and Haskell DSLs that compile down to Fortran/C/C++/CUDA (which is how Ed Kmett 100xed state of the art performance for ray tracers).</fr:li></fr:ul>
    And then there is another task that requires a different set of tools: the task of having a UI that is not <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">a github of script files,</html:inquotes> which is the current state of the art for scientific computing. Now, <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">a github of script files</html:inquotes> is actually a pretty excellent UI; I'd take a github of script files over an opaque, half-baked web UI any day of the week. But if we want something like <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">a database of models,</html:inquotes> then we may end up with UI that is not just <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">writing scripts and putting them in git.</html:inquotes> All of these types of <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">doing math on the computer</html:inquotes> are important for the program.
  </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>2639</fr:anchor><fr:addr>#265</fr:addr><fr:route>unstable-265.xml</fr:route><fr:title>Formal Collaboration: Polyglot Scientific Models</fr:title><fr:taxon>Slide</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent></fr:frontmatter><fr:mainmatter>
  <fr:p>Dilemna:</fr:p>

  <fr:ol><fr:li>Don't want to rewrite tensorflow</fr:li>
    <fr:li>Don't want to write everything in Python</fr:li></fr:ol>

  <fr:p>Solution: Models should be language-independent <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">initial algebras</html:inquotes> of <fr:link
type="local"
href="st-0001.xml"
addr="st-0001"
title="Categorical Systems Theory">systems doctrines</fr:link>.</fr:p>

  <fr:p>Algorithms are <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">model semantics</html:inquotes> that apply over large classes of models.</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>2643</fr:anchor><fr:addr>#264</fr:addr><fr:route>unstable-264.xml</fr:route><fr:taxon>Notes</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent><fr:meta
name="toc">false</fr:meta></fr:frontmatter><fr:mainmatter>
    <fr:p>We don't want to rewrite tensorflow, but we also don't want to write <fr:em>everything</fr:em> in python.</fr:p>

    <fr:p>Eventually, we should just develop a language which <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">does it all.</html:inquotes> But we have to figure out what <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">it all</html:inquotes> consists of first. And <fr:em>engineering is research</fr:em>; even though the final product might be a clean reimplementation of research prototypes, it's still important to surface engineering problems in research prototypes. These research prototypes by necessity will be in extant programming languages, using extant libraries, and there is not a single choice of extant programming language which completely covers all of the ways of <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">doing math on a computer</html:inquotes>. In any case, we should be learning from the technological state of the art in different domains, and this necessitates multiple programming languages.</fr:p>

    <fr:p>Even if we manage to build the next great mathematical programming language, it will still be good to have language-independent models, because we aren't going to convince the entire world to use a single programming language, but we want to have safe AI for the entire world.</fr:p>

    <fr:p>Fortunately, we have <fr:link
type="local"
href="st-0001.xml"
addr="st-0001"
title="Categorical Systems Theory">Categorical Systems Theory</fr:link>, which tells us that a model is an initial algebra in some doctrine of systems. Elements of this initial algebra are just data that is independent of any particular computational paradigm.</fr:p>

    <fr:p>Of course, in order to implement all the operations of categorical systems theory, we will need to write functions for editing, composition, simplification, analysis, simulation, etc. These will operate on language-independent data, but will not themselves be language-independent data. Ideally, we write basic operations like editing, composition, simplification, etc. in a single language (Rust perhaps), and then offer some kind of ffi.</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>2648</fr:anchor><fr:addr>#267</fr:addr><fr:route>unstable-267.xml</fr:route><fr:title>Formal Collaboration: Models as Data</fr:title><fr:taxon>Slide</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent></fr:frontmatter><fr:mainmatter>
  <fr:p>What can be cross-language?</fr:p>

  <fr:ul><fr:li>Algebraic Data Types</fr:li>
    <fr:li>Generic types</fr:li>
    <fr:li>Multidimensional Arrays</fr:li>
    <fr:li>Presentations of algebraic structures (i.e. ring presentations by generator and relations).</fr:li>
    <fr:li>Knowledge bases, i.e. collections of <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">facts</html:inquotes> in the style of prolog.</fr:li></fr:ul>
  
  <fr:p>What can't?</fr:p>

  <fr:ul><fr:li>Arbitrary functions</fr:li>
    <fr:li>Arbitrary dependent types</fr:li></fr:ul>

  <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>2651</fr:anchor><fr:addr>#266</fr:addr><fr:route>unstable-266.xml</fr:route><fr:taxon>Notes</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent><fr:meta
name="toc">false</fr:meta></fr:frontmatter><fr:mainmatter>
    Given that we want to use multiple languages, how can we nonetheless build off each other's work? One way is <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">remote procedure calls</html:inquotes>. But there's a hard limit to what remote procedure calls can convey cross-language: that limit is the expressivity of the serialization format. You can't just serialize a function in a probabilistic programming language and ship it off somewhere. If you want to produce a scientific model in one language and then run analysis tasks on it with other languages, you need to be able to seamlessly serialize complex scientific models. So we need to carefully choose an integration strategy based on what is reasonable to serialize, that encompasses types complex enough to convey scientific models.
  </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>2654</fr:anchor><fr:addr>#269</fr:addr><fr:route>unstable-269.xml</fr:route><fr:title>Formal Collaboration: Implementation of <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">Models as Data</html:inquotes></fr:title><fr:taxon>Slide</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent></fr:frontmatter><fr:mainmatter>
  <fr:ol><fr:li>Type theory for data</fr:li>
    <fr:li>Embed into existing languages</fr:li>
    <fr:li>Build storage system</fr:li></fr:ol>
  <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>2657</fr:anchor><fr:addr>#268</fr:addr><fr:route>unstable-268.xml</fr:route><fr:taxon>Notes</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent><fr:meta
name="toc">false</fr:meta></fr:frontmatter><fr:mainmatter>
    <fr:ol><fr:li>Make a type theory expressive enough for the models we want, and such that all well-formed types <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">make sense to serialize cross-language</html:inquotes>. I have some clever ideas for how to do this that I won't go into right now, but can be found (links)</fr:li>
      <fr:li>Write a compiler that compiles type definitions to produce wrapper types in all relevant languages, similar to protobuf.</fr:li>
      <fr:li>Build systems for storing serialized models that can be accessed programmatically.</fr:li></fr:ol>
    <fr:p>It would look something like:</fr:p>
    <fr:pre>struct Graph {
  V: fintype;
  E: fintype;
  src: E -&gt; V;
  tgt: E -&gt; V;
};  </fr:pre>
  </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>2660</fr:anchor><fr:addr>#271</fr:addr><fr:route>unstable-271.xml</fr:route><fr:title>Formal Collaboration: Version the Source of Truth, Cache Everything Else</fr:title><fr:taxon>Slide</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent></fr:frontmatter><fr:mainmatter>
  <fr:ul><fr:li>Structured version control for models?</fr:li>
    <fr:li>Version control the source of truth, which could be
      <fr:ul><fr:li>The model itself</fr:li>
        <fr:li>Stochastic model search + random seed</fr:li>
        <fr:li>Textual DSL</fr:li>
        <fr:li>A composition diagram with other models inserted</fr:li></fr:ul></fr:li>
    <fr:li>Everything downstream of source of truth: deterministically cache</fr:li>
    <fr:li>Nix is current state-of-the-art.</fr:li></fr:ul>

  <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>2662</fr:anchor><fr:addr>#270</fr:addr><fr:route>unstable-270.xml</fr:route><fr:taxon>Notes</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent><fr:meta
name="toc">false</fr:meta></fr:frontmatter><fr:mainmatter>
    <fr:p>Originally, the idea was that we would version-control this data, directly. I still think that this is a good idea, but I think that there is a larger picture. Namely, you should version-control the <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">source of truth</html:inquotes> for your scientific models. If that source of truth is a modeler directly editing the data of the model via some interface, then you should version-control the model. However, if the source of truth is an algorithm that did a <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">model search</html:inquotes> to find that model, you should cache the model and attach it to a hash of <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">this code+this random seed</html:inquotes>. If the source of truth is a handwritten textual DSL that gets compiled into the model, then you shouldn't check the result of that compilation process into version control. You should instead cache the model, keyed on the hash of the DSL.</fr:p>

    <fr:p>The state-of-the-art current system for caching the results of arbitrary computation is Nix. It is not the most ideal platform for a variety of reasons, including speed, but we have to at least learn from how it works if we want to do better.</fr:p>

    <fr:p>We can hack version control of structured data into Nix via hashing the <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">patch application process.</html:inquotes> That is, we can make a Nix derivation with inputs <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">the previous state</html:inquotes> and <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">the patch</html:inquotes> which outputs the result of applying a patch to the previous state. Whether or not this is a <fr:em>good</fr:em> idea is not yet clear to me, but it is <fr:em>an</fr:em> idea.</fr:p>

    <fr:p>Interestingly enough, this would <fr:em>also</fr:em> be keyed on the hash of the versioning software, so every update to the versioning software would also cause all caches to be invalidated, and patches applied from scratch. Fortunately this is not too expensive: git does this every time you clone.</fr:p>

    <fr:p>Another sidenote: the difference between nix and content-addressed stores is that content-addressed stores are keyed by the hash of the thing that is stored, while nix is keyed by the hash of the inputs to a (more or less) pure function (the nix evaluator).</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>2670</fr:anchor><fr:addr>#273</fr:addr><fr:route>unstable-273.xml</fr:route><fr:title>Informal+Formal Collaboration: literate programming?</fr:title><fr:taxon>Slide</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent></fr:frontmatter><fr:mainmatter>
  <fr:ul><fr:li>I thought literate programming is dead... but is it?
      <fr:ul><fr:li><fr:link
type="external"
href="https://doc.rust-lang.org/rustdoc/index.html">Rustdoc</fr:link> is literate programming</fr:li>
        <fr:li><fr:link
type="external"
href="https://1lab.dev">1lab</fr:link> is literate programming</fr:li>
        <fr:li><fr:link
type="external"
href="https://www.pbrt.org/">PBRT</fr:link> is literate programming</fr:li>
        <fr:li><fr:link
type="external"
href="https://jupyter.org/">Jupyter</fr:link> is literate programming</fr:li></fr:ul></fr:li>
    <fr:li>Caching enables principled notebook computing</fr:li>
    <fr:li>Explainable AI involves AI... and explanations!</fr:li></fr:ul>
  <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>2672</fr:anchor><fr:addr>#272</fr:addr><fr:route>unstable-272.xml</fr:route><fr:taxon>Notes</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent><fr:meta
name="toc">false</fr:meta></fr:frontmatter><fr:mainmatter>
    <fr:p>Literate programming has a long history, starting with Knuth's implementation of TeX. One might argue that the traditional noweb style of literate programming has died out to some extent. But to a certain extent, if you consider notebooks or "documentation generators" like rustdoc to be literate programming, then literate programming is still going very strong.</fr:p>

    <fr:p>Also, the <fr:link
type="external"
href="1lab">1lab</fr:link> is a really interesting project: it combines formal mathematics with informal mathematics via literate agda.</fr:p>

    <fr:p>One of the Achilles heels of writing scientific documents as, say, Jupyter notebooks is that caching is hard. If you want a live-refreshing preview, then you can't rerun the notebook from scratch on every change. But if you want to avoid issues related to out-of-order cell execution, you have to rerun the notebook from scratch. And if you want to build notebooks in CI, then not having a cache system can mean &gt;30 minute CI times, which is a massive drain on productivity.</fr:p>

    <fr:p>However, if your scientific system is built from the ground up to have fine-grained caching, including for simulation runs and figures, then it becomes practical to offer a live-reloading compilation server for your document, which only reruns cells when necessary. And by cache-sharing, someone else can edit your document without having to run your (potentially extremely expensive) simulations. You can also delegate computation to server farms and just pull in the result (link to post on this)</fr:p>

    <fr:p>Finally, a significant part of scientific modeling <fr:em>is</fr:em> informal explanation! Human language should be a first class citizen in the modeling workbench.</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>2674</fr:anchor><fr:addr>#274</fr:addr><fr:route>unstable-274.xml</fr:route><fr:title>Conclusion</fr:title><fr:taxon>Slide</fr:taxon><fr:date><fr:year>2024</fr:year><fr:month>3</fr:month><fr:day>4</fr:day></fr:date><fr:authors><fr:author><fr:link
type="local"
href="owen-lynch.xml"
addr="owen-lynch"
title="Owen Lynch">Owen Lynch</fr:link></fr:author></fr:authors><fr:parent>aria-0001</fr:parent></fr:frontmatter><fr:mainmatter>
  <fr:ul><fr:li>Success requires scaling our development via more effective collaboration</fr:li>
    <fr:li>Informal collaboration needs to scale beyond <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">couple of mathematicians write standalone paper</html:inquotes></fr:li>
    <fr:li>Formal collaboration needs to scale beyond <html:inquotes
xmlns:html="http://www.w3.org/1999/xhtml">software package for single type of model in a single language</html:inquotes></fr:li>
    <fr:li>Next steps: <fr:link
type="external"
href="https://github.com/AlgebraicJulia/intertypes">intertypes</fr:link></fr:li></fr:ul>
  <fr:blockquote><fr:p>We shape technology for public benefit by advancing sciences of connection and integration.</fr:p>

    <fr:p>-- Topos Institute</fr:p></fr:blockquote>
</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>7947</fr:anchor><fr:addr>oxford-topos-meeting-2024</fr:addr><fr:route>oxford-topos-meeting-2024.xml</fr:route><fr:title>Systems Theory and Systems Practice Discussions</fr:title><fr:taxon>Event</fr:taxon><fr:authors /></fr:frontmatter><fr:mainmatter><fr:p>On March 6-8, a number of members of the Topos institute will be visiting the Oxford computer science department to have discussions around the topic of "systems theory and systems practice". A small number of Topos-affiliated guests will also join. This trip is supported by a grant from <fr:link
type="local"
href="atlas-computing.xml"
addr="atlas-computing"
title="Atlas Computing">Atlas Computing</fr:link>.</fr:p><fr:p>While this is not an open workshop, as there was not time or funding to invite a larger group of participants, we intend to share the content of the meetings as much as is possible, in the spirit of open collaboration with the larger applied category theory community.</fr:p><fr:p>To this end, we will have some lectures open to anyone in Oxford at the beginning of the workshop, which may or may not be recorded depending on preference of participants and availability of recording equipment.</fr:p><fr:p>This page lays out a rough schedule, and also serves as a place to link notes produced from the meeting.</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>2468</fr:anchor><fr:addr>#610</fr:addr><fr:route>unstable-610.xml</fr:route><fr:title>Schedule</fr:title><fr:authors /><fr:parent>oxford-topos-meeting-2024</fr:parent></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>2469</fr:anchor><fr:addr>#611</fr:addr><fr:route>unstable-611.xml</fr:route><fr:title>Wednesday, March 6</fr:title><fr:authors /><fr:parent>#610</fr:parent></fr:frontmatter><fr:mainmatter><fr:p>Location: Room 051.</fr:p><fr:p>Organizer: Owen Lynch</fr:p><fr:p>Note: there may be a break in the schedule for attending a talk by <fr:link
type="local"
href="thorsten-altenkirch.xml"
addr="thorsten-altenkirch"
title="Thorsten Altenkirch">Thorsten Altenkirch</fr:link> in the afternoon.</fr:p><fr:ul><fr:li>9:30am-12pm introductory talks on systems theory and probabilistic programming.
        <fr:ul><fr:li>9:30am-9:45am Owen Lynch: What is this workshop about?</fr:li>
          <fr:li>9:45am-10:45am David Jaz Myers, Categorical Systems Theory</fr:li>
          <fr:li>10:45am-11:00am Coffee Break.</fr:li>
          <fr:li>11:00am-12:00pm Sam Staton, LazyPPL</fr:li></fr:ul></fr:li>
      <fr:li>12pm-1pm lunch</fr:li>
      <fr:li>1pm-2:30pm focused discussion in smaller groups.</fr:li>
      <fr:li>2:30pm-3pm break and reformation of groups.</fr:li>
      <fr:li>3pm-4pm focused discussion in smaller groups.</fr:li>
      <fr:li>4pm-5pm A talk by <fr:link
type="local"
href="thorsten-altenkirch.xml"
addr="thorsten-altenkirch"
title="Thorsten Altenkirch">Thorsten Altenkirch</fr:link> with the following description
      <fr:blockquote>
        What is equality? I want to discuss the role of equality in Type Theory in the context of Homotopy Type Theory and recent work with Ambrus Kaposi and Mike Shulman on Higher observational Type Theory. 
      </fr:blockquote></fr:li>
      <fr:li>5pm-6pm: An opportunity to write up notes from the day or discuss further.</fr:li></fr:ul></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>2470</fr:anchor><fr:addr>#612</fr:addr><fr:route>unstable-612.xml</fr:route><fr:title>Thursday, March 7</fr:title><fr:authors /><fr:parent>#610</fr:parent></fr:frontmatter><fr:mainmatter><fr:p>Location: Tony Hoare room 8am-12pm, lecture theatre A 3pm-6pm</fr:p><fr:p>Organizer: David Jaz Myers</fr:p><fr:ul><fr:li>9am-10am group discussion of research directions from Wednesday, rereading what we wrote.</fr:li>
      <fr:li>10am-12pm focused discussion in smaller groups.</fr:li>
      <fr:li>12pm-3pm lunch and excursion (perhaps to the Botanical Gardens, optional)</fr:li>
      <fr:li>3pm-4:30pm focused discussion in smaller groups.</fr:li>
      <fr:li>4:30pm-6pm writing notes from focused discussion.</fr:li></fr:ul></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>2471</fr:anchor><fr:addr>#613</fr:addr><fr:route>unstable-613.xml</fr:route><fr:title>Friday, March 8</fr:title><fr:authors /><fr:parent>#610</fr:parent></fr:frontmatter><fr:mainmatter><fr:p>Location: Tony Hoare room 8am-12pm, room 051 3pm-6pm</fr:p><fr:p>Organizer: Paolo Perrone</fr:p><fr:ul><fr:li>9am-10am group discussion of research directions from Wednesday+Thursday, rereading what we wrote.</fr:li>
      <fr:li>10am-11am (tentative) recorded panel discussion of interesting topics from the past two days.</fr:li>
      <fr:li>11am-12pm focused discussion in smaller groups.</fr:li>
      <fr:li>12pm-2pm lunch and free time.</fr:li>
      <fr:li>2pm-3pm <fr:link
type="local"
href="elena-di-lavore.xml"
addr="elena-di-lavore"
title="Elena Di Lavore">Elena Di Lavore</fr:link> talk in Lecture Theatre A.</fr:li>
      <fr:li>3pm-4:30pm focused discussion in smaller groups.</fr:li>
      <fr:li>4:30pm-5:30pm final writing session.</fr:li>
      <fr:li>5:30pm-6:00pm discussion of research directions for Topos and Oxford CS going forward into the future.</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>2472</fr:anchor><fr:addr>#614</fr:addr><fr:route>unstable-614.xml</fr:route><fr:title>Topics</fr:title><fr:authors /><fr:parent>oxford-topos-meeting-2024</fr:parent></fr:frontmatter><fr:mainmatter><fr:p>The overall theme of this workshop is the idea of "models as formal objects". Within this theme, there are several subtopics that we might pursue.</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>2473</fr:anchor><fr:addr>#615</fr:addr><fr:route>unstable-615.xml</fr:route><fr:title>Double-operadic systems theory</fr:title><fr:authors /><fr:parent>#614</fr:parent></fr:frontmatter><fr:mainmatter><fr:p><fr:link
type="local"
href="st-0001.xml"
addr="st-0001"
title="Categorical Systems Theory">Double-operadic systems theory</fr:link> provides an abstract structure for the affordances of <fr:em>composing</fr:em> and <fr:em>comparing</fr:em> models. It is currently under development by <fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link> and <fr:link
type="local"
href="david-jaz-myers.xml"
addr="david-jaz-myers"
title="David Jaz Myers">David Jaz Myers</fr:link>. Open areas of research to discuss include:</fr:p><fr:ul><fr:li><fr:em>Doctrines of hybrid systems</fr:em>. This would be a development of theory along the lines of the the theory already developed for continuous systems and discrete systems that allows for systems that display both discrete and continuous behavior.</fr:li>
      <fr:li><fr:em>Nondeterminism+probability</fr:em>. How can we incorporate infrabayesian ideas into dynamical systems?</fr:li>
      <fr:li><fr:em>Approximate decomposition</fr:em>. How can we relate a system to a proposed decomposition of it, and measure how assumptions of causality, etc. implicit within a given decomposition lose or do not lose details about the original system. We can think of this like “graphical causal models,” but for dynamical systems rather than just Markov kernels.</fr:li></fr:ul></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>2474</fr:anchor><fr:addr>#616</fr:addr><fr:route>unstable-616.xml</fr:route><fr:title>Models as data</fr:title><fr:authors /><fr:parent>#614</fr:parent></fr:frontmatter><fr:mainmatter><fr:p>This topic works towards a vision for scientific computing where model specifications, theoretically backed by <fr:link
type="local"
href="st-0001.xml"
addr="st-0001"
title="Categorical Systems Theory">Categorical Systems Theory</fr:link>, can be serialized and passed between different programming languages for different analysis tasks. Open areas of research to discuss include:</fr:p><fr:ul><fr:li><fr:em>Type theory for serializable models</fr:em>. Certain type formers (producs, sums, recursive types, etc.) are amenable to serialization, while others (function types, streams, etc.) are not. <fr:link
type="local"
href="david-jaz-myers.xml"
addr="david-jaz-myers"
title="David Jaz Myers">David Jaz Myers</fr:link> has suggested that this distinction comes down to <fr:em>inductive</fr:em> vs. <fr:em>coinductive</fr:em> type formers. How detailed can our type specification language be while remaining practical?</fr:li>
      <fr:li><fr:em>Symmetries</fr:em>. Scientific models often have natural symmetries, due to the ability to rename variables. How can we capture these symmetries, and tell when two models are "isomorphic"?</fr:li>
      <fr:li><fr:em>Version control</fr:em>. If we are to store scientific models on disk, rather than just in transit between programming languages, we need to version them. And this versioning should be high-level: I shouldn't have to wade through a git diff of JSON that I didn't write.</fr:li></fr:ul></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>2475</fr:anchor><fr:addr>#617</fr:addr><fr:route>unstable-617.xml</fr:route><fr:title>Inference over the space of models</fr:title><fr:authors /><fr:parent>#614</fr:parent></fr:frontmatter><fr:mainmatter><fr:p>When models are data, it is natural to think of searching over the space of models as part of Bayesian statistical inference. Searching over large combinatorial spaces has a lot of difficulties: how can we use our knowledge of structure to help here?</fr:p><fr:ul><fr:li><fr:em>Symmetries</fr:em>. If the type theory naturally affords a definition of symmetry, can we use this to avoid sampling isomorphic models?</fr:li>
      <fr:li><fr:em>Composition/decompostion</fr:em>. How does composition interact with model search? Can we use composition/decomposition as a "divide and conquer" strategy?</fr:li>
      <fr:li><fr:em>Ensemble models</fr:em>. The result of a Bayesian inference is a posterior over model space, not a specific models. Can we treat this within a doctrine of "ensemble models"?</fr:li></fr:ul></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="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>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>7948</fr:anchor><fr:addr>blindness-to-structure</fr:addr><fr:route>blindness-to-structure.xml</fr:route><fr:title>Blindness to Structure</fr:title><fr:taxon>Philosophy</fr:taxon><fr:authors><fr:author><fr:link
type="local"
href="matteo-capucci.xml"
addr="matteo-capucci"
title="Matteo Capucci">Matteo Capucci</fr:link></fr:author></fr:authors></fr:frontmatter><fr:mainmatter><fr:p><fr:strong>Blindness to structure</fr:strong> is a pitfall in mathematics whereby the opacity of a materialistic framework hides the reliance on some structure.
	Formally, it can be seen as a failure to recognize the ambient <html:span
xmlns:html="http://www.w3.org/1999/xhtml"
class="nlab"><fr:link
type="external"
href="https://ncatlab.org/nlab/show/category">category</fr:link></html:span> one is working in.
</fr:p><fr:p>
	Notice blindness to structure isn't necessarily a failure to recognize structure, but more accurately is failure to recognize the role a structure plays.
</fr:p><fr:p>
	The most common form of blindness to structure is caused by mistaking the ambient for <html:span
xmlns:html="http://www.w3.org/1999/xhtml"
class="nlab"><fr:link
type="external"
href="https://ncatlab.org/nlab/show/Set">Set</fr:link></html:span>.
	Another very common one is caused by using the <html:span
xmlns:html="http://www.w3.org/1999/xhtml"
class="nlab"><fr:link
type="external"
href="https://ncatlab.org/nlab/show/reals">reals</fr:link></html:span>.
</fr:p><fr:p>
	Working with <fr:link
type="local"
href="concrete-object.xml"
addr="concrete-object"
title="Concrete Object">Concrete Objects</fr:link> easily leads to rely on structure without explicitly acknowledging it.
</fr:p></fr:mainmatter><fr:backmatter /></fr:tree></fr:mainmatter><fr:backmatter /></fr:tree></fr:backmatter></fr:tree>