假设我想在coq中创建自然数矩阵。
我有内置的coq列表,并且要创建自然数列表,我只需编写list nat
。
为了创建二维列表(即矩阵),我需要编写list (list nat)
。
我的问题是:我应该怎么做才能让coq完全像list (list nat)
一样理解matrix
这个词?
我尝试了list (list nat)
,Notation "matrix" := list (list nat)
等,但似乎无济于事。
答案 0 :(得分:5)
您只需编写一个定义:Definition matrix := list (list nat)
。该定义在大多数情况下都应该起作用(例如,您仍可以使用ListNotations编写Definition foo : matrix := [nil]
)。
如果您不想要定义(特别是因为在证明中,您可能必须显式地展开一些策略的定义),则可以使用符号。正确的语法是Notation matrix := (list (list nat))
。