let R be non empty left_zeroed add-associative right_zeroed addLoopStr ; :: thesis: for a being Element of R
for n being Element of NAT holds n * a = a * n

let a be Element of R; :: thesis: for n being Element of NAT holds n * a = a * n
let n be Element of NAT ; :: thesis: n * a = a * n
defpred S1[ Element of NAT ] means $1 * a = a * $1;
A1: now :: thesis: for k being Element of NAT st S1[k] holds
S1[k + 1]
let k be Element of NAT ; :: thesis: ( S1[k] implies S1[k + 1] )
assume A2: S1[k] ; :: thesis: S1[k + 1]
(k + 1) * a = (k * a) + (1 * a) by Th15
.= (k * a) + a by Th13
.= (a * k) + (a * 1) by A2, Th14
.= a * (k + 1) by Th16 ;
hence S1[k + 1] ; :: thesis: verum
end;
0 * a = 0. R by Def3
.= a * 0 by Def4 ;
then A3: S1[ 0 ] ;
for n being Element of NAT holds S1[n] from NAT_1:sch 1(A3, A1);
hence n * a = a * n ; :: thesis: verum