let N be non empty with_non-empty_elements set ; :: thesis: for S being non empty stored-program IC-Ins-separated definite realistic AMI-Struct of N
for p being FinPartState of S st IC S in dom p holds
p = ((Start-At (IC p),S) +* (ProgramPart p)) +* (DataPart p)

let S be non empty stored-program IC-Ins-separated definite realistic AMI-Struct of N; :: thesis: for p being FinPartState of S st IC S in dom p holds
p = ((Start-At (IC p),S) +* (ProgramPart p)) +* (DataPart p)

let p be FinPartState of S; :: thesis: ( IC S in dom p implies p = ((Start-At (IC p),S) +* (ProgramPart p)) +* (DataPart p) )
assume IC S in dom p ; :: thesis: p = ((Start-At (IC p),S) +* (ProgramPart p)) +* (DataPart p)
then A2: {(IC S)} is Subset of (dom p) by SUBSET_1:63;
A3: NAT c= the carrier of S by Def3;
A4: ({(IC S)} \/ NAT ) \/ (the carrier of S \ ({(IC S)} \/ NAT )) = the carrier of S \/ ({(IC S)} \/ NAT ) by XBOOLE_1:39
.= the carrier of S by A3, XBOOLE_1:8, XBOOLE_1:12 ;
A5: dom p c= the carrier of S by RELAT_1:def 18;
A6: now
let x be set ; :: thesis: ( x in dom p implies p . b1 = (((Start-At (IC p),S) +* (ProgramPart p)) +* (DataPart p)) . b1 )
assume A7: x in dom p ; :: thesis: p . b1 = (((Start-At (IC p),S) +* (ProgramPart p)) +* (DataPart p)) . b1
then A8: ( x in {(IC S)} \/ NAT or x in the carrier of S \ ({(IC S)} \/ NAT ) ) by A5, A4, XBOOLE_0:def 3;
per cases ( x in {(IC S)} or x in the carrier of S \ ({(IC S)} \/ NAT ) or x in NAT ) by A8, XBOOLE_0:def 3;
suppose A9: x in {(IC S)} ; :: thesis: p . b1 = (((Start-At (IC p),S) +* (ProgramPart p)) +* (DataPart p)) . b1
end;
suppose x in the carrier of S \ ({(IC S)} \/ NAT ) ; :: thesis: p . b1 = (((Start-At (IC p),S) +* (ProgramPart p)) +* (DataPart p)) . b1
then x in (dom p) /\ (the carrier of S \ ({(IC S)} \/ NAT )) by A7, XBOOLE_0:def 4;
then A14: x in dom (p | (the carrier of S \ ({(IC S)} \/ NAT ))) by RELAT_1:90;
then x in (dom ((Start-At (IC p),S) +* (ProgramPart p))) \/ (dom (p | (the carrier of S \ ({(IC S)} \/ NAT )))) by XBOOLE_0:def 3;
then (((Start-At (IC p),S) +* (ProgramPart p)) +* (DataPart p)) . x = (p | (the carrier of S \ ({(IC S)} \/ NAT ))) . x by A14, FUNCT_4:def 1
.= p . x by A14, FUNCT_1:70 ;
hence p . x = (((Start-At (IC p),S) +* (ProgramPart p)) +* (DataPart p)) . x ; :: thesis: verum
end;
suppose x in NAT ; :: thesis: p . b1 = (((Start-At (IC p),S) +* (ProgramPart p)) +* (DataPart p)) . b1
end;
end;
end;
X: dom p c= the carrier of S by RELAT_1:def 18;
dom (((Start-At (IC p),S) +* (ProgramPart p)) +* (DataPart p)) = (dom ((Start-At (IC p),S) +* (ProgramPart p))) \/ (dom (DataPart p)) by FUNCT_4:def 1
.= ((dom (Start-At (IC p),S)) \/ (dom (ProgramPart p))) \/ (dom (DataPart p)) by FUNCT_4:def 1
.= ({(IC S)} \/ (dom (p | NAT ))) \/ (dom (DataPart p)) by FUNCOP_1:19
.= (((dom p) /\ {(IC S)}) \/ (dom (p | NAT ))) \/ (dom (p | (the carrier of S \ ({(IC S)} \/ NAT )))) by A2, XBOOLE_1:28
.= (((dom p) /\ {(IC S)}) \/ ((dom p) /\ NAT )) \/ (dom (p | (the carrier of S \ ({(IC S)} \/ NAT )))) by RELAT_1:90
.= (((dom p) /\ {(IC S)}) \/ ((dom p) /\ NAT )) \/ ((dom p) /\ (the carrier of S \ ({(IC S)} \/ NAT ))) by RELAT_1:90
.= ((dom p) /\ ({(IC S)} \/ NAT )) \/ ((dom p) /\ (the carrier of S \ ({(IC S)} \/ NAT ))) by XBOOLE_1:23
.= (dom p) /\ the carrier of S by A4, XBOOLE_1:23
.= dom p by X, XBOOLE_1:28 ;
hence p = ((Start-At (IC p),S) +* (ProgramPart p)) +* (DataPart p) by A6, FUNCT_1:9; :: thesis: verum