Allora, abbiamo un insieme numerabile di simboli A.
Consideriamo l'insieme di tutte le stringhe finite su A e chiamiamolo A* (lo facciamo per comodita', poiche' l'operazione '*' e' definita su linguaggi, e A non e' un linguaggio... Perche'?)

Se indichiamo con
A0 l'insieme composto dalla stringa vuota,
A1 l'insieme A stesso
A2 l'insieme fatto dalle stringhe di elementi di A lunghe 2
ecc.ecc.

abbiamo che A* e' l'unione di tutti gli An per ogni n (non abbiamo usato l'operazione di potenza, poiche' noi l'abbiamo definita su linguaggi...)

Ogni An e' un insieme numerabile e quindi puo' essere enumerato, con una lista del tipo
An,0,An,1,An,2....
(dove An,k e' il k+1-esimo elemento della lista con cui enumeriamo gli elementi di An
[dato n, l'enumerazione per An si puo' ottenere con lo stesso metodo indicato nel seguito, a partire da An-1 e A]
Quindi quel che dobbiamo fare ora e' trovare una enumerazione per A* (descrivere cioe' una lista che contenga tutti gli elementi di tutti gli An)

Consideriamo quindi la seguente tabella infinita
          0  1  2  3  4  ....
     A0
     A1
     A2
     A3
      .
      .
e riempiamola nel seguente modo
          0     1     2     3     4  ....
     A0   A0,0  A0,1   A0,2   A0,3...
     A1   A1,0  A1,1   A1,2   ...
     A2   A2,0  A2,1   A2,2   ....
     A3   A3,0  A3,1   A3,2   ....
      .     ............
      .     .....
Si faccia ora una lista di tutti gli elementi della matrice considerando tutte le diagonali che vanno dal basso a sinistra in alto a destra, dalla piu' piccola in avanti, cioe'
   A0,0, A1,0, A0,1, A2,0, A1,1,A0,2, A3,0, A2,1, A1,2, A0,3, A4,0, A3,1, ecc.ecc.
Per come l'abbiamo costruita, questa lista conterra' tutti e soli gli elementi di A*.