defpred S1[ set , set ] means ex m being Element of NAT st
( ( $1 = IC & $2 = F3() ) or ( $1 = intloc m & $2 = F1(m) ) or ( $1 = fsloc m & $2 = F2(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 ) \/ {(IC )} by STRUCT_0:4;
then e in (Data-Locations ) \/ {(IC )} ;
then A2: ( e in Data-Locations or e in {(IC )} ) by XBOOLE_0:def 3;
now end;
then consider m being Element of NAT such that
A3: ( e = IC or e = intloc m or e = fsloc m ) ;
per cases ( e = IC 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 = F3(); :: thesis: S1[e,u]
thus S1[e,u] by A4; :: thesis: verum
end;
suppose A6: e = intloc m ; :: thesis: ex u being set st S1[e,u]
take u = F1(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 = F2(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 = F3() ) or ( x = intloc m & f . x = F1(m) ) or ( x = fsloc m & f . x = F2(m) ) ) by A9, A10;
x in (Data-Locations ) \/ {(IC )} by A11, A10, STRUCT_0:4;
then x in (Data-Locations ) \/ {(IC )} ;
then A13: ( x in Data-Locations or x in {(IC )} ) by XBOOLE_0:def 3;
per cases ( x in Int-Locations or x in FinSeq-Locations or x in {(IC )} ) by A13, SCMFSA_2:100, XBOOLE_0:def 3;
end;
end;
then reconsider f = f as State of SCM+FSA by A8, A10, FUNCT_1:def 14, PARTFUN1:def 2, RELAT_1:def 18;
take f ; :: thesis: ( IC f = F3() & ( for i being Element of NAT holds
( f . (intloc i) = F1(i) & f . (fsloc i) = F2(i) ) ) )

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

let i be Element of NAT ; :: thesis: ( f . (intloc i) = F1(i) & f . (fsloc i) = F2(i) )
ex m being Element of NAT st
( ( intloc i = IC & f . (intloc i) = F3() ) or ( intloc i = intloc m & f . (intloc i) = F1(m) ) or ( intloc i = fsloc m & f . (intloc i) = F2(m) ) ) by A9;
hence f . (intloc i) = F1(i) by AMI_3:10, SCMFSA_2:56, SCMFSA_2:58; :: thesis: f . (fsloc i) = F2(i)
ex m being Element of NAT st
( ( fsloc i = IC & f . (fsloc i) = F3() ) or ( fsloc i = intloc m & f . (fsloc i) = F1(m) ) or ( fsloc i = fsloc m & f . (fsloc i) = F2(m) ) ) by A9;
hence f . (fsloc i) = F2(i) by SCMFSA_2:57, SCMFSA_2:58; :: thesis: verum