Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] fun <-> forall

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] fun <-> forall


Chronological Thread 
  • From: Robbert Krebbers <mailinglists AT robbertkrebbers.nl>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] fun <-> forall
  • Date: Thu, 26 Oct 2017 13:18:25 +0200
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=mailinglists AT robbertkrebbers.nl; spf=None smtp.mailfrom=mailinglists AT robbertkrebbers.nl; spf=None smtp.helo=postmaster AT smtp2.science.ru.nl
  • Ironport-phdr: 9a23:nHg0KhAE81epZXzLpTJnUyQJP3N1i/DPJgcQr6AfoPdwSP38psbcNUDSrc9gkEXOFd2Crakb26yL6+jJYi8p39WoiDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6i760TlHERLmcAFxO+7dG4jIjs3x2frh1YfUZlBygzC3bKluZDasoA/bu9MNyd9nI6c1yx3GpnpTZ/9+32RiL1+JgxXm68268YR4tSJU7aFyv/VcWLn3KvxrBYdTCy4rZjg4

Unless I am mistaken, what Burak wants goes in the opposite way, so function extensionality is not needed.

A simplified example of what I think he asks for:

Goal forall (A B : Type) (f g : A -> B),
(fun x => f x) = (fun x => g x) ->
forall x, f x = g x.
Proof.
intros A B f g Hfg x.
change ((fun x => f x) x = (fun x => g x) x).
rewrite Hfg.
reflexivity.
Qed.

On 10/26/2017 01:13 PM, Ralf Jung wrote:
Hi Burak,

what you are looking for is function extensionality:

f = g <-> forall x, f x = g x

Function extensionality cannot be proven in Coq, but you can assume it
as an axiom. (It is compatible with the theory.)

So, the answer to "Is there a way" is "Yes, if you are willing to assume
an axiom". You can find it in the standard library at
<https://coq.inria.fr/stdlib/Coq.Logic.FunctionalExtensionality.html>.

Kind regards,
Ralf

On 26.10.2017 13:09, Burak Ekici wrote:
Hi all,

I have an hypothesis of the following form "H : (fun a b f => XX a b f)
= (fun a b f => YY a b f)".

Is there a way to turn it into "H: forall a b f, XX a b f = YY a b f"?

Thanks!

Best,



Burak.






Archive powered by MHonArc 2.6.18.

Top of Page