let whydp logs smt file =
let timeout = Wp_parameters.Timeout.get () in
let stdout = Buffer.create 80 in
let stderr = Buffer.create 80 in
let my_args =
if Wp_parameters.ProofTrace.get () then
[| "-batch"; "-debug"; file |]
else
[| "-batch"; file |]
in
let args = Array.append smt.wdp my_args in
Logs.command logs "why-dp" args ;
Task.command ~timeout ~stdout ~stderr "why-dp" args
>>? Logs.output logs ~status:[0;1;2;3;4] stdout
>>? Logs.output logs stderr
>>= fun res ->
if res = 0 then Task.return Valid
else
if (1<= res && res <= 4) then Task.return Unknown
else Task.failed "Why-dp exit %d" res