See picture below enter image description here the following picture. According to Hatcher, homotopy extension property implies that for a pair $(X,A)$ where $A$ is a subspace of $X$,

$X\times I$ should retract to $X\times\{0\}\cup A\times I$ .

My question is whether the retract given in the picture is possible ? If yes, how would we do it. Seems to me it is impossible to do the retraction continuously.

  • $\begingroup$ What exactly are $X$ and $A$ here? A big disk and a small disk or something else? $\endgroup$
    – Dejan Govc
    May 31 '13 at 22:20
  • $\begingroup$ Yeah, X is the big disk and A is the smaller disk. $\endgroup$ May 31 '13 at 22:28

It's definitely doable. Let's consider a simpler example first: let $X=[0,1]$, and let $A=\{0\}$.

You can retract $X\times I$ (a square) to $(X\times\{0\})\cup(A\times I)$ (the union of the "bottom" and "left" sides of the square) by projecting each point along the ray from $(2,2)$:

enter image description here

To move this intuition to your example of $X=$ a disk and $A=$ a smaller disk inside $X$, just "swing this around" (as one would to form a solid of revolution) and leave the interior of $A$ alone.

For fun:

enter image description here

PlotACylinder[RadiusOfA_, Height_, theta_, u_] :=
  {RadiusOfA*Cos[theta], RadiusOfA*Sin[theta], Height*u}

PlotATop[RadiusOfA_, Height_, theta_, u_] :=
  {RadiusOfA*u*Cos[theta], RadiusOfA*u*Sin[theta], Height}

PlotX[RadiusOfX_, theta_, u_] :=
  {RadiusOfX*u*Cos[theta], RadiusOfX*u*Sin[theta], 0}

PlotTopSurface[RadiusOfA_, RadiusOfX_, Height_, t_, theta_, u_] := 
 Module[{x, y},
  x = RadiusOfA + (RadiusOfX - RadiusOfA) u;
  y = 2 Height*(1 - (2 RadiusOfX - 2 RadiusOfA)/(2 RadiusOfX - RadiusOfA - x))
      + Height*(2 RadiusOfX - 2 RadiusOfA)/(2 RadiusOfX - RadiusOfA - x);
  {(x (1 - t) + RadiusOfA*t)*Cos[theta], (x (1 - t) + RadiusOfA*t)*Sin[theta], 
  Height (1 - t) + y*t}]

PlotSideSurface[RadiusOfA_, RadiusOfX_, Height_, t_, theta_, u_] := 
 Module[{x, y},
  y = Height*u;
  x = (2 RadiusOfX - RadiusOfA)*(1 - (2 Height/(2 Height - y))) 
      + RadiusOfX (2 Height/(2 Height - y));
  {(RadiusOfX (1 - t) + x*t)*Cos[theta], (RadiusOfX (1 - t) + x*t)*Sin[theta], 
  y (1 - t)}]

PlotRetract[RadiusOfA_, RadiusOfX_, Height_, t_] := ParametricPlot3D[
  {PlotACylinder[RadiusOfA, Height, theta, u],
   PlotATop[RadiusOfA, Height, theta, u],
   PlotX[RadiusOfX, theta, u],
   PlotTopSurface[RadiusOfA, RadiusOfX, Height, t, theta, u],
   PlotSideSurface[RadiusOfA, RadiusOfX, Height, t, theta, u]},
  {theta, 0, 2 Pi}, {u, 0, 1}, Mesh -> None, Axes -> None, 
  Boxed -> False, PlotPoints -> 30, 
  Lighting -> {{"Directional", White, {{1, 1, 1}, {0, 0, 0}}}}, 
  PlotStyle -> {Gray, Gray, Gray, Directive[Blue, Opacity[0.5]], 
  Directive[Blue, Opacity[0.5]]}]

Export["animation.gif", Table[PlotRetract[1, 3, 4, Max[0, t]],
  {t, -0.1, 0.98, 0.02}], "DisplayDurations" -> {0.125}]
  • 1
    $\begingroup$ Glad I could help! Just for fun I cooked up an animation of the retraction. $\endgroup$ Jun 1 '13 at 2:07
  • $\begingroup$ Awesome, thanks. $\endgroup$ Jun 1 '13 at 14:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.