如何证明功能相等,知道他们的身体是平等的?

How to prove functions equal, knowing their bodies are equal?

我们如何证明以下内容?:

Lemma forfun: forall (A B : nat->nat), (forall x:nat, A x = B x) ->
                                       (fun x => A x) = (fun x => B x).
Proof.

你想要的原理被称为功能扩展性;在最一般的形式中,它说

Axiom fun_ext : forall (A B : Type) (f g : A -> B),
  (forall x : A, f x = g x) -> f = g.

不幸的是,尽管有用,但该原则独立于 Coq 的基本逻辑,这意味着无法证明或反驳它。然而,Coq 的逻辑被设计为可以安全地将此原则假设为理论中的公理,并且 Coq's standard library 已经定义了该原则以便您可以使用它。