如何在通用量化下捕获参数(使用模块?章节?)

时间:2016-10-14 23:09:18

标签: coq

我想知道如何最好地处理Coq中的这种情况:

假设我需要定义和证明关于任意结构的一些事情(为了讨论的目的,让我们说一个具有二元关系的集合)。当然,我总是可以提供set和relation作为每个这样的定义/证明的参数:

Inductive star (X : Set) (R : X -> X -> Prop) := ...

Lemma star_trans (X : Set) (R : X -> X -> Prop) : ...

当然,一段时间后这会变得很烦人。我想要做的是在一些划分的代码区域中将XR作为参数本地化,如下所示:

Parameter X : Set.
Parameter R : X -> X -> Prop.

Inductive star := ...
Lemma star_trans : ...

以这样的方式,定义和定理在代码区域之外使用时,在通用量化下捕获XR,以便为它们提供正确的类型。例如,Check star应该产生star : forall X : Set, (X -> X -> Prop) -> X -> X -> Prop

我认为这可能是模块的用途,但我无法弄清楚如何在这种情况下使用它们。

1 个答案:

答案 0 :(得分:4)

这正是" Section机制"确实:见https://coq.inria.fr/distrib/current/refman/Reference-Manual004.html#Section

Section rel_star.

Variables (X : Set) (R : X -> X -> Prop).

Inductive star := ...
Lemma star_trans: ...

End rel_star.