为什么伊德里斯没有涉及“减去”类型检查的平等?

时间:2017-06-26 07:12:49

标签: dependent-type idris

为什么赢得以下类型检查:

minusReduces : (n : Nat) -> n `minus` Z = n
minusReduces n = Refl

然而,这将很好地解决问题:

plusReduces : (n : Nat) -> Z `plus` n = n
plusReduces n = Refl

1 个答案:

答案 0 :(得分:6)

minus n没有减少,因为minusdefined,第一个参数上有模式匹配:

total minus : Nat -> Nat -> Nat
minus Z        right     = Z
minus left     Z         = left
minus (S left) (S right) = minus left right

因此,您还需要分割ZS n个案例:

minusReduces : (n : Nat) -> n `minus` Z = n
minusReduces Z = Refl
minusReduces (S k) = Refl