let n, a, b be Integer; :: thesis: (a * b) mod n = ((a mod n) * (b mod n)) mod n
per cases ( n = 0 or n <> 0 ) ;
suppose A1: n = 0 ; :: thesis: (a * b) mod n = ((a mod n) * (b mod n)) mod n
hence (a * b) mod n = 0 by INT_1:def 10
.= ((a mod n) * (b mod n)) mod n by A1, INT_1:def 10 ;
:: thesis: verum
end;
suppose n <> 0 ; :: thesis: (a * b) mod n = ((a mod n) * (b mod n)) mod n
then ( (a mod n) + ((a div n) * n) = (a - ((a div n) * n)) + ((a div n) * n) & (b mod n) + ((b div n) * n) = (b - ((b div n) * n)) + ((b div n) * n) ) by INT_1:def 10;
then (a * b) - ((a mod n) * (b mod n)) = (((a mod n) * (b div n)) + (((a div n) * (b mod n)) + (((a div n) * n) * (b div n)))) * n ;
then n divides (a * b) - ((a mod n) * (b mod n)) by INT_1:def 3;
then a * b,(a mod n) * (b mod n) are_congruent_mod n by INT_2:15;
hence (a * b) mod n = ((a mod n) * (b mod n)) mod n by Th64; :: thesis: verum
end;
end;