我是一名程序员,但对Coq来说是一个超级新手,并试图找出教程没有太大的成功。我的问题非常简单:如何在Coq中定义一个有序对(自然数)?
这是我的尝试:
Variable node1 : nat.
Variable node2 : nat.
Inductive edge : type := node1 -> node2.
(注意“edge”是我用于有序对的名称。)第三行给出语法错误,表明我需要'。'在某处的句子中。
我不知道该怎么办。任何帮助都会很棒! (另外,是否有一个教程可以帮助教授非常基本的Coq概念,而不是那些在Google搜索“Coq Tutorial”时很容易看到的概念?)
答案 0 :(得分:4)
只需使用Coq定义即可完成此操作:
Definition ordered_pair := (nat * nat) % type.
这会引入ordered_pair
作为(nat * nat) % type
的同义词(请注意,要求Coq在类型范围内解释% type
,而不是自然)需要*
。真正的力量在于使用*
:
Inductive prod (A B:Type) : Type :=
pair : A -> B -> prod A B.
(来自http://coq.inria.fr/stdlib/Coq.Init.Datatypes.html)
你可以从那里获得所有必要的消除原则......