これは本当に些細な例です。A
がセット{1,2}
でありB
、セットの場合{1}
、関数は次のとおりです。
f :: A -> B
f = const 1
g :: B -> A
g 1 = 1
関係f . g = id
がありますが、関係はありませんg . f = id
。反例は
g (f 2) = 1
そのような関数が 2 つある場合、それらの関数のドメインf . g = id
とg . f = id
コドメインについて多くのことが言えます。特に、これらの 2 つのドメインが何らかの意味で同等であることを示唆する同形性を確立します。
圏論の観点からは、それらは圏の射によって区別できないことを意味します。圏論は、圏の射が対象に関する情報を得る唯一の方法であることを強調しているため、この区別がつかないことは非常に重要です。
片側逆数しかない場合でも、2 つのドメインについて多くのことを学んでいますが、単にそれらが同形であるということではありません。
片側逆から得られることの 1 つは、冪等性です。冪等性は、i
あるドメインからそれ自体への関数 (自己同形) であり、i . i = i
. f . g = id
が冪等である任意の 2 つの関数が与えられg . f
、証明は非常に明白です。
i . i = (g . f) . (g . f) = g . f . g . f = g . (f . g) . f = g . f = i
考慮すべきもう 1 つの良い点は、すべての関数f :: A -> B
が「逆イメージ」関数を生成することinv f :: B -> (A -> Bool)
です。
inv :: Eq b => (a -> b) -> b -> a -> Bool
inv f b a = f a == b
より数学的に言えば、逆イメージ関数は、コドメインB
からドメインのサブセットへのマッピングでありA
、そのような各サブセットのすべての要素がA
の同じ要素にマッピングされますB
。これらのサブセットは分割されA
ます (これは関数の定義です)。
サブセットにあるg :: B -> A
ような別の関数がある場合(つまり、すべての)、次のようになります。g b
inv f b
inv f b (g b) == True
b
f . g == id
しかし、これは単に同形であるよりもはるかに弱く、より技術的ですA
。これは、が の要素をサブセットに送信し、そのサブセットがすぐに送り返されることB
を意味します。g
B
A
f
たとえば、空間の「フィブレーション」の興味深い概念全体を認めています。