Type Deltas and Delta Types
TL;DR
A general method for incremental recomputation of a pure function. If you’ve already computed f(x) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } f(x), this is a method for efficiently computing f(d(x)) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } f(d(x)), where d %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } d makes only a small change to x %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } x.
Delta Types
If A %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} A is a type, a delta type for A %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} A is a type ΔA %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \D A equipped with an operator  ¬ :ΔA(AA) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \nudge : \D A \to (A \to A). A delta type is a model for a subset of endofunctions over A %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} A.
Complete Delta Types
If A %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} A is a type, a complete delta type for A %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} A is a delta type ΔA %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \D A plus an operator :(ΔA)2ΔA %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \cdot : (\D A)^2 \to \D A such that (ΔA,) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} (\D A, \cdot) forms a monoid and  ¬  %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \nudge is a monoid-homomorphism (ΔA,)(AA, ; ) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} (\D A, \cdot) \to (A^A, \then). Additionally, we require that  ¬  %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \nudge is surjective. A complete delta type is a model for the entire set of endofunctions over A %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} A, plus composition and identity.
Ambiance
An ambiance is a selection of delta types for some (or all) types. In particular, it’s a mapping Ω:TypeDeltaType+CompleteDeltaType %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \amb : \text{Type} \to \text{DeltaType} + \text{CompleteDeltaType} where for each type AΩ %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} A \in \amb we have that Ω(A) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \amb(A) is either a delta type or a complete delta type for A %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} A.
When Ω(A) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \amb(A) is clear from context, then for Ω(A) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \amb(A) we write just ΔA %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \D A.
We require Ω %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \amb provide a delta type for every type. This is not actually stringent; any type that it would like to omit it can instead assign the trivial delta type consisting of a single element that gets taken to the identity function.
An ambiance Ω %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \amb is said to admit products if for every sequence (Ai)i %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} (A_i)_i of types and (δiΔAi)i %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} ( \delta_i \in \D {A_i} )_i of deltas for those types, exists a delta iδiΔiAi %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \otimes_i \delta_i \in \D{\prod_i A_i} such that aii ¬ (iδi)=ai ¬ δii %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \tup{a_i}_i \nudge (\otimes_i \delta_i) = \tup{ a_i \nudge \delta_i }_i For instance, a,b,c ¬ (δ×γ×ω)=a ¬ δ,b ¬ γ,c ¬ ω %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \tup{ a, b, c } \nudge ( \delta \times \gamma \times \omega ) = \tup{ a \nudge \delta, b \nudge \gamma, c \nudge \omega }.
Derivatives
Let A,B %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} A, B be types and ΔA,ΔB %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \D A, \D B delta types; let f:AB %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} f : A \to B be a function. Then a derivative for f %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} f is a function f:ΔAΔB %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \d f : \D A \to \D Bsuch that f(a) ¬ f(δ)=f(a ¬ δ) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} f(a) \nudge \d f(\delta) = f(a \nudge \delta) If we think of δΔA %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \delta \in \D A as representing a small change to a %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} a, then the derivative condition asks for f %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \d f to compute the corresponding change to f(a) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} f(a). For fixed f,ΔA,ΔB %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} f, \D A, \D B, there may be more than one derivative for f %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} f. However, the differences between these derivatives will be of no interest to us, so we will refer to “the” derivative.
Weak Derivatives
In many cases, it is impossible to write a plan derivative for a function, but possible to create a weakened form of derivative called a weak derivative.
Def (weak derivative) If A,B %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} A, B are types and ΔA,ΔB %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} \D A, \D B are delta types and f:AB %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} f : A \to B is a function, a weak derivative of f %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} f is a function  ⁣f:A×ΔAΔB %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} \wd f : A \times \D A \to \D Bsuch that f(a) ¬  ⁣f(a,δ)=f(a ¬ δ) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} f(a) \nudge \wd f (a, \delta) = f(a \nudge \delta)
Automatic Differentiation
This is ways to automatically compute derivatives
A derivative for compositions is a composition of the derivatives. Say we have f %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} f, g %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} g differentiable and composable; then f ; g %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} \d f \then \d g is a derivative for f ; g %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} f \then g. Proof: (f ; g)(x) ¬ (f ; g)(δ)=g(f(x)) ¬ g(f(δ))=g(f(x) ¬ f(δ))g is a derivative=g(f(x ¬ δ))f is a derivative %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} \begin{align*} & (f \then g)(x) \nudge (\partial f \then \partial g)(\delta) \\&= g(f(x)) \nudge \partial g(\partial f(\delta)) \\&= g(f(x) \nudge \partial f(\delta)) && \partial g \t{ is a derivative} \\&= g(f(x \nudge \delta)) && \partial f \t{ is a derivative} \end{align*}
A derivative for nonlinear compositions Consider f(x):=g(h1(x),h2(x),,hk(x)) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} f(x) := g(h_1(x), h_2(x), \dots, h_k(x)) We yearn for a derivative for f %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} f. Assume we are working in an ambiance Ω %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} \amb admitting products. Then a derivative for f %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} f is given by f(δ):=g(ihi(δ)) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} \d f(\delta) := \d g \left( \bigotimes_i \d h_i(\delta) \right) as is proven by f(x) ¬ f(δ)=g(h1(x), h2(x), , hk(x)) ¬ g(1ikhi(δ))=g(h1(x), h2(x), , hk(x) ¬ 1ikhi(δ))g is a derivative=g(h1(x) ¬ h1(δ), h2(x) ¬ h2(δ), , hk(x) ¬ hk(δ))=g(h1(x ¬ δ), h2(x ¬ δ), , hk(x ¬ δ))=f(x ¬ δ) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} \newcommand{\C}{,\ }\begin{align*} & f(x) \nudge \d f(\delta) \\&= g(h_1(x)\C h_2(x)\C \dots\C h_k(x)) \nudge \d g \left( \bigotimes_{1 \leq i \leq k} \d h_i (\delta) \right) \\&= g \left( \tup{ h_1(x)\C h_2(x)\C \dots\C h_k(x)} \nudge \bigotimes_{1 \leq i \leq k} \d h_i (\delta) \right) && \d g \t{ is a derivative} \\&= g( h_1(x) \nudge \d h_1(\delta)\C h_2(x) \nudge \d h_2(\delta)\C \dots\C h_k(x) \nudge \d h_k(\delta) ) \\&= g( h_1(x \nudge \delta)\C h_2(x \nudge \delta)\C \dots\C h_k(x \nudge \delta) ) \\&= f(x \nudge \delta) \end{align*} In the special case of k=1 %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} \newcommand{\C}{,\ }k = 1 this recovers that (g ; h)=g ; h %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} \newcommand{\C}{,\ }\d (g \then h) = \d g \then \d h



