Общий вход: натуральные числа и
в двоичном представлении,
,
,
1) Первый шаг проверяющего. Используя случайные биты, выбирает наугад
и бит
. Если
, то
задает
, если же
, то
задает
.
отправляет
доказывающему. Затем
выбирает два случайных множества, каждое мощности
2) Первый шаг доказывающего. выбирает случайное подмножество
мощности
и отправляет его обратно проверяющему.
3) Второй шаг проверяющего. Для каждого
отправляет доказывающему
такой, что
или
. Пусть разность мощностей множеств
и
равна
. Тогда
выбирает
случайных элементов
из большего множества и отправляет их соответствующих
доказывающему
(т.е.
или
для некоторых
).
задает
и
. Если
полагает
4) Второй шаг доказывающего. проверяет, что
такого вида как в 3) (т.е. для всех
или
для некоторого
) и что
. Если это не так, то
останавливается, обнаруживая обман. В противном случае,
отправляет
значение
.
5) проверяет значение
. Если
, то останавливается, обнаруживая обман.
6) и
повторяют шаги 1) - 5)
раз.
Проверяющий принимает доказательство, если он завершит итераций шагов 1) - 5). В противном случае, отвергает.