【Coq】? Maps I Coq标准库

地图(或字典)是普遍存在的数据结构,尤其是在编程语言理论中;在接下来的章节中,我们将在许多地方需要它们。他们还利用我们在前几章中看到的思想做了一个很好的案例研究,包括用高阶函数构建数据结构(从基础和多边形)和使用反射来简化证明(从IndProp)。

我们将定义两种类型的映射:total maps(总映射)和partial maps(部分映射),前者包括在不存在要查找的键时返回的“默认”元素,后者返回一个指示成功或失败的选项。后者是根据前者定义的,使用None作为默认元素。

Coq标准库

在我们开始之前有一点离题。。。

与我们到目前为止看到的章节不同,本章不需要导入之前的章节(以及之前的所有章节)。相反,在本章以及从现在开始,我们将直接从Coq的标准库中导入我们需要的定义和定理。不过,您不应该注意到太多的差异,因为我们一直小心地将自己的定义和定理命名为与标准库中的对应定义和定理相同的名称,无论它们在哪里重叠。

From Coq Require Import Arith.Arith.
From Coq Require Import Bool.Bool.
Require Export Coq.Strings.String.
From Coq Require Import Logic.FunctionalExtensionality.
From Coq Require Import Lists.List.
Import ListNotations.

有关标准库的文档,请访问https://coq.inria.fr/library/.

搜索命令是查找涉及特定类型对象的定理的好方法。有关如何使用它的提示,请参见列表。

如果要了解符号是如何定义的或在何处定义的,则Locate命令非常有用。例如,标准库中定义的自然加法操作在哪里?

Locate "+".

这种符号有几种用途,但对自然只有一种。

Print Init.Nat.add.
【学习】函数语言程序设计 文章被收录于专栏

函数语言程序设计 Coq章节 Ch1 Basics【COQ中的函数编程】 Ch2 Induction【归纳法证明】 Ch3 Lists【使用结构化数据】 Ch4 Poly【多态性与高阶函数】 Ch5 Tactics【更基本的战术】 Ch6 Logic【COQ中的逻辑】 Ch7 IndProp【归纳定义命题】 Ch8 Maps【全图和局部图】 Ch9 Rel【关系的性质】

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务