let prove logs w =
    let timeout = Wp_parameters.Timeout.get () in
    let stdout = Buffer.create 80 in
    let goal = PO.make L_altergo w in
    Logs.add_file logs goal ;
    let args =
      if Wp_parameters.ProofTrace.get ()
      then [| "-proof" ; goal |]
      else [| goal |]
    in
    Logs.command logs "alt-ergo" args ;
    Task.command ~timeout ~stdout "alt-ergo" args
    >>? Logs.output logs stdout
    >>= fun s ->
      if s=0 then
        let response = Buffer.contents stdout in
        try
          ignore (Str.search_forward valid response 0) ;
          Task.return Valid
        with Not_found ->
          Task.return Unknown
      else
        Task.failed "Alt-Ergo exit %d" s