Definitivamente es factible. Consideremos primero un ejemplo más sencillo: dejemos que $X=[0,1]$ y que $A=\{0\}$ .
Puede retractarse $X\times I$ (un cuadrado) a $(X\times\{0\})\cup(A\times I)$ (la unión de los lados "inferior" e "izquierdo" del cuadrado) proyectando cada punto a lo largo del rayo desde $(2,2)$ :
Para trasladar esta intuición a su ejemplo de $X=$ un disco y $A=$ un disco más pequeño en el interior $X$ , sólo hay que "girar esto" (como se haría para formar un sólido de revolución) y dejar el interior de $A$ solo.
Para divertirse:
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}\]