February 6, 2026
I was surprised at how pleasant this paper was to read. Yes, I may have skipped some sections about circuits, but the presentation of multi-directional computation was compelling and piqued my curiosity.
If I may attempt to summarize, the paper claims this:
A programmer may see the relation
y = 5x + zand write a statement which computesyfrom the variablesxandz. A mathematician, however, could say “I have the values ofyandx, therefore I can derivez”. The programmer would have to do extra work to perform the same behavior. This restriction, however, is a product of the language the programmer is using, rather than the nature of computing itself. A better language would let us specify relations among values and provide a sufficient combination of inputs to arrive at an output.
The paper continues to explore some edge cases, limitations, and partial solutions to those limitations. It also provides a mechanism for a means of abstraction. I hope to explore this aspect more. What complex ideas can be eloquently expressed as a bundle of constraints?
This paper builds constraint networks using primitive operators and
then abstract operations made with these operators. I would like to
explore how operations which are more imperative in flavor would change
when viewed from a multi-directional perspective. For example, in the monkey
and banana problem, what would it mean to think of something like
newState = monkey.grab(banana) multi-directionally? Perhaps
expressed as: grab(?, banana, newState). Is there any
meaning in the latter expression? Is the simple act of changing state
over time coupling us with directional computation? Have I lost my
marbles?
Anyway, I’ve not read many real papers but I think this one will be a highlight for it’s accessibility, though I hope to be wrong.
I understand that these ideas are developed further in theses by Steele and Radul. I hope, in time, to learn more about their ideas. I’ve gleaned bits and pieces, and am particularly curious about the implications of considering all values to be ranges.
Some other miscellaneous thoughts: