let N be non empty with_non-empty_elements set ; for S being non empty stored-program halting IC-Ins-separated steady-programmed definite AMI-Struct of N
for s being State of S st ex k being Element of NAT st s . (IC (Comput (ProgramPart s),s,k)) = halt S holds
for i being Element of NAT holds Result s = Result (Comput (ProgramPart s),s,i)
let S be non empty stored-program halting IC-Ins-separated steady-programmed definite AMI-Struct of N; for s being State of S st ex k being Element of NAT st s . (IC (Comput (ProgramPart s),s,k)) = halt S holds
for i being Element of NAT holds Result s = Result (Comput (ProgramPart s),s,i)
let s be State of S; ( ex k being Element of NAT st s . (IC (Comput (ProgramPart s),s,k)) = halt S implies for i being Element of NAT holds Result s = Result (Comput (ProgramPart s),s,i) )
given k being Element of NAT such that A1:
s . (IC (Comput (ProgramPart s),s,k)) = halt S
; for i being Element of NAT holds Result s = Result (Comput (ProgramPart s),s,i)
let i be Element of NAT ; Result s = Result (Comput (ProgramPart s),s,i)
set s9 = Comput (ProgramPart s),s,k;
Y:
(ProgramPart (Comput (ProgramPart s),s,k)) /. (IC (Comput (ProgramPart s),s,k)) = (Comput (ProgramPart s),s,k) . (IC (Comput (ProgramPart s),s,k))
by BWL1;
A2:
CurInstr (ProgramPart (Comput (ProgramPart s),s,k)),(Comput (ProgramPart s),s,k) = halt S
by A1, Th54, Y;
IC (Comput (ProgramPart s),s,k) in NAT
;
then X:
IC (Comput (ProgramPart s),s,k) in dom (ProgramPart (Comput (ProgramPart s),s,i))
by LmU;
now per cases
( i <= k or i >= k )
;
suppose
i <= k
;
Result s = Result (Comput (ProgramPart s),s,i)then consider j being
Nat such that A3:
k = i + j
by NAT_1:10;
reconsider j =
j as
Element of
NAT by ORDINAL1:def 13;
ProgramPart (Comput (ProgramPart s),s,i) = ProgramPart s
by LmY;
then A4:
Comput (ProgramPart s),
s,
k = Comput (ProgramPart (Comput (ProgramPart s),s,i)),
(Comput (ProgramPart s),s,i),
j
by A3, Th51;
then
(ProgramPart (Comput (ProgramPart s),s,i)) /. (IC (Comput (ProgramPart s),s,k)) = halt S
by A2, LmX;
then A5:
ProgramPart (Comput (ProgramPart s),s,i) halts_on Comput (ProgramPart s),
s,
i
by A4, Def20, X;
thus Result s =
Comput (ProgramPart s),
s,
k
by A1, Th56
.=
Result (Comput (ProgramPart s),s,i)
by A2, A4, A5, Def22
;
verum end; suppose A6:
i >= k
;
Result s = Result (Comput (ProgramPart s),s,i)A7:
Comput (ProgramPart (Comput (ProgramPart s),s,k)),
(Comput (ProgramPart s),s,k),
0 = Comput (ProgramPart s),
s,
k
by Th13;
ProgramPart (Comput (ProgramPart s),s,k) = ProgramPart s
by LmY;
then A8:
Comput (ProgramPart s),
s,
i = Comput (ProgramPart s),
s,
k
by A2, A6, Th52;
IC (Comput (ProgramPart (Comput (ProgramPart s),s,k)),(Comput (ProgramPart s),s,k),0 ) in NAT
;
then X:
IC (Comput (ProgramPart (Comput (ProgramPart s),s,k)),(Comput (ProgramPart s),s,k),0 ) in dom (ProgramPart (Comput (ProgramPart s),s,k))
by LmU;
(ProgramPart (Comput (ProgramPart s),s,k)) /. (IC (Comput (ProgramPart (Comput (ProgramPart s),s,k)),(Comput (ProgramPart s),s,k),0 )) = halt S
by A2, A7;
then A9:
ProgramPart (Comput (ProgramPart s),s,i) halts_on Comput (ProgramPart s),
s,
i
by Def20, X, A8;
thus Result s =
Comput (ProgramPart s),
s,
k
by A1, Th56
.=
Result (Comput (ProgramPart s),s,i)
by A2, A8, A7, A9, Def22
;
verum end; end; end;
hence
Result s = Result (Comput (ProgramPart s),s,i)
; verum