A1:
dom SCM-OK c= SCM+FSA-Memory
by Th1, FUNCT_2:def 1;
dom (SCM-OK | NAT ) c= dom SCM-OK
by RELAT_1:89;
then A2:
dom (SCM-OK | NAT ) c= SCM+FSA-Memory
by A1, XBOOLE_1:1;
A3:
dom ((SCM-Instr .--> SCM+FSA-Instr ) * (SCM-OK | NAT )) c= dom (SCM-OK | NAT )
by RELAT_1:44;
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 A4: 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 A2, A3, XBOOLE_1:1, XBOOLE_1:12
;
A5:
(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;
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 ;
:: according to TARSKI:def 3 :: thesis: ( 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 } )
assume
y in rng (((SCM+FSA-Memory --> (INT * )) +* SCM-OK ) +* ((SCM-Instr .--> SCM+FSA-Instr ) * (SCM-OK | NAT )))
;
:: thesis: y in {INT ,(INT * )} \/ {SCM+FSA-Instr ,NAT }
then consider z being
set such that A6:
z in dom (((SCM+FSA-Memory --> (INT * )) +* SCM-OK ) +* ((SCM-Instr .--> SCM+FSA-Instr ) * (SCM-OK | NAT )))
and A7:
(((SCM+FSA-Memory --> (INT * )) +* SCM-OK ) +* ((SCM-Instr .--> SCM+FSA-Instr ) * (SCM-OK | NAT ))) . z = y
by FUNCT_1:def 5;
A8:
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 A5, 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
;
A9:
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
;
A10:
(
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 A6, A8, 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 A9, A10, XBOOLE_0:def 3;
suppose A17:
z in (dom SCM-OK ) \ (dom ((SCM-Instr .--> SCM+FSA-Instr ) * (SCM-OK | NAT )))
;
:: thesis: y in {INT ,(INT * )} \/ {SCM+FSA-Instr ,NAT }then A18:
not
z in dom ((SCM-Instr .--> SCM+FSA-Instr ) * (SCM-OK | NAT ))
by XBOOLE_0:def 5;
A19:
z in dom SCM-OK
by A17;
z in (dom SCM-OK ) \/ (dom ((SCM-Instr .--> SCM+FSA-Instr ) * (SCM-OK | NAT )))
by A17, XBOOLE_0:def 3;
then
z in dom (SCM-OK +* ((SCM-Instr .--> SCM+FSA-Instr ) * (SCM-OK | NAT )))
by FUNCT_4:def 1;
then A20:
y =
(SCM-OK +* ((SCM-Instr .--> SCM+FSA-Instr ) * (SCM-OK | NAT ))) . z
by A5, A7, FUNCT_4:14
.=
SCM-OK . z
by A18, FUNCT_4:12
;
A21:
z in SCM-Memory
by A19, FUNCT_2:def 1;
A22:
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 A22, RELAT_1:91
;
then
not
z in NAT
by A17, XBOOLE_0:def 5;
then
z in {(IC SCM )} \/ SCM-Data-Loc
by A21, AMI_3:def 1, AMI_5:23, XBOOLE_0:def 3;
then A25:
(
z in {(IC SCM )} or
z in SCM-Data-Loc )
by XBOOLE_0:def 3;
hence
y in {INT ,(INT * )} \/ {SCM+FSA-Instr ,NAT }
;
:: thesis: verum end; end;
end;
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 A4, FUNCT_2:def 1, RELSET_1:11; :: thesis: verum