let m be Element of NAT ; :: thesis: for I being Program of holds Reloc ((Directed I),m) = ((id the Instructions of SCM+FSA) +* ((halt SCM+FSA) .--> (goto (m + (card I))))) * (Reloc (I,m))
let I be Program of ; :: thesis: Reloc ((Directed I),m) = ((id the Instructions of SCM+FSA) +* ((halt SCM+FSA) .--> (goto (m + (card I))))) * (Reloc (I,m))
A1: dom (id the Instructions of SCM+FSA) = the Instructions of SCM+FSA by RELAT_1:45;
rng ((halt SCM+FSA) .--> (goto (card I))) = {(goto (card I))} by FUNCOP_1:8;
then A2: rng ((id the Instructions of SCM+FSA) +* ((halt SCM+FSA) .--> (goto (card I)))) c= (rng (id the Instructions of SCM+FSA)) \/ {(goto (card I))} by FUNCT_4:17;
rng (id the Instructions of SCM+FSA) = the Instructions of SCM+FSA by RELAT_1:45;
then A3: (rng (id the Instructions of SCM+FSA)) \/ {(goto (card I))} = the Instructions of SCM+FSA by ZFMISC_1:40;
dom ((halt SCM+FSA) .--> (goto (card I))) = {(halt SCM+FSA)} by FUNCOP_1:13;
then dom ((id the Instructions of SCM+FSA) +* ((halt SCM+FSA) .--> (goto (card I)))) = (dom (id the Instructions of SCM+FSA)) \/ {(halt SCM+FSA)} by FUNCT_4:def 1
.= the Instructions of SCM+FSA by A1, ZFMISC_1:40 ;
then reconsider f = (id the Instructions of SCM+FSA) +* ((halt SCM+FSA) .--> (goto (card I))) as Function of the Instructions of SCM+FSA, the Instructions of SCM+FSA by A2, A3, FUNCT_2:def 1, RELSET_1:4;
A4: IncAddr ((goto (card I)),m) = goto (m + (card I)) by SCMFSA_4:1;
dom (id the Instructions of SCM+FSA) = the Instructions of SCM+FSA by RELAT_1:45;
then A5: f = (id the Instructions of SCM+FSA) +* ((halt SCM+FSA),(goto (card I))) by FUNCT_7:def 3;
A7: rng I c= the Instructions of SCM+FSA by RELAT_1:def 19;
Directed I = Directed I
.= f * I by A5, A7, FUNCT_7:116 ;
hence Reloc ((Directed I),m) = IncAddr ((f * (Shift (I,m))),m) by VALUED_1:22
.= ((id the Instructions of SCM+FSA) +* ((halt SCM+FSA) .--> (goto (m + (card I))))) * (Reloc (I,m)) by A4, COMPOS_1:47 ;
:: thesis: verum