使用取幂函数

时间:2015-02-14 06:07:20

标签: functional-programming coq theorem-proving

这是群论中exp的定义:

Definition exp : Z -> U -> U.
Proof.
intros n a.
elim n;
 clear n.
exact e.
intro n.
 elim n; clear n.
exact a.
intros n valrec.
exact (star a valrec).
intro n; elim n; clear n.
exact (inv a).
intros n valrec.
exact (star (inv a) valrec).
Defined.

我试图用这种方式定义((a ^ n)^ k)。

Definition exp2 (n k : Z) (a : U)  := fun a => exp k (exp  n a).

exp k (exp n a)属于U->U类型,但我希望它属于U类型。我该怎么办?

1 个答案:

答案 0 :(得分:1)

正如吉尔斯指出的那样,exp2函数的签名等同于

Definition exp2 (n k : Z) (a a(*won't work in Coq*) : U) :=
    exp k (exp n a).

您需要删除其中一个a

Definition exp2 (n k : Z) (a : U) := exp k (exp n a).
Definition exp2_alt (n k : Z) : fun a => exp k (exp n a).