Think of the homotopy as a square.
The interval goes from 0 to 1, and time goes from 0 to 1.
The homotopy g maps the square into S,
and carries g_{0} (at time 0) to g_{1} (at time 1).
If we can show that g has a unique, continuous lift f in S~,
then f becomes the homotopy that connects the two lifts.

But we can go further than this. Let g be a continuous map from an n dimensional hypercube into S. If x is the preimage of g(0) upstairs, anchoring the corner of the cube, there is a unique lift f in S~ that is continuous, with p(f) = g over the entire cube.

We are going to prove this theorem for the square, but it's pretty clear how to generalize it to n dimensions. When we cut the square into many small squares, like a checkerboard, think of partitioning a cube into many small cubes, and so on.

Cover the image of g with open sets that are evenly covered by p. The continuous image of the square is compact, so select a finite subcover. These pull back to open regions across the unit square.

Replace each open region with base open sets in the square. These are traditionally open disks, but we can use open squares instead. The topology is the same. Thus the open preimages are covered by open squares. Our finite cover has become infinite again, but the unit square is compact, so a finite subcover will do. Now the square is covered by finitely many open squares, and the image of each open square, under g, is evenly covered by p.

Find a place in the domain where two open squares overlap. Measure the distance between the edges of the two squares, i.e. the width of the overlap. Do this across the domain, wherever open squares overlap. Let d be the smallest of these distances. Then cut d in half. Now cover the unit square with closed squares of width d, like a checkerboard. Note that each of these small squares maps, via g, into a region of S that is evenly covered.

Start by lifting the first square at the bottom left.
The preimage of the corner is x, and that establishes
the preimage of U_{0} in S~.
Since p is homeomorphic across the image of the first square,
apply p inverse to define f on the first square.
Then lift the next square, and the next, all the way across the bottom row.
This is similar to the path lifting theorem.
When we're done, f is defined on the bottom row,
and is continuous,
and p(f) = g.

Next, lift the first square in the second row. Since f is already defined on the square below, it is defined on the bottom edge of our square, and that sets the location in S~. The map is a homeomorphism across the image of our square, and the homeomorphism spills over, via the open set, into the square below. Use the homeomorphism to extend f continuously to the new square. Then do the same for the rest of the squares in the second row.

Lift the third row of squares, and the fourth, and so on all the way up to the top. Finally f is complete, and continuous on the unit square, and p(f) = g.

If g represents a homotopy from g_{0} to g_{1},
then the homotopy has been lifted to f,
and f_{0} and f_{1} are homotopic.

This can be generalized to any reasonable region in **R**^{n}, or perhaps all of **R**^{n}.