How do we implement the symmetry condition?

Hello, everyone, I would like to ask a question. I solve the Stokes equation in a channel, the boundary conditions are as follows

There is a symmetry condition on the bottom boundary, how to implement this boundary condition? The symmetry condition looks like a combination of Dirichlet and Neumann boundary conditions.

This problem confuses me a lot, can anyone give me some suggestions on implementing the symmetry condition? I would appreciate any help you give me.

The minimum code

mesh Th=square(50,10,[5*x,y]); 
fespace Vh(Th,P2); 
fespace Ph(Th,P1); 

Vh u1,u2,v1,v2;
Ph p,q;
macro Eps(u,v) [ dx(u),dy(v), (dx(v)+dy(u))*0.5, (dx(v)+dy(u))*0.5 ] // 
macro div(u1,u2) (dx(u1)+dy(u2) ) // 

func pin=10000.0;
func pout=0.0;

solve Stokes( [u1,u2,p],[v1,v2,q] ) =
int2d(Th) ( 2*Eps(u1,u2)'*Eps(v1,v2) - div(v1,v2)*p -div(u1,u2)*q)
+ on(3,u1=0,u2=0)
+ on(1,u2=0, dy(u1)=0;);  //How to implement the symmetry condition ???


It should be enforced naturally due to the neglect of the boundary term arising
via integration by parts.


Continuing the discussion from How do we implement the symmetry condition?: