idris - 如何证明 idris 的平等通勤?

标签 idris

试图证明以下断言:

equalityCommutesNat : (n : Nat) -> (m : Nat) -> n = m -> m = n

我在库中找到了 plusCommutes,但没有发现平等。

最佳答案

= 的唯一居民是 Refl : (a = a),因此如果您进行模式匹配,您将获得 n 的证据> 是m

这意味着您可以使用 Refl,因为 Idris 的模式匹配现在知道它们是相同的:

equalityCommutesNat : (n : Nat) -> (m : Nat) -> n = m -> m = n
equalityCommutesNat _ _ Refl = Refl

你可以在 REPL 中尝试一下:

> equalityCommutesNat 1 1 Refl
Refl : 1 = 1

关于idris - 如何证明 idris 的平等通勤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63124030/

相关文章:

dependent-type - 重写在 Idris 中究竟是如何工作的?

c - 多种语言的文学编程

idris - idris 定理证明

c++ - 如何将数组从 C/C++ 返回到 Idris?

regex - 有没有办法在 idris lightyear 库中编写 chainl 函数?

proof - 在 Idris REPL 中使用 cong 进行实验

proof - 证明 map ID = IDRIS中的ID?

vector - 在 Coq 中实现向量加法

agda - 当相关类型被 Idris 中的 lambda 抽象时,如何证明 "seemingly obvious"事实?

idris - 在接口(interface)中约束函数参数