如何证明 Idris 中的平等通勤?

How to prove equality commutes in Idris?

试图证明以下断言:

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

我在图书馆里找到了 plusCommutes,但没有找到平等。

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

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

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

你可以在 REPL 中尝试一下:

> equalityCommutesNat 1 1 Refl
Refl : 1 = 1