【发布时间】:2015-09-15 02:53:22
【问题描述】:
在this answer 中,Gabriel Gonzalez 展示了如何证明id 是forall a. a -> a 的唯一居民。为此(在最正式的证明迭代中),他使用Yoneda lemma 证明该类型与() 同构,并且由于() 中只有一个值,所以@987654327 的类型必须@。总结一下,他的证明是这样的:
米田说:
Functor f => (forall b . (a -> b) -> f b) ~ f a如果
a = ()和f = Identity,则变为:(forall b. (() -> b) -> b) ~ ()由于琐碎的
() -> b ~ b,LHS基本上是id的类型。
这感觉有点像对id 有效的“魔术”。我正在尝试对更复杂的函数类型做同样的事情:
(b -> a) -> (a -> b -> c) -> b -> c
但我不知道从哪里开始。我知道它居住着\f g x = g (f x) x,如果你忽略丑陋的⊥/undefined 东西,我很确定没有其他此类功能。
我认为无论我选择哪种类型,Gabriel 的技巧都不会立即适用于此。是否有其他方法(同样形式化!)我可以展示这种类型和() 之间的同构?
【问题讨论】:
标签: haskell category-theory type-theory