let whydp log smt file =
    let timeout = Wp_parameters.Timeout.get () in
    let stdout = Buffer.create 80 in
    let args = Array.append smt.wdp [| file |] in
    Log.command log "why-dp" args ;
    Task.command ~timeout ~stdout "why-dp" args
    >>? Log.output log stdout
    >>= 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