Роль слабо и строго типизированных переменных в основах математики

Давным-давно я задал вопрос о теории категорий на бирже математических стеков, и получил множество фантастических ответов и комментариев, но один ответ Карла Маммерта особенно поразил меня, и он полностью изменил мое представление о много понятий во всех разделах математики.

Когда я был студентом и впервые узнал о теории множеств, это открыло мне глаза на мир продвинутой математики, и когда я впервые столкнулся с теоретиками категорий, которые плохо отзывались о теории множеств, я почувствовал себя очень защищающимся. У меня возникла очень глупая идея, что я могу доказать, что теория множеств в некотором роде «более фундаментальна», чем теория категорий. Когда я впервые разместил свой вопрос на форуме math stack exchange, я надеялся, что наконец смогу найти доказательство того, что теория множеств требуется для самой формулировки теории категорий и, следовательно, является «более фундаментальной». Что бы это ни значило!

Теперь я понимаю, что теория множеств и теория категорий - это всего лишь две разные точки зрения для точного осмысления абстрактных понятий. Они не исключают друг друга, скорее, оба предмета играют важную роль в информировании нас об основах математики.

Теория категорий хороша по той же причине, что хорошо иметь возможность писать код на языках более высокого уровня, таких как Java, и не беспокоиться о физике полупроводников, языке ассемблера или внутренней работе виртуальной машины. Достаточно знать, что кто-то еще в прошлом все продумывал и все проверяет, и что есть эксперты, которые все свое время уделяют этим темам, чтобы все оптимизировать.

Теория множества и объекты сценария Java

Грубо говоря, теория множеств похожа на «нетипизированный язык программирования», где нас не волнует тип данных наших переменных, все является просто набором. Теория множеств - это строгое обобщение наивной концепции «совокупности объектов». По определению, один и тот же элемент не может появляться дважды в наборе, и нет априорного упорядочивания. В Python set - это тип данных, который имеет эти свойства. Мы собираемся скрыть очень большое количество проблем и на мгновение подумать о математических наборах как о объектах сценария Java. В теории множеств вы можете построить множество множеств, но каковы элементы этих множеств? Конечно же, другие наборы! В теории множеств все есть набор; так же, как в java-скрипте, на определенном уровне каждая переменная в основном является просто объектом.

В математике, как и в программировании, мы имеем дело с множеством различных структур данных. В отличие от языков, которые компилируются на компьютере, математика - это язык, который компилируется человеческим разумом, и именно наш собственный разум должен предоставлять все предупреждения и сообщения об ошибках.

Проблема реализации заданной структуры данных на машине совершенно неуместна в чистой математике, и существует множество структур данных и типов данных, которые не могут существовать на компьютере. Это объясняет, почему на некоторые вопросы, которые естественно возникают в информатике, например, какова максимальная эффективность алгоритма сжатия, можно ответить только на языке математики.

Примером структуры данных, которая не может существовать на компьютере, является несчетный набор элементов, такой как набор действительных чисел R. Числа с плавающей запятой - лучшее, что мы можем сделать, но они представляют собой всего лишь конечное приближение к числам, которые теоретически существуют в формальном смысле и содержат бесконечную последовательность неповторяющихся цифр после десятичной точки.

Теория категорий и Java

Теория категорий придерживается иной точки зрения на основы математики, чем теория множеств. Согласно этой точке зрения, вместо того, чтобы рассматривать множества как граждан первого класса, мы вместо этого сосредотачиваемся на сопоставлениях между двумя множествами. Например, рассмотрим следующую функцию Java:

int fn ( int n) {
return 2 * n;
}

Согласно теории категорий, эта функция представляет собой «отображение», которое принимает на входе целое число и производит на выходе четное число. В теории категорий, как и в java, все наши функции должны иметь возвращаемый тип, и должен быть указан тип данных для каждого параметра.

Если у вас есть больше, чем несколько функций, действующих на один и тот же набор наборов, очень удобный и простой способ подумать обо всем - представить каждый набор в виде точки (или вершины), а каждую функцию в виде стрелки, указывающей от его входного набора к его выходному набору. Такая структура данных называется ориентированным графом, и она играет фундаментальную роль в теории категорий. Изучение структуры данных графа называется Теория графов, это обширная область с широким спектром глубоких и красивых результатов.

Из-за фундаментального характера теории категорий, а также, возможно, по другим причинам, структура данных графа возникает снова и снова как в чистой, так и в прикладной математике. Неслучайно он также играет такую ​​важную роль в информатике и программировании.

Теория чисел и приведение

В Java, учитывая целое число и число с плавающей запятой

int i = 2;
float p = 2.0f;

мы не можем просто сложить эти два числа вместе и ожидать, что компилятор вернет целое число, это было бы ошибкой. Сначала нам нужно преобразовать p в целое число:

int n = i + (int) p ;

В теории категорий мы не используем слово приведение, вместо этого это называется карта естественного включения, но это то же самое.

Есть две отдельные ветви теории чисел, которые глубоко связаны операцией приведения между действительными (или комплексными) числами и натуральными числами, а именно: аналитическое и элементарное число. теория.

Элементарная теория чисел - это изучение натуральных чисел без использования множества передовых методов, и это очень сложный предмет. Элементарная теория чисел ставит множество неприятных вопросов и предлагает очень мало понимания, но может быть интересно проверить свой ум на решении сложной проблемы, ограничившись лишь небольшим набором инструментов.

Аналитическая теория чисел - это когда очень мощный механизм исчисления и анализа задействуется для решения определенных проблем, решение которых может быть показано также для решения вопросов, которые естественным образом возникают в элементарной теории чисел.

Интересным явлением является то, что существует множество доказательств одних и тех же фактов как элементарными, так и аналитическими методами, и лучшие из этих доказательств предоставляют мощные методы, которые можно использовать для решения других проблем. Например, Эйлер дал шокирующее доказательство того факта, что существует бесконечное количество простых чисел, используя бесконечное произведение геометрических рядов, и этот подход оказался намного лучше для получения других результатов, таких как Теорема о простых числах », Чем первоначальное доказательство, данное Евклидом.

Это явление похоже на то, как новая библиотека или фреймворк могут сделать те или иные задачи практическими в первый раз. Однако при написании программы, по-видимому, у вас есть какая-то цель для ее написания, исходящая из внешнего мира. В чистой математике наша цель - открыть вечные истины об определенных абстрактных понятиях (или «категориях») и разработать инструменты и методы, позволяющие понять отношения между ними.

tl;dr

Отсутствие типизации в теории множеств полезно для многих целей, но может вызвать ненужные накладные расходы при выполнении простых вещей, которых можно избежать, думая о математических объектах как о строго типизированных переменных, а не о множествах; и красота теории категорий состоит в том, что она предоставляет язык для понимания универсальной структуры, которая является чрезвычайно фундаментальной и проявляется в очень большом количестве совершенно различных математических систем.