gpt4 book ai didi

coq - 为示例提供部分参数

转载 作者:行者123 更新时间:2023-12-01 12:23:30 24 4
gpt4 key购买 nike

考虑这个部分:

Section MyMap.

Variables D R : Type.

Fixpoint mymap (f : D -> R) (l : list D) : list R :=
match l with
| nil => nil
| d :: t => f d :: mymap f t
end.

End MyMap.

在这里,我使用了Variables 来声明我的域和范围类型。作为对我的函数定义的完整性检查,我想包含一个 Example:

Example example_map_S : mymap S [0; 1; 2] = [1; 2; 3].
Proof.
simpl; trivial.
Qed.

但是我似乎不能在我的部门内这样做。相反,我得到:

Error: The term "S" has type "nat -> nat" while it is expected to have type "D -> R".

这并不奇怪,所以让我们换一种方式试试:

Example example_map_S : @mymap nat nat S [0; 1; 2] = [1; 2; 3].
Proof.
simpl; trivial.
Qed.

产生:

Error: The term "nat" has type "Set" while it is expected to have type "D -> R".

我想这是公平的,分段的 Variables 与隐式参数不同。但它仍然留下了问题!

如何在结束本节之前向术语提供具体的变量,以创建有用的示例

最佳答案

Section MyMap.
...

如果我们检查 mymap inside 部分的类型,我们会得到

Check mymap.
(* mymap : (D -> R) -> list D -> list R *)

当然,我们不能将DRnat统一起来,因为DR 是一些局部假定的类型。

但是,我们可以在这种通用设置中模拟您的示例,显示 mymap 函数的预期属性:

Example example_nil (f : D -> R) :
mymap f [] = [] := eq_refl.

Example example_3elems (f : D -> R) (d0 d1 d2 : D) :
mymap f [d0; d1; d2] = [f d0; f d1; f d2] := eq_refl.

End MyMap.

关于coq - 为示例提供部分参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41996529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com