set AG = INT.Ring ;
set G = ModuleStr(# the carrier of INT.Ring, the addF of INT.Ring, the ZeroF of INT.Ring,(Int-mult-left INT.Ring) #);
reconsider G = ModuleStr(# the carrier of INT.Ring, the addF of INT.Ring, the ZeroF of INT.Ring,(Int-mult-left INT.Ring) #) as non trivial Z_Module by ZMODUL01:164;
reconsider iv = 1 as Vector of G ;
reconsider i1 = 1 as Element of INT by INT_1:def 2;
set I = {iv};
reconsider I = {iv} as Subset of G ;
for a being Element of INT.Ring
for v being Vector of G holds
( not a * v = 0. G or a = 0. INT.Ring or v = 0. G )
then
G is Mult-cancelable
;
then A3:
I is linearly-independent
by ZMODUL02:59;
for x being object holds
( x in the carrier of (Lin I) iff x in the carrier of G )
then
Lin I = ModuleStr(# the carrier of G, the addF of G, the ZeroF of G, the lmult of G #)
by TARSKI:2, ZMODUL01:47;
then
ex I being Subset of G st I is base
by A3, VECTSP_7:def 3;
then
G is free
;
hence
ex b1 being non trivial Z_Module st b1 is free
; verum