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: 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 ;
now
let x be set ; :: thesis: ( x in dom SCM-OK implies ((s | SCM-Memory ) +* (NAT --> I)) . b1 in SCM-OK . b1 )
assume x in dom SCM-OK ; :: thesis: ((s | SCM-Memory ) +* (NAT --> I)) . b1 in SCM-OK . b1
then A4: x in SCM-Memory by FUNCT_2:def 1;
then A5: ( x in {(IC SCM )} \/ SCM-Data-Loc or x in NAT ) by AMI_3:def 1, AMI_5:23, XBOOLE_0:def 3;
A6: NAT = dom (NAT --> I) by FUNCOP_1:19;
per cases ( x in {(IC SCM )} or x in SCM-Data-Loc or x in NAT ) by A5, XBOOLE_0:def 3;
suppose A13: x in NAT ; :: thesis: ((s | SCM-Memory ) +* (NAT --> I)) . b1 in SCM-OK . b1
then A14: ((s | SCM-Memory ) +* (NAT --> I)) . x = (NAT --> I) . x by A6, FUNCT_4:14
.= I by A13, FUNCOP_1:13 ;
SCM-OK . x = SCM-Instr by A13, AMI_2:11;
hence ((s | SCM-Memory ) +* (NAT --> I)) . x in SCM-OK . x by A14; :: thesis: verum
end;
end;
end;
hence (s | SCM-Memory ) +* (NAT --> I) is SCM-State by A3, CARD_3:18; :: thesis: verum