Hi,

The theme here is Automatic Differentiation. Consider the following (theoretical) data type:

class adouble2 {

```
double data;
adouble value;
adouble derivative;
```

}

It's my alternative to the classical:

class adouble {

```
double value;
double derivative;
```

}

that would (hopefully) enable fully functional autodiff on functions like

$f(x) = sin(x) + \dot{g}(e^{x^2})$,

where there are derivatives of other known functions in the body of the main function, nested to arbitrary depth.

I would like to perform math on these objects in order to *prove* that they can do the job, but I haven't found a proper structure to do so. So my question would be:

What algebraic structure is suitable for representing self-referential data types? and why!

For example, I know a ring wouldn't be suitable, because I would have to define a set

$\mathbb{A} = \{ (a, x, \dot{x}) : a\in\mathbb{R}; x, \dot{x}\in\mathbb{A} \}$

with the sum

$++ : \mathbb{A}\times\mathbb{A}\to\mathbb{A}$ where $(a, x, \dot{x}) ++ (b, y, \dot{y}) := (a+b, x++y, \dot{x}++\dot{y})$

And the problem with this is that neither the set $A$ is well-defined nor I can prove $++$ is closed in $A$, nor I can define a product or do anything at all.

From the research I have done so far, I am under the slight impression that coalgebras might do, but I wouldn't like to dive

into something that complicated unless strictly necessary. If that would be the case, then a second question arises: how exactly a coalgebra can represent an object like adouble2 ?

As background info I shall add that this research project has just been assigned to me (an undergraduate) so it is barely starting.

Please excuse my English, and thanks for reading!