On 26 July 2018 at 09:09, Claire Dross <dr...@adacore.com> wrote:
> Thanks Andrei for your answers.
>
> Le 25/07/2018 à 21:51, Andrei Paskevich a écrit :
>>
>> On 25 July 2018 at 17:31, Claire Dross <dr...@adacore.com> wrote:
>>>
>>> I have been trying to adapt the spark tool to use the new Why3 release. I
>>> cannot say how it is going yet, I still have a long way to go, but I already
>>> have some questions:
>>>
>>>   - the "no inlining" and "lskept" metas seem to have disappear, did they
>>> changed names or are they completely removed?
>>
>> No, the polymorphism encoding didn't change at all, so everything
>> should still be there, see François' reply.
>>
>>>   - labels "..." are not accepted anymore. By looking at the parser, I
>>> have replaced them with [@...], is this correct?
>>
>> Yes.
>
> OK, multiline labels are no longer supported then. On purpose?

No, there is no hard reason for that AFAIK. Can be added back. What is
your use case for multiline labels?

>>> I also found 2 cases of constructs which were accepted before but are not
>>> anymore:
>>>
>>>   - We can no longer ignore a non unit value:
>>>       let main () = 15; ()
>>
>> This is on purpose, OCaml does that same. "let _ = 15 in ()" should work.
>
> Yes it does, but it will require special casing in the code generator...

Why so? There is no dedicated sequence constructor anyway, sequences
are just "let-in" chains.

And even if you need a special case for that, it does not seem like a
complicated one.

>>>>> Cannot cast an integer literal to type unit
>>>
>>>   - Conversion to int of range types is ghost:
>>>    type tt = < range 1 5 >
>>>    let function to_rep  (x : tt) : int = (tt'int x)
>>>>>
>>>>>   Function to_rep must be explicitly marked ghost
>>
>> This is also on purpose: the tt'int operation is used for
>> specification purposes, if you make it non-ghost, you would need to
>> link the extracted code with an arbitrary-precision arithmetic
>> library.
>>
> Then I think we are back to not using range types and defining our own
> projections. I will see if we can avoid that.

I fail to see your logic here. The range types in WhyML were, in large
part, motivated by Spark use. As I've said earlier, it is easy to add
non-ghost range-to-int converter. What is the problem?

> Unfortunately, it seems that the modifications, if they make whyml better
> for code extraction, and probably a better language to program with
> directly, seem to make it more complicated to use as an intermediate
> language...

That would be unfortunate indeed, and very far from our intention.
However, I do not understand why you think it is the case. The
questions you've raised so far do not seem to require complicated
changes in the code generator.

Best,
Andrei
_______________________________________________
Why3-club mailing list
Why3-club@lists.gforge.inria.fr
https://lists.gforge.inria.fr/mailman/listinfo/why3-club

Reply via email to