{α : Type} →
  {motive : Std.CloseableChannel.Bounded.State✝ α → Sort u} →
    (t : Std.CloseableChannel.Bounded.State✝¹ α) →
      ((producers : Std.Queue (IO.Promise Bool)) →
          (consumers : Std.Queue (Std.CloseableChannel.Bounded.Consumer✝ α)) →
            (capacity : ℕ) →
              (buf : Vector (IO.Ref (Option α)) capacity) →
                (bufCount sendIdx : ℕ) →
                  (hsend : sendIdx < capacity) →
                    (recvIdx : ℕ) →
                      (hrecv : recvIdx < capacity) →
                        (closed : Bool) →
                          motive
                            { producers := producers, consumers := consumers, capacity := capacity, buf := buf,
                              bufCount := bufCount, sendIdx := sendIdx, hsend := hsend, recvIdx := recvIdx,
                              hrecv := hrecv, closed := closed }) →
        motive t