Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] The typing of total recursive functions in Coq (via the untyped Lambda calculus)

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] The typing of total recursive functions in Coq (via the untyped Lambda calculus)


Chronological Thread 
  • From: Matthieu Sozeau <mattam AT mattam.org>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] The typing of total recursive functions in Coq (via the untyped Lambda calculus)
  • Date: Mon, 06 Feb 2017 13:10:31 +0000
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=mattam AT mattam.org; spf=Pass smtp.mailfrom=matthieu.sozeau AT gmail.com; spf=None smtp.helo=postmaster AT mail-qt0-f177.google.com
  • Ironport-phdr: 9a23:hTPd2x2wAehtRPySsmDT+DRfVm0co7zxezQtwd8ZsesRK/ad9pjvdHbS+e9qxAeQG96Kt7Qb1KGK7uigATVGusnR9ihaMdRlbFwst4Y/p0QYGsmLCEn2frbBThcRO4B8bmJj5GyxKkNPGczzNBX4q3y26iMOSF2kbVImbre9JomHhMOukuu25pf7YgNShTP7b6khAg+xqFD0v9UKgYpvN+4KzQnEq2YAL+Ff2X9hIHqWlgrg78L2+4RspXcD88k9/tJNBP2pN58zSqZVWWwr

The partial way out of this issue is to put some fuel (a large number of Acc_intro constructors) in front of your opaque proof, as is done by Wf.Acc_intro_generator

On Mon, Feb 6, 2017 at 12:01 PM Dominique Larchey-Wendling <dominique.larchey-wendling AT loria.fr> wrote:
Le 06/02/2017 à 08:55, Gaetan Gilbert a écrit :
>>But if you use the second method (acc_rect_alt), it seems to me that
> there would be no need to advance in the computation of the
> accessibility proof while reducing a term defined by induction on that
> predicate, even within Coq internal evaluation strategies. I am not
> sufficiently aware of Coq's internal evaluation mechanism to be certain
> of that but I do not think that added axioms would block the evaluation
> because the proof of accessibility is never needed to reduce the term.
> It might however saturate the memory if it is never reduced ...
>
> Fixpoints only unfold if the principal argument is a constructor. For
> acc_rec_alt the principal argument is the (Hx : acc x) so it needs to be
> reduced.
> This is because otherwise you would get an infinite reduction
>
> acc_rec_alt x Hx ↦ f x (fun y Hy => acc_rec_alt ...)
> ↦ f x (fun y Hy => f y (fun z Hz => acc_rec_alt ...))
> ↦ ...

Ok this is a bit unfortunate ... it means anything defined with
the Fix operator or by induction over a predicate will almost
certainly have its evaluation blocked because most proof terms
are Opaque in Coq ... this is not specific to this particular
fixpoint computation.

D.




Archive powered by MHonArc 2.6.18.

Top of Page