Skip to content

Instantly share code, notes, and snippets.

@53ningen
Last active August 29, 2015 14:03
Show Gist options
  • Save 53ningen/ea3b5a149b4b6035e1b5 to your computer and use it in GitHub Desktop.
Save 53ningen/ea3b5a149b4b6035e1b5 to your computer and use it in GitHub Desktop.
モナドってなんやねん...

群の定義からぬるぬる始めて,いつかモナドにたどりつく(予定)

群(Group)とは

群の定義

集合G とその上の二項演算 * が,次の性質を持つとき
(G, *) を群とよぶ.

  1. 結合法則: 任意の g, h, k ∈ G に対して g * (h * k) = (g * h) * k
  2. 単位元の存在: g * e = e * g = g なる e ∈ G が存在する
  3. 逆元の存在: g * x = x * g = e なる x ∈ G が存在する

群の例

整数 Z と足し算 * の対 (Z, +) は群になります

  1. 結合法則が成り立つ
  • ∀x,y,z ∈ Z, (x + y) + z = x + (y + z)
  1. 単位元が存在する
  • ∀g ∈ Z, g + 0 = 0 + g = g. (G, +)の単位元は 0
  1. 逆元が存在する
  • ∀g ∈ Z, ∃-g ∈ Z.(整数の定義より)
  • ∀g ∈ Z, g + (-g) = -g + g = 0.

補足: アーベル群(Abelian group)

上記の条件に加え,任意の元 x, y ∈ Z に対して x + y = y + z が成り立つとき,これをアーベル群(可換群)という

  • 整数 Z と足し算 + の対 (Z, +) はアーベル群になります
  • 2次正則行列 GLn(R) はアーベル群にはなりません
    • 行列の積について一般には A B ≠ B A

半群(Semigroup)とは

半群の定義

集合G とその上の二項演算 * が,次の性質を持つとき
(G, *) を半群とよぶ.

  1. 結合法則: 任意の g, h, k ∈ G に対して g * (h * k) = (g * h) * k

半群の例

整数 Z と足し算 * の対 (Z, +) は半群になります

  1. 結合法則が成り立つ
  • ∀x,y,z ∈ Z, (x + y) + z = x + (y + z)

モノイド(Monoid)とは

モノイドの定義

集合G とその上の二項演算 * が,次の性質を持つとき
(G, *) をモノイドとよぶ.

  1. 結合法則: 任意の g, h, k ∈ G に対して g * (h * k) = (g * h) * k
  2. 単位元の存在: g * e = e * g = g なる e ∈ G が存在する

モノイドの例

整数 Z と足し算 * の対 (Z, +) はモノイドになります

  1. 結合法則が成り立つ
  • ∀x,y,z ∈ Z, (x + y) + z = x + (y + z)
  1. 単位元が存在する
  • ∀g ∈ Z, g + 0 = 0 + g = g. (G, +)の単位元は 0

参考ページ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment