defpred S1[ set , set ] means ex m being Element of NAT st
( ( $1 = IC & $2 = F4() ) or ( $1 = m & $2 = F1(m) ) or ( $1 = intloc m & $2 = F2(m) ) or ( $1 = fsloc m & $2 = F3(m) ) );
A1: for e being set st e in the carrier of SCM+FSA holds
ex u being set st S1[e,u]
proof
let e be set ; :: thesis: ( e in the carrier of SCM+FSA implies ex u being set st S1[e,u] )
assume e in the carrier of SCM+FSA ; :: thesis: ex u being set st S1[e,u]
then e in ((Data-Locations SCM+FSA) \/ {(IC )}) \/ NAT by COMPOS_1:160;
then ( e in (Data-Locations SCM+FSA) \/ {(IC )} or e in NAT ) by XBOOLE_0:def 3;
then A2: ( e in Data-Locations SCM+FSA or e in {(IC )} or e in NAT ) by XBOOLE_0:def 3;
now end;
then consider m being Element of NAT such that
A3: ( e = IC or e = m or e = intloc m or e = fsloc m ) ;
per cases ( e = IC or e = m or e = intloc m or e = fsloc m ) by A3;
suppose A4: e = IC ; :: thesis: ex u being set st S1[e,u]
take u = F4(); :: thesis: S1[e,u]
thus S1[e,u] by A4; :: thesis: verum
end;
suppose A5: e = m ; :: thesis: ex u being set st S1[e,u]
take u = F1(m); :: thesis: S1[e,u]
thus S1[e,u] by A5; :: thesis: verum
end;
suppose A6: e = intloc m ; :: thesis: ex u being set st S1[e,u]
take u = F2(m); :: thesis: S1[e,u]
thus S1[e,u] by A6; :: thesis: verum
end;
suppose A7: e = fsloc m ; :: thesis: ex u being set st S1[e,u]
take u = F3(m); :: thesis: S1[e,u]
thus S1[e,u] by A7; :: thesis: verum
end;
end;
end;
consider f being Function such that
A8: dom f = the carrier of SCM+FSA and
A9: for e being set st e in the carrier of SCM+FSA holds
S1[e,f . e] from CLASSES1:sch 1(A1);
A10: dom the Object-Kind of SCM+FSA = the carrier of SCM+FSA by FUNCT_2:def 1;
now
let x be set ; :: thesis: ( x in dom the Object-Kind of SCM+FSA implies f . b1 in the Object-Kind of SCM+FSA . b1 )
assume A11: x in dom the Object-Kind of SCM+FSA ; :: thesis: f . b1 in the Object-Kind of SCM+FSA . b1
then consider m being Element of NAT such that
A12: ( ( x = IC & f . x = F4() ) or ( x = m & f . x = F1(m) ) or ( x = intloc m & f . x = F2(m) ) or ( x = fsloc m & f . x = F3(m) ) ) by A9, A10;
x in ((Data-Locations SCM+FSA) \/ {(IC )}) \/ NAT by A11, A10, COMPOS_1:160;
then ( x in (Data-Locations SCM+FSA) \/ {(IC )} or x in NAT ) by XBOOLE_0:def 3;
then A13: ( x in Data-Locations SCM+FSA or x in {(IC )} or x in NAT ) by XBOOLE_0:def 3;
per cases ( x in Int-Locations or x in FinSeq-Locations or x in {(IC )} or x in NAT ) by A13, XBOOLE_0:def 3, SCMFSA_2:127;
end;
end;
then reconsider f = f as State of SCM+FSA by A8, A10, FUNCT_1:def 20, PARTFUN1:def 4, RELAT_1:def 18;
take f ; :: thesis: ( IC f = F4() & ( for i being Element of NAT holds
( f . i = F1(i) & f . (intloc i) = F2(i) & f . (fsloc i) = F3(i) ) ) )

ex m being Element of NAT st
( ( IC = IC & f . (IC ) = F4() ) or ( IC = m & f . (IC ) = F1(m) ) or ( IC = intloc m & f . (IC ) = F2(m) ) or ( IC = fsloc m & f . (IC ) = F3(m) ) ) by A9;
hence IC f = F4() by COMPOS_1:3, SCMFSA_2:81, SCMFSA_2:82; :: thesis: for i being Element of NAT holds
( f . i = F1(i) & f . (intloc i) = F2(i) & f . (fsloc i) = F3(i) )

let i be Element of NAT ; :: thesis: ( f . i = F1(i) & f . (intloc i) = F2(i) & f . (fsloc i) = F3(i) )
A18: i in NAT ;
NAT c= the carrier of SCM+FSA by COMPOS_1:def 2;
then ex m being Element of NAT st
( ( i = IC & f . i = F4() ) or ( i = m & f . i = F1(m) ) or ( i = intloc m & f . i = F2(m) ) or ( i = fsloc m & f . i = F3(m) ) ) by A9, A18;
hence f . i = F1(i) by COMPOS_1:3, SCMFSA_2:84, SCMFSA_2:85; :: thesis: ( f . (intloc i) = F2(i) & f . (fsloc i) = F3(i) )
ex m being Element of NAT st
( ( intloc i = IC & f . (intloc i) = F4() ) or ( intloc i = m & f . (intloc i) = F1(m) ) or ( intloc i = intloc m & f . (intloc i) = F2(m) ) or ( intloc i = fsloc m & f . (intloc i) = F3(m) ) ) by A9;
hence f . (intloc i) = F2(i) by AMI_3:52, SCMFSA_2:81, SCMFSA_2:83, SCMFSA_2:84; :: thesis: f . (fsloc i) = F3(i)
ex m being Element of NAT st
( ( fsloc i = IC & f . (fsloc i) = F4() ) or ( fsloc i = m & f . (fsloc i) = F1(m) ) or ( fsloc i = intloc m & f . (fsloc i) = F2(m) ) or ( fsloc i = fsloc m & f . (fsloc i) = F3(m) ) ) by A9;
hence f . (fsloc i) = F3(i) by SCMFSA_2:82, SCMFSA_2:83, SCMFSA_2:85; :: thesis: verum