The types of programs which have seen success in the AI revolution that is currently going on, often are not amenable to program analysis. They very often fall in the “undecidable” category, at least with respect to their anticipated behavior.
This depends which properties you care about. I suspect there isn’t a small model of the AI program that duplicates its output behavior, but you can do a lot with off-the-shelf analysis.
It’s relatively easy to prove things like “this program will only ever use the following subset of available system calls,” or “this program is well typed”, or “the program cannot modify itself”, or “can only modify these fixed specific parts of its state.”
I can also imagine a useful AI program where you can prove a bound on the run-time, of the form “this program will always terminate in at most X steps”, for some actual fixed constant X. (Obviously you cannot do this for programs in general, but if the program only loops over its inputs for a fixed number of iterations or somesuch, you can do it.)
These sorts of properties are far from a general proof “this program is Safe”, but they are non-trivial and useful properties to verify.
The FAI-related things you would want to prove are of the form: “when given a world state characterized by X, input percepts characterized by Y, the program always generates outputs characterized by Z.” For many existing and popular AI architectures, we haven’t the foggiest idea how to do this. (It’s no surprise that Eliezer Yudkowsky favors Pearl’s causal probabilistic graph models, where such analysis is at least known to be possible.)
To the extent that X, Y, and Z can be written formally within the programming language, program analysis at least in principle is fully capable of proving such a statement. I apologize if this comes off as rude, but your statement that “we haven’t the foggiest idea how to do this” is flat-out false. While there are certainly unique challenges to reasoning about the sort of code that gets written in machine learning, it seems to me that the main reason we don’t have well-developed analysis tools is that most code doesn’t look like machine learning code, and so there has been little pressure to develop such tools.
This depends which properties you care about. I suspect there isn’t a small model of the AI program that duplicates its output behavior, but you can do a lot with off-the-shelf analysis.
It’s relatively easy to prove things like “this program will only ever use the following subset of available system calls,” or “this program is well typed”, or “the program cannot modify itself”, or “can only modify these fixed specific parts of its state.”
I can also imagine a useful AI program where you can prove a bound on the run-time, of the form “this program will always terminate in at most X steps”, for some actual fixed constant X. (Obviously you cannot do this for programs in general, but if the program only loops over its inputs for a fixed number of iterations or somesuch, you can do it.)
These sorts of properties are far from a general proof “this program is Safe”, but they are non-trivial and useful properties to verify.
The FAI-related things you would want to prove are of the form: “when given a world state characterized by X, input percepts characterized by Y, the program always generates outputs characterized by Z.” For many existing and popular AI architectures, we haven’t the foggiest idea how to do this. (It’s no surprise that Eliezer Yudkowsky favors Pearl’s causal probabilistic graph models, where such analysis is at least known to be possible.)
To the extent that X, Y, and Z can be written formally within the programming language, program analysis at least in principle is fully capable of proving such a statement. I apologize if this comes off as rude, but your statement that “we haven’t the foggiest idea how to do this” is flat-out false. While there are certainly unique challenges to reasoning about the sort of code that gets written in machine learning, it seems to me that the main reason we don’t have well-developed analysis tools is that most code doesn’t look like machine learning code, and so there has been little pressure to develop such tools.