其中是谓词axiom Coq的可扩展性
这句话的意思是:其中是谓词axiom Coq的可扩展性,coq,Coq,这句话的意思是: Extensionality of predicates: ∀ P Q:A→ Prop, (∀ x, P(x) ↔ Q(x)) → P=Q 与Coq一致。这是在哪个库中断言的?正如本节所暗示的那样,它既不在逻辑中,也不在经典中。我认为公理没有在当前的标准库中声明;它是一个非常强大的函数(正如您在ClassicalFacts.v中所看到的),因此您需要自己声明它。您的具体情况如下所示,我认为它+函数扩展性: Require Import ClassicalFacts. Requ
Extensionality of predicates: ∀ P Q:A→ Prop, (∀ x, P(x) ↔ Q(x)) → P=Q
与Coq一致。这是在哪个库中断言的?正如本节所暗示的那样,它既不在逻辑中,也不在经典中。我认为公理没有在当前的标准库中声明;它是一个非常强大的函数(正如您在
ClassicalFacts.v
中所看到的),因此您需要自己声明它。您的具体情况如下所示,我认为它+函数扩展性:
Require Import ClassicalFacts.
Require Import FunctionalExtensionality.
Axiom pe : prop_extensionality.
Lemma pred_extensionality A (P Q : A -> Prop) :
(forall x, P x <-> Q x) -> P = Q.
Proof. now intros H; apply functional_extensionality; intros x; apply pe. Qed.
需要导入ClassicalFacts。
需要导入函数张力。
公理pe:prop_可拓性。
引理pred_可拓性A(pq:A->Prop):
(对于所有x,pxqx)->P=Q。
证明。现在介绍H;应用函数扩展性;简介x;应用pe。Qed。
来自集成库的扩展性集成与您发布的axiom等效。好的,谢谢!最后我做了类似的事情,但我想知道是否有一个图书馆我可以import@k_g请注意:在中,我们定义了PredicateExtensionality
公理,但是对于bool->Prop
predicates.BTW,我想问一个更有趣的问题是,对于这个非常强大的公理,您心目中的用例是什么?@ejgallego我试图证明等价类是不相交的。我很确定有一种建设性的方法可以做到这一点,但我更感兴趣的是在标准逻辑中证明事物,而不是试图将证明强制转化为建设性逻辑。坦白地说,虽然我理解公理的最小性,但我认为对于实际的定理证明,排除中间、函数可扩展性,甚至谓词的可扩展性通常非常有用。@ejgallego有点像在Haskell中使用ST。通常,稍微偏离语言的原则是使它实用的原因。谢谢你的评论!然而,我必须对“脱离语言的原则才是它的实用性”有一点不同,我认为Coq证明中使用公理的好处很少(而且往往麻烦多于收获);通常,公理可以纠正症状,而不是证明本身效率低下的根本原因(表现形式的错误选择是一个常见的陷阱,没有公理可以自行解决)。@ejgallego可能是这样的,但我认为对于那些想快速将简单的书面证明形式化的人来说,例如,destruct(经典P)
非常有用。主要是因为这种案例分析证明是任何高中或本科逻辑入门的一部分。我个人认为,当我试图证明某些事情时,没有理由让自己的生活更艰难,只要我不引入矛盾。