{F : Type u → Type v} →
  {motive : QPF F → Sort u_1} →
    (t : QPF F) →
      ([toFunctor : Functor F] →
          (P : PFunctor.{u, u'}) →
            (abs : {α : Type u} → ↑P α → F α) →
              (repr : {α : Type u} → F α → ↑P α) →
                (abs_repr : ∀ {α : Type u} (x : F α), abs (repr x) = x) →
                  (abs_map : ∀ {α β : Type u} (f : α → β) (p : ↑P α), abs (P.map f p) = f <$> abs p) →
                    motive
                      { toFunctor := toFunctor, P := P, abs := abs, repr := repr, abs_repr := abs_repr,
                        abs_map := abs_map }) →
        motive t