Proof.
Proof is by induction. The initial case occurs when adding a back edge

to

. We know by definition that

and there is a path from

to

via the newly BLACK edge

. We now show that for any other edge

that is part of a cycle involving e, as

is added to

, Lemma 1 remains true.
We know that cross edges cannot be involved in a cycle and back edges are the base case, so we have only the cases of adding tree and forward edges to

remaining. As a tree or forward edge

is added to

, if there exists a cyclic ancestor for

, i.e.

, then we know there is a directed path from

to

. By extension, there is also a path from

to

(if

we set

otherwise we have closed the cycle and know that

is not part of it). Note that for forward edges that are part of cycles, the cycles may involve multiple back edges. For the correct cyclic ancestor to be identified in this case, the back edges must be searched recursively to correctly identify the earliest cyclic ancestor.
Proof.
The key is that the invariant of Lemma 1 also holds when, for a given vertex

. That is, if

is identified as the cyclic ancestor of some cycle then on completion of the algorithm there exists a directed path along BLACK edges from

to itself and using the same rule that is used to identify cyclic ancestors of nodes, each of these edges will have been added to

.