Coq:等式策略的对称性和传递性是如何定义的?
Coq: How are the equality tacticts symmetry and transitivity defined?
我对 Coq 策略 symmetry
和 transitivity
的实际运作方式很感兴趣。我已经阅读了 Coq 手册,但这只描述了它们的作用,而不是它们如何对证明进行操作并更改证明状态。作为我正在寻找的示例,在 Interactive Theorem Proving and Program Development 中,作者指出
“自反性策略实际上是 apply refl_equal
的同义词”(第 124 页)。
但是,作者将 reader 参考了 symmetry
和 transitivity
的参考手册。我还没有找到对这两种策略以相同方式同义的事物的良好描述。
为了澄清,我问的原因是我定义了一条路径 space paths {A : UU} : A -> A -> UU
标记为 a = b
(就像在 UniMath 中一样)除了a = b
不是命题而是类型。出于这个原因,我无法使用 Add Parametric Relation
将此关系添加为等价关系。我正在尝试使用 Ltac 为这条路径 space 关系编写一个 symmetry
和 transitivity
的版本,但我不知道如何更改证明状态;了解 symmetry
和 transitivity
的实际工作原理可能会有所帮助。
这些策略仅应用与其在目标中找到的关系的对称性和传递性对应的引理。
这些是使用类型 类 机制找到的。
例如你可以声明
From Coq Require Import RelationClasses.
Instance trans : Transitive R.
这会要求你证明 R
是可传递的,然后你就可以使用策略 transitivity
来证明 R x y
.
我对 Coq 策略 symmetry
和 transitivity
的实际运作方式很感兴趣。我已经阅读了 Coq 手册,但这只描述了它们的作用,而不是它们如何对证明进行操作并更改证明状态。作为我正在寻找的示例,在 Interactive Theorem Proving and Program Development 中,作者指出
“自反性策略实际上是 apply refl_equal
的同义词”(第 124 页)。
但是,作者将 reader 参考了 symmetry
和 transitivity
的参考手册。我还没有找到对这两种策略以相同方式同义的事物的良好描述。
为了澄清,我问的原因是我定义了一条路径 space paths {A : UU} : A -> A -> UU
标记为 a = b
(就像在 UniMath 中一样)除了a = b
不是命题而是类型。出于这个原因,我无法使用 Add Parametric Relation
将此关系添加为等价关系。我正在尝试使用 Ltac 为这条路径 space 关系编写一个 symmetry
和 transitivity
的版本,但我不知道如何更改证明状态;了解 symmetry
和 transitivity
的实际工作原理可能会有所帮助。
这些策略仅应用与其在目标中找到的关系的对称性和传递性对应的引理。 这些是使用类型 类 机制找到的。
例如你可以声明
From Coq Require Import RelationClasses.
Instance trans : Transitive R.
这会要求你证明 R
是可传递的,然后你就可以使用策略 transitivity
来证明 R x y
.