sig
  type t =
      [ `And of Ketrew_program.t list
      | `Exec of string list
      | `Shell_command of string ]
  val to_yojson : Ketrew_program.t -> Yojson.Safe.json
  val of_yojson :
    Yojson.Safe.json -> [ `Error of string | `Ok of Ketrew_program.t ]
  val to_shell_commands : Ketrew_program.t -> string list
  val to_single_shell_command : Ketrew_program.t -> string
  val log : Ketrew_program.t -> Ketrew_pervasives.Log.t
  val to_string_hum : Ketrew_program.t -> string
end