set X = NAT ;

set a = (INT --> 0) +* (id NAT);

A1: dom (id NAT) = NAT by RELAT_1:45;

A2: INT \/ NAT = INT by NUMBERS:17, XBOOLE_1:12;

dom (INT --> 0) = INT ;

then A3: dom ((INT --> 0) +* (id NAT)) = INT by A1, A2, FUNCT_4:def 1;

A4: rng (id NAT) = NAT by RELAT_1:45;

{0} c= NAT by ZFMISC_1:31;

then A5: {0} \/ NAT = NAT by XBOOLE_1:12;

rng (INT --> 0) = {0} by FUNCOP_1:8;

then rng ((INT --> 0) +* (id NAT)) c= NAT by A4, A5, FUNCT_4:17;

then reconsider a = (INT --> 0) +* (id NAT) as INT-Array of NAT by A3, FUNCT_2:2;

let f be INT-Exec ; :: thesis: f is Euclidean

set S = ECIW-signature ;

set G = INT-ElemIns ;

set A = FreeUnivAlgNSG (ECIW-signature,INT-ElemIns);

thus for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f

for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds v,t form_assignment_wrt f by Th16; :: according to AOFA_I00:def 22 :: thesis: ( ( for i being Integer holds . (i,NAT) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds . v is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for x being Element of NAT holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ex a being INT-Array of NAT st

( a | (card NAT) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds

( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) )

thus for i being Integer holds . (i,NAT) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th18; :: thesis: ( ( for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds . v is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for x being Element of NAT holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ex a being INT-Array of NAT st

( a | (card NAT) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds

( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) )

thus for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds . v is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th18; :: thesis: ( ( for x being Element of NAT holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ex a being INT-Array of NAT st

( a | (card NAT) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds

( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) )

thus for x being Element of NAT holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th17; :: thesis: ( ex a being INT-Array of NAT st

( a | (card NAT) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds

( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) )

( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) ) by Th18; :: thesis: verum

set a = (INT --> 0) +* (id NAT);

A1: dom (id NAT) = NAT by RELAT_1:45;

A2: INT \/ NAT = INT by NUMBERS:17, XBOOLE_1:12;

dom (INT --> 0) = INT ;

then A3: dom ((INT --> 0) +* (id NAT)) = INT by A1, A2, FUNCT_4:def 1;

A4: rng (id NAT) = NAT by RELAT_1:45;

{0} c= NAT by ZFMISC_1:31;

then A5: {0} \/ NAT = NAT by XBOOLE_1:12;

rng (INT --> 0) = {0} by FUNCOP_1:8;

then rng ((INT --> 0) +* (id NAT)) c= NAT by A4, A5, FUNCT_4:17;

then reconsider a = (INT --> 0) +* (id NAT) as INT-Array of NAT by A3, FUNCT_2:2;

let f be INT-Exec ; :: thesis: f is Euclidean

set S = ECIW-signature ;

set G = INT-ElemIns ;

set A = FreeUnivAlgNSG (ECIW-signature,INT-ElemIns);

thus for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f

for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds v,t form_assignment_wrt f by Th16; :: according to AOFA_I00:def 22 :: thesis: ( ( for i being Integer holds . (i,NAT) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds . v is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for x being Element of NAT holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ex a being INT-Array of NAT st

( a | (card NAT) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds

( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) )

thus for i being Integer holds . (i,NAT) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th18; :: thesis: ( ( for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds . v is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for x being Element of NAT holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ex a being INT-Array of NAT st

( a | (card NAT) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds

( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) )

thus for v being INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds . v is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th18; :: thesis: ( ( for x being Element of NAT holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ex a being INT-Array of NAT st

( a | (card NAT) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds

( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) )

thus for x being Element of NAT holds ^ x is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th17; :: thesis: ( ex a being INT-Array of NAT st

( a | (card NAT) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds

( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) )

hereby :: thesis: ( ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds

( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) )

thus
( ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds - t is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) & ( for t1, t2 being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds ( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) )

take a = a; :: thesis: ( a | (card NAT) is one-to-one & ( for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) )

dom (id NAT) = NAT by RELAT_1:45;

hence a | (card NAT) is one-to-one by FUNCT_4:23; :: thesis: for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f

thus for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th17; :: thesis: verum

end;dom (id NAT) = NAT by RELAT_1:45;

hence a | (card NAT) is one-to-one by FUNCT_4:23; :: thesis: for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f

thus for t being INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f holds a * t is INT-Variable of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f by Th17; :: thesis: verum

( t1 (#) t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 + t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 div t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & t1 mod t2 is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & leq (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f & gt (t1,t2) is INT-Expression of FreeUnivAlgNSG (ECIW-signature,INT-ElemIns),f ) ) ) by Th18; :: thesis: verum