如何证明 Idris 中的平等通勤?
How to prove equality commutes in 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
试图证明以下断言:
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