问题描述
我能证明,相等的 Props 的两个元素是相等的吗?看起来合乎逻辑,因为一个 Prop 内的所有元素都是相等的,所以每个 Prop 都有一个唯一的元素,如果两个 Prop 也相等,则它们的元素相同。但是我不明白,如何在arend中表达这个想法。
更准确地说,我想要这样的功能:
\func eqProp
{A B : \Prop}
(A=B : A = B)
(a : A) (b : B)
: a = b
我已经阅读了关于相等的文档,但它对我没有帮助,我无法从 Props 相等到元素相等。
解决方法
是的,你可以证明它,但是你的函数有一个错误:等式(=
)只支持一种类型的对象(它被定义为\func \infix 1 = {A : \Type} (a a' : A) => Path (\lam _ => A) a a'
)。虽然 A
等于 B
,但您需要 Path (\lam i => A=B @ i) a b
而不是 a = b
,然后您可以使用来自 arend 库的函数,这正是您想要的:>
\func eqProp
{A B : \Prop}
(A=B : A = B)
(a : A) (b : B)
: Path (\lam i => A=B @ i) a b
=> pathInProp (\lam i => A=B @ i) a b