let s be SCM+FSA-State; :: thesis: for I being Element of SCM-Instr holds (s | SCM-Memory ) +* (NAT --> I) is SCM-State
let I be Element of SCM-Instr ; :: thesis: (s | SCM-Memory ) +* (NAT --> I) is SCM-State
A1: dom SCM+FSA-OK = SCM+FSA-Memory by FUNCT_2:def 1;
A2: dom (s | SCM-Memory ) = (dom s) /\ SCM-Memory by RELAT_1:90
.= SCM+FSA-Memory /\ SCM-Memory by A1, CARD_3:18
.= SCM-Memory by XBOOLE_1:21 ;
A3: now
let x be set ; :: thesis: ( x in dom SCM-OK implies ((s | SCM-Memory ) +* (NAT --> I)) . b1 in SCM-OK . b1 )
A4: NAT = dom (NAT --> I) by FUNCOP_1:19;
assume x in dom SCM-OK ; :: thesis: ((s | SCM-Memory ) +* (NAT --> I)) . b1 in SCM-OK . b1
then A5: x in SCM-Memory by FUNCT_2:def 1;
then A6: ( x in {NAT } \/ SCM-Data-Loc or x in NAT ) by XBOOLE_0:def 3;
per cases ( x in {NAT } or x in SCM-Data-Loc or x in NAT ) by A6, XBOOLE_0:def 3;
end;
end;
dom ((s | SCM-Memory ) +* (NAT --> I)) = (dom (s | SCM-Memory )) \/ (dom (NAT --> I)) by FUNCT_4:def 1
.= SCM-Memory \/ NAT by A2, FUNCOP_1:19
.= SCM-Memory by XBOOLE_1:12
.= dom SCM-OK by FUNCT_2:def 1 ;
hence (s | SCM-Memory ) +* (NAT --> I) is SCM-State by A3, CARD_3:18; :: thesis: verum