Methods, systems, and apparatus, including computer programs encoded on computer storage media, for neural programming. One of the methods includes processing a current neural network input using a core recurrent neural network to generate a neural network output; determining, from the neural network output, whether or not to end a currently invoked program and to return to a calling program from the set of programs; determining, from the neural network output, a next program to be called; determining, from the neural network output, contents of arguments to the next program to be called; receiving a representation of a current state of the environment; and generating a next neural network input from an embedding for the next program to be called and the representation of the current state of the environment.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A neural network system for invoking a sequence of programs selected from a set of programs to cause an environment to transition into a different state, the neural network system comprising: a core recurrent neural network configured to receive a sequence of neural network inputs and to generate a sequence of neural network outputs; a memory storing, for each program in the set of programs, a key identifying the program and an embedding for the program; and a subsystem configured to, for each neural network output: determine, from the neural network output, whether or not to end a currently invoked program and to return to a calling program; determine, from the neural network output, a next program to be called; determine, from the neural network output, contents of arguments to the next program to be called; receive a representation of a current state of the environment; and generate a next neural network input from an embedding for the next program to be called and the representation of the current state of the environment. 2. The neural network system of claim 1, wherein, in response to determining to end a currently invoked program and to return to a calling program, the subsystem is configured to return a hidden state of the core recurrent neural network to a hidden state of the core recurrent neural network when the calling program was selected and provide an embedding for the calling program as part of the next neural network input. 3. The neural network system of claim 1, wherein determining the next program to be called comprises: determining, from the neural network output, a program key; and selecting a program from the set of programs having a key that is most similar to the program key. 4. The neural network system of claim 1, wherein generating the next neural network input comprises: extracting a fixed-length state encoding from the representation of the current state of the environment using a domain-specific encoder; and combining the fixed-length state encoding and the embedding for the next program to be called to generate the next neural network input. 5. The neural network system of claim 1, wherein the core recurrent neural network is an LSTM neural network. 6. The neural network system of claim 1, wherein the subsystem and the core recurrent neural network have been trained using execution traces as training data. 7. One or more non-transitory computer storage media encoded with instructions that, when executed by one or more computers, cause the one or more computers to implement a neural network system for invoking a sequence of programs selected from a set of programs to cause an environment to transition into a different state, the neural network system comprising: a core recurrent neural network configured to receive a sequence of neural network inputs and to generate a sequence of neural network outputs; a memory storing, for each program in the set of programs, a key identifying the program and an embedding for the program; and a subsystem configured to, for each neural network output: determine, from the neural network output, whether or not to end a currently invoked program and to return to a calling program; determine, from the neural network output, a next program to be called; determine, from the neural network output, contents of arguments to the next program to be called; receive a representation of a current state of the environment; and generate a next neural network input from an embedding for the next program to be called and the representation of the current state of the environment. 8. The computer storage media of claim 7, wherein, in response to determining to end a currently invoked program and to return to a calling program, the subsystem is configured to return a hidden state of the core recurrent neural network to a hidden state of the core recurrent neural network when the calling program was selected and provide an embedding for the calling program as part of the next neural network input. 9. The computer storage media of claim 7, wherein determining the next program to be called comprises: determining, from the neural network output, a program key; and selecting a program from the set of programs having a key that is most similar to the program key. 10. The computer storage media of claim 7, wherein generating the next neural network input comprises: extracting a fixed-length state encoding from the representation of the current state of the environment using a domain-specific encoder; and combining the fixed-length state encoding and the embedding for the next program to be called to generate the next neural network input. 11. The computer storage media of claim 7, wherein the core recurrent neural network is an LSTM neural network. 12. The computer storage media of claim 7, wherein the subsystem and the core recurrent neural network have been trained using execution traces as training data. 13. A method of invoking a sequence of programs selected from a set of programs to cause an environment to transition into a different state, the method comprising: processing a current neural network input using a core recurrent neural network to generate a neural network output; determining, from the neural network output, whether or not to end a currently invoked program and to return to a calling program from the set of programs; determining, from the neural network output, a next program to be called; determining, from the neural network output, contents of arguments to the next program to be called; receiving a representation of a current state of the environment; and generating a next neural network input from an embedding for the next program to be called and the representation of the current state of the environment. 14. The method of claim 13, further comprising: in response to determining to end a currently invoked program and to return to a calling program: returning a hidden state of the core recurrent neural network to a hidden state of the core recurrent neural network when the calling program was selected and providing an embedding for the calling program as part of the next neural network input. 15. The method of claim 13, wherein determining the next program to be called comprises: determining, from the neural network output, a program key; and selecting a program from the set of programs having a key that is most similar to the program key. 16. The method of claim 13, wherein generating the next neural network input comprises: extracting a fixed-length state encoding from the representation of the current state of the environment using a domain-specific encoder; and combining the fixed-length state encoding and the embedding for the next program to be called to generate the next neural network input. 17. The method of claim 13, wherein the core recurrent neural network is an LSTM neural network. 18. The method of claim 13, wherein the subsystem and the core recurrent neural network have been trained using execution traces as training data.