0

我对 Coq 的策略symmetrytransitivity实际工作方式很感兴趣。我已经阅读了 Coq 手册,但这仅描述了它们的工作,而不是它们如何对证明进行操作并更改证明状态。作为我正在寻找的示例,在Interactive Theorem Proving and Program Development中,作者指出“反身策略实际上是apply refl_equal”(第 124 页)的同义词。但是,作者请读者参考symmetry和的参考手册transitivity。我还没有找到对这两种策略以相同方式同义的事物的良好描述。

为了澄清起见,我问的原因是我已经定义了一个路径空间(就像在paths {A : UU} : A -> A -> UUUniMatha = b中一样),它就像一个等价关系,除了它a = b不是一个命题而是一个类型。出于这个原因,我无法将此关系添加为使用 的等价关系Add Parametric Relation。我正在尝试为这种路径空间关系制作 Ltac 的版本,symmetrytransitivity我不知道如何更改证明状态;了解如何symmetry以及transitivity实际工作可能会有所帮助。

4

1 回答 1

1

这些策略只应用与它在目标中找到的关系的对称性和传递性相对应的引理。这些是使用类型类机制找到的。

例如,您可以声明

From Coq Require Import RelationClasses.

Instance trans : Transitive R.

这将要求您证明R是传递的,然后您将能够使用该策略transitivity来证明R x y

于 2022-02-07T19:58:02.917 回答