タグ

圏論に関するkomlowのブックマーク (26)

  • 圏論の随伴をちゃんと抑えよう - 檜山正幸のキマイラ飼育記 (はてなBlog)

    [追記 date="後日"]日語の表記として「抑える」より「押さえる」が正しい気がしてきたけど、このままにします。使い分けがさほど明確なわけじゃないし、「抑える」に「支配下に置く」ような雰囲気もあるので。[/追記] 「テキスト記法を図式順で書くか反図式順で書くか?」「ストリング図の上下左右方向をどうするか?」などの過剰なバラエティ(あるいは混乱)が、圏論の学習を困難にしている要因のひとつだろう、という話は何度も何度も何度も書きました。最近の記事を2つだけ挙げれば: 記法バイアスと記法独立な把握: 順序随伴を例として 双対や随伴に強くなるためのトレーニング 上下左右をきちんと区別しないと話がワヤクチャになる典型的な例に、随伴〈adjoint, adjunction〉の定義があります。僕も「どっちが右だっけ?」「域だっけ、余域だっけ?」「εって、単位? それとも余単位?」とか、ねんじゅう迷っ

    圏論の随伴をちゃんと抑えよう - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 関手, 自然変換とHaskell

    $\require{AMScd}$ 最近, Mathjaxで遊んでいるので, それを使って, 関手と自然変換について調べたことのメモ. 関手とHaskellのFunctor 関手$F$は圏$X$から$Y$へ対応を表し, 圏$X$の各関数$f : A \rightarrow B$を $F(f) : F(A) \rightarrow F(B)$ として移すものです. 関手は元の圏の関数について合成則を保存し, $f : A \rightarrow B, g : B \rightarrow C$,を関手$F$によって移すと, $F(f) \circ F(g) = F(f \circ g)$という性質を持ちます. また, 元の圏の各対象Xについて, 移した先の関手$F(id_X)$の射もその先の対象の$id$射となります. Haskellにおける関手$F$は, 名前も性質もmap関数に似ています.

  • mono, epi, iso | tnomuraのブログ

    集合はこの世界の構造を集合と要素と写像で記述する。圏論は質的には射のみでこの世界の構造を記述する。どちらもこの世界の仕組みに潜む構造を記述する点では共通の目的がある。 圏論の mono や epi や iso といった射についても、来は射の性質のみで定義されている。しかし、射のみで定義されたこれらの射と現実世界の関係はイメージが作りにくい。そこで、これらの射の性質を集合の圏 Set と対応づける事によって操作しやすいイメージを作ることが大切になってくる。 集合の圏 Set のオブジェクトは集合 A, B, ... で集合と集合の射はそれらの写像だ。ただし、オブジェクトを集合とし、射をその写像とするとき、いくつかの制限が発生する。 それは、圏の射の合成による制限だ。圏 C では、オブジェクト A と B の間の射が f で B と D の間の射が g であるとき、その合成 g . f が

    mono, epi, iso | tnomuraのブログ
  • Category theory for scientists

    David Spivak Research Scientist Department of Mathematics MIT Office: 2-230 Email: dspivak--math/mit/edu

    Category theory for scientists
  • 可換図式 - Wikipedia

    5項補題の証明で使われる可換図式 数学、特に圏論において、可換図式 (英: commutative diagram) は、対象(あるいは頂点)と射(あるいは矢、辺)の図式であって、始点と終点が同じである図式のすべての向き付きの道が合成によって同じ結果になるようなものである。可換図式は代数学において方程式が果たすような役割を圏論において果たす(Barr-Wells, Section 1.7 を参照)。 図式は可換でないかもしれない、すなわち図式の異なる道の合成は同じ結果にならないかもしれないことに注意する。明確化のために、「この可換図式」(this commutative diagram) あるいは「図式は交換する」(the diagram commutes) といったフレーズが使われる。 例[編集] 第一同型定理を表現する次の図式において、可換性は を意味する: 下は一般の可換正方形であり

    可換図式 - Wikipedia
  • 圏と関手入門

  • デカルト作用圏によるプログラムの意味論 (たぶん、その1) - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「=」は代入演算子だとして、次のような関数呼び出しを考えてみます。 f(y = x + 1, x + y) 変数xの値が2, 変数yの値が5の状況を例とします。引数を左から右の順で評価するなら、関数に渡る実引数は f(3, 5) となり、f(x + 1, x + x + 1) と変わりません。最初のyの値は破壊されます。一方、引数の評価が逆順、右から左なら、f(3, 7)、つまり、f(x + 1, x + y) となります。 (y = x + 1, x + y) を式のタプルと見ると、タプル成分の評価順序を決めないと値が確定しません。このような状況も含めて、圏論により計算をモデル化をする試みが次の論文に載っています。 Title: Cartesian effect categories are Freyd-categories Authors: Jean-Guillaume Dumas,

    デカルト作用圏によるプログラムの意味論 (たぶん、その1) - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 随伴がモテないのはどう考えてもモナドが悪い!(モナドとコモナドの関係が分かる話) - Moon? Shadow! - Misc Memo

    この記事が対象としている読者 コモナドって何となく聞いたことがある人 圏論よく分かんないけど、圏の定義(対象と射と合成と恒等射と……)みたいなことは聞いたことがある人 要するに、モヤモヤしてても問題ないのですけれど、最低限の知識くらいはあった方がいいってことなのですー>ω< また、この記事は深淵なHaskellプログラマのみが書くことを許されると言われるモナドチュートリアルではないのでそういったものを期待されていたら、ごめんなさいなのです>< コモナド(´・ω・`) さて、みなさんはコモナドについてご存知です(・ω・? google:コモナド Haskellで調べると、 こもなど!コモナド!Comonad!! - capriccioso String Creating(Object something){ return My.Expression(something); } という id:

    随伴がモテないのはどう考えてもモナドが悪い!(モナドとコモナドの関係が分かる話) - Moon? Shadow! - Misc Memo
  • 0引数関数と定数は同じなのか? :圏的ラムダ計算の立場から考える - 檜山正幸のキマイラ飼育記 (はてなBlog)

    引数を持たない純関数と定数って、区別すべきでしょうか。f() と f を別物とみなすか、それとも f() と f は同じものだとしちゃうか、という問題です。(副作用の話とかは考えません。) 別にどうでもいい些細なことのようですが、この問題のせいで微妙な齟齬が生まれたりします。圏的ラムダ計算の立場からこの問題を考えてみます。以下のような、ある種の等式を示すのが目標です。 ('a *) ≡ "a シングルクォート(')、ダブルクォート(")、アスタリクス(*)、同値関係≡の意味はこの記事内で説明します。 内容: 定数定義と関数定義 ラムダ式の構文 射のクォーティング 射のフルカリー化 推論規則と意味規則 射を表す定数記号の意味 値定数と関数定数の導入 シングルクォート定数とダブルクォート定数の関係 定数定義と関数定義 整数値2に名前を付けるとして、JavaScriptで書いてみると: // 方

    0引数関数と定数は同じなのか? :圏的ラムダ計算の立場から考える - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • https://www.kurims.kyoto-u.ac.jp/~cs/cs2011_hasegawa.pdf

  • モナドへの近道・Haskell からの寄道

    モナドへの近道・Haskell からの寄道 中村翔吾∗ 2007 年 1 月 26 日 稿の趣旨 圏論のモナドとプログラミング言語 (Haskell) の間にはどの様な関係があるのか.この問いに答えるた めには,当然だが,少なくともモナドが理解できる程度に圏論を知らなければならない.稿は,圏論の知 識が全くないところから,モナドを理解するまでの,最短コースの道のりをたどり (第 1,2 章),これを前 提にして Haskell と圏論との関係を考察する (第 3 章).読者には圏論の知識を要求しないが,Haskell の 文法の基的な理解は前提としている.また,圏論に関しては,あくまでも「モナドへの最短コース」なの で,米田の補題,普遍性,コンマ圏,極限などの重要な概念は解説していない. 1 基礎知識の準備 定義 1 (メタグラフ metagraph) メタグラフは射 (arrow

  • Bitbucket

  • プログラマであるあなたが圏論を学んで得られる事、得られない事 - Creatable a => a -> IO b

    「Haskellと数学とちょびっと音楽」なんていうシャレオツなサブタイをブログに付けてるのは誰ですか? 俺だよー! 大体、Haskell関連のコミュニティに顔を出していると、 数学科出ましたーとか、物理専攻ですー、とか、そーいう人がわりと多いのですが、 僕は「勉強なんて出来ないんジャー・レッド」だったので、サブタイトルに「数学」なんて入れつつも、 数学の話はほとんど出来なかったりとか出来たりとか・・・結局Haskellの記事しか書いてないですね、はい。 ただ、どちらかというと、Haskellでも処理系どうのとか、パフォーマンス云々とか、 そういう話より型システムでどうやって抽象化するかーみたいな、そういう話のほうがおもしれーとか思ったりしたので、 気づいたら圏論なんかはガジガジしてまして、多少の自己流の知識があったりとかなかったりとかしてるのです。 純粋関数型やらHaskellやらがメジャ

    プログラマであるあなたが圏論を学んで得られる事、得られない事 - Creatable a => a -> IO b
  • https://www.math.mcgill.ca/triples/Barr-Wells-ctcs.pdf

  • 圏論とプログラミング読書会#2 資料

    1. けんろんどくしょかい #2 (2014/12/11) 直和集合について / ラムダ計算のさわり / 型なしラムダ計算 数学的厳密性は放棄します @gomi_ningen 3. #2-1 前回躓いた直和集合について 直和集合(direct sum) 集合A, Bに属さない 要素 * を考える A* = (A, *) B* = (*, B) とすると 直和集合 A + B = A* ∪ B* つまり A* の各要素 と B* の 各要素すべてを 集めたものが直和集合になります 4. #2-1 前回躓いた直和集合について 直和集合(direct sum) 集合A, Bに属さない 要素 * を考える A* = (A, *) B* = (*, B) とすると 直和集合 A + B = A* ∪ B* つまり A* の各要素 と B* の 各要素すべてを 集めたものが直和集合になります なぜこう

    圏論とプログラミング読書会#2 資料
  • Haskellと随伴 - Qiita

    随伴というのは2つの関手の関係のことです. $ F : \mathcal{C} \to \mathcal{D} $, $ G : \mathcal{D} \to \mathcal{C} $があったとき, 随伴$F \dashv G$ とは, 自然同型 $\hom(F\cdot,\cdot) \cong \hom(\cdot,G\cdot)$ のことです(ただしこの同型はhomの左右を同時に固定して, 2変数引数としてみて考えます). 文章で読むより図式を見たほうが早いです. コードにするのも簡単です. class Adjunction f g where leftAd :: (f a -> b) -> (a -> g b) rightAd :: (a -> g b) -> (f a -> b) -- Adjoint laws -- 1. leftAd . rightAd = id -- 2

    Haskellと随伴 - Qiita
  • 部分配列を抜き出す操作と可愛い圏 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    配列について考えます。この記事では、配列、リスト、タプル、シーケンスなどの言葉をあまり区別せずに、総称的に用語「配列」を使います。 内容: 配列のスライスとセレクション セレクションの演算 セレクションのダイアグラム表示 単調単射の圏 セレクションの圏と単調単射の圏は同じ 配列のスライスとセレクション 配列aのn番目の項目(要素)を取り出すには、a[n] というインデックス記法がよく使われます。お馴染みですよね。最初の項目を a[0] と書くことが多いですが、1から始まるインデックスも使われるので、ここでは a[1] が最初の項目だとします。 配列の4番めから7番めを取り出すために a[4:7] とか a[4..7] とか書けるプログラミング言語があります。これは便利ですね(お尻のインデックスが言語により1ズレたりしますが)。こういう部分配列をスライスと呼ぶようです。 「4番めから7番め」

    部分配列を抜き出す操作と可愛い圏 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • Functional Examples from Category Theory

    InfoQ Software Architects' Newsletter A monthly overview of things you need to know as an architect or aspiring architect. View an example

    Functional Examples from Category Theory
  • Haskell/圏論 - Wikibooks

    この項目では Haskell に関連する内容に限って圏論の概観を与えることを試みる。そのために、数学的な定義に併せて Haskell コードも示す。絶対的な厳密さは求めない。そのかわり、圏論の概念とはどんなものか、どのように Haskell に関連するかの直感的な理解を読者に与えることを追求する。 圏の導入[編集] 3つの対象A, B, C、3つの恒等射, , と、さらに別の射, からなる単純な圏。3つめの要素(どのように射を合成するかの定義)は示していない。 質的に、圏とは単純な集まりである。これは次の3つの要素からなる。 対象(Object)の集まり。 ふたつの対象(source objectとtarget object)をひとつに結びつける射の集まり。(これらはarrowと呼ばれることもあるが、Haskellではこれは別の意味を持つ用語なので、ここではこの用語を避けることにする。)

  • モナド的代数系と一般化クライスリ圏 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    1年半ほど前の「両代数と両クライスリ圏」において、「FがC上のコモナド、Gがモナドのとき、F(X)→G(Y) というCの射を X→Y という射だと思って、両クライスリ圏を構成したい」*1と言って、次のような定義をしてます。 F = (F, δ, ε), G = (G, μ, η) だとする。ほかに、τ::FG⇒GF があるとする。τはスワッパーと呼ぶ。f:F(X)→G(Y), g:F(Y)→G(Z) に対して、 δX;F(f);τY;G(g);μZ として両クライスリ結合が定義できそうだが、τに条件を付けないと両クライスリ圏の構成はできない。 結局、この構成はうまくいきました。「両クライスリ圏が構成できた」にまとめて(?)あります。 ごく最近(昨日、今日)、また同じような事をしてました。なんか同じことを繰り返しているような、、、。正確に定義はできないのですが、「同じことを繰り返している状況

    モナド的代数系と一般化クライスリ圏 - 檜山正幸のキマイラ飼育記 (はてなBlog)