set S1 = {(IC )};
set S2 = SCM-Data-Loc ;
set S3 = NAT ;
defpred S1[ set , set ] means ex m being Element of NAT st
( ( $1 = IC & $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 ;
( e in the carrier of SCMPDS implies ex u being set st S1[e,u] )
assume
e in the
carrier of
SCMPDS
;
ex u being set st S1[e,u]
then
e in ({(IC )} \/ SCM-Data-Loc) \/ NAT
by COMPOS_1:160, SCMPDS_2:100;
then A2:
(
e in {(IC )} \/ SCM-Data-Loc or
e in NAT )
by XBOOLE_0:def 3;
then consider m being
Element of
NAT such that A3:
(
e = IC or
e = m or
e = DataLoc (
m,
0) )
;
per cases
( e = IC or e = m or e = DataLoc (m,0) )
by A3;
suppose A4:
e = IC
;
ex u being set st S1[e,u]take u =
F3();
S1[e,u]thus
S1[
e,
u]
by A4;
verum end; suppose A5:
e = m
;
ex u being set st S1[e,u]take u =
F1(
m);
S1[e,u]thus
S1[
e,
u]
by A5;
verum end; suppose A6:
e = DataLoc (
m,
0)
;
ex u being set st S1[e,u]take u =
F2(
m);
S1[e,u]thus
S1[
e,
u]
by A6;
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;
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 = IC & f . (IC ) = F3() ) or ( IC = m & f . (IC ) = F1(m) ) or ( IC = DataLoc (m,0) & f . (IC ) = F2(m) ) )
by A8;
take
f
; ( IC f = F3() & ( for i being Element of NAT holds
( f . i = F1(i) & f . (DataLoc (i,0)) = F2(i) ) ) )
thus
IC f = F3()
by A15, SCMPDS_2:52, SCMPDS_2:98; for i being Element of NAT holds
( f . i = F1(i) & f . (DataLoc (i,0)) = F2(i) )
let i be Element of NAT ; ( f . i = F1(i) & f . (DataLoc (i,0)) = F2(i) )
A16:
i in NAT
;
NAT c= the carrier of SCMPDS
by COMPOS_1:def 2;
then
i in the carrier of SCMPDS
by A16;
then
ex m being Element of NAT st
( ( i = IC & 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 SCMPDS_2:53, SCMPDS_2:98; f . (DataLoc (i,0)) = F2(i)
ex m being Element of NAT st
( ( DataLoc (i,0) = IC & 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; verum