Comprobación de desbordamiento en suma firmada y grupos abelianos

Estaba leyendo sobre por qué el siguiente código tiene errores:

int tadd_ok ( int x, int y ) {  
    int sum = x + y;  
    return ( sum - x == y ) && ( sum - y == x );  
}  

La explicación fue que la adición del complemento a dos forma un grupo abeliano y, por lo tanto, la expresión
(x + y) - x con evaluar ay independientemente de si la adición se desborda o no.
(Igual por(x + y) - y) que evaluará ax)

No entiendo esta explicación o la referencia del grupo abeliano. La adición del complemento a dos es básicamente un módulo aritmético sin signo que se "convierte" en complemento a dos, ¿verdad?
Entonces, por ejemplo, si tenemos 4 bits, tenemos el rango [-8, 7].
En el ejemplo si tuviéramosx = 7 yy = 6 el resultado se desborda a 6. Y eso tampoco es igual ay ox.
Entonces, ¿por qué la explicación es que la igualdad siempre es válida independientemente del desbordamiento?

Respuestas a la pregunta(1)

Su respuesta a la pregunta