defpred S1[ Integer, set ] means ex i being Integer st
( i = p . ($1 + 1) & $2 = ((aSeq ((intloc 1),($1 + 1))) ^ (aSeq ((intloc 2),i))) ^ <%((f,(intloc 1)) := (intloc 2))%> );
set D = the Instructions of SCM+FSA ^omega ;
A1:
for k being Nat st k in len p holds
ex d being Element of the Instructions of SCM+FSA ^omega st S1[k,d]
consider pp being XFinSequence of the Instructions of SCM+FSA ^omega such that
A2:
dom pp = len p
and
A3:
for k being Nat st k in len p holds
S1[k,pp . k]
from STIRL2_1:sch 5(A1);
reconsider tt = FlattenSeq pp as XFinSequence of the Instructions of SCM+FSA by AFINSQ_1:def 7;
take
tt
; ex pp being XFinSequence of the Instructions of SCM+FSA ^omega st
( len pp = len p & ( for k being Element of NAT st k < len pp holds
ex i being Integer st
( i = p . (k + 1) & pp . k = ((aSeq ((intloc 1),(k + 1))) ^ (aSeq ((intloc 2),i))) ^ <%((f,(intloc 1)) := (intloc 2))%> ) ) & tt = FlattenSeq pp )
take
pp
; ( len pp = len p & ( for k being Element of NAT st k < len pp holds
ex i being Integer st
( i = p . (k + 1) & pp . k = ((aSeq ((intloc 1),(k + 1))) ^ (aSeq ((intloc 2),i))) ^ <%((f,(intloc 1)) := (intloc 2))%> ) ) & tt = FlattenSeq pp )
thus
len pp = len p
by A2; ( ( for k being Element of NAT st k < len pp holds
ex i being Integer st
( i = p . (k + 1) & pp . k = ((aSeq ((intloc 1),(k + 1))) ^ (aSeq ((intloc 2),i))) ^ <%((f,(intloc 1)) := (intloc 2))%> ) ) & tt = FlattenSeq pp )
hereby tt = FlattenSeq pp
let k be
Element of
NAT ;
( k < len pp implies ex i being Integer st
( i = p . (k + 1) & ((aSeq ((intloc 1),(k + 1))) ^ (aSeq ((intloc 2),i))) ^ <%((f,(intloc 1)) := (intloc 2))%> = pp . k ) )assume A4:
k < len pp
;
ex i being Integer st
( i = p . (k + 1) & ((aSeq ((intloc 1),(k + 1))) ^ (aSeq ((intloc 2),i))) ^ <%((f,(intloc 1)) := (intloc 2))%> = pp . k )then
( 1
<= k + 1 &
k + 1
<= len p )
by A2, NAT_1:12, NAT_1:13;
then
k + 1
in dom p
by FINSEQ_3:25;
then
p . (k + 1) in INT
by FINSEQ_2:11;
then reconsider i =
p . (k + 1) as
Integer ;
take i =
i;
( i = p . (k + 1) & ((aSeq ((intloc 1),(k + 1))) ^ (aSeq ((intloc 2),i))) ^ <%((f,(intloc 1)) := (intloc 2))%> = pp . k )thus
i = p . (k + 1)
;
((aSeq ((intloc 1),(k + 1))) ^ (aSeq ((intloc 2),i))) ^ <%((f,(intloc 1)) := (intloc 2))%> = pp . k
k in len p
by A2, A4, NAT_1:44;
then
(
k in dom pp &
S1[
k,
pp . k] )
by A2, A3;
hence
((aSeq ((intloc 1),(k + 1))) ^ (aSeq ((intloc 2),i))) ^ <%((f,(intloc 1)) := (intloc 2))%> = pp . k
;
verum
end;
thus
tt = FlattenSeq pp
; verum