defpred S2[ object , object , object ] means for p being PartialPredicate of D
for f being BinominativeFunction of D st $1 = p & $2 = f holds
for h being Function st h = $3 holds
( dom h = H1(p,f) & ( for d being object st d in dom h holds
ex n being Nat st
( S1[d,p,f,n] & h . d = (iter (f,n)) . d ) ) );
A1:
for x1, x2 being object st x1 in Pr D & x2 in FPrg D holds
ex y being object st
( y in FPrg D & S2[x1,x2,y] )
proof
let x1,
x2 be
object ;
( x1 in Pr D & x2 in FPrg D implies ex y being object st
( y in FPrg D & S2[x1,x2,y] ) )
assume
x1 in Pr D
;
( not x2 in FPrg D or ex y being object st
( y in FPrg D & S2[x1,x2,y] ) )
then reconsider X1 =
x1 as
PartFunc of
D,
BOOLEAN by PARTFUN1:46;
assume
x2 in FPrg D
;
ex y being object st
( y in FPrg D & S2[x1,x2,y] )
then reconsider X2 =
x2 as
PartFunc of
D,
D by PARTFUN1:46;
defpred S3[
object ,
object ]
means for
d being
object st
d = $1 holds
ex
n being
Nat st
(
S1[
d,
X1,
X2,
n] & $2
= (iter (X2,n)) . d );
A2:
for
a being
object st
a in H1(
X1,
X2) holds
ex
b being
object st
(
b in D &
S3[
a,
b] )
proof
let a be
object ;
( a in H1(X1,X2) implies ex b being object st
( b in D & S3[a,b] ) )
assume
a in H1(
X1,
X2)
;
ex b being object st
( b in D & S3[a,b] )
then consider d being
Element of
D such that A3:
d = a
and A4:
ex
n being
Nat st
S1[
d,
X1,
X2,
n]
;
consider n being
Nat such that A5:
S1[
d,
X1,
X2,
n]
by A4;
take
(iter (X2,n)) . d
;
( (iter (X2,n)) . d in D & S3[a,(iter (X2,n)) . d] )
A6:
iter (
X2,
n) is
PartFunc of
D,
D
by FUNCT_7:86;
dom (X1 * (iter (X2,n))) c= dom (iter (X2,n))
by RELAT_1:25;
hence
(iter (X2,n)) . d in D
by A5, A6, PARTFUN1:4;
S3[a,(iter (X2,n)) . d]
thus
S3[
a,
(iter (X2,n)) . d]
by A3, A5;
verum
end;
consider K being
Function such that A7:
dom K = H1(
X1,
X2)
and A8:
rng K c= D
and A9:
for
x being
object st
x in H1(
X1,
X2) holds
S3[
x,
K . x]
from FUNCT_1:sch 6(A2);
take
K
;
( K in FPrg D & S2[x1,x2,K] )
H1(
X1,
X2)
c= D
then
K is
PartFunc of
D,
D
by A7, A8, RELSET_1:4;
hence
K in FPrg D
by PARTFUN1:45;
S2[x1,x2,K]
thus
S2[
x1,
x2,
K]
by A7, A9;
verum
end;
consider F being Function of [:(Pr D),(FPrg D):],(FPrg D) such that
A10:
for x, y being object st x in Pr D & y in FPrg D holds
S2[x,y,F . (x,y)]
from BINOP_1:sch 1(A1);
take
F
; for p being PartialPredicate of D
for f being BinominativeFunction of D holds
( dom (F . (p,f)) = { d where d is Element of D : ex n being Nat st
( ( for i being Nat st i <= n - 1 holds
( d in dom (p * (iter (f,i))) & (p * (iter (f,i))) . d = TRUE ) ) & d in dom (p * (iter (f,n))) & (p * (iter (f,n))) . d = FALSE ) } & ( for d being object st d in dom (F . (p,f)) holds
ex n being Nat st
( ( for i being Nat st i <= n - 1 holds
( d in dom (p * (iter (f,i))) & (p * (iter (f,i))) . d = TRUE ) ) & d in dom (p * (iter (f,n))) & (p * (iter (f,n))) . d = FALSE & (F . (p,f)) . d = (iter (f,n)) . d ) ) )
let p be PartialPredicate of D; for f being BinominativeFunction of D holds
( dom (F . (p,f)) = { d where d is Element of D : ex n being Nat st
( ( for i being Nat st i <= n - 1 holds
( d in dom (p * (iter (f,i))) & (p * (iter (f,i))) . d = TRUE ) ) & d in dom (p * (iter (f,n))) & (p * (iter (f,n))) . d = FALSE ) } & ( for d being object st d in dom (F . (p,f)) holds
ex n being Nat st
( ( for i being Nat st i <= n - 1 holds
( d in dom (p * (iter (f,i))) & (p * (iter (f,i))) . d = TRUE ) ) & d in dom (p * (iter (f,n))) & (p * (iter (f,n))) . d = FALSE & (F . (p,f)) . d = (iter (f,n)) . d ) ) )
let f be BinominativeFunction of D; ( dom (F . (p,f)) = { d where d is Element of D : ex n being Nat st
( ( for i being Nat st i <= n - 1 holds
( d in dom (p * (iter (f,i))) & (p * (iter (f,i))) . d = TRUE ) ) & d in dom (p * (iter (f,n))) & (p * (iter (f,n))) . d = FALSE ) } & ( for d being object st d in dom (F . (p,f)) holds
ex n being Nat st
( ( for i being Nat st i <= n - 1 holds
( d in dom (p * (iter (f,i))) & (p * (iter (f,i))) . d = TRUE ) ) & d in dom (p * (iter (f,n))) & (p * (iter (f,n))) . d = FALSE & (F . (p,f)) . d = (iter (f,n)) . d ) ) )
A11:
( p in Pr D & f in FPrg D )
by PARTFUN1:45;
hence
dom (F . (p,f)) = H1(p,f)
by A10; for d being object st d in dom (F . (p,f)) holds
ex n being Nat st
( ( for i being Nat st i <= n - 1 holds
( d in dom (p * (iter (f,i))) & (p * (iter (f,i))) . d = TRUE ) ) & d in dom (p * (iter (f,n))) & (p * (iter (f,n))) . d = FALSE & (F . (p,f)) . d = (iter (f,n)) . d )
let d be object ; ( d in dom (F . (p,f)) implies ex n being Nat st
( ( for i being Nat st i <= n - 1 holds
( d in dom (p * (iter (f,i))) & (p * (iter (f,i))) . d = TRUE ) ) & d in dom (p * (iter (f,n))) & (p * (iter (f,n))) . d = FALSE & (F . (p,f)) . d = (iter (f,n)) . d ) )
assume
d in dom (F . (p,f))
; ex n being Nat st
( ( for i being Nat st i <= n - 1 holds
( d in dom (p * (iter (f,i))) & (p * (iter (f,i))) . d = TRUE ) ) & d in dom (p * (iter (f,n))) & (p * (iter (f,n))) . d = FALSE & (F . (p,f)) . d = (iter (f,n)) . d )
then consider n being Nat such that
A12:
( S1[d,p,f,n] & (F . (p,f)) . d = (iter (f,n)) . d )
by A10, A11;
take
n
; ( ( for i being Nat st i <= n - 1 holds
( d in dom (p * (iter (f,i))) & (p * (iter (f,i))) . d = TRUE ) ) & d in dom (p * (iter (f,n))) & (p * (iter (f,n))) . d = FALSE & (F . (p,f)) . d = (iter (f,n)) . d )
thus
( ( for i being Nat st i <= n - 1 holds
( d in dom (p * (iter (f,i))) & (p * (iter (f,i))) . d = TRUE ) ) & d in dom (p * (iter (f,n))) & (p * (iter (f,n))) . d = FALSE & (F . (p,f)) . d = (iter (f,n)) . d )
by A12; verum