set S1 = {(IC SCMPDS )};
set S2 = SCM-Data-Loc ;
set S3 = NAT ;
defpred S1[ set , set ] means ex m being Element of NAT st
( ( $1 = IC SCMPDS & $2 = F3() ) or ( $1 = m & $2 = F1(m) ) or ( $1 = DataLoc m,0 & $2 = F2(m) ) );
A1: for e being set st e in the carrier of SCMPDS holds
ex u being set st S1[e,u]
proof
let e be set ; :: thesis: ( e in the carrier of SCMPDS implies ex u being set st S1[e,u] )
assume e in the carrier of SCMPDS ; :: thesis: ex u being set st S1[e,u]
then A2: ( e in {(IC SCMPDS )} \/ SCM-Data-Loc or e in NAT ) by SCMPDS_3:5, XBOOLE_0:def 3;
now
per cases ( e in {(IC SCMPDS )} or e in SCM-Data-Loc or e in NAT ) by A2, XBOOLE_0:def 3;
case e in NAT ; :: thesis: ex m being Element of NAT st e = m
then reconsider l = e as Element of NAT ;
reconsider m = l as Element of NAT ;
e = m ;
hence ex m being Element of NAT st e = m ; :: thesis: verum
end;
end;
end;
then consider m being Element of NAT such that
A3: ( e = IC SCMPDS or e = m or e = DataLoc m,0 ) ;
per cases ( e = IC SCMPDS or e = m or e = DataLoc m,0 ) by A3;
suppose A4: e = IC SCMPDS ; :: 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 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 = DataLoc m,0 ; :: 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;
end;
end;
consider f being Function such that
A7: dom f = the carrier of SCMPDS and
A8: for e being set st e in the carrier of SCMPDS holds
S1[e,f . e] from CLASSES1:sch 1(A1);
A9: dom the Object-Kind of SCMPDS = the carrier of SCMPDS by FUNCT_2:def 1;
now
let x be set ; :: thesis: ( x in dom the Object-Kind of SCMPDS implies f . b1 in the Object-Kind of SCMPDS . b1 )
assume A10: x in dom the Object-Kind of SCMPDS ; :: thesis: f . b1 in the Object-Kind of SCMPDS . b1
then A11: ( x in {(IC SCMPDS )} \/ SCM-Data-Loc or x in NAT ) by A9, SCMPDS_3:5, XBOOLE_0:def 3;
consider m being Element of NAT such that
A12: ( ( x = IC SCMPDS & f . x = F3() ) or ( x = m & f . x = F1(m) ) or ( x = DataLoc m,0 & f . x = F2(m) ) ) by A8, A9, A10;
per cases ( x in SCM-Data-Loc or x in {(IC SCMPDS )} or x in NAT ) by A11, XBOOLE_0:def 3;
end;
end;
then reconsider f = f as State of SCMPDS by A7, A9, FUNCT_1:def 20, PARTFUN1:def 4, RELAT_1:def 18;
consider m being Element of NAT such that
A15: ( ( IC SCMPDS = IC SCMPDS & f . (IC SCMPDS ) = F3() ) or ( IC SCMPDS = m & f . (IC SCMPDS ) = F1(m) ) or ( IC SCMPDS = DataLoc m,0 & f . (IC SCMPDS ) = F2(m) ) ) by A8;
take f ; :: thesis: ( IC f = F3() & ( for i being Element of NAT holds
( f . i = F1(i) & f . (DataLoc i,0 ) = F2(i) ) ) )

m <> IC SCMPDS by SCMPDS_2:98;
hence IC f = F3() by A15, SCMPDS_2:52; :: thesis: for i being Element of NAT holds
( f . i = F1(i) & f . (DataLoc i,0 ) = F2(i) )

let i be Element of NAT ; :: thesis: ( f . i = F1(i) & f . (DataLoc i,0 ) = F2(i) )
A16: i <> IC SCMPDS by SCMPDS_2:98;
ex m being Element of NAT st
( ( i = IC SCMPDS & f . i = F3() ) or ( i = m & f . i = F1(m) ) or ( i = DataLoc m,0 & f . i = F2(m) ) ) by A8;
hence f . i = F1(i) by A16, SCMPDS_2:53; :: thesis: f . (DataLoc i,0 ) = F2(i)
ex m being Element of NAT st
( ( DataLoc i,0 = IC SCMPDS & f . (DataLoc i,0 ) = F3() ) or ( DataLoc i,0 = m & f . (DataLoc i,0 ) = F1(m) ) or ( DataLoc i,0 = DataLoc m,0 & f . (DataLoc i,0 ) = F2(m) ) ) by A8;
hence f . (DataLoc i,0 ) = F2(i) by Th17, SCMPDS_2:52, SCMPDS_2:53; :: thesis: verum