Читая в полудреме Голблатта, в голову пришла мысль, которую я не мог сформулировать до сего дня. Идея заключается в следующем:
Мы с множествами работаем достаточно вольно. Практически любой набор объектов может рассматриваться как множество. Ограничения наложены на размер множеств сверху (напр., понятием
собственного класса), на его внутреннюю структуру (аксиома фундирования) и др. Однако в целом мы работаем с ними вольно в прикладных задачах, когда нет хитрых проблем и все конструкции выглядят крайне прозрачно. Так, веря в существование числа 2, как и Эйфелевой башни, мы можем сформировать множества {2}, {Эйфелева башня}, так и {2, Эйфелева башня}. Однако на практике мы не сталкиваемся с такими множествами. Также мы не сталкиваемся с множествами, в которые входят числа и множества чисел одновременно. По этой причине мы и наплодили великое количество синонимов:
множество, совокупность, семейство, ... (я не встречал математиков, говорящих "множество борелевых множеств" вместо "семейство борелевых множеств" или "совокупность ...")
функция, функционал, оператор, отображение, ... (деление условное, по характеру элементов обл. определения и значения)
Почему же мы не вводим ограничения на тип элементов, что во множество входят, чтоб уже в процессе построения множеств исключать "монстров", вроде {2, Эйфелева башня} или
?
Это похоже на ситуацию с функциями в ЯП: в некоторых мы обязаны их типизировать, чтоб всё была красиво, в некоторых мы вольны подавать на вход всё, что угодно, как и возвращать. Поэтому в последнем случае мы никогда не можем быть уверены, что не возникнет ситуации, когда функция возвращает объект иной природы, чем ожидалось. Пример: ждали число, а получили строку.
Типизация позволяет отсеять такие проблемы: если сказано, что функция возвратит число, она его возвратит.
Есть ли что-то подобное и для множеств?
(Судя по всему есть, т.к. уважаемый ЗУ Joker на этом форуме
упомянул об этом. Других ссылок поиск в Интернете не дал)