如何在Coq中定义有序对?

时间:2013-10-02 21:53:16

标签: coq

我是一名程序员,但对Coq来说是一个超级新手,并试图找出教程没有太大的成功。我的问题非常简单:如何在Coq中定义一个有序对(自然数)?

这是我的尝试:

Variable node1 : nat.
Variable node2 : nat.
Inductive edge : type := node1 -> node2.

(注意“edge”是我用于有序对的名称。)第三行给出语法错误,表明我需要'。'在某处的句子中。

我不知道该怎么办。任何帮助都会很棒! (另外,是否有一个教程可以帮助教授非常基本的Coq概念,而不是那些在Google搜索“Coq Tutorial”时很容易看到的概念?)

1 个答案:

答案 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

你可以从那里获得所有必要的消除原则......