如何在Coq中为类型赋予别名

时间:2018-11-04 18:10:43

标签: alias typedef coq

假设我想在coq中创建自然数矩阵。

我有内置的coq列表,并且要创建自然数列表,我只需编写list nat

为了创建二维列表(即矩阵),我需要编写list (list nat)

我的问题是:我应该怎么做才能让coq完全像list (list nat)一样理解matrix这个词?


我尝试了list (list nat)Notation "matrix" := list (list nat)等,但似乎无济于事。

1 个答案:

答案 0 :(得分:5)

您只需编写一个定义:Definition matrix := list (list nat)。该定义在大多数情况下都应该起作用(例如,您仍可以使用ListNotations编写Definition foo : matrix := [nil])。

如果您不想要定义(特别是因为在证明中,您可能必须显式地展开一些策略的定义),则可以使用符号。正确的语法是Notation matrix := (list (list nat))