## Feedbacks

- A feedback is a function $f: X \to X$, typically depending on parameters, but which is
*not* differentiable (i.e., no gradient).

## Combinators

*Linear Structure:* We can define a linear structure on *A => B* given one on *B*. This does not collide with that on differentiable functions as linear structures are not covariant.
*Conjugation*: Given a differentiable function $f: X \to Y$ and a (feedback) function $g: Y\to Y$, we can define a conjugate function $g^f: X\to X$ by

- This behaves well with respect to composition of differentiable functions and linear combinations of feedbacks.
*Partial conjugation:* Sometimes the feedback also depends on $x \in X$, so we have $g: X\to Y$. We are then back-propagating $g$ using $f$.

## Matching distributions:

- Given a target distribution on $Y$, we get a feedback towards the target.
- Given a distribution on $X$ and $f: X\to Y$, we have a pushforward distribution. We get an image feedback.
- To get a feedback on $X$, we need to distribute among all terms with a given image proportional to the term, or depending only on the coefficient of the image image.
**Question** Can we define this shift on $X$ in one step correctly?
**Gradient view:** Just view $f$ as a differentiable function and back-propagate by the gradient. This shifts weights independently.

## Terms matching types

- We compare the distribution of terms that are types with the map from terms to types.
- The difference between these gives a flow on types.
- We back-propagate to get a flow on terms.

## Approximate matches

- We can filter by having a specific type, and then an error matching having a refined type (after some function application).
- For a given term, we get the product of its weight with an error factor.
- In terms of combinators, we replace inclusion by a weighted inclusion, or a product of the inclusion with a
*conformal factor*. We need a new basic differentiable function.

## Blending feedbacks.

- As in the case of matching types, suppose
- $X$ is a finite distribution.
- various feedbacks are based on atoms.
- we have weights for the various feedbacks.

- We give more credit for feedback components attained by fewer terms.
- This is achieved by sharing the feedback coming from one component, instead of just giving gradient
- The
*terms representing types* feedback is a special instance of this.