gpt4 book ai didi

coq - 证明函数应用在两个等价函数上的相等性

转载 作者:行者123 更新时间:2023-12-04 01:54:30 24 4
gpt4 key购买 nike

我如何在 Coq 中证明以下内容?

Variables f g : nat->nat.
Hypothesis Hfg : forall x, f x = g x.
Variable F : (nat->nat)->nat.
Goal F f = F g.

我们有两个函数,fg,它们不一定相等,但它们是等价的。例如f x可以是0+xg x可以是x+0

F 返回一个 nat,并且由于 F 无法查看其函数参数,因此返回值应该与是否被馈送相同fg。我如何证明这一点?

(相当于Proper (f_eq ==> eq) F的证明,其中f_eq = forall (f g:nat->nat), f x = g x )


在 Anton Trunov 的回答后编辑:我真的在问 expressive power Coq 的逻辑,所以我宁愿不添加公理,或证明这等同于其他公理的某种弱形式。例如,我认为这比 Functional Extensionality 弱.

最佳答案

可以使用功能扩展性来证明目标。

From Coq Require Import FunctionalExtensionality.

Section Foo.
Variables f g : nat->nat.
Hypothesis Hfg : forall x, f x = g x.
Variable F : (nat->nat)->nat.

Goal F f = F g.
Proof. now apply functional_extensionality in Hfg; subst. Qed.
End Foo.

但是这里真的有必要吗?答案是"is",因为如果你有一般证明,你可以为 F 实例化它,这是身份函数,这意味着 (forall x, f x = g x) -> f = g。或者,更正式和更一般的情况:

Axiom axiom : forall A B C (f g : A -> B) (eqv : forall x, f x = g x)
(F : (A -> B) -> C), F f = F g.

Lemma fun_ext A B (f g : A -> B) :
(forall x, f x = g x) -> f = g.
Proof.
intros eqv; apply (axiom A B _ f g eqv (fun x => x)).
Qed.

关于coq - 证明函数应用在两个等价函数上的相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51290764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com