在agda中证明一个定理。错误:应该是函数类型,但不是

时间:2017-02-08 07:13:54

标签: agda

这是我想要证明的定理。

prob4 : ∀(w x y z : ℕ) → w * (x + y + z) ≡ z * w + x * w + w * y
prob 4 = {!!}

这就是我写的

open import Data.Nat
open import Data.Nat.Properties.Simple
open import Relation.Binary.PropositionalEquality

prob4a : ∀ (w x y z : ℕ) → w * (x + y + z) ≡ w * x + w * y + w * z
prob4a 0 x y z = refl
prob4a (suc w) x y z rewrite prob4a w x y z
            | +-assoc (x + y + z) (w * x) (w * y) (w * z) = ?

我创建了一个新的定理prob4a,以便按正确的顺序排列输出。并且它能够使用nat.thms.agda中的定理来证明它。

,错误是

  

x + y + z + w * x + w * y ≡ x + y + z + (w * x + w * y)应该是   功能类型,但事实并非如此   当检查(w * z)是函数的有效参数时   输入x + y + z + w * x + w * y ≡ x + y + z + (w * x + w * y)

那是什么意思?我怎样才能纠正它以使证明有效?

1 个答案:

答案 0 :(得分:2)

+-assoc只需要3个参数,但你已经传递了4个参数。

Agda抱怨而不是相等类型不是函数类型,因为应用于3个参数的+-assoc的结果是相等类型,但是传递第4个参数意味着你希望它是一个函数。