let p be the Instructions of SCM+FSA -valued ManySortedSet of NAT ; for s being State of SCM+FSA
for a being read-write Int-Location
for Ig being good Program of SCM+FSA st ( ProperBodyWhile=0 a,Ig,s,p or Ig is parahalting ) & s . (intloc 0) = 1 holds
for k being Element of NAT holds ((StepWhile=0 (a,Ig,p,s)) . k) . (intloc 0) = 1
let s be State of SCM+FSA; for a being read-write Int-Location
for Ig being good Program of SCM+FSA st ( ProperBodyWhile=0 a,Ig,s,p or Ig is parahalting ) & s . (intloc 0) = 1 holds
for k being Element of NAT holds ((StepWhile=0 (a,Ig,p,s)) . k) . (intloc 0) = 1
let a be read-write Int-Location ; for Ig being good Program of SCM+FSA st ( ProperBodyWhile=0 a,Ig,s,p or Ig is parahalting ) & s . (intloc 0) = 1 holds
for k being Element of NAT holds ((StepWhile=0 (a,Ig,p,s)) . k) . (intloc 0) = 1
let Ig be good Program of SCM+FSA; ( ( ProperBodyWhile=0 a,Ig,s,p or Ig is parahalting ) & s . (intloc 0) = 1 implies for k being Element of NAT holds ((StepWhile=0 (a,Ig,p,s)) . k) . (intloc 0) = 1 )
set I = Ig;
assume that
A1:
( ProperBodyWhile=0 a,Ig,s,p or Ig is parahalting )
and
A2:
s . (intloc 0) = 1
; for k being Element of NAT holds ((StepWhile=0 (a,Ig,p,s)) . k) . (intloc 0) = 1
set SW = StepWhile=0 (a,Ig,p,s);
set PW = p +* (while=0 (a,Ig));
defpred S1[ Nat] means ((StepWhile=0 (a,Ig,p,s)) . $1) . (intloc 0) = 1;
A4:
for k being Element of NAT st S1[k] holds
S1[k + 1]
proof
let k be
Element of
NAT ;
( S1[k] implies S1[k + 1] )
assume A5:
((StepWhile=0 (a,Ig,p,s)) . k) . (intloc 0) = 1
;
S1[k + 1]
per cases
( ((StepWhile=0 (a,Ig,p,s)) . k) . a <> 0 or ((StepWhile=0 (a,Ig,p,s)) . k) . a = 0 )
;
suppose A6:
((StepWhile=0 (a,Ig,p,s)) . k) . a = 0
;
S1[k + 1]set Ins =
NAT ;
set IS =
Initialize Ig;
set SWkIS =
Initialize ((StepWhile=0 (a,Ig,p,s)) . k);
set PWIS =
(p +* (while=0 (a,Ig))) +* Ig;
A7:
dom (((StepWhile=0 (a,Ig,p,s)) . k) | NAT) c= NAT
by RELAT_1:87;
NAT misses Int-Locations \/ FinSeq-Locations
by SCMFSA_2:13, SCMFSA_2:14, XBOOLE_1:70;
then A8:
dom (((StepWhile=0 (a,Ig,p,s)) . k) | NAT) misses Int-Locations \/ FinSeq-Locations
by A7, XBOOLE_1:63;
set SWkI =
((StepWhile=0 (a,Ig,p,s)) . k) +* (Initialize ((intloc 0) .--> 1));
set PWI =
(p +* (while=0 (a,Ig))) +* Ig;
set ISWk =
Initialized ((StepWhile=0 (a,Ig,p,s)) . k);
A9:
DataPart ((StepWhile=0 (a,Ig,p,s)) . k) = DataPart (Initialized ((StepWhile=0 (a,Ig,p,s)) . k))
by A5, SCMFSA8C:27;
A10:
ProperBodyWhile=0 a,
Ig,
s,
p
by A1, Th19;
then A11:
Ig is_closed_on (StepWhile=0 (a,Ig,p,s)) . k,
p +* (while=0 (a,Ig))
by A6, Def1;
Ig is_halting_on (StepWhile=0 (a,Ig,p,s)) . k,
p +* (while=0 (a,Ig))
by A6, A10, Def1;
then A13:
Ig is_halting_on Initialized ((StepWhile=0 (a,Ig,p,s)) . k),
p +* (while=0 (a,Ig))
by A11, A9, SCMFSA8B:8;
XX:
Start-At (
0,
SCM+FSA)
c= Initialized ((StepWhile=0 (a,Ig,p,s)) . k)
by SCMFSA6B:4;
((StepWhile=0 (a,Ig,p,s)) . k) +* (Initialize ((intloc 0) .--> 1)) =
((StepWhile=0 (a,Ig,p,s)) . k) +* (Initialize ((intloc 0) .--> 1))
.=
Initialized ((StepWhile=0 (a,Ig,p,s)) . k)
.=
Initialize (Initialized ((StepWhile=0 (a,Ig,p,s)) . k))
by XX, FUNCT_4:104
;
then B14:
(p +* (while=0 (a,Ig))) +* Ig halts_on ((StepWhile=0 (a,Ig,p,s)) . k) +* (Initialize ((intloc 0) .--> 1))
by A13, SCMFSA7B:def 8;
A15:
(p +* (while=0 (a,Ig))) +* Ig halts_on ((StepWhile=0 (a,Ig,p,s)) . k) +* (Initialize ((intloc 0) .--> 1))
by B14;
A16:
((StepWhile=0 (a,Ig,p,s)) . k) +* (Initialize ((intloc 0) .--> 1)) = Initialize ((StepWhile=0 (a,Ig,p,s)) . k)
by A5, SCMFSA8C:18;
A17:
DataPart (IExec (Ig,(p +* (while=0 (a,Ig))),((StepWhile=0 (a,Ig,p,s)) . k))) =
DataPart ((Result (((p +* (while=0 (a,Ig))) +* Ig),(((StepWhile=0 (a,Ig,p,s)) . k) +* (Initialize ((intloc 0) .--> 1))))) +* (((StepWhile=0 (a,Ig,p,s)) . k) | NAT))
by SCMFSA6B:def 1
.=
DataPart (Result (((p +* (while=0 (a,Ig))) +* Ig),(((StepWhile=0 (a,Ig,p,s)) . k) +* (Initialize ((intloc 0) .--> 1)))))
by A8, FUNCT_4:76, SCMFSA_2:127
.=
DataPart (Comput (((p +* (while=0 (a,Ig))) +* Ig),(Initialize ((StepWhile=0 (a,Ig,p,s)) . k)),(LifeSpan (((p +* (while=0 (a,Ig))) +* Ig),(Initialize ((StepWhile=0 (a,Ig,p,s)) . k))))))
by A16, A15, EXTPRO_1:23
;
Ig is_closed_on Initialized ((StepWhile=0 (a,Ig,p,s)) . k),
p +* (while=0 (a,Ig))
by A11, A9, SCMFSA8B:6;
then
DataPart ((StepWhile=0 (a,Ig,p,s)) . (k + 1)) = DataPart (IExec (Ig,(p +* (while=0 (a,Ig))),((StepWhile=0 (a,Ig,p,s)) . k)))
by A5, A6, A13, Th25;
hence ((StepWhile=0 (a,Ig,p,s)) . (k + 1)) . (intloc 0) =
(Comput (((p +* (while=0 (a,Ig))) +* Ig),(Initialize ((StepWhile=0 (a,Ig,p,s)) . k)),(LifeSpan (((p +* (while=0 (a,Ig))) +* Ig),(Initialize ((StepWhile=0 (a,Ig,p,s)) . k)))))) . (intloc 0)
by A17, SCMFSA6A:38
.=
1
by A5, A11, SCMFSA8C:97
;
verum end; end;
end;
A18:
S1[ 0 ]
by A2, SCMFSA_9:def 4;
thus
for k being Element of NAT holds S1[k]
from NAT_1:sch 1(A18, A4); verum