А это с какой стороны посмотреть :) Несколько возвращаемых значений можно считать одним, но составным. В C можно завести тип данных struct и возвращать его --- это будет одно значение или несколько? :)
раз уж ты такой формалист, то кури нумерацию пар - важную составляющую теории алгоритмов. Любой паре чисел можно дать номер и по номеру определить пару при помощи примитивно-рекурсивных функции.
если считать, что функция - это отображения одного множества в другое, то что нам запрещает сделать отображения множества множеств в другое множество других множеств?