I am a bit puzzled by the following
import dolfin as df
mesh = df.UnitSquareMesh(20, 20)
V = df.FunctionSpace(mesh, 'CG', 1)
f = df.Expression("x[0]*x[0] + x[1]")
fv = df.project(f, V)
fv2 = df.project(fv, V)
print fv.vector().array() - fv2.vector().array()
I assume it is due to numerical errors when projecting, but it seems a bit strange that every time you project a function onto its own functionspace, it gets deformed a little bit.