Verification-driven design and programming of autonomous robots