Cтраница 4
Решатели задач, организованные так, чтобы поощрять модульность и дополнимость, часто включают несколько различных методов и правил, которые вычисляют значения одной и той же величины или дают описания одного и того же объекта. Следуя [9, 59], мы называем эти множественные результаты сопряженными. Если при помощи различных методов было получено несколько значений какой-либо величины, то, проверяя эти конкурирующие значения на совместность, часто можно получить ценную информацию. Если такими значениями, например, являются многочлены, то такая проверка на совместность иногда позволяет найти значения одной или нескольких переменных. После проверки сопряженных элементов на совместность и получения новой информации благоразумные программы в дальнейших вычислениях используют только одно из предложенных значений, сохраняя остальные для будущих ссылок. Эти различные значения образуют класс эквивалентности по использованию переданного значения в других вычислениях. Одно из значений в этом классе должно быть выбрано представителем класса, предназначенным для распространения в другие вычисления. Мы можем выбирать представителя, пользуясь предположениями по умолчанию, но это приводит к нежелательному поведению обратного прослеживания. Если, например, система обратного прослеживания находит представителя класса эквивалентности, который вовлечен в несовместность, то следует найти способ отвергнуть этого представителя, понимаемого как точное значение, а не оставлять это значение и одновременно выбирать другого представителя. [46]