definition
let x be
triple object ;
consider x1,
x2,
x3 being
object such that A1:
x = [x1,x2,x3]
by XTUPLE_0:def 5;
redefine func x `1_3 means
for
y1,
y2,
y3 being
object st
x = [y1,y2,y3] holds
it = y1;
compatibility
for b1 being object holds
( b1 = x `1_3 iff for y1, y2, y3 being object st x = [y1,y2,y3] holds
b1 = y1 )
by A1;
redefine func x `2_3 means
for
y1,
y2,
y3 being
object st
x = [y1,y2,y3] holds
it = y2;
compatibility
for b1 being object holds
( b1 = x `2_3 iff for y1, y2, y3 being object st x = [y1,y2,y3] holds
b1 = y2 )
by A1;
redefine func x `2 means
for
y1,
y2,
y3 being
object st
x = [y1,y2,y3] holds
it = y3;
compatibility
for b1 being object holds
( b1 = x `3_3 iff for y1, y2, y3 being object st x = [y1,y2,y3] holds
b1 = y3 )
by A1;
end;
definition
let x be
quadruple object ;
consider x1,
x2,
x3,
x4 being
object such that A1:
x = [x1,x2,x3,x4]
by XTUPLE_0:def 9;
redefine func x `1_4 means
for
y1,
y2,
y3,
y4 being
object st
x = [y1,y2,y3,y4] holds
it = y1;
compatibility
for b1 being object holds
( b1 = x `1_4 iff for y1, y2, y3, y4 being object st x = [y1,y2,y3,y4] holds
b1 = y1 )
by A1;
redefine func x `2_4 means
for
y1,
y2,
y3,
y4 being
object st
x = [y1,y2,y3,y4] holds
it = y2;
compatibility
for b1 being object holds
( b1 = x `2_4 iff for y1, y2, y3, y4 being object st x = [y1,y2,y3,y4] holds
b1 = y2 )
by A1;
redefine func x `2_3 means
for
y1,
y2,
y3,
y4 being
object st
x = [y1,y2,y3,y4] holds
it = y3;
compatibility
for b1 being object holds
( b1 = x `2_3 iff for y1, y2, y3, y4 being object st x = [y1,y2,y3,y4] holds
b1 = y3 )
by A1;
redefine func x `2 means
for
y1,
y2,
y3,
y4 being
object st
x = [y1,y2,y3,y4] holds
it = y4;
compatibility
for b1 being object holds
( b1 = x `3_3 iff for y1, y2, y3, y4 being object st x = [y1,y2,y3,y4] holds
b1 = y4 )
by A1;
end;
scheme
ExFunc3Cond{
F1()
-> set ,
P1[
object ],
P2[
object ],
P3[
object ],
F2(
object )
-> object ,
F3(
object )
-> object ,
F4(
object )
-> object } :
ex
f being
Function st
(
dom f = F1() & ( for
c being
set st
c in F1() holds
( (
P1[
c] implies
f . c = F2(
c) ) & (
P2[
c] implies
f . c = F3(
c) ) & (
P3[
c] implies
f . c = F4(
c) ) ) ) )
provided
A1:
for
c being
set st
c in F1() holds
( (
P1[
c] implies not
P2[
c] ) & (
P1[
c] implies not
P3[
c] ) & (
P2[
c] implies not
P3[
c] ) )
and A2:
for
c being
set holds
( not
c in F1() or
P1[
c] or
P2[
c] or
P3[
c] )
scheme
ExFunc4Cond{
F1()
-> set ,
P1[
object ],
P2[
object ],
P3[
object ],
P4[
object ],
F2(
object )
-> object ,
F3(
object )
-> object ,
F4(
object )
-> object ,
F5(
object )
-> object } :
ex
f being
Function st
(
dom f = F1() & ( for
c being
set st
c in F1() holds
( (
P1[
c] implies
f . c = F2(
c) ) & (
P2[
c] implies
f . c = F3(
c) ) & (
P3[
c] implies
f . c = F4(
c) ) & (
P4[
c] implies
f . c = F5(
c) ) ) ) )
provided
A1:
for
c being
set st
c in F1() holds
( (
P1[
c] implies not
P2[
c] ) & (
P1[
c] implies not
P3[
c] ) & (
P1[
c] implies not
P4[
c] ) & (
P2[
c] implies not
P3[
c] ) & (
P2[
c] implies not
P4[
c] ) & (
P3[
c] implies not
P4[
c] ) )
and A2:
for
c being
set holds
( not
c in F1() or
P1[
c] or
P2[
c] or
P3[
c] or
P4[
c] )
scheme
DoubleChoiceRec{
F1()
-> non
empty set ,
F2()
-> non
empty set ,
F3()
-> Element of
F1(),
F4()
-> Element of
F2(),
P1[
object ,
object ,
object ,
object ,
object ] } :
ex
f being
sequence of
F1() ex
g being
sequence of
F2() st
(
f . 0 = F3() &
g . 0 = F4() & ( for
n being
Nat holds
P1[
n,
f . n,
g . n,
f . (n + 1),
g . (n + 1)] ) )
provided
scheme
LambdaRec2Un{
F1()
-> object ,
F2()
-> object ,
F3()
-> Function,
F4()
-> Function,
F5(
object ,
object ,
object )
-> object } :
provided
A1:
dom F3()
= NAT
and A2:
(
F3()
. 0 = F1() &
F3()
. 1
= F2() )
and A3:
for
n being
Nat holds
F3()
. (n + 2) = F5(
n,
(F3() . n),
(F3() . (n + 1)))
and A4:
dom F4()
= NAT
and A5:
(
F4()
. 0 = F1() &
F4()
. 1
= F2() )
and A6:
for
n being
Nat holds
F4()
. (n + 2) = F5(
n,
(F4() . n),
(F4() . (n + 1)))
scheme
LambdaRec2UnD{
F1()
-> non
empty set ,
F2()
-> Element of
F1(),
F3()
-> Element of
F1(),
F4()
-> sequence of
F1(),
F5()
-> sequence of
F1(),
F6(
object ,
object ,
object )
-> Element of
F1() } :
provided
A1:
(
F4()
. 0 = F2() &
F4()
. 1
= F3() )
and A2:
for
n being
Nat holds
F4()
. (n + 2) = F6(
n,
(F4() . n),
(F4() . (n + 1)))
and A3:
(
F5()
. 0 = F2() &
F5()
. 1
= F3() )
and A4:
for
n being
Nat holds
F5()
. (n + 2) = F6(
n,
(F5() . n),
(F5() . (n + 1)))
scheme
LambdaRec3ExD{
F1()
-> non
empty set ,
F2()
-> Element of
F1(),
F3()
-> Element of
F1(),
F4()
-> Element of
F1(),
F5(
object ,
object ,
object ,
object )
-> Element of
F1() } :
ex
f being
sequence of
F1() st
(
f . 0 = F2() &
f . 1
= F3() &
f . 2
= F4() & ( for
n being
Nat holds
f . (n + 3) = F5(
n,
(f . n),
(f . (n + 1)),
(f . (n + 2))) ) )
scheme
LambdaRec3Un{
F1()
-> object ,
F2()
-> object ,
F3()
-> object ,
F4()
-> Function,
F5()
-> Function,
F6(
object ,
object ,
object ,
object )
-> object } :
provided
A1:
dom F4()
= NAT
and A2:
(
F4()
. 0 = F1() &
F4()
. 1
= F2() &
F4()
. 2
= F3() )
and A3:
for
n being
Nat holds
F4()
. (n + 3) = F6(
n,
(F4() . n),
(F4() . (n + 1)),
(F4() . (n + 2)))
and A4:
dom F5()
= NAT
and A5:
(
F5()
. 0 = F1() &
F5()
. 1
= F2() &
F5()
. 2
= F3() )
and A6:
for
n being
Nat holds
F5()
. (n + 3) = F6(
n,
(F5() . n),
(F5() . (n + 1)),
(F5() . (n + 2)))
scheme
LambdaRec3UnD{
F1()
-> non
empty set ,
F2()
-> Element of
F1(),
F3()
-> Element of
F1(),
F4()
-> Element of
F1(),
F5()
-> sequence of
F1(),
F6()
-> sequence of
F1(),
F7(
object ,
object ,
object ,
object )
-> Element of
F1() } :
provided
A1:
(
F5()
. 0 = F2() &
F5()
. 1
= F3() &
F5()
. 2
= F4() )
and A2:
for
n being
Nat holds
F5()
. (n + 3) = F7(
n,
(F5() . n),
(F5() . (n + 1)),
(F5() . (n + 2)))
and A3:
(
F6()
. 0 = F2() &
F6()
. 1
= F3() &
F6()
. 2
= F4() )
and A4:
for
n being
Nat holds
F6()
. (n + 3) = F7(
n,
(F6() . n),
(F6() . (n + 1)),
(F6() . (n + 2)))
scheme
LambdaRec4Un{
F1()
-> object ,
F2()
-> object ,
F3()
-> object ,
F4()
-> object ,
F5()
-> Function,
F6()
-> Function,
F7(
object ,
object ,
object ,
object ,
object )
-> object } :
provided
A1:
dom F5()
= NAT
and A2:
(
F5()
. 0 = F1() &
F5()
. 1
= F2() &
F5()
. 2
= F3() &
F5()
. 3
= F4() )
and A3:
for
n being
Nat holds
F5()
. (n + 4) = F7(
n,
(F5() . n),
(F5() . (n + 1)),
(F5() . (n + 2)),
(F5() . (n + 3)))
and A4:
dom F6()
= NAT
and A5:
(
F6()
. 0 = F1() &
F6()
. 1
= F2() &
F6()
. 2
= F3() &
F6()
. 3
= F4() )
and A6:
for
n being
Nat holds
F6()
. (n + 4) = F7(
n,
(F6() . n),
(F6() . (n + 1)),
(F6() . (n + 2)),
(F6() . (n + 3)))
scheme
LambdaRec4UnD{
F1()
-> non
empty set ,
F2()
-> Element of
F1(),
F3()
-> Element of
F1(),
F4()
-> Element of
F1(),
F5()
-> Element of
F1(),
F6()
-> sequence of
F1(),
F7()
-> sequence of
F1(),
F8(
object ,
object ,
object ,
object ,
object )
-> Element of
F1() } :
provided
A1:
(
F6()
. 0 = F2() &
F6()
. 1
= F3() &
F6()
. 2
= F4() &
F6()
. 3
= F5() )
and A2:
for
n being
Nat holds
F6()
. (n + 4) = F8(
n,
(F6() . n),
(F6() . (n + 1)),
(F6() . (n + 2)),
(F6() . (n + 3)))
and A3:
(
F7()
. 0 = F2() &
F7()
. 1
= F3() &
F7()
. 2
= F4() &
F7()
. 3
= F5() )
and A4:
for
n being
Nat holds
F7()
. (n + 4) = F8(
n,
(F7() . n),
(F7() . (n + 1)),
(F7() . (n + 2)),
(F7() . (n + 3)))