The big problem I see with program synthesis is that specifications will need to be exceedingly complex in order to cover all cases (http://www.commitstrip.com/en/2016/08/25/a-very-comprehensiv...). Even then, you’re not going to be able to predict exactly how these black box programs will behave.