絵算でゴー:looping
次の各種loopingオペレータを絵で示す。“圏”はトレース付き対称モノイド圏の範囲で考えるとする。
- デカルト圏:Conway不動点オペレータ -- 上付きダガーで示す。
- 余デカルト圏:Elgot反復オペレータ -- 上付きシャープで示す。
- 双デカルト圏:Kleene繰り返しオペレータ -- 上付き星で示す。
- f† = FpAX(f) = TrA, XX(f;ΔX)
- f# = ItrAX(f) = TrX,AX([θA + X, f]) ([,]は和の対)
- f* = RepX(f) = TrX,XX(∇X;f;ΔX)
f#の図から意味のない枝を取り去った図も描いている。もう少しわかりやすいレイアウトで描いてみると下の図、これは簡略型のElgotオートマトン、矢印の向きを逆にすると普通のオートマトン(遷移翻訳系)になる(ただし、出力は遷移先状態をそのまま出力する)。
[追記]f#は次でもいいな。
- f# = TrX,AX((X + f);(σX,A + X);(A + ∇X))
表示は複雑だが、絵としてはかえってわかりやすい。[/追記]
やっぱり、絵算はオモシレー。