let A be Euclidean preIfWhileAlgebra; for X being non empty countable set
for s being Element of Funcs (X,INT)
for b being Element of X
for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0)
for P being set
for I being Element of A
for i, n being Variable of g st ex d being Function st
( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds
( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P holds
g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n))
let X be non empty countable set ; for s being Element of Funcs (X,INT)
for b being Element of X
for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0)
for P being set
for I being Element of A
for i, n being Variable of g st ex d being Function st
( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds
( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P holds
g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n))
let s be Element of Funcs (X,INT); for b being Element of X
for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0)
for P being set
for I being Element of A
for i, n being Variable of g st ex d being Function st
( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds
( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P holds
g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n))
let b be Element of X; for g being Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0)
for P being set
for I being Element of A
for i, n being Variable of g st ex d being Function st
( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds
( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P holds
g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n))
let g be Euclidean ExecutionFunction of A, Funcs (X,INT),(Funcs (X,INT)) \ (b,0); for P being set
for I being Element of A
for i, n being Variable of g st ex d being Function st
( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds
( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P holds
g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n))
let P be set ; for I being Element of A
for i, n being Variable of g st ex d being Function st
( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds
( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P holds
g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n))
let I be Element of A; for i, n being Variable of g st ex d being Function st
( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds
( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P holds
g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n))
let i, n be Variable of g; ( ex d being Function st
( d . b = 0 & d . n = 1 & d . i = 2 ) & ( for s being Element of Funcs (X,INT) st s in P holds
( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) & s in P implies g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) )
given d being Function such that A1:
d . b = 0
and
A2:
d . n = 1
and
A3:
d . i = 2
; ( ex s being Element of Funcs (X,INT) st
( s in P & not ( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P ) ) or not s in P or g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n)) )
set J = i += 1;
set C = i leq n;
set S = Funcs (X,INT);
set h = g;
assume that
A4:
for s being Element of Funcs (X,INT) st s in P holds
( (g . (s,I)) . n = s . n & (g . (s,I)) . i = s . i & g . (s,I) in P & g . (s,(i leq n)) in P & g . (s,(i += 1)) in P )
and
A5:
s in P
; g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n))
defpred S1[ Element of Funcs (X,INT)] means $1 in P;
reconsider s1 = g . (s,(i leq n)) as Element of Funcs (X,INT) ;
A6:
S1[s1]
by A4, A5;
deffunc H1( Element of Funcs (X,INT)) -> Element of NAT = In (((($1 . n) + 1) - ($1 . i)),NAT);
defpred S2[ Element of Funcs (X,INT)] means $1 . i <= $1 . n;
set T = (Funcs (X,INT)) \ (b,0);
A7:
i <> n
by A2, A3;
A8:
for s being Element of Funcs (X,INT) st S1[s] & s in (Funcs (X,INT)) \ (b,0) & S2[s] holds
( S1[g . (s,((I \; (i += 1)) \; (i leq n)))] & ( S2[g . (s,((I \; (i += 1)) \; (i leq n)))] implies g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) implies S2[g . (s,((I \; (i += 1)) \; (i leq n)))] ) & H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s) )
proof
let s be
Element of
Funcs (
X,
INT);
( S1[s] & s in (Funcs (X,INT)) \ (b,0) & S2[s] implies ( S1[g . (s,((I \; (i += 1)) \; (i leq n)))] & ( S2[g . (s,((I \; (i += 1)) \; (i leq n)))] implies g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) implies S2[g . (s,((I \; (i += 1)) \; (i leq n)))] ) & H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s) ) )
assume that A9:
S1[
s]
and
s in (Funcs (X,INT)) \ (
b,
0)
and A10:
S2[
s]
;
( S1[g . (s,((I \; (i += 1)) \; (i leq n)))] & ( S2[g . (s,((I \; (i += 1)) \; (i leq n)))] implies g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) implies S2[g . (s,((I \; (i += 1)) \; (i leq n)))] ) & H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s) )
set q =
g . (
s,
(I \; (i += 1)));
set s1 =
g . (
s,
I);
set q1 =
g . (
(g . (s,(I \; (i += 1)))),
(i leq n));
A11:
g . (
s,
(I \; (i += 1)))
= g . (
(g . (s,I)),
(i += 1))
by AOFA_000:def 29;
(g . (s,I)) . i = s . i
by A4, A9;
then
(g . (s,(I \; (i += 1)))) . i = (s . i) + 1
by A11, Th28;
then A12:
(g . ((g . (s,(I \; (i += 1)))),(i leq n))) . i = (s . i) + 1
by A1, A3, Th35;
reconsider ni =
(s . n) - (s . i) as
Element of
NAT by A10, INT_1:3, XREAL_1:48;
A13:
H1(
s)
= ni + 1
;
A14:
(
(g . (s,(I \; (i += 1)))) . i <= (g . (s,(I \; (i += 1)))) . n implies
(g . ((g . (s,(I \; (i += 1)))),(i leq n))) . b = 1 )
by Th35;
A15:
g . (
(g . (s,(I \; (i += 1)))),
(i leq n))
= g . (
s,
((I \; (i += 1)) \; (i leq n)))
by AOFA_000:def 29;
S1[
g . (
s,
I)]
by A4, A9;
then
S1[
g . (
s,
(I \; (i += 1)))]
by A4, A11;
hence
S1[
g . (
s,
((I \; (i += 1)) \; (i leq n)))]
by A4, A15;
( ( S2[g . (s,((I \; (i += 1)) \; (i leq n)))] implies g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) ) & ( g . (s,((I \; (i += 1)) \; (i leq n))) in (Funcs (X,INT)) \ (b,0) implies S2[g . (s,((I \; (i += 1)) \; (i leq n)))] ) & H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s) )
A16:
(
(g . (s,(I \; (i += 1)))) . i > (g . (s,(I \; (i += 1)))) . n implies
(g . ((g . (s,(I \; (i += 1)))),(i leq n))) . b = 0 )
by Th35;
(g . ((g . (s,(I \; (i += 1)))),(i leq n))) . i = (g . (s,(I \; (i += 1)))) . i
by A1, A3, Th35;
hence
(
S2[
g . (
s,
((I \; (i += 1)) \; (i leq n)))] iff
g . (
s,
((I \; (i += 1)) \; (i leq n)))
in (Funcs (X,INT)) \ (
b,
0) )
by A1, A2, A16, A14, A15, Th2, Th35;
H1(g . (s,((I \; (i += 1)) \; (i leq n)))) < H1(s)
(g . (s,I)) . n = s . n
by A4, A9;
then
(g . (s,(I \; (i += 1)))) . n = s . n
by A7, A11, Th28;
then
(g . ((g . (s,(I \; (i += 1)))),(i leq n))) . n = s . n
by A1, A2, Th35;
then
H1(
g . (
(g . (s,(I \; (i += 1)))),
(i leq n)))
= ni
by A12;
hence
H1(
g . (
s,
((I \; (i += 1)) \; (i leq n))))
< H1(
s)
by A15, A13, NAT_1:13;
verum
end;
A17:
( s . i > s . n implies s1 . b = 0 )
by Th35;
A18:
( s . i <= s . n implies s1 . b = 1 )
by Th35;
s1 . i = s . i
by A1, A3, Th35;
then A19:
( s1 in (Funcs (X,INT)) \ (b,0) iff S2[s1] )
by A1, A2, A17, A18, Th2, Th35;
g iteration_terminates_for (I \; (i += 1)) \; (i leq n),s1
from AOFA_000:sch 4(A6, A19, A8);
hence
g iteration_terminates_for (I \; (i += 1)) \; (i leq n),g . (s,(i leq n))
; verum