Пожимая плечами, разработчик программы А говорит: “Программа А могла бы провести рокировку”. Разработчик программы Б добавляет: “Моя программа, программа Б, тоже могла бы провести рокировку”.
Как минимум, мы можем обнаружить, что переключение единственного бита в генераторе (псевдо) случайных чисел заставило бы программу А провести рокировку. Допустим, разработчик программы А проанализирует фактическое исполнение программы и выяснит, что в этом случае программа А перестала “думать” на мгновение раньше нужного. (Любая шахматная программа, какой бы прекрасной она ни была, вынуждена в какой-то момент принудительно прерывать свои поиски.) Программа А рассматривала возможность рокировки и начала анализировать ее исход, но время поджимало, а потому программа А обратилась к своему генератору случайных чисел, то есть, по сути, подбросила монетку, и выбрала ход, который сочла лучшим на тот момент – и этим ходом стала не рокировка. Но если бы псевдослучайным числом стала единица, а не ноль, программа А подумала бы над своим ходом немного дольше и в итоге провела бы рокировку. “Просто переключите один бит в случайном числе – и программа А победит!” – заявляет разработчик. Мы же скажем, что в таком случае просчет программы А с рокировкой оказался непредвиденным результатом неудачного обращения к генератору случайных чисел.
Когда мы обратимся к разработчику программы Б, он не сможет подобным образом подтвердить свое заявление, что программа Б могла бы провести рокировку. Программа Б действительно “знает”, что рокировка в сложившейся ситуации допустима, и, возможно, даже некоторое время “рассматривала” возможность рокировки, но выбрать рокировку в этом случае даже не собиралась. Рокировка была для нее