{m : Type u → Type u} →
  {α : Type u} →
    {motive_1 : MLList.MLListImpl✝ m α → Sort u_1} →
      {motive_2 : Thunk (MLList.MLListImpl✝¹ m α) → Sort u_1} →
        motive_1 MLList.MLListImpl.nil✝ →
          ((a : α) → (a_1 : MLList.MLListImpl✝² m α) → motive_1 a_1 → motive_1 (MLList.MLListImpl.cons✝ a a_1)) →
            ((a : Thunk (MLList.MLListImpl✝³ m α)) → motive_2 a → motive_1 (MLList.MLListImpl.thunk✝ a)) →
              ((a : Unit → m (MLList.MLListImpl✝⁴ m α)) → motive_1 (MLList.MLListImpl.squash✝ a)) →
                ((fn : Unit → MLList.MLListImpl✝⁵ m α) → ((a : Unit) → motive_1 (fn a)) → motive_2 { fn := fn }) →
                  (t : Thunk (MLList.MLListImpl✝⁶ m α)) → motive_2 t