code for diagram
code for labeledarrow
code for dblabeledarrow
>
box:=plots[polygonplot]([[-2,1],[2,1],[2,-1],[-2,-1]],
color=blue,style=line,thickness=3):
circs:=plot({[2*cos(t),2*sin(t)+1,t=0..Pi],
[cos(t)-2,sin(t),t=Pi/2..3*Pi/2],[cos(t)+2,sin(t),
t=-Pi/2..Pi/2]},color=blue,thickness=3):
arr1:=dblabeledarrow([1.6,0],[1.6,1],[1,2,3], `a`,
[0,-.2], 12, red):
arr2:=dblabeledarrow([-2,-.8],[0,-.8],[1,2,2],
`b`,[0,-.2], 12, red):
plots[display]({box,circs,arr1,arr2},scaling=constrained,
axes=none);