[CakeML-dev] Partial applications in CF

Armaël Guéneau armael.gueneau at ens-lyon.fr
Thu Mar 9 13:47:00 UTC 2017

Hi Ramana,

Short answer: yes, partial application of CF specs is possible and is
supposed to be handled, but not everything is implemented at the moment.

Long answer: cfAppScript defines a [curried] predicate. [curried n f]
means that [f] is curried [n] times. At the moment nothing is really
proved about [curried]; the intention is to have lemmas that given a
[app f [x1..xn] ...] and a [curried n f], produce a specification [app f
[x1..xi] ...] for i <> n; i.e. allow to apply less or more arguments
than defined in the spec.

So, to do what you need, the following needs to be done:
- prove the required lemmas about [curried]
- have [xapp] use a [curried] ... theorem when needed
- produce a [curried ...] theorem from translator specifications, to go
with the [app ...] theorem.

I'm putting these items on top of my todo-list.

— Armaël

On 09/03/2017 03:52, Ramana Kumar wrote:
> Hi Armaël, Magnus, developers,
> Do you know how to use CF for partial applications of
> translator-verified functions? It seems that app_of_Arrow_rule always
> produces an app spec with the maximum number of arguments applied. Is
> it possible to use this app spec (with xapp) in a situation where
> only, say, the first out of two arguments has been applied?
> If that is not possible, what is a good workaround? Do I need to
> define a new function for every partial application?
> Cheers,
> Ramana
> _______________________________________________
> Developers mailing list
> Developers at cakeml.org
> https://lists.cakeml.org/listinfo/developers

More information about the Developers mailing list