set AG = INT.Ring ;
set G = Z_ModuleStruct(# the carrier of INT.Ring, the ZeroF of INT.Ring, the addF of INT.Ring,(Int-mult-left INT.Ring) #);
reconsider G = Z_ModuleStruct(# the carrier of INT.Ring, the ZeroF of INT.Ring, the addF 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 Integer
for v being VECTOR of G holds
( not a * v = 0. G or a = 0 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 = Z_ModuleStruct(# the carrier of G, the ZeroF of G, the addF of G, the Mult of G #)
by TARSKI:2, ZMODUL01:47;
then
G is free
by A3;
hence
ex b1 being non trivial Z_Module st b1 is free
; verum