为什么反函数不暗示同构

自己

假设我有两个名为的函数f :: a -> b,它的反函数g :: b -> a是that 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"

但似乎反函数并不意味着同构那么有人可以指出我在这里做错了什么吗?

J·亚伯拉罕森

这是一个非常简单的例子。如果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

事实证明,这样,如果你有两个函数f . g = idg . f = id,然后,说了一大堆关于域和值域的那些功能。特别是,它建立了一个同构,表明这两个域在某种意义上是等效的。

从类别理论的角度来看,这意味着它们通过类别的态射是无法区分的。类别理论强调类别的词素是获取有关对象信息的唯一方法,因此,这种不可区分性非常重要。

当您只有单方面的逆时,您仍然会学到很多关于这两个域的信息……但并不是说它们是同构的。


单面逆向给你的一件事是幂等的。幂等是i从域到自身的函数(内同形),使得i . i = i给定任意两个函数,其中f . g = idg . 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

用更数学的术语来说,逆像函数是从共域B到域A子集的A映射,使得每个这样的映射子集中的每个元素都映射到的相同元素B这些子集分区A(这是函数的定义)。

如果我们有另一个功能g :: B -> A,使得g b在子集inv f b(即inv f b (g b) == True所有b),那么我们有

f . g == id

但这远弱,比更多的技术AB公正是同构的。这只是意味着g将的元素发送B到,A这些元素的子集f将立即发送回去。

例如,它接受了空间“纤维化”整个有趣概念

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么反函数不暗示同构

来自分类Dev

为什么关联的类型同义词不暗示约束

来自分类Dev

为什么AsQueryable <T>不暗示对_t鉴别符进行过滤

来自分类Dev

为什么AsQueryable <T>不暗示_t鉴别符上的过滤器

来自分类Dev

为什么XMPP函数什么也不返回?

来自分类Dev

在Go中,reflect.SliceOf()的反函数是什么?

来自分类Dev

荒谬函数的反函数

来自分类Dev

荒谬函数的反函数

来自分类Dev

为什么函数尾部不递归?

来自分类Dev

为什么JS不滚动调用函数?

来自分类Dev

为什么这个Clojure函数不执行?

来自分类Dev

Dlang:为什么不构造函数?

来自分类Dev

函数不返回值,为什么?

来自分类Dev

为什么@TupleConstructor不生成构造函数

来自分类Dev

构造函数为什么不设置参数?

来自分类Dev

为什么JS不滚动调用函数?

来自分类Dev

为什么我的javaScript函数不触发?

来自分类Dev

为什么该函数不尾递归?

来自分类Dev

为什么这个php函数不执行?

来自分类Dev

为什么函数 Javascript 不执行?

来自分类Dev

为什么 emscripten 不编译我的函数?

来自分类Dev

ggplotGrob的反函数?

来自分类Dev

试图建立反函数

来自分类Dev

为什么指令函数不接收函数中的数据?

来自分类Dev

为什么指令函数不接收函数中的数据?

来自分类Dev

numpy的bincount函数的反函数

来自分类Dev

如何在不违反函数式编程原则的情况下将值读入 ArrayList?

来自分类Dev

为什么在具有相同构造函数参数类型的案例类中,scala可序列化性会有所不同?

来自分类Dev

git reset --soft的反函数