このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

ニョロニョロのメタリーズニング

絵図形式

左に a を入れるの省略。

  f    f
 η|    |
 ∩|    |
 ||| ≡ |
 |∪    |
 |ε    |
 f      f
自然演繹形式

(1)から(6)の番号は絵との対応を取るためのもの。

snake::: (a.η*f);(a.f*ε) ≡> a.f^

{(a.η*f);(a.f*ε) :: True ⇒ a.f≦a.f

                 True
   ==================================[dup True]
    True                         True
 ===========[unit]           ===========[counit]
     A^                          g*f
 (1)----[η]                 (4)-----[ε]
    f*g                          B^
 =============[a.]           =================[f*]
     a.A^                       f*(g*f)
 (2)--------[a.η]           (5)-------[f*ε]
    a.(f*g)                     f*B^
 ======================[*f]  =====================[a.]
     (a.A^)*f                   a.(f*(g*f))
 (3)-------------[(a.η)*f]  (6)-----------[a.(f*ε)]
    (a.(f*g))*f                 a.(f*B^)
 =====================[calc] =====================[calc]
     a.f                        a.(f*g*f)
   -----------[a.η*f]        -----------[a.f*ε]
    a.(f*g*f)                     a.f
 ==================================================[; a.(f*g*f)]
          a.f
        ---------[(a.η*f);(a.f*ε)]
          a.f
}
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡[snake]
{a.f^:: True ⇒ a.f≦f

       True
     =======[id f]
         f
       ----[f^]
         f
     =========[a.]
       a.f
      ------[a.f^]
       a.f
}
不等号形式
snake::: (a.η*f);(a.f*ε) ≡> a.f^

{(a.η*f);(a.f*ε) :: True ⇒ a.f≦a.f

                           True
   ==================================================[dup True]
    True                                    True
 ================[unit]                 ==================[counit]
 (1)A^≦f*g by η                       (4)g*f≦ B^ by ε
 =============[a.]                      ========================[f*]
 (2)a.A^≦a.(f*g) by a.η               (5)f*(g*f)≦f*B^ by f*ε
 ========================[*f]           =================================[a.]
 (3)(a.A^)*f≦(a.(f*g))*f by (a.η)*f    (6)a.(f*(g*f))≦a.(f*B^) by a.(f*ε)
 =====================================  ====================================
   a.f≦a.(f*g*f) by a.η*f              a.(f*g*f)≦a.f  by  a.f*ε
 =================================================================[; a.(f*g*f)]
          a.f≦a.f by (a.η*f);(a.f*ε)
}
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡[snake]
{a.f^:: True ⇒ a.f≦a.f

       True
     =============[id f]
      f≦f by f^
     ==================[a.]
     a.f≦a.f by a.f^
}
シーケント形式
snake::: (a.η*f);(a.f*ε) ≡> a.f^

{(a.η*f);(a.f*ε) :: True ⇒ a.f→a.f

                           True
   ==================================================[dup True]
    True                                    True
 ================[unit]                 ==================[counit]
 (1)A^→f*g by η                       (4)g*f→B^ by ε
 =============[a.]                      ========================[f*]
 (2)a.A^→a.(f*g) by a.η               (5)f*(g*f)→f*B^ by f*ε
 ========================[*f]           =================================[a.]
 (3)(a.A^)*f→(a.(f*g))*f by (a.η)*f    (6)a.(f*(g*f))→a.(f*B^) by a.(f*ε)
 =====================================  ====================================
   a.f→a.(f*g*f) by a.η*f              a.(f*g*f)→a.f  by  a.f*ε
 =================================================================[; a.(f*g*f)]
          a.f→a.f by (a.η*f);(a.f*ε)
}
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡[snake]
{a.f^:: True ⇒ a.f→a.f

       True
     =============[id f]
      f→f by f^
     ==================[a.]
     a.f→a.f by a.f^
}