Better yet: working over a ringoid (in the sense of a category enriched over abelian groups), rather than limiting oneself strictly to rings.

For any objects A, B, and C in a ringoid, there are maps from Hom(B, C)[sup]3[/sup] x Hom(A, B)[sup]3[/sup] to Hom(A, C) and to Hom(A, C)[sup]3[/sup] corresponding to the dot and cross products, respectively, defined in the ordinary way. In the same way, we have generalized analogues of multiplication of 3-vectors by scalars, and so on. And these all satisfy all the ordinary identities as demonstrated in the ordinary way, so long as one takes care to write products with the factors maintained in sensible order.

Furthermore, given any ring R and module M over R, we can form a ringoid with two objects 1 and *, such that Hom(*, *) = R, Hom(1, *) = M, 1 is a terminal object, and multiplication is given in the obvious way.

In particular, we can take R to be the (commutative!) ring of linear combinations of differential operators of arbitrary degree, and M to be the scalar fields on which these operators act. Then we can interpret ∇ as an element of R[sup]3[/sup] = Hom(*, *)[sup]3[/sup], and any vector-valued field F as an element of M[sup]3[/sup] = Hom(1, *)[sup]3[/sup], and apply our dot/cross/etc. product identities as we’d like.

And we would genuinely have that curl(F) = the cross product of ∇ and F, div(F) = the dot product of ∇ and F, and grad(G) = the “vector times scalar” product of ∇ and G, in this framework. And the reasoning of the OP is perfectly fine (making the minor order of factors corrections noted above) in this way. And much clearer and more illuminating than what their professor probably demanded they write out instead.

Not that one need know anything about ringoids, or any other such concretely axiomatized algebraic structure, to write the OP’s proof. One just needs to recognize that the same formal manipulations by which one saw that A x (B x C) = … in the first place would, in the same way, establish the desired result were the terms in the appropriate places in the argument interpreted as the appropriate differential operators. The discussion of ringoids is only to soothe those who have been mis-trained to look away from this sort of thing.