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, RELAT_1:91
;
then
not
z in NAT
by A12, XBOOLE_0:def 5;
then
z in {(IC SCM )} \/ SCM-Data-Loc
by A15, AMI_3:def 1, AMI_5:23, XBOOLE_0:def 3;
then A19:
(
z in {(IC SCM )} 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