defpred S1[ set , set ] means ex m being Element of NAT st
( ( $1 = IC SCM+FSA & $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 (Int-Locations \/ FinSeq-Locations ) \/ {(IC SCM+FSA )} or e in NAT ) by SCMFSA_2:8, XBOOLE_0:def 3;
then A2: ( e in Int-Locations \/ FinSeq-Locations or e in {(IC SCM+FSA )} or e in NAT ) by XBOOLE_0:def 3;
now end;
then consider m being Element of NAT such that
A3: ( e = IC SCM+FSA or e = m or e = intloc m or e = fsloc m ) ;
per cases ( e = IC SCM+FSA or e = m or e = intloc m or e = fsloc m ) by A3;
suppose A4: e = IC SCM+FSA ; :: 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 SCM+FSA & 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 (Int-Locations \/ FinSeq-Locations ) \/ {(IC SCM+FSA )} or x in NAT ) by A10, A11, SCMFSA_2:8, XBOOLE_0:def 3;
then A13: ( x in Int-Locations \/ FinSeq-Locations or x in {(IC SCM+FSA )} or x in NAT ) by XBOOLE_0:def 3;
per cases ( x in Int-Locations or x in FinSeq-Locations or x in {(IC SCM+FSA )} or x in NAT ) by A13, XBOOLE_0:def 3;
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 SCM+FSA = IC SCM+FSA & f . (IC SCM+FSA ) = F4() ) or ( IC SCM+FSA = m & f . (IC SCM+FSA ) = F1(m) ) or ( IC SCM+FSA = intloc m & f . (IC SCM+FSA ) = F2(m) ) or ( IC SCM+FSA = fsloc m & f . (IC SCM+FSA ) = F3(m) ) ) by A9;
hence IC f = F4() by AMI_1:48, 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) )
X: i in NAT ;
i in the carrier of SCM+FSA by X;
then ex m being Element of NAT st
( ( i = IC SCM+FSA & 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;
hence f . i = F1(i) by AMI_1:48, 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 SCM+FSA & 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 SCM+FSA & 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