sig
  type t =
      [ `And of Ketrew_pure.Program.t list
      | `Exec of string list
      | `Shell_command of string ]
  val to_yojson : Ketrew_pure.Program.t -> Yojson.Safe.json
  val of_yojson :
    Yojson.Safe.json -> [ `Error of string | `Ok of Ketrew_pure.Program.t ]
  val to_shell_commands : Ketrew_pure.Program.t -> string list
  val to_single_shell_command : Ketrew_pure.Program.t -> string
  val log : Ketrew_pure.Program.t -> Internal_pervasives.Log.t
  val to_string_hum : Ketrew_pure.Program.t -> string
  val markup :
    ?flatten:bool ->
    Ketrew_pure.Program.t -> Internal_pervasives.Display_markup.t
end