let INS be Instruction of (SCM R); :: according to AMISTD_5:def 2 :: thesis: INS is relocable
let j, k be Nat; :: according to AMISTD_5:def 1 :: thesis: for b1 being set holds Exec ((IncAddr (INS,(j + k))),(IncIC (b1,k))) = IncIC ((Exec ((IncAddr (INS,j)),b1)),k)
reconsider k = k as Element of NAT by ORDINAL1:def 12;
let s be State of (SCM R); :: thesis: Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k)
A1: IC (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) = (IC (Exec ((IncAddr (INS,j)),s))) + k by MEMSTR_0:53
.= IC (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) by AMISTD_2:def 3 ;
per cases ( InsCode INS = 0 or InsCode INS = 1 or InsCode INS = 2 or InsCode INS = 3 or InsCode INS = 4 or InsCode INS = 5 or InsCode INS = 6 or InsCode INS = 7 ) by NAT_1:31, SCMRING3:39;
suppose InsCode INS = 0 ; :: thesis: Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k)
then A3: INS = halt (SCM R) by SCMRING3:12;
Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC (s,k) by A3, EXTPRO_1:def 3
.= IncIC ((Exec ((IncAddr (INS,j)),s)),k) by A3, EXTPRO_1:def 3 ;
hence Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k) ; :: thesis: verum
end;
suppose InsCode INS = 1 ; :: thesis: Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k)
then consider da, db being Data-Location of R such that
A4: INS = da := db by SCMRING3:13;
now
let d be Data-Location of R; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . b1 = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . b1
per cases ( da = d or da <> d ) ;
suppose A5: da = d ; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . b1 = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . b1
thus (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . d = (Exec (INS,(IncIC (s,k)))) . d by A4, COMPOS_1:11
.= (IncIC (s,k)) . db by A4, A5, SCMRING2:11
.= s . db by Th7
.= (Exec (INS,s)) . d by A4, A5, SCMRING2:11
.= (Exec ((IncAddr (INS,j)),s)) . d by A4, COMPOS_1:11
.= (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . d by Th7 ; :: thesis: verum
end;
suppose A6: da <> d ; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . b1 = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . b1
thus (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . d = (Exec (INS,(IncIC (s,k)))) . d by A4, COMPOS_1:11
.= (IncIC (s,k)) . d by A4, A6, SCMRING2:11
.= s . d by Th7
.= (Exec (INS,s)) . d by A4, A6, SCMRING2:11
.= (Exec ((IncAddr (INS,j)),s)) . d by A4, COMPOS_1:11
.= (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . d by Th7 ; :: thesis: verum
end;
end;
end;
hence Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k) by Th8, A1; :: thesis: verum
end;
suppose InsCode INS = 2 ; :: thesis: Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k)
then consider da, db being Data-Location of R such that
A7: INS = AddTo (da,db) by SCMRING3:14;
now
let d be Data-Location of R; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . b1 = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . b1
per cases ( da = d or da <> d ) ;
suppose A8: da = d ; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . b1 = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . b1
thus (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . d = (Exec (INS,(IncIC (s,k)))) . d by A7, COMPOS_1:11
.= ((IncIC (s,k)) . da) + ((IncIC (s,k)) . db) by A8, A7, SCMRING2:12
.= (s . da) + ((IncIC (s,k)) . db) by Th7
.= (s . da) + (s . db) by Th7
.= (Exec (INS,s)) . d by A7, A8, SCMRING2:12
.= (Exec ((IncAddr (INS,j)),s)) . d by A7, COMPOS_1:11
.= (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . d by Th7 ; :: thesis: verum
end;
suppose A9: da <> d ; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . b1 = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . b1
thus (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . d = (Exec (INS,(IncIC (s,k)))) . d by A7, COMPOS_1:11
.= (IncIC (s,k)) . d by A7, A9, SCMRING2:12
.= s . d by Th7
.= (Exec (INS,s)) . d by A7, A9, SCMRING2:12
.= (Exec ((IncAddr (INS,j)),s)) . d by A7, COMPOS_1:11
.= (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . d by Th7 ; :: thesis: verum
end;
end;
end;
hence Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k) by Th8, A1; :: thesis: verum
end;
suppose InsCode INS = 3 ; :: thesis: Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k)
then consider da, db being Data-Location of R such that
A10: INS = SubFrom (da,db) by SCMRING3:15;
now
let d be Data-Location of R; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . b1 = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . b1
per cases ( da = d or da <> d ) ;
suppose A11: da = d ; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . b1 = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . b1
thus (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . d = (Exec (INS,(IncIC (s,k)))) . d by A10, COMPOS_1:11
.= ((IncIC (s,k)) . da) - ((IncIC (s,k)) . db) by A11, A10, SCMRING2:13
.= (s . da) - ((IncIC (s,k)) . db) by Th7
.= (s . da) - (s . db) by Th7
.= (Exec (INS,s)) . d by A10, A11, SCMRING2:13
.= (Exec ((IncAddr (INS,j)),s)) . d by A10, COMPOS_1:11
.= (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . d by Th7 ; :: thesis: verum
end;
suppose A12: da <> d ; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . b1 = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . b1
thus (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . d = (Exec (INS,(IncIC (s,k)))) . d by A10, COMPOS_1:11
.= (IncIC (s,k)) . d by A10, A12, SCMRING2:13
.= s . d by Th7
.= (Exec (INS,s)) . d by A10, A12, SCMRING2:13
.= (Exec ((IncAddr (INS,j)),s)) . d by A10, COMPOS_1:11
.= (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . d by Th7 ; :: thesis: verum
end;
end;
end;
hence Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k) by Th8, A1; :: thesis: verum
end;
suppose InsCode INS = 4 ; :: thesis: Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k)
then consider da, db being Data-Location of R such that
A13: INS = MultBy (da,db) by SCMRING3:16;
now
let d be Data-Location of R; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . b1 = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . b1
per cases ( da = d or da <> d ) ;
suppose A14: da = d ; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . b1 = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . b1
thus (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . d = (Exec (INS,(IncIC (s,k)))) . d by A13, COMPOS_1:11
.= ((IncIC (s,k)) . da) * ((IncIC (s,k)) . db) by A14, A13, SCMRING2:14
.= (s . da) * ((IncIC (s,k)) . db) by Th7
.= (s . da) * (s . db) by Th7
.= (Exec (INS,s)) . d by A13, A14, SCMRING2:14
.= (Exec ((IncAddr (INS,j)),s)) . d by A13, COMPOS_1:11
.= (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . d by Th7 ; :: thesis: verum
end;
suppose A15: da <> d ; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . b1 = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . b1
thus (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . d = (Exec (INS,(IncIC (s,k)))) . d by A13, COMPOS_1:11
.= (IncIC (s,k)) . d by A13, A15, SCMRING2:14
.= s . d by Th7
.= (Exec (INS,s)) . d by A13, A15, SCMRING2:14
.= (Exec ((IncAddr (INS,j)),s)) . d by A13, COMPOS_1:11
.= (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . d by Th7 ; :: thesis: verum
end;
end;
end;
hence Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k) by Th8, A1; :: thesis: verum
end;
suppose InsCode INS = 5 ; :: thesis: Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k)
then consider da being Data-Location of R, r being Element of R such that
A16: INS = da := r by SCMRING3:17;
now
let d be Data-Location of R; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . b1 = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . b1
per cases ( da = d or da <> d ) ;
suppose A17: da = d ; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . b1 = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . b1
thus (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . d = (Exec (INS,(IncIC (s,k)))) . d by A16, COMPOS_1:11
.= r by A17, A16, SCMRING2:17
.= (Exec (INS,s)) . d by A16, A17, SCMRING2:17
.= (Exec ((IncAddr (INS,j)),s)) . d by A16, COMPOS_1:11
.= (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . d by Th7 ; :: thesis: verum
end;
suppose A18: da <> d ; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . b1 = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . b1
thus (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . d = (Exec (INS,(IncIC (s,k)))) . d by A16, COMPOS_1:11
.= (IncIC (s,k)) . d by A16, A18, SCMRING2:17
.= s . d by Th7
.= (Exec (INS,s)) . d by A16, A18, SCMRING2:17
.= (Exec ((IncAddr (INS,j)),s)) . d by A16, COMPOS_1:11
.= (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . d by Th7 ; :: thesis: verum
end;
end;
end;
hence Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k) by Th8, A1; :: thesis: verum
end;
suppose InsCode INS = 6 ; :: thesis: Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k)
then consider loc being Element of NAT such that
A19: INS = goto (loc,R) by SCMRING3:18;
A20: IncAddr (INS,(j + k)) = goto ((loc + (j + k)),R) by A19, SCMRING3:37;
A21: IncAddr (INS,j) = goto ((loc + j),R) by A19, SCMRING3:37;
now
let d be Data-Location of R; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . d = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . d
thus (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . d = (IncIC (s,k)) . d by A20, SCMRING2:15
.= s . d by Th7
.= (Exec ((IncAddr (INS,j)),s)) . d by A21, SCMRING2:15
.= (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . d by Th7 ; :: thesis: verum
end;
hence Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k) by Th8, A1; :: thesis: verum
end;
suppose InsCode INS = 7 ; :: thesis: Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k)
then consider da being Data-Location of R, loc being Element of NAT such that
A22: INS = da =0_goto loc by SCMRING3:19;
A23: IncAddr (INS,(j + k)) = da =0_goto (loc + (j + k)) by A22, SCMRING3:38;
A24: IncAddr (INS,j) = da =0_goto (loc + j) by A22, SCMRING3:38;
now
let d be Data-Location of R; :: thesis: (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . d = (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . d
thus (Exec ((IncAddr (INS,(j + k))),(IncIC (s,k)))) . d = (IncIC (s,k)) . d by A23, SCMRING2:16
.= s . d by Th7
.= (Exec ((IncAddr (INS,j)),s)) . d by A24, SCMRING2:16
.= (IncIC ((Exec ((IncAddr (INS,j)),s)),k)) . d by Th7 ; :: thesis: verum
end;
hence Exec ((IncAddr (INS,(j + k))),(IncIC (s,k))) = IncIC ((Exec ((IncAddr (INS,j)),s)),k) by A1, Th8; :: thesis: verum
end;
end;