(cmd : String) →
  (args : Array String) →
    (motive :
        { stdin := IO.Process.Stdio.piped, stdout := IO.Process.Stdio.piped, stderr := IO.Process.Stdio.piped,
                  cmd := cmd, args := args }.stdin.toHandleType ×
            IO.Process.Child
              { stdin := IO.Process.Stdio.null,
                stdout :=
                  { stdin := IO.Process.Stdio.piped, stdout := IO.Process.Stdio.piped, stderr := IO.Process.Stdio.piped,
                      cmd := cmd, args := args }.stdout,
                stderr :=
                  { stdin := IO.Process.Stdio.piped, stdout := IO.Process.Stdio.piped, stderr := IO.Process.Stdio.piped,
                      cmd := cmd, args := args }.stderr } →
          Sort u_1) →
      (__discr :
          { stdin := IO.Process.Stdio.piped, stdout := IO.Process.Stdio.piped, stderr := IO.Process.Stdio.piped,
                  cmd := cmd, args := args }.stdin.toHandleType ×
            IO.Process.Child
              { stdin := IO.Process.Stdio.null,
                stdout :=
                  { stdin := IO.Process.Stdio.piped, stdout := IO.Process.Stdio.piped, stderr := IO.Process.Stdio.piped,
                      cmd := cmd, args := args }.stdout,
                stderr :=
                  { stdin := IO.Process.Stdio.piped, stdout := IO.Process.Stdio.piped, stderr := IO.Process.Stdio.piped,
                      cmd := cmd, args := args }.stderr }) →
        ((stdin :
              { stdin := IO.Process.Stdio.piped, stdout := IO.Process.Stdio.piped, stderr := IO.Process.Stdio.piped,
                    cmd := cmd, args := args }.stdin.toHandleType) →
            (child :
                IO.Process.Child
                  { stdin := IO.Process.Stdio.null,
                    stdout :=
                      { stdin := IO.Process.Stdio.piped, stdout := IO.Process.Stdio.piped,
                          stderr := IO.Process.Stdio.piped, cmd := cmd, args := args }.stdout,
                    stderr :=
                      { stdin := IO.Process.Stdio.piped, stdout := IO.Process.Stdio.piped,
                          stderr := IO.Process.Stdio.piped, cmd := cmd, args := args }.stderr }) →
              motive (stdin, child)) →
          motive __discr