let I be Program of SCM+FSA; ( I is keepInt0_1 implies I is InitClosed )
assume A10:
I is keepInt0_1
; I is InitClosed
set FI = FirstNotUsed I;
let s be State of SCM+FSA; SCM_HALT:def 1 for P being Instruction-Sequence of SCM+FSA st I c= P holds
for n being Element of NAT st Initialize ((intloc 0) .--> 1) c= s holds
IC (Comput (P,s,n)) in dom I
let p be Instruction-Sequence of SCM+FSA; ( I c= p implies for n being Element of NAT st Initialize ((intloc 0) .--> 1) c= s holds
IC (Comput (p,s,n)) in dom I )
assume A11:
I c= p
; for n being Element of NAT st Initialize ((intloc 0) .--> 1) c= s holds
IC (Comput (p,s,n)) in dom I
let n be Element of NAT ; ( Initialize ((intloc 0) .--> 1) c= s implies IC (Comput (p,s,n)) in dom I )
assume A12:
Initialize ((intloc 0) .--> 1) c= s
; IC (Comput (p,s,n)) in dom I
then A13:
Start-At (0,SCM+FSA) c= s
by Lm2, XBOOLE_1:1;
defpred S1[ Nat] means not IC (Comput (p,s,c1)) in dom I;
assume
not IC (Comput (p,s,n)) in dom I
; contradiction
then A14:
ex n being Nat st S1[n]
;
consider n being Nat such that
A15:
S1[n]
and
A16:
for m being Nat st S1[m] holds
n <= m
from NAT_1:sch 5(A14);
reconsider n = n as Element of NAT by ORDINAL1:def 12;
set s2 = Comput (p,s,n);
set p0 = p +* ((IC (Comput (p,s,n))),((intloc 0) := (FirstNotUsed I)));
set s0 = s +* ((FirstNotUsed I),((s . (intloc 0)) + 1));
reconsider s = s as State of SCM+FSA ;
reconsider s0 = s +* ((FirstNotUsed I),((s . (intloc 0)) + 1)) as State of SCM+FSA ;
not I is keepInt0_1
proof
FirstNotUsed I <> IC
by SCMFSA_2:56;
then A17:
not
FirstNotUsed I in {(IC )}
by TARSKI:def 1;
set s02 =
Comput (
(p +* ((IC (Comput (p,s,n))),((intloc 0) := (FirstNotUsed I)))),
s0,
n);
set iIC =
{(intloc 0)} \/ {(IC )};
take
s0
;
SCM_HALT:def 3 ( Initialize ((intloc 0) .--> 1) c= s0 & ex p being Instruction-Sequence of SCM+FSA st
( I c= p & not for k being Element of NAT holds (Comput (p,s0,k)) . (intloc 0) = 1 ) )
FirstNotUsed I in dom s
by SCMFSA_2:42;
then A18:
s0 . (FirstNotUsed I) = (s . (intloc 0)) + 1
by FUNCT_7:31;
A19:
s . (intloc 0) = 1
by A12, SCMFSA_M:30;
A20:
not
FirstNotUsed I in UsedIntLoc I
by SF_MASTR:50;
not
FirstNotUsed I in {(intloc 0)}
by TARSKI:def 1;
then
not
FirstNotUsed I in dom (Initialize ((intloc 0) .--> 1))
by Lm3, A17, XBOOLE_0:def 3;
hence
Initialize ((intloc 0) .--> 1) c= s0
by A12, FUNCT_7:89;
ex p being Instruction-Sequence of SCM+FSA st
( I c= p & not for k being Element of NAT holds (Comput (p,s0,k)) . (intloc 0) = 1 )
then A21:
Start-At (
0,
SCM+FSA)
c= s0
by Lm2, XBOOLE_1:1;
take
p +* (
(IC (Comput (p,s,n))),
((intloc 0) := (FirstNotUsed I)))
;
( I c= p +* ((IC (Comput (p,s,n))),((intloc 0) := (FirstNotUsed I))) & not for k being Element of NAT holds (Comput ((p +* ((IC (Comput (p,s,n))),((intloc 0) := (FirstNotUsed I)))),s0,k)) . (intloc 0) = 1 )
thus A22:
I c= p +* (
(IC (Comput (p,s,n))),
((intloc 0) := (FirstNotUsed I)))
by A11, A15, FUNCT_7:89;
not for k being Element of NAT holds (Comput ((p +* ((IC (Comput (p,s,n))),((intloc 0) := (FirstNotUsed I)))),s0,k)) . (intloc 0) = 1
not
FirstNotUsed I in UsedInt*Loc I
then A23:
s0 | (UsedInt*Loc I) = s | (UsedInt*Loc I)
by FUNCT_7:92;
A24:
s0 | (UsedIntLoc I) = s | (UsedIntLoc I)
by FUNCT_7:92, SF_MASTR:50;
A25:
for
m being
Element of
NAT st
m < n holds
IC (Comput (p,s,m)) in dom I
by A16;
A26:
IC (Comput ((p +* ((IC (Comput (p,s,n))),((intloc 0) := (FirstNotUsed I)))),s0,n)) = IC (Comput (p,s,n))
by A24, A23, A11, A22, A21, A25, A13, SF_MASTR:65;
take k =
n + 1;
not (Comput ((p +* ((IC (Comput (p,s,n))),((intloc 0) := (FirstNotUsed I)))),s0,k)) . (intloc 0) = 1
IC (Comput (p,s,n)) in NAT
;
then A27:
IC (Comput (p,s,n)) in dom p
by PARTFUN1:def 2;
A28:
(p +* ((IC (Comput (p,s,n))),((intloc 0) := (FirstNotUsed I)))) . (IC (Comput (p,s,n))) = (intloc 0) := (FirstNotUsed I)
by A27, FUNCT_7:31;
A29:
Comput (
(p +* ((IC (Comput (p,s,n))),((intloc 0) := (FirstNotUsed I)))),
s0,
k) =
Following (
(p +* ((IC (Comput (p,s,n))),((intloc 0) := (FirstNotUsed I)))),
(Comput ((p +* ((IC (Comput (p,s,n))),((intloc 0) := (FirstNotUsed I)))),s0,n)))
by EXTPRO_1:3
.=
Exec (
((intloc 0) := (FirstNotUsed I)),
(Comput ((p +* ((IC (Comput (p,s,n))),((intloc 0) := (FirstNotUsed I)))),s0,n)))
by A26, A28, PBOOLE:143
;
for
m being
Element of
NAT st
m < n holds
IC (Comput ((p +* ((IC (Comput (p,s,n))),((intloc 0) := (FirstNotUsed I)))),s0,m)) in dom I
by A25, A24, A23, A11, A22, A21, A13, SF_MASTR:65;
then
(Comput ((p +* ((IC (Comput (p,s,n))),((intloc 0) := (FirstNotUsed I)))),s0,n)) . (FirstNotUsed I) = 1
+ 1
by A20, A18, A11, A15, A19, FUNCT_7:89, SF_MASTR:61;
hence
not
(Comput ((p +* ((IC (Comput (p,s,n))),((intloc 0) := (FirstNotUsed I)))),s0,k)) . (intloc 0) = 1
by A29, SCMFSA_2:63;
verum
end;
hence
contradiction
by A10; verum