检查来自OCaml的归纳类型的元素

时间:2019-11-19 10:07:44

标签: ocaml coq

我想编写一个Coq插件,该插件将采用归纳类型的元素,并对该元素进行递归模式匹配,并在每次迭代中进行一些计算。这听起来很直截了当,但是我真的不知道从哪里开始。

我设法找到了一些Coq插件,对其进行编译并运行。但是我没有找到任何有关Coq API的概述来了解基本概念。

到目前为止我发现的有用资源:


简单示例:

让我们有一个简单的归纳类型,用一个二进制操作来表示表达式

Inductive expr : Type :=
| var : nat  -> expr
| op  : expr -> expr -> expr

我想定义一个新的Vernacular命令InspectExpression,该命令将递归遍历表达式并进行一些计算。

InspectExpression (op (op (var 0) (var 1)) (var 2)). (* expression: "(x+y)+z" *)

我的最终目标是根据这些表达式生成一些C ++代码,但我认为这对问题/答案并不重要。

1 个答案:

答案 0 :(得分:2)

这些天的规范信息来源是官方的Coq Plugin Tutorial,尽管它是最新的,但在Google fu [因此它首先出现在搜索中]和格式/演示文稿方面都需要一些帮助。

我想从这里开始,如果您想获取其他示例,请不要犹豫在Coq issue tracker中打开错误。

Coq's discourseGitter channel对插件开发者也是非常有用的设备。