{σ : Type u} →
  {m : Type u → Type v} →
    {motive : MonadStateOf σ m → Sort u_1} →
      (t : MonadStateOf σ m) →
        ((get : m σ) →
            (set : σ → m PUnit.{u + 1}) →
              (modifyGet : {α : Type u} → (σ → α × σ) → m α) →
                motive { get := get, set := set, modifyGet := modifyGet }) →
          motive t