Hello,

Indeed, the API from Call_provers.mli has changed (yet another
not-well-documented Why3 change, sorry about that)

For sure the use of Why3 "strategies" is not what you need.

The main change is that for spawning provers as external processes, Why3
does not anymore proceed using a fork, but instead delegates this to
another process so-called "why3server". This approach solved at least
two issues: first, it is now compatible with Microsoft Windows OS, and
second the size of the forked processes is considerably smaller.

From the Why3's user side, there is no visible change, except if you are
an advanced user using the API directly.

It seems to me that, as suggested by Johannes, the use of the
prover_call type should abstract away the unix pid. Regarding your
request of having a way to call for available answers from multiple
provers, the function

Call_prover.forward_results

should be what you look for.

If something is missing for you in this API, we would be glad to
complete it for your need.

- Claude

Le 23/10/2017 à 13:12, Pierre-Yves Strub a écrit :
> Thank you for your answer. Yes, I was speaking about process ID that
> were available up to Why 0.87. We're not using sessions and
> Driver.prove_task which returns a Call_provers.prover_call (as the
> call_on_*). The problem is that with the new API, I don't have any way
> to wait for multiple provers (in a non-active way, i.e. without
> spamming query_call). I'm ok to move to any API as long as I can call
> multiple provers on a task and wait until on prover succeeds.
> 
> Best. Pierre-Yves.
> 
> 2017-10-23 11:47 GMT+02:00 Johannes Kanig <ka...@adacore.com>:
>> Dear Pierre-Yves,
>>
>> On 10/23/2017 06:27 PM, Pierre-Yves Strub wrote:
>>>
>>> I'm trying to update EasyCrypt from Why3 0.87 to 0.88. Up to now, we
>>> were using the Why3 API to run provers on a task that we create
>>> programmatically. To start multiple provers in parallel, we were
>>> running our home made machinery that was relying on PID.
>>
>>
>> are you referring to the process ID? Indeed, why3 doesn't necessarily spawn
>> the prover process itself, so doesn't necessarily have access to the pid.
>>
>>> This API has
>>> now been removed (if I understand well because running a prover does
>>> not necessarily mean forking a new process in Why3 0.88).
>>
>>
>>>  From the API documentation, it seems that I could now achieve the same
>>> thing using the Strategy API. However, I failed understanding how the
>>> API works. Could someone give me some pointers to which
>>> modules/functions I should look at?
>>
>>
>> Were you previously using sessions? If not, you can just replace your pids
>> by the "prover_call" type of call_provers.mli. The call_on_* functions of
>> that file (and the more high-level ones of driver.mli) return immediately,
>> so they are suitable for running provers in parallel.
>>
>> --
>> Johannes Kanig, PhD
>> Senior Software Engineer
>> <ka...@adacore.co
>> _______________________________________________
>> Why3-club mailing list
>> Why3-club@lists.gforge.inria.fr
>> https://lists.gforge.inria.fr/mailman/listinfo/why3-club
> _______________________________________________
> Why3-club mailing list
> Why3-club@lists.gforge.inria.fr
> https://lists.gforge.inria.fr/mailman/listinfo/why3-club
> 

-- 
Claude Marché                          | tel: +33 1 69 15 66 08
INRIA Saclay - Île-de-France           |
Université Paris-sud, Bat. 650         | http://www.lri.fr/~marche/
F-91405 ORSAY Cedex                    |
_______________________________________________
Why3-club mailing list
Why3-club@lists.gforge.inria.fr
https://lists.gforge.inria.fr/mailman/listinfo/why3-club

Reply via email to