Введение
Операция в алгебре и математике
применение монад в компьютерном программном обеспечении
В теории категорий, ветви математики, монад (также тройка, триада, стандартная конструкция и фундаментальная конструкция) является моноидом в категории эндофункторов некоторой фиксированной категории. Эндофунктор – это функтор, отображающий категорию на себя, а монад – это эндофунктор вместе с двумя естественными преобразованиями, необходимыми для выполнения определенных условий когерентности. Монады используются в теории пар сопряженных функторов и обобщают операторы замыкания на частично упорядоченных множествах до произвольных категорий. Монады также полезны в теории типов данных, в денотационной семантике императивных языков программирования и в функциональных языках программирования, позволяя языкам без изменяемого состояния выполнять такие операции, как имитация циклов; см. Монада (функциональное программирование).
In category theory, a branch of mathematics, a monad (also triple, triad, standard construction and fundamental construction) is a monoid in the category of endofunctors of some fixed category. An endofunctor is a functor mapping a category to itself, and a monad is an endofunctor together with two natural transformations required to fulfill certain coherence conditions. Monads are used in the theory of pairs of adjoint functors, and they generalize closure operators on partially ordered sets to arbitrary categories. Monads are also useful in the theory of datatypes, the denotational semantics of imperative programming languages, and in functional programming languages, allowing languages without mutable state to do things such as simulate for loops; see Monad (functional programming).
Введение и определение
Монада — это определённый тип эндофунктора. Например, если и являются парой сопряжённых функторов, с левым сопряжённым к , то композиция является монадой. Если и являются обратными функторами, то соответствующая монада является тождественным функтором. В общем случае, сопряжения не являются эквивалентностями — они связывают категории различной природы. Теория монад важна как часть усилий по пониманию того, что именно сопряжения «сохраняют». Другая часть теории, которую также можно узнать из рассмотрения , обсуждается в рамках двойственной теории комонад.
Монада силового набора
Монада множества степеней — это монада на категории : Для множества обозначим через множество степеней множества , а для функции — функцией между множествами степеней, индуцированной прямым образом под этой функцией. Для каждого множества существует отображение, которое каждому элементу сопоставляет одноэлементное множество. Функция преобразует множество множеств в его объединение. Эти данные определяют монаду.
takes a set of sets to its union. These data describe a monad.
Замечания
Аксиомы монады формально похожи на аксиомы моноида. Фактически, монады являются частными случаями моноидов, а именно, это моноиды в категории эндофункторов, снабженные умножением, заданным композицией эндофункторов. Композиция монад, как правило, не является монадой. Например, двойной функтор степенного множества не допускает никакой структуры монады.
Комонад
Категорическое двойное определение — это формальное определение комонады (или котриплы); это можно кратко сформулировать, сказав, что комонада для категории является монадой для противоположной категории. Следовательно, это функтор из категории в саму себя, с набором аксиом для коединицы и коумножения, которые получаются из обращения всех стрелок в только что данном определении монады. Монады соотносятся с моноидами, как комонады с комоноидами. Каждый набор является комоноидом единственным образом, поэтому комоноиды менее распространены в абстрактной алгебре, чем моноиды; однако комоноиды в категории векторных пространств с обычным тензорным произведением важны и широко изучаются под названием коалгебр.
История терминологии
Понятие монады было изобретено Роджером Годментом в 1958 году под названием «стандартная конструкция». Монаду также называли «двойной стандартной конструкцией», «тройкой», «моноидом» и «триадой». Термин «монад» используется с 1967 года, впервые — Жаном Бенабу.
Личность
Функтор идентичности на категории является монадой. Его умножение и единица — это тождественное отображение на объектах .
Операторы закрытия на частично заказанных наборах
Для категорий, возникающих из частично упорядоченных множеств (с единственным морфизмом из A в B тогда и только тогда, когда A ≤ B), формализм значительно упрощается: сопряженные пары становятся связями Галуа, а монады — операторами замыкания.
Коденситные монады
В мягких условиях функторы, не имеющие левого сопряженного, также порождают монаду, так называемую кодензитную монаду. Например, включение не имеет левого сопряженного. Его кодензитная монада — это монада на множествах, отображающая любое множество X в множество ультрафильтров на X. Эти и подобные примеры обсуждаются в .
does not admit a left adjoint. Its codensity monad is the monad on sets sending any set X to the set of ultrafilters on X. This and similar examples are discussed in .
Монады, используемые в денотационной семантике
Следующие монады над категорией множеств используются в денотационной семантике императивных языков программирования, а аналогичные конструкции применяются в функциональном программировании.
Монада окружающей среды
При заданном множестве, эндофунктор монады читателя или среды отображает каждое множество в множество функций. Таким образом, эндофунктор этой монады является тождественным хом-функтору. Компонент юнита в отображает каждый элемент в постоянную функцию. В функциональном программировании и денотационной семантике монада среды моделирует вычисления с доступом к данным, доступным только для чтения.
In functional programming and denotational semantics, the environment monad models computations with access to some read only data.
Список и множество монадов
Список или монода недетерминизма отображает множество X в множество конечных последовательностей (то есть списков), элементами которых являются элементы из X. Операция unit отображает элемент x из X в одиночный список [x]. Операция умножения (bind) конкатенирует список списков в один список. В функциональном программировании монода списка используется для моделирования недетерминированных вычислений. Ковариантная монода множества степеней также известна как монода множеств и также используется для моделирования недетерминированных вычислений.
Алгебра над свободной группой монады
Например, для свободной группы монады, обсуждаемой выше, алгебра — это множество вместе с отображением из свободной группы, порожденной над этим множеством, в само это множество, удовлетворяющим условиям ассоциативности и наличия единицы. Такая структура эквивалентна утверждению, что само множество является группой.
Алгебры над монодой распределения
Другой пример — монода распределения на категории множеств. Она определяется отображением множества в множество функций с конечной поддержкой, сумма которых равна I. В обозначениях теории множеств это множество {f | support(f) is finite and Σ f = I}. Непосредственным рассмотрением определений можно показать, что алгебры над монодой распределения эквивалентны выпуклым множествам, то есть множествам, снабженным операциями для i, удовлетворяющими аксиомам, напоминающим поведение выпуклых линейных комбинаций в евклидовом пространстве.
Алгебра над симметричной монадой
Другим полезным примером моноды является функтор симметричной алгебры на категории модулей над коммутативным кольцом, отображающий модуль в прямую сумму симметричных тензорных степеней, где, например, алгебра справа рассматривается как модуль. Тогда алгебра над этой монадой является коммутативной алгеброй. Существуют также алгебры над монадами для антисимметричных тензоров и полных тензорных функторов, дающие антисимметричные алгебры и свободные алгебры, так что первое кольцо является свободной антисимметричной алгеброй над в генераторах, а второе кольцо – свободной алгеброй над в генераторах.
Коммутативные алгебры в кольцевых спектрах E-бесконечности
Существует аналогичная конструкция для коммутативных алгебр (стр. 113), которая позволяет получить коммутативные алгебры из коммутативной алгебры. Если ℳ — категория модулей, то функтор T — это монада, заданная формулой T(A) = A ⊗ A. Тогда существует ассоциированная категория коммутативных алгебр, построенная из категории алгебр над этой монадой.
Монады и присоединения
Как уже было сказано выше, любое присоединение порождает монаду. И наоборот, каждая монада возникает из некоторого присоединения, а именно свободного–забывающего присоединения, левый сопряженный которого отображает объект X в свободную T-алгебру T(X). Однако, как правило, существует несколько различных присоединений, порождающих одну и ту же монаду: пусть – категория, объекты которой – это присоединения такие, что и стрелки которой – морфизмы присоединений, являющиеся тождественными на . Тогда вышеупомянутое свободное–забывающее присоединение, включающее категорию Эйленберга–Мура , является терминальным объектом в . Начальным объектом является категория Клейсли, которая по определению является полной подкатегорией , состоящей только из свободных T-алгебр, то есть T-алгебр вида для некоторого объекта x из C.
whose left adjoint sends an object X to the free T algebra T(X). However, there are usually several distinct adjunctions giving rise to a monad: let be the category whose objects are the adjunctions such that and whose arrows are the morphisms of adjunctions that are the identity on Then the above free–forgetful adjunction involving the Eilenberg–Moore category is a terminal object in An initial object is the Kleisli category, which is by definition the full subcategory of consisting only of free T algebras, i. e., T algebras of the form for some object x of C.
Теорема монодичности Бека
Теорема монодичности Бека дает необходимое и достаточное условие для того, чтобы присоединение было монодическим. Упрощенная версия этой теоремы утверждает, что G является монадным, если он консервативен (или G отражает изоморфизмы, то есть морфизм в D является изоморфизмом тогда и только тогда, когда его образ под действием G является изоморфизмом в C) и C имеет коэквализаторы, которые сохраняются функтором G. Например, забывающий функтор из категории компактных пространств Хаусдорфа в множества является монадным. Однако забывающий функтор из категории всех топологических пространств в множества не является консервативным, поскольку существуют непрерывные биекции (между некомпактными или нехаусдорфовыми пространствами), которые не являются гомеоморфизмами. Следовательно, этот забывающий функтор не является монодическим. Двойственная версия теоремы Бека, характеризующая комонадные присоединения, применима в различных областях, таких как теория топосов и темы в алгебраической геометрии, связанные с спуском. Первым примером комонадного присоединения является присоединение для гомоморфизма колец между коммутативными кольцами. Это присоединение является комонадным, по теореме Бека, тогда и только тогда, когда B является верно плоским как модуль над A. Таким образом, это позволяет осуществлять спуск модулей B, снабженных данными спуска (то есть действием комонад, заданным присоединением), к модулям над A. Полученная теория верного плоского спуска широко применяется в алгебраической геометрии.
for a ring homomorphism between commutative rings. This adjunction is comonadic, by Beck's theorem, if and only if B is faithfully flat as an A module. It thus allows to descend B modules, equipped with a descent datum (i. e., an action of the comonad given by the adjunction) to A modules. The resulting theory of faithfully flat descent is widely applied in algebraic geometry.
Применение
Монады используются в функциональном программировании для представления типов последовательных вычислений (иногда с побочными эффектами). См. статью «Монады в функциональном программировании» и более математически ориентированный модуль Wikibook b: Haskell/Теория категорий. Монады применяются в денотационной семантике нечистых функциональных и императивных языков программирования. В категорической логике была установлена аналогия между теорией монады-комонады и модальной логикой посредством операторов замыкания, внутренних алгебр и их связи с моделями S4 и интуиционистской логикой.
Обобщение
Монады можно определить в 2-категории. Монады, описанные выше, являются монадами для .