let N be non empty with_non-empty_elements set ; :: thesis: 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; :: thesis: 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; :: thesis: ( 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 ; :: thesis: for i being Element of NAT holds Result s = Result (Comput (ProgramPart s),s,i)
let i be Element of NAT ; :: thesis: 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 ; :: thesis: 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 ; :: thesis: verum
end;
suppose A6: i >= k ; :: thesis: Result s = Result (Comput (ProgramPart s),s,i)
end;
end;
end;
hence Result s = Result (Comput (ProgramPart s),s,i) ; :: thesis: verum