Adding expressions with non-matching form arguments ('v_0^1', 'v_1^0') vs ('v_0^0', 'v_1^1')

Please note that you are looking at a very old version of the demo (1.6.0). Please consider at least: https://fenicsproject.org/olddocs/dolfin/2019.1.0/python/demos/stokes-iterative/demo_stokes-iterative.py.html?highlight=stokes%20iterative
I cannot reproduce any error messages with the code above.

It seems like you are trying to replicate very old dolfin code. Changing your finite element function space definition to:

el_u = VectorElement("Lagrange", mesh.ufl_cell(), 2)
el_p = FiniteElement("Lagrange", mesh.ufl_cell(), 1)
W = FunctionSpace(mesh, MixedElement([el_u, el_p]))

and

bc_vbottom = DirichletBC(W.sub(0), Constant((0.0, 0.0)), bottom)

the code does not throw an error.