let i, k be Element of NAT ; for t being FinPartState of SCM+FSA
for p being Program of {INT,(INT *)}
for s1, s2 being State of SCM+FSA st k <= i & p c= s1 & p c= s2 & dom t c= Int-Locations \/ FinSeq-Locations & ( for j being Element of NAT holds
( IC (Comput ((ProgramPart s1),s1,j)) in dom p & IC (Comput ((ProgramPart s2),s2,j)) in dom p ) ) & (Comput ((ProgramPart s1),s1,k)) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,k)) . (IC SCM+FSA) & (Comput ((ProgramPart s1),s1,k)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) = (Comput ((ProgramPart s2),s2,k)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) holds
( (Comput ((ProgramPart s1),s1,i)) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,i)) . (IC SCM+FSA) & (Comput ((ProgramPart s1),s1,i)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) = (Comput ((ProgramPart s2),s2,i)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) )
let t be FinPartState of SCM+FSA; for p being Program of {INT,(INT *)}
for s1, s2 being State of SCM+FSA st k <= i & p c= s1 & p c= s2 & dom t c= Int-Locations \/ FinSeq-Locations & ( for j being Element of NAT holds
( IC (Comput ((ProgramPart s1),s1,j)) in dom p & IC (Comput ((ProgramPart s2),s2,j)) in dom p ) ) & (Comput ((ProgramPart s1),s1,k)) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,k)) . (IC SCM+FSA) & (Comput ((ProgramPart s1),s1,k)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) = (Comput ((ProgramPart s2),s2,k)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) holds
( (Comput ((ProgramPart s1),s1,i)) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,i)) . (IC SCM+FSA) & (Comput ((ProgramPart s1),s1,i)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) = (Comput ((ProgramPart s2),s2,i)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) )
let p be Program of {INT,(INT *)}; for s1, s2 being State of SCM+FSA st k <= i & p c= s1 & p c= s2 & dom t c= Int-Locations \/ FinSeq-Locations & ( for j being Element of NAT holds
( IC (Comput ((ProgramPart s1),s1,j)) in dom p & IC (Comput ((ProgramPart s2),s2,j)) in dom p ) ) & (Comput ((ProgramPart s1),s1,k)) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,k)) . (IC SCM+FSA) & (Comput ((ProgramPart s1),s1,k)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) = (Comput ((ProgramPart s2),s2,k)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) holds
( (Comput ((ProgramPart s1),s1,i)) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,i)) . (IC SCM+FSA) & (Comput ((ProgramPart s1),s1,i)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) = (Comput ((ProgramPart s2),s2,i)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) )
let s1, s2 be State of SCM+FSA; ( k <= i & p c= s1 & p c= s2 & dom t c= Int-Locations \/ FinSeq-Locations & ( for j being Element of NAT holds
( IC (Comput ((ProgramPart s1),s1,j)) in dom p & IC (Comput ((ProgramPart s2),s2,j)) in dom p ) ) & (Comput ((ProgramPart s1),s1,k)) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,k)) . (IC SCM+FSA) & (Comput ((ProgramPart s1),s1,k)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) = (Comput ((ProgramPart s2),s2,k)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) implies ( (Comput ((ProgramPart s1),s1,i)) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,i)) . (IC SCM+FSA) & (Comput ((ProgramPart s1),s1,i)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) = (Comput ((ProgramPart s2),s2,i)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) ) )
set Dloc = ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p);
assume that
A1:
k <= i
and
A2:
p c= s1
and
A3:
p c= s2
and
A4:
dom t c= Int-Locations \/ FinSeq-Locations
and
A5:
for j being Element of NAT holds
( IC (Comput ((ProgramPart s1),s1,j)) in dom p & IC (Comput ((ProgramPart s2),s2,j)) in dom p )
and
A6:
(Comput ((ProgramPart s1),s1,k)) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,k)) . (IC SCM+FSA)
and
A7:
(Comput ((ProgramPart s1),s1,k)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) = (Comput ((ProgramPart s2),s2,k)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))
; ( (Comput ((ProgramPart s1),s1,i)) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,i)) . (IC SCM+FSA) & (Comput ((ProgramPart s1),s1,i)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) = (Comput ((ProgramPart s2),s2,i)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) )
consider m being Nat such that
A8:
i = k + m
by A1, NAT_1:10;
reconsider m = m as Element of NAT by ORDINAL1:def 13;
A9:
i = k + m
by A8;
A10:
UsedIntLoc p c= ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)
by XBOOLE_1:7;
((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p) = ((dom t) \/ (UsedIntLoc p)) \/ (UsedInt*Loc p)
by XBOOLE_1:4;
then A11:
UsedInt*Loc p c= ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)
by XBOOLE_1:7;
defpred S1[ Nat] means ( (Comput ((ProgramPart s1),s1,(k + $1))) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,(k + $1))) . (IC SCM+FSA) & (Comput ((ProgramPart s1),s1,(k + $1))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) = (Comput ((ProgramPart s2),s2,(k + $1))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) );
A12:
S1[ 0 ]
by A6, A7;
A13:
now let m be
Element of
NAT ;
( S1[m] implies S1[b1 + 1] )assume A14:
S1[
m]
;
S1[b1 + 1]set sk1 =
Comput (
(ProgramPart s1),
s1,
(k + m));
set sk11 =
Comput (
(ProgramPart s1),
s1,
(k + (m + 1)));
set i1 =
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))));
set sk2 =
Comput (
(ProgramPart s2),
s2,
(k + m));
set sk12 =
Comput (
(ProgramPart s2),
s2,
(k + (m + 1)));
set i2 =
CurInstr (
(ProgramPart (Comput ((ProgramPart s2),s2,(k + m)))),
(Comput ((ProgramPart s2),s2,(k + m))));
A15:
IC (Comput ((ProgramPart s1),s1,(k + m))) in dom p
by A5;
Y:
(ProgramPart (Comput ((ProgramPart s2),s2,(k + m)))) /. (IC (Comput ((ProgramPart s2),s2,(k + m)))) = (Comput ((ProgramPart s2),s2,(k + m))) . (IC (Comput ((ProgramPart s2),s2,(k + m))))
by COMPOS_1:38;
Z:
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))) /. (IC (Comput ((ProgramPart s1),s1,(k + m)))) = (Comput ((ProgramPart s1),s1,(k + m))) . (IC (Comput ((ProgramPart s1),s1,(k + m))))
by COMPOS_1:38;
A16:
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
= ((Comput ((ProgramPart s1),s1,(k + m))) | (dom p)) . (IC (Comput ((ProgramPart s1),s1,(k + m))))
by Z, A5, FUNCT_1:72;
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m)))) =
s1 . (IC (Comput ((ProgramPart s1),s1,(k + m))))
by Z, AMI_1:54
.=
p . (IC (Comput ((ProgramPart s1),s1,(k + m))))
by A2, A15, GRFUNC_1:8
;
then A17:
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
in rng p
by A15, FUNCT_1:def 5;
A18:
CurInstr (
(ProgramPart (Comput ((ProgramPart s2),s2,(k + m)))),
(Comput ((ProgramPart s2),s2,(k + m)))) =
((Comput ((ProgramPart s2),s2,(k + m))) | (dom p)) . (IC (Comput ((ProgramPart s2),s2,(k + m))))
by Y, A5, FUNCT_1:72
.=
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
by A2, A3, A14, A16, AMI_1:124
;
A19:
Comput (
(ProgramPart s1),
s1,
(k + (m + 1))) =
Comput (
(ProgramPart s1),
s1,
((k + m) + 1))
.=
Following (
(ProgramPart s1),
(Comput ((ProgramPart s1),s1,(k + m))))
by EXTPRO_1:4
.=
Exec (
(CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))),
(Comput ((ProgramPart s1),s1,(k + m))))
by AMI_1:123
;
A20:
Comput (
(ProgramPart s2),
s2,
(k + (m + 1))) =
Comput (
(ProgramPart s2),
s2,
((k + m) + 1))
.=
Following (
(ProgramPart s2),
(Comput ((ProgramPart s2),s2,(k + m))))
by EXTPRO_1:4
.=
Exec (
(CurInstr ((ProgramPart (Comput ((ProgramPart s2),s2,(k + m)))),(Comput ((ProgramPart s2),s2,(k + m))))),
(Comput ((ProgramPart s2),s2,(k + m))))
by AMI_1:123
;
A21:
dom (Comput ((ProgramPart s1),s1,(k + (m + 1)))) =
the
carrier of
SCM+FSA
by PARTFUN1:def 4
.=
dom (Comput ((ProgramPart s2),s2,(k + (m + 1))))
by PARTFUN1:def 4
;
per cases
( InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 0 or InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 1 or InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 2 or InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 3 or InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 4 or InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 5 or InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 6 or InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 7 or InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 8 or InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 9 or InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 10 or InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 11 or InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 12 )
by NAT_1:37, SCMFSA_2:35;
suppose
InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 0
;
S1[b1 + 1]then A22:
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
= halt SCM+FSA
by SCMFSA_2:122;
then
Comput (
(ProgramPart s1),
s1,
(k + (m + 1)))
= Comput (
(ProgramPart s1),
s1,
(k + m))
by A19, EXTPRO_1:def 3;
hence
S1[
m + 1]
by A14, A18, A20, A22, EXTPRO_1:def 3;
verum end; suppose
InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 1
;
S1[b1 + 1]then consider da,
db being
Int-Location such that A23:
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
= da := db
by SCMFSA_2:54;
A24:
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) =
succ (IC (Comput ((ProgramPart s1),s1,(k + m))))
by A19, A23, SCMFSA_2:89
.=
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)
by A14, A18, A20, A23, SCMFSA_2:89
;
now let x be
set ;
( x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p) implies (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1 )assume A25:
x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1per cases
( x is Int-Location or x is FinSeq-Location )
by A4, A25, Th23;
suppose A26:
x is
Int-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1now per cases
( x = da or x <> da )
;
case A27:
x = da
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen A28:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . db
by A18, A20, A23, SCMFSA_2:89;
A29:
db in UsedIntLoc p
by A17, A23, Th16;
then (Comput ((ProgramPart s1),s1,(k + m))) . db =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . db
by A10, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . db
by A10, A29, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A23, A27, A28, SCMFSA_2:89;
verum end; case A30:
x <> da
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen A31:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A23, A26, SCMFSA_2:89;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A25, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A25, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A23, A26, A30, A31, SCMFSA_2:89;
verum end; end; end; hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
;
verum end; suppose A32:
x is
FinSeq-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then A33:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A23, SCMFSA_2:89;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A25, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A25, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A23, A32, A33, SCMFSA_2:89;
verum end; end; end; hence
S1[
m + 1]
by A21, A24, FUNCT_1:166;
verum end; suppose
InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 2
;
S1[b1 + 1]then consider da,
db being
Int-Location such that A34:
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
= AddTo (
da,
db)
by SCMFSA_2:55;
A35:
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) =
succ (IC (Comput ((ProgramPart s1),s1,(k + m))))
by A19, A34, SCMFSA_2:90
.=
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)
by A14, A18, A20, A34, SCMFSA_2:90
;
now let x be
set ;
( x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p) implies (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1 )assume A36:
x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1per cases
( x is Int-Location or x is FinSeq-Location )
by A4, A36, Th23;
suppose A37:
x is
Int-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1now per cases
( x = da or x <> da )
;
case A38:
x = da
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen A39:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = ((Comput ((ProgramPart s2),s2,(k + m))) . da) + ((Comput ((ProgramPart s2),s2,(k + m))) . db)
by A18, A20, A34, SCMFSA_2:90;
A40:
da in UsedIntLoc p
by A17, A34, Th16;
then A41:
(Comput ((ProgramPart s1),s1,(k + m))) . da =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . da
by A10, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . da
by A10, A40, FUNCT_1:72
;
A42:
db in UsedIntLoc p
by A17, A34, Th16;
then (Comput ((ProgramPart s1),s1,(k + m))) . db =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . db
by A10, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . db
by A10, A42, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A34, A38, A39, A41, SCMFSA_2:90;
verum end; case A43:
x <> da
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen A44:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A34, A37, SCMFSA_2:90;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A36, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A36, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A34, A37, A43, A44, SCMFSA_2:90;
verum end; end; end; hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
;
verum end; suppose A45:
x is
FinSeq-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then A46:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A34, SCMFSA_2:90;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A36, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A36, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A34, A45, A46, SCMFSA_2:90;
verum end; end; end; hence
S1[
m + 1]
by A21, A35, FUNCT_1:166;
verum end; suppose
InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 3
;
S1[b1 + 1]then consider da,
db being
Int-Location such that A47:
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
= SubFrom (
da,
db)
by SCMFSA_2:56;
A48:
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) =
succ (IC (Comput ((ProgramPart s1),s1,(k + m))))
by A19, A47, SCMFSA_2:91
.=
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)
by A14, A18, A20, A47, SCMFSA_2:91
;
now let x be
set ;
( x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p) implies (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1 )assume A49:
x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1per cases
( x is Int-Location or x is FinSeq-Location )
by A4, A49, Th23;
suppose A50:
x is
Int-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1now per cases
( x = da or x <> da )
;
case A51:
x = da
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen A52:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = ((Comput ((ProgramPart s2),s2,(k + m))) . da) - ((Comput ((ProgramPart s2),s2,(k + m))) . db)
by A18, A20, A47, SCMFSA_2:91;
A53:
da in UsedIntLoc p
by A17, A47, Th16;
then A54:
(Comput ((ProgramPart s1),s1,(k + m))) . da =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . da
by A10, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . da
by A10, A53, FUNCT_1:72
;
A55:
db in UsedIntLoc p
by A17, A47, Th16;
then (Comput ((ProgramPart s1),s1,(k + m))) . db =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . db
by A10, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . db
by A10, A55, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A47, A51, A52, A54, SCMFSA_2:91;
verum end; case A56:
x <> da
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen A57:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A47, A50, SCMFSA_2:91;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A49, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A49, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A47, A50, A56, A57, SCMFSA_2:91;
verum end; end; end; hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
;
verum end; suppose A58:
x is
FinSeq-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then A59:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A47, SCMFSA_2:91;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A49, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A49, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A47, A58, A59, SCMFSA_2:91;
verum end; end; end; hence
S1[
m + 1]
by A21, A48, FUNCT_1:166;
verum end; suppose
InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 4
;
S1[b1 + 1]then consider da,
db being
Int-Location such that A60:
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
= MultBy (
da,
db)
by SCMFSA_2:57;
A61:
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) =
succ (IC (Comput ((ProgramPart s1),s1,(k + m))))
by A19, A60, SCMFSA_2:92
.=
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)
by A14, A18, A20, A60, SCMFSA_2:92
;
now let x be
set ;
( x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p) implies (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1 )assume A62:
x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1per cases
( x is Int-Location or x is FinSeq-Location )
by A4, A62, Th23;
suppose A63:
x is
Int-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1now per cases
( x = da or x <> da )
;
case A64:
x = da
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen A65:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = ((Comput ((ProgramPart s2),s2,(k + m))) . da) * ((Comput ((ProgramPart s2),s2,(k + m))) . db)
by A18, A20, A60, SCMFSA_2:92;
A66:
da in UsedIntLoc p
by A17, A60, Th16;
then A67:
(Comput ((ProgramPart s1),s1,(k + m))) . da =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . da
by A10, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . da
by A10, A66, FUNCT_1:72
;
A68:
db in UsedIntLoc p
by A17, A60, Th16;
then (Comput ((ProgramPart s1),s1,(k + m))) . db =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . db
by A10, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . db
by A10, A68, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A60, A64, A65, A67, SCMFSA_2:92;
verum end; case A69:
x <> da
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen A70:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A60, A63, SCMFSA_2:92;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A62, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A62, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A60, A63, A69, A70, SCMFSA_2:92;
verum end; end; end; hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
;
verum end; suppose A71:
x is
FinSeq-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then A72:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A60, SCMFSA_2:92;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A62, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A62, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A60, A71, A72, SCMFSA_2:92;
verum end; end; end; hence
S1[
m + 1]
by A21, A61, FUNCT_1:166;
verum end; suppose
InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 5
;
S1[b1 + 1]then consider da,
db being
Int-Location such that A73:
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
= Divide (
da,
db)
by SCMFSA_2:58;
A74:
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) =
succ (IC (Comput ((ProgramPart s1),s1,(k + m))))
by A19, A73, SCMFSA_2:93
.=
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)
by A14, A18, A20, A73, SCMFSA_2:93
;
now let x be
set ;
( x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p) implies (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1 )assume A75:
x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1per cases
( x is Int-Location or x is FinSeq-Location )
by A4, A75, Th23;
suppose A76:
x is
Int-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1A77:
da in UsedIntLoc p
by A17, A73, Th16;
then A78:
(Comput ((ProgramPart s1),s1,(k + m))) . da =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . da
by A10, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . da
by A10, A77, FUNCT_1:72
;
A79:
db in UsedIntLoc p
by A17, A73, Th16;
then A80:
(Comput ((ProgramPart s1),s1,(k + m))) . db =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . db
by A10, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . db
by A10, A79, FUNCT_1:72
;
A81:
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A75, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A75, FUNCT_1:72
;
now per cases
( da <> db or da = db )
;
suppose A82:
da <> db
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xnow per cases
( x = da or x = db or ( x <> da & x <> db ) )
;
suppose A83:
x = da
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = ((Comput ((ProgramPart s1),s1,(k + m))) . da) div ((Comput ((ProgramPart s1),s1,(k + m))) . db)
by A19, A73, A82, SCMFSA_2:93;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A18, A20, A73, A78, A80, A82, A83, SCMFSA_2:93;
verum end; suppose A84:
x = db
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = ((Comput ((ProgramPart s1),s1,(k + m))) . da) mod ((Comput ((ProgramPart s1),s1,(k + m))) . db)
by A19, A73, SCMFSA_2:93;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A18, A20, A73, A78, A80, A84, SCMFSA_2:93;
verum end; suppose A85:
(
x <> da &
x <> db )
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s1),s1,(k + m))) . x
by A19, A73, A76, SCMFSA_2:93;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A18, A20, A73, A76, A81, A85, SCMFSA_2:93;
verum end; end; end; hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
;
verum end; suppose A86:
da = db
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xnow per cases
( x = da or x <> da )
;
case A87:
x = da
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = ((Comput ((ProgramPart s1),s1,(k + m))) . da) mod ((Comput ((ProgramPart s1),s1,(k + m))) . da)
by A19, A73, A86, SCMFSA_2:94;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A18, A20, A73, A78, A86, A87, SCMFSA_2:94;
verum end; case A88:
x <> da
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s1),s1,(k + m))) . x
by A19, A73, A76, A86, SCMFSA_2:94;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A18, A20, A73, A76, A81, A86, A88, SCMFSA_2:94;
verum end; end; end; hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
;
verum end; end; end; hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
;
verum end; suppose A89:
x is
FinSeq-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then A90:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A73, SCMFSA_2:93;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A75, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A75, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A73, A89, A90, SCMFSA_2:93;
verum end; end; end; hence
S1[
m + 1]
by A21, A74, FUNCT_1:166;
verum end; suppose
InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 6
;
S1[b1 + 1]then consider lb being
Element of
NAT such that A91:
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
= goto lb
by SCMFSA_2:59;
A92:
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) =
lb
by A19, A91, SCMFSA_2:95
.=
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)
by A18, A20, A91, SCMFSA_2:95
;
now let x be
set ;
( x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p) implies (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1 )assume A93:
x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then A94:
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A93, FUNCT_1:72
;
per cases
( x is Int-Location or x is FinSeq-Location )
by A4, A93, Th23;
suppose A95:
x is
Int-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s1),s1,(k + m))) . x
by A19, A91, SCMFSA_2:95;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A18, A20, A91, A94, A95, SCMFSA_2:95;
verum end; suppose A96:
x is
FinSeq-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s1),s1,(k + m))) . x
by A19, A91, SCMFSA_2:95;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A18, A20, A91, A94, A96, SCMFSA_2:95;
verum end; end; end; hence
S1[
m + 1]
by A21, A92, FUNCT_1:166;
verum end; suppose
InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 7
;
S1[b1 + 1]then consider lb being
Element of
NAT ,
da being
Int-Location such that A97:
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
= da =0_goto lb
by SCMFSA_2:60;
A98:
da in UsedIntLoc p
by A17, A97, Th17;
then A99:
(Comput ((ProgramPart s1),s1,(k + m))) . da =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . da
by A10, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . da
by A10, A98, FUNCT_1:72
;
A100:
now per cases
( (Comput ((ProgramPart s1),s1,(k + m))) . da = 0 or (Comput ((ProgramPart s1),s1,(k + m))) . da <> 0 )
;
suppose A101:
(Comput ((ProgramPart s1),s1,(k + m))) . da = 0
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)hence (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) =
lb
by A19, A97, SCMFSA_2:96
.=
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)
by A18, A20, A97, A99, A101, SCMFSA_2:96
;
verum end; suppose A102:
(Comput ((ProgramPart s1),s1,(k + m))) . da <> 0
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)hence (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) =
succ (IC (Comput ((ProgramPart s2),s2,(k + m))))
by A14, A19, A97, SCMFSA_2:96
.=
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)
by A18, A20, A97, A99, A102, SCMFSA_2:96
;
verum end; end; end; now let x be
set ;
( x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p) implies (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1 )assume A103:
x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then A104:
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A103, FUNCT_1:72
;
per cases
( x is Int-Location or x is FinSeq-Location )
by A4, A103, Th23;
suppose A105:
x is
Int-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s1),s1,(k + m))) . x
by A19, A97, SCMFSA_2:96;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A18, A20, A97, A104, A105, SCMFSA_2:96;
verum end; suppose A106:
x is
FinSeq-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s1),s1,(k + m))) . x
by A19, A97, SCMFSA_2:96;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A18, A20, A97, A104, A106, SCMFSA_2:96;
verum end; end; end; hence
S1[
m + 1]
by A21, A100, FUNCT_1:166;
verum end; suppose
InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 8
;
S1[b1 + 1]then consider lb being
Element of
NAT ,
da being
Int-Location such that A107:
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
= da >0_goto lb
by SCMFSA_2:61;
A108:
da in UsedIntLoc p
by A17, A107, Th17;
then A109:
(Comput ((ProgramPart s1),s1,(k + m))) . da =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . da
by A10, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . da
by A10, A108, FUNCT_1:72
;
A110:
now per cases
( (Comput ((ProgramPart s1),s1,(k + m))) . da > 0 or (Comput ((ProgramPart s1),s1,(k + m))) . da <= 0 )
;
suppose A111:
(Comput ((ProgramPart s1),s1,(k + m))) . da > 0
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)hence (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) =
lb
by A19, A107, SCMFSA_2:97
.=
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)
by A18, A20, A107, A109, A111, SCMFSA_2:97
;
verum end; suppose A112:
(Comput ((ProgramPart s1),s1,(k + m))) . da <= 0
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)hence (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) =
succ (IC (Comput ((ProgramPart s2),s2,(k + m))))
by A14, A19, A107, SCMFSA_2:97
.=
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)
by A18, A20, A107, A109, A112, SCMFSA_2:97
;
verum end; end; end; now let x be
set ;
( x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p) implies (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1 )assume A113:
x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then A114:
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A113, FUNCT_1:72
;
per cases
( x is Int-Location or x is FinSeq-Location )
by A4, A113, Th23;
suppose A115:
x is
Int-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s1),s1,(k + m))) . x
by A19, A107, SCMFSA_2:97;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A18, A20, A107, A114, A115, SCMFSA_2:97;
verum end; suppose A116:
x is
FinSeq-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s1),s1,(k + m))) . x
by A19, A107, SCMFSA_2:97;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A18, A20, A107, A114, A116, SCMFSA_2:97;
verum end; end; end; hence
S1[
m + 1]
by A21, A110, FUNCT_1:166;
verum end; suppose
InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 9
;
S1[b1 + 1]then consider a,
b being
Int-Location ,
fa being
FinSeq-Location such that A117:
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
= b := (
fa,
a)
by SCMFSA_2:62;
A118:
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) =
succ (IC (Comput ((ProgramPart s2),s2,(k + m))))
by A14, A19, A117, SCMFSA_2:98
.=
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)
by A18, A20, A117, SCMFSA_2:98
;
now let x be
set ;
( x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p) implies (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1 )assume A119:
x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1per cases
( x is Int-Location or x is FinSeq-Location )
by A4, A119, Th23;
suppose A120:
x is
Int-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1now per cases
( x = b or x <> b )
;
case A121:
x = b
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xA122:
ex
k1 being
Element of
NAT st
(
k1 = abs ((Comput ((ProgramPart s1),s1,(k + m))) . a) &
(Exec ((b := (fa,a)),(Comput ((ProgramPart s1),s1,(k + m))))) . b = ((Comput ((ProgramPart s1),s1,(k + m))) . fa) /. k1 )
by SCMFSA_2:98;
A123:
ex
k2 being
Element of
NAT st
(
k2 = abs ((Comput ((ProgramPart s2),s2,(k + m))) . a) &
(Exec ((b := (fa,a)),(Comput ((ProgramPart s2),s2,(k + m))))) . b = ((Comput ((ProgramPart s2),s2,(k + m))) . fa) /. k2 )
by SCMFSA_2:98;
A124:
a in UsedIntLoc p
by A17, A117, Th18;
then A125:
(Comput ((ProgramPart s1),s1,(k + m))) . a =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . a
by A10, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . a
by A10, A124, FUNCT_1:72
;
A126:
fa in UsedInt*Loc p
by A17, A117, Th19;
then (Comput ((ProgramPart s1),s1,(k + m))) . fa =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . fa
by A11, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . fa
by A11, A126, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A18, A19, A20, A117, A121, A122, A123, A125;
verum end; case A127:
x <> b
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen A128:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A117, A120, SCMFSA_2:98;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A119, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A119, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A117, A120, A127, A128, SCMFSA_2:98;
verum end; end; end; hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
;
verum end; suppose A129:
x is
FinSeq-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then A130:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A117, SCMFSA_2:98;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A119, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A119, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A117, A129, A130, SCMFSA_2:98;
verum end; end; end; hence
S1[
m + 1]
by A21, A118, FUNCT_1:166;
verum end; suppose
InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 10
;
S1[b1 + 1]then consider a,
b being
Int-Location ,
fa being
FinSeq-Location such that A131:
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
= (
fa,
a)
:= b
by SCMFSA_2:63;
A132:
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) =
succ (IC (Comput ((ProgramPart s2),s2,(k + m))))
by A14, A19, A131, SCMFSA_2:99
.=
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)
by A18, A20, A131, SCMFSA_2:99
;
now let x be
set ;
( x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p) implies (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1 )assume A133:
x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1per cases
( x is FinSeq-Location or x is Int-Location )
by A4, A133, Th23;
suppose A134:
x is
FinSeq-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1now per cases
( x = fa or x <> fa )
;
case A135:
x = fa
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xA136:
ex
k1 being
Element of
NAT st
(
k1 = abs ((Comput ((ProgramPart s1),s1,(k + m))) . a) &
(Exec (((fa,a) := b),(Comput ((ProgramPart s1),s1,(k + m))))) . fa = ((Comput ((ProgramPart s1),s1,(k + m))) . fa) +* (
k1,
((Comput ((ProgramPart s1),s1,(k + m))) . b)) )
by SCMFSA_2:99;
A137:
ex
k2 being
Element of
NAT st
(
k2 = abs ((Comput ((ProgramPart s2),s2,(k + m))) . a) &
(Exec (((fa,a) := b),(Comput ((ProgramPart s2),s2,(k + m))))) . fa = ((Comput ((ProgramPart s2),s2,(k + m))) . fa) +* (
k2,
((Comput ((ProgramPart s2),s2,(k + m))) . b)) )
by SCMFSA_2:99;
A138:
a in UsedIntLoc p
by A17, A131, Th18;
then A139:
(Comput ((ProgramPart s1),s1,(k + m))) . a =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . a
by A10, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . a
by A10, A138, FUNCT_1:72
;
A140:
b in UsedIntLoc p
by A17, A131, Th18;
then A141:
(Comput ((ProgramPart s1),s1,(k + m))) . b =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . b
by A10, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . b
by A10, A140, FUNCT_1:72
;
A142:
fa in UsedInt*Loc p
by A17, A131, Th19;
then (Comput ((ProgramPart s1),s1,(k + m))) . fa =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . fa
by A11, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . fa
by A11, A142, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A18, A19, A20, A131, A135, A136, A137, A139, A141;
verum end; case A143:
x <> fa
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen A144:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A131, A134, SCMFSA_2:99;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A133, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A133, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A131, A134, A143, A144, SCMFSA_2:99;
verum end; end; end; hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
;
verum end; suppose A145:
x is
Int-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then A146:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A131, SCMFSA_2:99;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A133, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A133, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A131, A145, A146, SCMFSA_2:99;
verum end; end; end; hence
S1[
m + 1]
by A21, A132, FUNCT_1:166;
verum end; suppose
InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 11
;
S1[b1 + 1]then consider a being
Int-Location ,
fa being
FinSeq-Location such that A147:
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
= a :=len fa
by SCMFSA_2:64;
A148:
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) =
succ (IC (Comput ((ProgramPart s2),s2,(k + m))))
by A14, A19, A147, SCMFSA_2:100
.=
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)
by A18, A20, A147, SCMFSA_2:100
;
now let x be
set ;
( x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p) implies (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1 )assume A149:
x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1per cases
( x is Int-Location or x is FinSeq-Location )
by A4, A149, Th23;
suppose A150:
x is
Int-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1now per cases
( x = a or x <> a )
;
case A151:
x = a
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen A152:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = len ((Comput ((ProgramPart s2),s2,(k + m))) . fa)
by A18, A20, A147, SCMFSA_2:100;
A153:
fa in UsedInt*Loc p
by A17, A147, Th21;
then (Comput ((ProgramPart s1),s1,(k + m))) . fa =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . fa
by A11, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . fa
by A11, A153, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A147, A151, A152, SCMFSA_2:100;
verum end; case A154:
x <> a
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen A155:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A147, A150, SCMFSA_2:100;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A149, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A149, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A147, A150, A154, A155, SCMFSA_2:100;
verum end; end; end; hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
;
verum end; suppose A156:
x is
FinSeq-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then A157:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A147, SCMFSA_2:100;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A149, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A149, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A147, A156, A157, SCMFSA_2:100;
verum end; end; end; hence
S1[
m + 1]
by A21, A148, FUNCT_1:166;
verum end; suppose
InsCode (CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),(Comput ((ProgramPart s1),s1,(k + m))))) = 12
;
S1[b1 + 1]then consider a being
Int-Location ,
fa being
FinSeq-Location such that A158:
CurInstr (
(ProgramPart (Comput ((ProgramPart s1),s1,(k + m)))),
(Comput ((ProgramPart s1),s1,(k + m))))
= fa :=<0,...,0> a
by SCMFSA_2:65;
A159:
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . (IC SCM+FSA) =
succ (IC (Comput ((ProgramPart s2),s2,(k + m))))
by A14, A19, A158, SCMFSA_2:101
.=
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . (IC SCM+FSA)
by A18, A20, A158, SCMFSA_2:101
;
now let x be
set ;
( x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p) implies (Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1 )assume A160:
x in ((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1per cases
( x is FinSeq-Location or x is Int-Location )
by A4, A160, Th23;
suppose A161:
x is
FinSeq-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1now per cases
( x = fa or x <> fa )
;
case A162:
x = fa
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xA163:
ex
k1 being
Element of
NAT st
(
k1 = abs ((Comput ((ProgramPart s1),s1,(k + m))) . a) &
(Exec ((fa :=<0,...,0> a),(Comput ((ProgramPart s1),s1,(k + m))))) . fa = k1 |-> 0 )
by SCMFSA_2:101;
A164:
ex
k2 being
Element of
NAT st
(
k2 = abs ((Comput ((ProgramPart s2),s2,(k + m))) . a) &
(Exec ((fa :=<0,...,0> a),(Comput ((ProgramPart s2),s2,(k + m))))) . fa = k2 |-> 0 )
by SCMFSA_2:101;
A165:
a in UsedIntLoc p
by A17, A158, Th20;
then (Comput ((ProgramPart s1),s1,(k + m))) . a =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . a
by A10, A14, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . a
by A10, A165, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A18, A19, A20, A158, A162, A163, A164;
verum end; case A166:
x <> fa
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . xthen A167:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A158, A161, SCMFSA_2:101;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A160, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A160, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A158, A161, A166, A167, SCMFSA_2:101;
verum end; end; end; hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
;
verum end; suppose A168:
x is
Int-Location
;
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . b1 = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . b1then A169:
(Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + m))) . x
by A18, A20, A158, SCMFSA_2:101;
(Comput ((ProgramPart s1),s1,(k + m))) . x =
((Comput ((ProgramPart s2),s2,(k + m))) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p))) . x
by A14, A160, FUNCT_1:72
.=
(Comput ((ProgramPart s2),s2,(k + m))) . x
by A160, FUNCT_1:72
;
hence
(Comput ((ProgramPart s1),s1,(k + (m + 1)))) . x = (Comput ((ProgramPart s2),s2,(k + (m + 1)))) . x
by A19, A158, A168, A169, SCMFSA_2:101;
verum end; end; end; hence
S1[
m + 1]
by A21, A159, FUNCT_1:166;
verum end; end; end;
for m being Element of NAT holds S1[m]
from NAT_1:sch 1(A12, A13);
hence
( (Comput ((ProgramPart s1),s1,i)) . (IC SCM+FSA) = (Comput ((ProgramPart s2),s2,i)) . (IC SCM+FSA) & (Comput ((ProgramPart s1),s1,i)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) = (Comput ((ProgramPart s2),s2,i)) | (((dom t) \/ (UsedInt*Loc p)) \/ (UsedIntLoc p)) )
by A9; verum