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