5

という名前の 2 つの関数がf :: a -> bあり、それが逆g :: b -> aであるとしf . g ≡ idます。

今じゃないg . f ≡ id?(したがって、同形性を意味します)

同様の例を書き込もうとしたところ、次のようになりました。

myRead :: String -> Int
myRead = read

myShow :: Int -> String
myShow = show

ghci で:

λ> myRead . myShow $ 3
3
λ> myShow . myRead $ "33"
"33"

しかし、逆関数は同型を意味していないようです。だから、私がここで間違っていることを誰かに教えてもらえますか?

4

3 に答える 3

16

これは本当に些細な例です。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 = idg . 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 binv f binv f b (g b) == Trueb

f . g == id

しかし、これは単に同形であるよりもはるかに弱く、より技術的ですA。これは、が の要素をサブセットに送信し、そのサブセットがすぐに送り返されることBを意味します。gBAf

たとえば、空間の「フィブレーション」の興味深い概念全体を認めています。

于 2014-05-15T18:20:16.807 に答える
3

が全射である場合g :: X -> Y、必ずしも逆関数が存在するとは限りませんf :: Y -> X。それでも、全射関数gは一部の関数を逆にすることができますf

g は X を Y にマップします。これは、オレンジ色で示されている関数 f を Y から X に逆にします。

すべてyの検索結果Yに一意の値xXあるとします。for every such inがsuch thatを見つけるf関数を指定することは可能です。このステートメントは、unique for all の存在を示していますが、unique for allの存在については何も示していません(つまり、一意性は保証されていません)。( がどのように構築されているかについては触れていません。選択公理が必要です)。gxXyYg . f == idxyyxg

于 2014-05-15T18:28:31.427 に答える