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 ; :: 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 } )
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 ))) ; :: thesis: 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 ))) ; :: thesis: 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 )
proof
let e be set ; :: according to TARSKI:def 3 :: thesis: ( not e in rng (SCM-OK | NAT ) or e in dom (SCM-Instr .--> SCM+FSA-Instr ) )
assume e in rng (SCM-OK | NAT ) ; :: thesis: e in dom (SCM-Instr .--> SCM+FSA-Instr )
then consider u being set such that
A17: u in dom (SCM-OK | NAT ) and
A18: (SCM-OK | NAT ) . u = e by FUNCT_1:def 5;
dom (SCM-OK | NAT ) c= NAT by RELAT_1:87;
then reconsider u = u as Element of NAT by A17;
e = SCM-OK . u by A17, A18, FUNCT_1:70
.= SCM-Instr by AMI_2:11 ;
then e in {SCM-Instr } by TARSKI:def 1;
hence e in dom (SCM-Instr .--> SCM+FSA-Instr ) by FUNCOP_1:19; :: thesis: verum
end;
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 {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 } ; :: thesis: 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; :: thesis: verum