如何为 coq 中的类型指定别名
How can I give an alias to a type in coq
假设我想在 coq 中创建一个自然数矩阵。
我有内置的 coq 列表,要创建一个自然数列表,我只需要写 list nat
。
为了创建一个二维列表(即矩阵),我需要写 list (list nat)
.
我的问题是:除了写 list (list nat)
,我应该怎么做才能让 coq 完全理解 matrix
这个词,就好像它是 list (list nat)
?
我尝试了 Notation "matrix" := list (list nat)
、Notation "(matrix nat)" := (list (list nat))
等,但似乎没有任何效果。
你可以只写一个定义:Definition matrix := list (list nat)
。该定义应该只适用于大部分(例如,您仍然可以使用 ListNotations 编写 Definition foo : matrix := [nil]
)。
如果您不想要定义(特别是因为在证明中您可能必须明确展开某些策略的定义),那么您可以使用符号。正确的语法是 Notation matrix := (list (list nat))
.
假设我想在 coq 中创建一个自然数矩阵。
我有内置的 coq 列表,要创建一个自然数列表,我只需要写 list nat
。
为了创建一个二维列表(即矩阵),我需要写 list (list nat)
.
我的问题是:除了写 list (list nat)
,我应该怎么做才能让 coq 完全理解 matrix
这个词,就好像它是 list (list nat)
?
我尝试了 Notation "matrix" := list (list nat)
、Notation "(matrix nat)" := (list (list nat))
等,但似乎没有任何效果。
你可以只写一个定义:Definition matrix := list (list nat)
。该定义应该只适用于大部分(例如,您仍然可以使用 ListNotations 编写 Definition foo : matrix := [nil]
)。
如果您不想要定义(特别是因为在证明中您可能必须明确展开某些策略的定义),那么您可以使用符号。正确的语法是 Notation matrix := (list (list nat))
.