Program induction on a differentiable stack based VM.
Idea is to allow program induction via gradient descent. This allows it to be integrated with NN based systems to merge the pattern matching capabilities of NN with the simple calculation ability of standard code.
There are two main components.
- A 'discrete' stack based VM with minimal concatenative instruction set.
- A 'superposition' of the above where every state is a probability vector.
An instruction for the superposition VM is a probability vector of all instructions. Running it should produce the weighted sum of running all possible instructions simultaneously. Thus given sets of input and output pairs a satisficing input program can be learned via gradient descent.
See test/runtests.jl.
Currently rather buggy.