A1:
(SCM+FSA-Memory --> (INT *)) +* (SCM-OK +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))) = ((SCM+FSA-Memory --> (INT *)) +* SCM-OK) +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))
by FUNCT_4:15;
A2:
rng (((SCM+FSA-Memory --> (INT *)) +* SCM-OK) +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))) c= {INT,(INT *)} \/ {SCM+FSA-Instr,NAT}
proof
let y be
set ;
TARSKI:def 3 ( not y in rng (((SCM+FSA-Memory --> (INT *)) +* SCM-OK) +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))) or y in {INT,(INT *)} \/ {SCM+FSA-Instr,NAT} )
A3:
dom (SCM-OK +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))) =
(dom SCM-OK) \/ (dom ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT)))
by FUNCT_4:def 1
.=
(dom ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))) \/ ((dom SCM-OK) \ (dom ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))))
by XBOOLE_1:39
;
assume
y in rng (((SCM+FSA-Memory --> (INT *)) +* SCM-OK) +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT)))
;
y in {INT,(INT *)} \/ {SCM+FSA-Instr,NAT}
then consider z being
set such that A4:
z in dom (((SCM+FSA-Memory --> (INT *)) +* SCM-OK) +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT)))
and A5:
(((SCM+FSA-Memory --> (INT *)) +* SCM-OK) +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))) . z = y
by FUNCT_1:def 5;
dom (((SCM+FSA-Memory --> (INT *)) +* SCM-OK) +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))) =
(dom (SCM+FSA-Memory --> (INT *))) \/ (dom (SCM-OK +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))))
by A1, FUNCT_4:def 1
.=
((dom (SCM+FSA-Memory --> (INT *))) \ (dom (SCM-OK +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))))) \/ (dom (SCM-OK +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))))
by XBOOLE_1:39
;
then A6:
(
z in (dom (SCM+FSA-Memory --> (INT *))) \ (dom (SCM-OK +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT)))) or
z in dom (SCM-OK +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))) )
by A4, XBOOLE_0:def 3;
per cases
( z in (dom (SCM+FSA-Memory --> (INT *))) \ (dom (SCM-OK +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT)))) or z in dom ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT)) or z in (dom SCM-OK) \ (dom ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))) )
by A3, A6, XBOOLE_0:def 3;
suppose A12:
z in (dom SCM-OK) \ (dom ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT)))
;
y in {INT,(INT *)} \/ {SCM+FSA-Instr,NAT}then A13:
not
z in dom ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))
by XBOOLE_0:def 5;
z in (dom SCM-OK) \/ (dom ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT)))
by A12, XBOOLE_0:def 3;
then
z in dom (SCM-OK +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT)))
by FUNCT_4:def 1;
then A14:
y =
(SCM-OK +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))) . z
by A1, A5, FUNCT_4:14
.=
SCM-OK . z
by A13, FUNCT_4:12
;
z in dom SCM-OK
by A12;
then A15:
z in SCM-Memory
by FUNCT_2:def 1;
A16:
dom SCM-OK = SCM-Memory
by FUNCT_2:def 1;
rng (SCM-OK | NAT) c= dom (SCM-Instr .--> SCM+FSA-Instr)
then dom ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT)) =
dom (SCM-OK | NAT)
by RELAT_1:46
.=
NAT
by A16, Lm2, RELAT_1:91
;
then
not
z in NAT
by A12, XBOOLE_0:def 5;
then
z in {NAT} \/ SCM-Data-Loc
by A15, XBOOLE_0:def 3;
then A19:
(
z in {NAT} or
z in SCM-Data-Loc )
by XBOOLE_0:def 3;
hence
y in {INT,(INT *)} \/ {SCM+FSA-Instr,NAT}
;
verum end; end;
end;
A20:
dom ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT)) c= dom (SCM-OK | NAT)
by RELAT_1:44;
( dom SCM-OK c= SCM+FSA-Memory & dom (SCM-OK | NAT) c= dom SCM-OK )
by Th1, FUNCT_2:def 1, RELAT_1:89;
then A21:
dom (SCM-OK | NAT) c= SCM+FSA-Memory
by XBOOLE_1:1;
dom ((SCM+FSA-Memory --> (INT *)) +* SCM-OK) =
(dom (SCM+FSA-Memory --> (INT *))) \/ (dom SCM-OK)
by FUNCT_4:def 1
.=
SCM+FSA-Memory \/ (dom SCM-OK)
by FUNCOP_1:19
.=
SCM+FSA-Memory \/ SCM-Memory
by FUNCT_2:def 1
.=
SCM+FSA-Memory
by XBOOLE_1:7, XBOOLE_1:12
;
then dom (((SCM+FSA-Memory --> (INT *)) +* SCM-OK) +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT))) =
SCM+FSA-Memory \/ (dom ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT)))
by FUNCT_4:def 1
.=
SCM+FSA-Memory
by A21, A20, XBOOLE_1:1, XBOOLE_1:12
;
hence
((SCM+FSA-Memory --> (INT *)) +* SCM-OK) +* ((SCM-Instr .--> SCM+FSA-Instr) * (SCM-OK | NAT)) is Function of SCM+FSA-Memory,({INT,(INT *)} \/ {SCM+FSA-Instr,NAT})
by A2, FUNCT_2:def 1, RELSET_1:11; verum