def f(x,y):
if x < 1-y^2 and x > y^2-1:
return y^2
return -NaN
def g(x,y):
if x < 1-y^2 and x > y^2-1:
return 0
return -NaN
P = plot3d(f,(-1,1),(-1,1),plot_points=100)
R = plot3d(g,(-1,1),(-1,1),plot_points=100)
u,v = var('u v')
Q1 = parametric_plot3d([1-u^2,u,v*u^2],(u,-1,1),(v,0,1))
Q2 = parametric_plot3d([u^2-1,u,v*u^2],(u,-1,1),(v,0,1))
P+Q1+Q2+R