Here is a really trivial example. If it Ais a set {1,2}and a Bset {1}, then the functions:
f :: A -> B
f = const 1
g :: B -> A
g 1 = 1
are relevant f . g = id, but not relevant g . f = id. Counterexample -
g (f 2) = 1
, , f . g = id g . f = id, . , , , .
, . , - , .
, ... , .
. - i () , i . i = i. , f . g = id, g . f , :
i . i = (g . f) . (g . f) = g . f . g . f = g . (f . g) . f = g . f = i
- f :: A -> B " " inv f :: B -> (A -> Bool).
inv :: Eq b => (a -> b) -> b -> a -> Bool
inv f b a = f a == b
codomain B A, A B, partition 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 .
, "" .