Output of conditional statement

I think the issue here is that you are trying to project a discontinuous functional into a continuous function space (see this discussion for instance [my bad at choosing a CG space of order 1]).
Depending on what you want, you can define V1 as a Discontinuous space and then project or try the following as proposed in the above link I shared:

v = TestFunction(V1)
lhs = assemble(inner(Constant(1.0),v)*dx)
rhs = assemble(inner(Check,v)*dx)
f2 = Function(V1)
as_backend_type(f2.vector())\
    .vec().pointwiseDivide(as_backend_type(rhs).vec(),
                           as_backend_type(lhs).vec())
print(f2.vector().get_local())