[Termtools] [Cime-club] problem with Coccinelle's RPO?

Frederic Blanqui frederic.blanqui at inria.fr
Wed Jun 30 03:49:41 CEST 2010


I see. Thank you for your explanations.

Xavier Urbain a écrit :
> 
> 
> On 29 June 2010 11:26, Frederic Blanqui <frederic.blanqui at inria.fr 
> <mailto:frederic.blanqui at inria.fr>> wrote:
> 
> 
> 
>     Pierre Courtieu a écrit :
> 
>         Hello to both of you. First thank you for using coccinelle!
> 
>         There is no problem with symbol equivalence in rpo definition of
>         coccinelle. Actually afs and symbol equivalence are just
>         instances of
>         well foundedness proofs by "inverse image" theorem. This works very
>         well in Cime certificates.
> 
>         If you want to apply an afs, you need to apply a function (doing
>         projection or removing arguments) to your terms before applying your
>         ordering. It is well known that you obtain a well founded
>         ordering if
>         the initial ordering was.
> 
>         If moreover you need to consider symbol f equivalent to g, then
>         it is
>         enough to modify the afs function in such a way that it replaces all
>         occurrence of f by g.
> 
> 
>     Does the CPF format allow this?
> 
> 
>     _______________________________________________
>     Cime-club mailing list
>     Cime-club at lists.gforge.inria.fr <mailto:Cime-club at lists.gforge.inria.fr>
>     http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/cime-club
> 
> 
> 
> Dear Frédéric,
> 
> Regarding termination proofs using RPO, the CPF format specifies the AFS 
> function and the precedence of symbols with their status (lex, mul). 
> When CiME generates a Coq/Coccinelle certificate from a CPF trace, it 
> builds a new AFS that takes into account equivalence of symbols. We can 
> then apply the RPO theorem as it is formalised in Coccinelle, thus 
> validating the original proof in the CPF file.
> 
> Generally speaking, the CPF format does not specify the way one should 
> use a given certification library, it aims to provide relevant proof 
> arguments. The certifier checks that those arguments are sufficient to 
> prove termination.
> 
> In our case, what we do is using a Coq function of type term -> term 
> that projects its argument into the "quotient type" obtained by 
> equalising all the symbols declared equal by the precedence (in fact we 
> do that during the AFS phase but both phases can be split). Then, the 
> ordering corresponding to an RPO with a precedence having an equality 
> part eq_prec is:
> fun t1 t2 => Rpo.rpo (eq_prec t1) (eq_prec t2).
> 
> Best regards,
> 
> The A3PAT team
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Cime-club mailing list
> Cime-club at lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/cime-club


More information about the Termtools mailing list