{m : Type u → Type v} →
  [inst : Applicative m] →
    {motive : CommApplicative m → Sort u_1} →
      (t : CommApplicative m) →
        ([toLawfulApplicative : LawfulApplicative m] →
            (commutative_prod :
                ∀ {α β : Type u} (a : m α) (b : m β), Prod.mk <$> a <*> b = (fun b a => (a, b)) <$> b <*> a) →
              motive ⋯) →
          motive t