class HasDelta a where type Delta a :: Type nudge :: Delta a -> a -> a class HasDelta a => HasFullDelta a where -- Witnesses surjection of 'nudge' as a function into 'a -> a' -- Law: 'nudge (surj f) a = f a' surj :: (a -> a) -> Delta a instance HasDelta Void where type Delta Void = () nudge _ = identity instance HasDelta () where type Delta () = () nudge _ = identity instance (HasDelta a, HasDelta b) => HasDelta (a, b) where type Delta (a, b) = (Delta a, Delta b) nudge (da, db) (a, b) = (nudge da a, nudge db b) instance (HasDelta a, HasDelta b) => HasDela (Either a b) where type Delta (Either a b) = (Delta a, Delta b) nudge (da, db) = \case Left a -> Left (nudge da a) Right b -> Right (nudge db b) -- type Model = { str :: String, num :: Int } data ΔModel = ΔStr (String -> String) | ΔNum (Int -> Int) view :: Model -> Html view { str, num } = E.div [] [ E.p [] [ E.text str ] , E.p [] [ E.text (show num) ] ] ∂view :: Model -> ΔModel -> ΔHtml ∂view model δmodel = ∂E.div noop ( ∂(\x y -> [ x, y ]) ( ∂E.p noop ∂(\x -> [x]) (∂\model -> E.text model.str )(δmodel) ) ( ∂E.p noop ∂(\x -> [x]) (∂\model -> E.text (show model.num))(δmodel) ) ) where noop :: forall d a. Delta d a => d ∂(\(x /\ y) -> f x)(δxy) = case δxy of L δx -> ∂f(δx) R δy -> noop Both (d :: End (X /\ Y)) -> Surj (\fx ->


Things noticed when trying it out in code:
When writing a derivative f:ΔAΔB %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} \d f : \D A \to \D B, it’s desirable for ΔB %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} \D B to:
Contain a noop representation, in case the change to A %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} A had no effect on B %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} B
Have a composition operation, in case the change to A %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} A has an effect on B %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} B in two different places
It’s easy to get definition of derivatives wrong. However, each derivative can be verified fully by checking only a single condition. So, there’s a potential for property tests to grant a very high degree of confidence in our derivatives.
It’s probably going to make sense to allow for multiple delta types for the same type, as not all functions out of that type will agree on what makes sense to be tracked as a delta.
Questions:
Is there a need for derivatives to take both the delta and the current value? Or, when is there a need? I think it’s going to very commonly be a need. For instance:
Our input delta is removing a file from a folder. We want to produce an output delta for the “total size of folder” statistic. This requires knowing the size of the file removed, which is not a part of the delta (... or is it?).
More generally, our input delta is removing a chunk of the state. To appropriately modify the output, we need to know what the removed chunk looked like, but that information is not part of the delta itself (... or is it???)
Another example is the derivative of the projection (a,b)a %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} (a, b) \mapsto a. If our current value is (a0,b0) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} (a_0, b_0) and input delta is (a,b)(b,a) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} (a, b) \mapsto (b, a), then the output delta should be const(b0) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} \text{const}(b_0), which requires knowing b0 %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} b_0.
Another example, synthesized from a conversation with Samwell. Consider the function (xxα)jxj %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} (x \dots x_\alpha) \mapsto \sum_j x_j, where α %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} \alpha is enormous (say, in the trillions), and hence the sum is very slow to recompute. An input delta representing an addition of s %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} s to xi %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} x_i easily corresponds to an output delta; namely, the delta representing an addition of s %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} s. However, an input delta representing a scaling of s %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} s to xi %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} x_i does not easily correspond to any output delta, since we cannot recover xi %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} x_i from jxj %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} \sum_j x_j. However, if the derivative is also given the current value of (xxα) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} (x \dots x_\alpha), then it can easily compute the correct output delta as the delta incrementing the result by xi+sxi %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} -x_i + s x_i.
Is there a need for deltas to be complete? (Ie, surject onto End(A) %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} \text{End}(A)) Since we’re expecting them to be generated by call-sites which know the current value of aA %% general %% % shorthands \newcommand{\cl}[1]{ \mathcal{#1} } \newcommand{\sc}[1]{ \mathscr{#1} } \newcommand{\bb}[1]{ \mathbb{#1} } \newcommand{\fk}[1]{ \mathfrak{#1} } \renewcommand{\bf}[1]{ \mathbf{#1} } \renewcommand{\sf}[1]{ \mathsf{#1} } \renewcommand{\rm}[1]{ \mathrm{#1} } \newcommand{\floor}[1]{ { \lfloor {#1} \rfloor } } \newcommand{\ceil}[1]{ { \lceil {#1} \rceil } } \newcommand{\ol}[1]{ \overline{#1} } \newcommand{\t}[1]{ \text{#1} } \newcommand{\norm}[1]{ { \lvert {#1} \rvert } } % norm/magnitude (REMOVE) \newcommand{\mag}[1]{ { \left\lvert {#1} \right\rvert } } % magnitude \newcommand{\smag}[1]{ { \lvert {#1} \rvert } } % short mag \newcommand{\card}{ \t{cd} } % cardinality \newcommand{\dcup}{ \sqcup } % disjoint untion \newcommand{\tup}[1]{ \langle {#1} \rangle } % tuples \newcommand{\tl}{ \tilde } \newcommand{\wt}{ \widetilde } \newcommand{\To}{ \Rightarrow } % draw a box outlining some math \newcommand{\box}[1]{ \fbox{$ #1 $} } % f \onall X = { f(x) : x ∈ X } \newcommand{\onall}[1]{ { \llbracket {#1} \rrbracket } } % shorthands: various brackets \newcommand{\tpar}[1]{ \left( {#1} \right) } % "tall parens" \newcommand{\tbrak}[1]{ \left[ {#1} \right] } % "tall brackets" \newcommand{\tbrac}[1]{ \left\{ {#1} \right\} } % "tall braces" % reverse \mapsto (FIXME: make better) %\newcommand{\mapsfrom}{ \mathop{\leftarrow\!\mid} } \newcommand{\mapsfrom}{ \mathrel{↤} } % reverse-order composition \newcommand{\then}{ \operatorname{\ ;\ } } % Like f' represents "f after modification", \pre{f} % represents "f before modification" % TODO: remove this? \newcommand{\pre}[1]{{ \small `{#1} }} % hook arrows \newcommand{\injects}{ \hookrightarrow } \newcommand{\embeds}{ \hookrightarrow } \newcommand{\surjects}{ \twoheadrightarrow } \newcommand{\projects}{ \twoheadrightarrow } \newcommand{\id}{ \,\mathrm d } % integration d % derivatives: use {\ddn n x y} for (dy/dx) \newcommand{\ddn}[3]{ \frac{ {\mathrm d}^{#1} {#2} }{ {\mathrm d} {#3}^{#1} } } % nth derivative \newcommand{\dd}{ \ddn{} } % first derivative \newcommand{\d}{ \dd{} } % first derivative (no numerator) \newcommand{\dn}[1]{ \ddn{#1}{} } % nth derivative (no numerator) % derivatives: use {\D n x y} for (∂_x y) \newcommand{\Dn}[2]{ \partial^{#1}_{#2} } \newcommand{\D}{ \Dn{} } % no power \newcommand{\ig}[2]{ \int {#2} \, \mathrm d {#1} } % first integral %% category theory %% % category names \newcommand{\cat}[1]{{ \sf{#1} }} % yoneda embedding \newcommand{\yo}{よ} % extra long right-arrows \newcommand{\X}{-\!\!\!-\!\!\!} \newcommand{\xlongrightarrow}{ \mathop{ \, \X\longrightarrow \, } } \newcommand{\xxlongrightarrow}{ \mathop{ \, \X\X\longrightarrow \, } } \newcommand{\xxxlongrightarrow}{ \mathop{ \, \X\X\X\longrightarrow \, } } \newcommand{\takenby}[1]{ \overset{#1}{\rightarrow} } \newcommand{\longtakenby}[1]{ \overset{#1}{\longrightarrow} } \newcommand{\xlongtakenby}[1]{ \overset{#1}{\xlongrightarrow} } \newcommand{\xxlongtakenby}[1]{ \overset{#1}{\xxlongrightarrow} } \newcommand{\xxxlongtakenby}[1]{ \overset{#1}{\xxxlongrightarrow} } % represents an anonymous parameter % eg. $f(\apar)$ usually denotes the function $x \mapsto f(x)$ % TODO: remove this? \newcommand{\apar}{ {-} } %% computability %% % turing machines \newcommand{\halts}{ {\downarrow} } \newcommand{\loops}{ {\uparrow} } \renewcommand{\D}[1]{{ \Delta {#1} }} \renewcommand{\d}[1]{{ \partial {#1} }} \newcommand{\nudge}{{ \operatorname{\ \neg\ } }} \newcommand{\surj}[1]{{ \llbracket {#1} \rrbracket }} \newcommand{\amb}{\Omega} \newcommand{\wd}[1]{{ {\partial^*}\!{#1} }} a \in A, it seems like perhaps we can get away with using non-complete deltas for the inputs to derivatives.