set S = s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ));
set SW = StepWhile=0 a,I,s;
defpred S1[ Nat] means ((StepWhile=0 a,I,s) . $1) . a <> 0 ;
A3:
(while=0 a,I) +* (Start-At 0 ,SCM+FSA ) c= s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))
by FUNCT_4:26;
consider f being Function of (product the Object-Kind of SCM+FSA ),NAT such that
A4:
for k being Element of NAT holds
( f . ((StepWhile=0 a,I,s) . (k + 1)) < f . ((StepWhile=0 a,I,s) . k) or S1[k] )
by A2, Def2;
deffunc H1( Nat) -> Element of NAT = f . ((StepWhile=0 a,I,s) . $1);
A5:
for k being Element of NAT holds
( H1(k + 1) < H1(k) or S1[k] )
by A4;
consider m being Element of NAT such that
A6:
S1[m]
and
A7:
for n being Element of NAT st S1[n] holds
m <= n
from NAT_1:sch 18(A5);
take
m
; ex k being Element of NAT st
( m = k & ((StepWhile=0 a,I,s) . k) . a <> 0 & ( for i being Element of NAT st ((StepWhile=0 a,I,s) . i) . a <> 0 holds
k <= i ) & DataPart (Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),(LifeSpan (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))))) = DataPart ((StepWhile=0 a,I,s) . k) )
take
m
; ( m = m & ((StepWhile=0 a,I,s) . m) . a <> 0 & ( for i being Element of NAT st ((StepWhile=0 a,I,s) . i) . a <> 0 holds
m <= i ) & DataPart (Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),(LifeSpan (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))))) = DataPart ((StepWhile=0 a,I,s) . m) )
thus
m = m
; ( ((StepWhile=0 a,I,s) . m) . a <> 0 & ( for i being Element of NAT st ((StepWhile=0 a,I,s) . i) . a <> 0 holds
m <= i ) & DataPart (Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),(LifeSpan (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))))) = DataPart ((StepWhile=0 a,I,s) . m) )
thus
((StepWhile=0 a,I,s) . m) . a <> 0
by A6; ( ( for i being Element of NAT st ((StepWhile=0 a,I,s) . i) . a <> 0 holds
m <= i ) & DataPart (Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),(LifeSpan (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))))) = DataPart ((StepWhile=0 a,I,s) . m) )
thus
for n being Element of NAT st ((StepWhile=0 a,I,s) . n) . a <> 0 holds
m <= n
by A7; DataPart (Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),(LifeSpan (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))))) = DataPart ((StepWhile=0 a,I,s) . m)
defpred S2[ Nat] means ( $1 + 1 <= m implies ex k being Element of NAT st (StepWhile=0 a,I,s) . ($1 + 1) = Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),k );
A8:
ProperBodyWhile=0 a,I,s
by A1, Th19;
A9:
now let k be
Element of
NAT ;
( S2[k] implies S2[k + 1] )assume A10:
S2[
k]
;
S2[k + 1]now set sk1 =
(StepWhile=0 a,I,s) . (k + 1);
set sk =
(StepWhile=0 a,I,s) . k;
assume A11:
(k + 1) + 1
<= m
;
ex m being Element of NAT st (StepWhile=0 a,I,s) . ((k + 1) + 1) = Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),m
k + 0 < k + (1 + 1)
by XREAL_1:8;
then
k < m
by A11, XXREAL_0:2;
then A12:
((StepWhile=0 a,I,s) . k) . a = 0
by A7;
(k + 1) + 0 < (k + 1) + 1
by XREAL_1:8;
then consider n being
Element of
NAT such that A13:
(StepWhile=0 a,I,s) . (k + 1) = Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),
(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),
n
by A10, A11, XXREAL_0:2;
A14:
(StepWhile=0 a,I,s) . (k + 1) = Comput (ProgramPart (((StepWhile=0 a,I,s) . k) +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),
(((StepWhile=0 a,I,s) . k) +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),
((LifeSpan (ProgramPart (((StepWhile=0 a,I,s) . k) +* (I +* (Start-At 0 ,SCM+FSA )))),(((StepWhile=0 a,I,s) . k) +* (I +* (Start-At 0 ,SCM+FSA )))) + 3)
by SCMFSA_9:def 4;
take m =
n + ((LifeSpan (ProgramPart (((StepWhile=0 a,I,s) . (k + 1)) +* (I +* (Start-At 0 ,SCM+FSA )))),(((StepWhile=0 a,I,s) . (k + 1)) +* (I +* (Start-At 0 ,SCM+FSA )))) + 3);
(StepWhile=0 a,I,s) . ((k + 1) + 1) = Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),m
(
I is_closed_on (StepWhile=0 a,I,s) . k &
I is_halting_on (StepWhile=0 a,I,s) . k )
by A8, A12, Def1;
then
IC ((StepWhile=0 a,I,s) . (k + 1)) = 0
by A14, A12, SCMFSA_9:22;
hence
(StepWhile=0 a,I,s) . ((k + 1) + 1) = Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),
(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),
m
by A13, SCMFSA_9:31;
verum end; hence
S2[
k + 1]
;
verum end;
A15:
IC SCM+FSA in dom ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))
by SF_MASTR:65;
A16:
S2[ 0 ]
proof
assume
0 + 1
<= m
;
ex k being Element of NAT st (StepWhile=0 a,I,s) . (0 + 1) = Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),k
take n =
(LifeSpan (ProgramPart (s +* (I +* (Start-At 0 ,SCM+FSA )))),(s +* (I +* (Start-At 0 ,SCM+FSA )))) + 3;
(StepWhile=0 a,I,s) . (0 + 1) = Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),n
thus
(StepWhile=0 a,I,s) . (0 + 1) = Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),
(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),
n
by SCMFSA_9:30;
verum
end;
A17:
for k being Element of NAT holds S2[k]
from NAT_1:sch 1(A16, A9);
per cases
( m = 0 or m <> 0 )
;
suppose A18:
m = 0
;
DataPart (Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),(LifeSpan (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))))) = DataPart ((StepWhile=0 a,I,s) . m)A19:
DataPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))) =
DataPart s
by SCMFSA8A:11
.=
DataPart ((StepWhile=0 a,I,s) . m)
by A18, SCMFSA_9:def 4
;
then
(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))) . a = ((StepWhile=0 a,I,s) . m) . a
by SCMFSA6A:38;
hence
DataPart (Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),(LifeSpan (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))))) = DataPart ((StepWhile=0 a,I,s) . m)
by A6, A3, A19, Th22;
verum end; suppose A20:
m <> 0
;
DataPart (Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),(LifeSpan (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))))) = DataPart ((StepWhile=0 a,I,s) . m)set sm =
(StepWhile=0 a,I,s) . m;
set sm1 =
((StepWhile=0 a,I,s) . m) +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ));
consider i being
Nat such that A21:
m = i + 1
by A20, NAT_1:6;
reconsider i =
i as
Element of
NAT by ORDINAL1:def 13;
set si =
(StepWhile=0 a,I,s) . i;
A22:
(StepWhile=0 a,I,s) . m = Comput (ProgramPart (((StepWhile=0 a,I,s) . i) +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),
(((StepWhile=0 a,I,s) . i) +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),
((LifeSpan (ProgramPart (((StepWhile=0 a,I,s) . i) +* (I +* (Start-At 0 ,SCM+FSA )))),(((StepWhile=0 a,I,s) . i) +* (I +* (Start-At 0 ,SCM+FSA )))) + 3)
by A21, SCMFSA_9:def 4;
m = i + 1
by A21;
then consider n being
Element of
NAT such that A23:
(StepWhile=0 a,I,s) . m = Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),
(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),
n
by A17;
i < m
by A21, NAT_1:13;
then A24:
((StepWhile=0 a,I,s) . i) . a = 0
by A7;
then
(
I is_closed_on (StepWhile=0 a,I,s) . i &
I is_halting_on (StepWhile=0 a,I,s) . i )
by A8, Def1;
then A25:
IC ((StepWhile=0 a,I,s) . m) = 0
by A22, A24, SCMFSA_9:22;
A26:
IC (((StepWhile=0 a,I,s) . m) +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))) =
(((StepWhile=0 a,I,s) . m) +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))) . (IC SCM+FSA )
.=
((while=0 a,I) +* (Start-At 0 ,SCM+FSA )) . (IC SCM+FSA )
by A15, FUNCT_4:14
.=
IC ((StepWhile=0 a,I,s) . m)
by A25, SF_MASTR:66
;
ProgramPart ((StepWhile=0 a,I,s) . m) = ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))
by A23, AMI_1:123;
then
(
DataPart (((StepWhile=0 a,I,s) . m) +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))) = DataPart ((StepWhile=0 a,I,s) . m) &
ProgramPart (((StepWhile=0 a,I,s) . m) +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))) = ProgramPart ((StepWhile=0 a,I,s) . m) )
by FUNCT_4:100, SCMFSA8A:11;
then A27:
((StepWhile=0 a,I,s) . m) +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )) = (StepWhile=0 a,I,s) . m
by A26, SCMFSA_9:29;
while=0 a,
I is_halting_on (StepWhile=0 a,I,s) . m
by A6, SCMFSA_9:18;
then
ProgramPart (((StepWhile=0 a,I,s) . m) +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))) halts_on ((StepWhile=0 a,I,s) . m) +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))
by SCMFSA7B:def 8;
then consider j being
Element of
NAT such that A28:
CurInstr (ProgramPart ((StepWhile=0 a,I,s) . m)),
(Comput (ProgramPart ((StepWhile=0 a,I,s) . m)),((StepWhile=0 a,I,s) . m),j) = halt SCM+FSA
by A27, AMI_1:146;
x:
Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),
(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),
(n + j) = Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),
(Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),n),
j
by AMI_1:51;
T:
ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))) = ProgramPart ((StepWhile=0 a,I,s) . m)
by A23, AMI_1:123;
CurInstr (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),
(Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),(n + j)) = halt SCM+FSA
by A23, A28, x, T;
then A29:
Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),
(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),
(LifeSpan (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))) =
Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),
(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),
(n + j)
by AMI_1:127
.=
Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),
((StepWhile=0 a,I,s) . m),
j
by A23, AMI_1:51
.=
Comput (ProgramPart ((StepWhile=0 a,I,s) . m)),
((StepWhile=0 a,I,s) . m),
(LifeSpan (ProgramPart ((StepWhile=0 a,I,s) . m)),((StepWhile=0 a,I,s) . m))
by A28, T, AMI_1:127
;
(while=0 a,I) +* (Start-At 0 ,SCM+FSA ) c= (StepWhile=0 a,I,s) . m
by A27, FUNCT_4:26;
hence
DataPart (Comput (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))),(LifeSpan (ProgramPart (s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA )))),(s +* ((while=0 a,I) +* (Start-At 0 ,SCM+FSA ))))) = DataPart ((StepWhile=0 a,I,s) . m)
by A6, A29, Th22;
verum end; end;