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

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

let i be Nat; :: thesis: ( f . (intloc i) = F1(i) & f . (fsloc i) = F2(i) )
ex m being 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 A8;
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 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 A8;
hence f . (fsloc i) = F2(i) by SCMFSA_2:57, SCMFSA_2:58; :: thesis: verum