defpred S1[ set , set ] means ( ( $1 = NAT & $2 = NAT ) or ( $1 in SCM-Data-Loc & $2 = INT ) or ( $1 in NAT & $2 = SCM-Instr ) );
A1: now end;
consider h being Function of SCM-Memory ,({INT } \/ {SCM-Instr ,NAT }) such that
A5: for a being Element of SCM-Memory holds S1[a,h . a] from FUNCT_2:sch 3(A1);
take h ; :: thesis: for k being Element of SCM-Memory holds
( ( k = NAT implies h . k = NAT ) & ( k in SCM-Data-Loc implies h . k = INT ) & ( k in NAT implies h . k = SCM-Instr ) )

let k be Element of SCM-Memory ; :: thesis: ( ( k = NAT implies h . k = NAT ) & ( k in SCM-Data-Loc implies h . k = INT ) & ( k in NAT implies h . k = SCM-Instr ) )
A6: S1[k,h . k] by A5;
hence ( k = NAT implies h . k = NAT ) by Lm2; :: thesis: ( ( k in SCM-Data-Loc implies h . k = INT ) & ( k in NAT implies h . k = SCM-Instr ) )
thus ( k in SCM-Data-Loc implies h . k = INT ) by A6, Lm2, Lm3, XBOOLE_0:3; :: thesis: ( k in NAT implies h . k = SCM-Instr )
thus ( k in NAT implies h . k = SCM-Instr ) by A6, Lm3, XBOOLE_0:3; :: thesis: verum