\documentclass{article}
\usepackage[inline]{asymptote}

\begin{document}

Here is a venn diagram produced with Asymptote, drawn to width 4cm:

\begin{asy}
  size(4cm,0);
  pen colour1=red;
  pen colour2=green;

  pair z0=(0,0);
  pair z1=(-1,0);
  pair z2=(1,0);
  real r=1.5;
  path c1=circle(z1,r);
  path c2=circle(z2,r);
  fill(c1,colour1);
  fill(c2,colour2);

  picture intersection=new picture;
  fill(intersection,c1,colour1+colour2);
  clip(intersection,c2);

  add(intersection);

  draw(c1);
  draw(c2);

  // draw("$\A$",box,z1);              // Requires [inline] package option.
  // draw(Label("$\B$","$B$"),box,z2); // Requires [inline] package option.
  draw("$A$",box,z1);
  draw("$\V{B}$",box,z2);

  pair z=(0,-2);
  real m=3;
  margin BigMargin=Margin(0,m*dot(unit(z1-z),unit(z0-z)));

  draw(Label("$A\cap B$",0),conj(z)--z0,Arrow,BigMargin);
  draw(Label("$A\cup B$",0),z--z0,Arrow,BigMargin);
  draw(z--z1,Arrow,Margin(0,m));
  draw(z--z2,Arrow,Margin(0,m));

  shipout(bbox(0.25cm));
\end{asy}

\begin{asydef}
  // Global Asymptote definitions can be put here.
  import three;
  usepackage("bm");
  texpreamble("\def\V#1{\bm{#1}}");
  // One can globally override the default toolbar settings here:
  // settings.toolbar=true;
\end{asydef}

\end{document}
