:: RECDEF_2 semantic presentation

definition
let c1 be set ;
given c2, c3, c4 being set such that E1: c1 = [c2,c3,c4] ;
func c1 `1_3 -> set means :Def1: :: RECDEF_2:def 1
for b1, b2, b3 being set holds
( a1 = [b1,b2,b3] implies a2 = b1 );
existence
ex b1 being set st
for b2, b3, b4 being set holds
( c1 = [b2,b3,b4] implies b1 = b2 )
proof end;
uniqueness
for b1, b2 being set holds
( ( for b3, b4, b5 being set holds
( c1 = [b3,b4,b5] implies b1 = b3 ) ) & ( for b3, b4, b5 being set holds
( c1 = [b3,b4,b5] implies b2 = b3 ) ) implies b1 = b2 )
proof end;
func c1 `2_3 -> set means :Def2: :: RECDEF_2:def 2
for b1, b2, b3 being set holds
( a1 = [b1,b2,b3] implies a2 = b2 );
existence
ex b1 being set st
for b2, b3, b4 being set holds
( c1 = [b2,b3,b4] implies b1 = b3 )
proof end;
uniqueness
for b1, b2 being set holds
( ( for b3, b4, b5 being set holds
( c1 = [b3,b4,b5] implies b1 = b4 ) ) & ( for b3, b4, b5 being set holds
( c1 = [b3,b4,b5] implies b2 = b4 ) ) implies b1 = b2 )
proof end;
func c1 `3_3 -> set means :Def3: :: RECDEF_2:def 3
for b1, b2, b3 being set holds
( a1 = [b1,b2,b3] implies a2 = b3 );
existence
ex b1 being set st
for b2, b3, b4 being set holds
( c1 = [b2,b3,b4] implies b1 = b4 )
proof end;
uniqueness
for b1, b2 being set holds
( ( for b3, b4, b5 being set holds
( c1 = [b3,b4,b5] implies b1 = b5 ) ) & ( for b3, b4, b5 being set holds
( c1 = [b3,b4,b5] implies b2 = b5 ) ) implies b1 = b2 )
proof end;
end;

:: deftheorem Def1 defines `1_3 RECDEF_2:def 1 :
for b1 being set holds
( ex b2, b3, b4 being set st b1 = [b2,b3,b4] implies for b2 being set holds
( b2 = b1 `1_3 iff for b3, b4, b5 being set holds
( b1 = [b3,b4,b5] implies b2 = b3 ) ) );

:: deftheorem Def2 defines `2_3 RECDEF_2:def 2 :
for b1 being set holds
( ex b2, b3, b4 being set st b1 = [b2,b3,b4] implies for b2 being set holds
( b2 = b1 `2_3 iff for b3, b4, b5 being set holds
( b1 = [b3,b4,b5] implies b2 = b4 ) ) );

:: deftheorem Def3 defines `3_3 RECDEF_2:def 3 :
for b1 being set holds
( ex b2, b3, b4 being set st b1 = [b2,b3,b4] implies for b2 being set holds
( b2 = b1 `3_3 iff for b3, b4, b5 being set holds
( b1 = [b3,b4,b5] implies b2 = b5 ) ) );

theorem Th1: :: RECDEF_2:1
for b1 being set holds
( ex b2, b3, b4 being set st b1 = [b2,b3,b4] implies b1 = [(b1 `1_3 ),(b1 `2_3 ),(b1 `3_3 )] )
proof end;

theorem Th2: :: RECDEF_2:2
for b1, b2, b3, b4 being set holds
( b1 in [:b2,b3,b4:] implies ( b1 `1_3 in b2 & b1 `2_3 in b3 & b1 `3_3 in b4 ) )
proof end;

theorem Th3: :: RECDEF_2:3
for b1, b2, b3, b4 being set holds
( b1 in [:b2,b3,b4:] implies b1 = [(b1 `1_3 ),(b1 `2_3 ),(b1 `3_3 )] )
proof end;

definition
let c1 be set ;
given c2, c3, c4, c5 being set such that E5: c1 = [c2,c3,c4,c5] ;
func c1 `1_4 -> set means :Def4: :: RECDEF_2:def 4
for b1, b2, b3, b4 being set holds
( a1 = [b1,b2,b3,b4] implies a2 = b1 );
existence
ex b1 being set st
for b2, b3, b4, b5 being set holds
( c1 = [b2,b3,b4,b5] implies b1 = b2 )
proof end;
uniqueness
for b1, b2 being set holds
( ( for b3, b4, b5, b6 being set holds
( c1 = [b3,b4,b5,b6] implies b1 = b3 ) ) & ( for b3, b4, b5, b6 being set holds
( c1 = [b3,b4,b5,b6] implies b2 = b3 ) ) implies b1 = b2 )
proof end;
func c1 `2_4 -> set means :Def5: :: RECDEF_2:def 5
for b1, b2, b3, b4 being set holds
( a1 = [b1,b2,b3,b4] implies a2 = b2 );
existence
ex b1 being set st
for b2, b3, b4, b5 being set holds
( c1 = [b2,b3,b4,b5] implies b1 = b3 )
proof end;
uniqueness
for b1, b2 being set holds
( ( for b3, b4, b5, b6 being set holds
( c1 = [b3,b4,b5,b6] implies b1 = b4 ) ) & ( for b3, b4, b5, b6 being set holds
( c1 = [b3,b4,b5,b6] implies b2 = b4 ) ) implies b1 = b2 )
proof end;
func c1 `3_4 -> set means :Def6: :: RECDEF_2:def 6
for b1, b2, b3, b4 being set holds
( a1 = [b1,b2,b3,b4] implies a2 = b3 );
existence
ex b1 being set st
for b2, b3, b4, b5 being set holds
( c1 = [b2,b3,b4,b5] implies b1 = b4 )
proof end;
uniqueness
for b1, b2 being set holds
( ( for b3, b4, b5, b6 being set holds
( c1 = [b3,b4,b5,b6] implies b1 = b5 ) ) & ( for b3, b4, b5, b6 being set holds
( c1 = [b3,b4,b5,b6] implies b2 = b5 ) ) implies b1 = b2 )
proof end;
func c1 `4_4 -> set means :Def7: :: RECDEF_2:def 7
for b1, b2, b3, b4 being set holds
( a1 = [b1,b2,b3,b4] implies a2 = b4 );
existence
ex b1 being set st
for b2, b3, b4, b5 being set holds
( c1 = [b2,b3,b4,b5] implies b1 = b5 )
proof end;
uniqueness
for b1, b2 being set holds
( ( for b3, b4, b5, b6 being set holds
( c1 = [b3,b4,b5,b6] implies b1 = b6 ) ) & ( for b3, b4, b5, b6 being set holds
( c1 = [b3,b4,b5,b6] implies b2 = b6 ) ) implies b1 = b2 )
proof end;
end;

:: deftheorem Def4 defines `1_4 RECDEF_2:def 4 :
for b1 being set holds
( ex b2, b3, b4, b5 being set st b1 = [b2,b3,b4,b5] implies for b2 being set holds
( b2 = b1 `1_4 iff for b3, b4, b5, b6 being set holds
( b1 = [b3,b4,b5,b6] implies b2 = b3 ) ) );

:: deftheorem Def5 defines `2_4 RECDEF_2:def 5 :
for b1 being set holds
( ex b2, b3, b4, b5 being set st b1 = [b2,b3,b4,b5] implies for b2 being set holds
( b2 = b1 `2_4 iff for b3, b4, b5, b6 being set holds
( b1 = [b3,b4,b5,b6] implies b2 = b4 ) ) );

:: deftheorem Def6 defines `3_4 RECDEF_2:def 6 :
for b1 being set holds
( ex b2, b3, b4, b5 being set st b1 = [b2,b3,b4,b5] implies for b2 being set holds
( b2 = b1 `3_4 iff for b3, b4, b5, b6 being set holds
( b1 = [b3,b4,b5,b6] implies b2 = b5 ) ) );

:: deftheorem Def7 defines `4_4 RECDEF_2:def 7 :
for b1 being set holds
( ex b2, b3, b4, b5 being set st b1 = [b2,b3,b4,b5] implies for b2 being set holds
( b2 = b1 `4_4 iff for b3, b4, b5, b6 being set holds
( b1 = [b3,b4,b5,b6] implies b2 = b6 ) ) );

theorem Th4: :: RECDEF_2:4
for b1 being set holds
( ex b2, b3, b4, b5 being set st b1 = [b2,b3,b4,b5] implies b1 = [(b1 `1_4 ),(b1 `2_4 ),(b1 `3_4 ),(b1 `4_4 )] )
proof end;

theorem Th5: :: RECDEF_2:5
for b1, b2, b3, b4, b5 being set holds
( b1 in [:b2,b3,b4,b5:] implies ( b1 `1_4 in b2 & b1 `2_4 in b3 & b1 `3_4 in b4 & b1 `4_4 in b5 ) )
proof end;

theorem Th6: :: RECDEF_2:6
for b1, b2, b3, b4, b5 being set holds
( b1 in [:b2,b3,b4,b5:] implies b1 = [(b1 `1_4 ),(b1 `2_4 ),(b1 `3_4 ),(b1 `4_4 )] )
proof end;

definition
let c1 be set ;
given c2, c3, c4, c5, c6 being set such that E10: c1 = [c2,c3,c4,c5,c6] ;
func c1 `1_5 -> set means :Def8: :: RECDEF_2:def 8
for b1, b2, b3, b4, b5 being set holds
( a1 = [b1,b2,b3,b4,b5] implies a2 = b1 );
existence
ex b1 being set st
for b2, b3, b4, b5, b6 being set holds
( c1 = [b2,b3,b4,b5,b6] implies b1 = b2 )
proof end;
uniqueness
for b1, b2 being set holds
( ( for b3, b4, b5, b6, b7 being set holds
( c1 = [b3,b4,b5,b6,b7] implies b1 = b3 ) ) & ( for b3, b4, b5, b6, b7 being set holds
( c1 = [b3,b4,b5,b6,b7] implies b2 = b3 ) ) implies b1 = b2 )
proof end;
func c1 `2_5 -> set means :Def9: :: RECDEF_2:def 9
for b1, b2, b3, b4, b5 being set holds
( a1 = [b1,b2,b3,b4,b5] implies a2 = b2 );
existence
ex b1 being set st
for b2, b3, b4, b5, b6 being set holds
( c1 = [b2,b3,b4,b5,b6] implies b1 = b3 )
proof end;
uniqueness
for b1, b2 being set holds
( ( for b3, b4, b5, b6, b7 being set holds
( c1 = [b3,b4,b5,b6,b7] implies b1 = b4 ) ) & ( for b3, b4, b5, b6, b7 being set holds
( c1 = [b3,b4,b5,b6,b7] implies b2 = b4 ) ) implies b1 = b2 )
proof end;
func c1 `3_5 -> set means :Def10: :: RECDEF_2:def 10
for b1, b2, b3, b4, b5 being set holds
( a1 = [b1,b2,b3,b4,b5] implies a2 = b3 );
existence
ex b1 being set st
for b2, b3, b4, b5, b6 being set holds
( c1 = [b2,b3,b4,b5,b6] implies b1 = b4 )
proof end;
uniqueness
for b1, b2 being set holds
( ( for b3, b4, b5, b6, b7 being set holds
( c1 = [b3,b4,b5,b6,b7] implies b1 = b5 ) ) & ( for b3, b4, b5, b6, b7 being set holds
( c1 = [b3,b4,b5,b6,b7] implies b2 = b5 ) ) implies b1 = b2 )
proof end;
func c1 `4_5 -> set means :Def11: :: RECDEF_2:def 11
for b1, b2, b3, b4, b5 being set holds
( a1 = [b1,b2,b3,b4,b5] implies a2 = b4 );
existence
ex b1 being set st
for b2, b3, b4, b5, b6 being set holds
( c1 = [b2,b3,b4,b5,b6] implies b1 = b5 )
proof end;
uniqueness
for b1, b2 being set holds
( ( for b3, b4, b5, b6, b7 being set holds
( c1 = [b3,b4,b5,b6,b7] implies b1 = b6 ) ) & ( for b3, b4, b5, b6, b7 being set holds
( c1 = [b3,b4,b5,b6,b7] implies b2 = b6 ) ) implies b1 = b2 )
proof end;
func c1 `5_5 -> set means :Def12: :: RECDEF_2:def 12
for b1, b2, b3, b4, b5 being set holds
( a1 = [b1,b2,b3,b4,b5] implies a2 = b5 );
existence
ex b1 being set st
for b2, b3, b4, b5, b6 being set holds
( c1 = [b2,b3,b4,b5,b6] implies b1 = b6 )
proof end;
uniqueness
for b1, b2 being set holds
( ( for b3, b4, b5, b6, b7 being set holds
( c1 = [b3,b4,b5,b6,b7] implies b1 = b7 ) ) & ( for b3, b4, b5, b6, b7 being set holds
( c1 = [b3,b4,b5,b6,b7] implies b2 = b7 ) ) implies b1 = b2 )
proof end;
end;

:: deftheorem Def8 defines `1_5 RECDEF_2:def 8 :
for b1 being set holds
( ex b2, b3, b4, b5, b6 being set st b1 = [b2,b3,b4,b5,b6] implies for b2 being set holds
( b2 = b1 `1_5 iff for b3, b4, b5, b6, b7 being set holds
( b1 = [b3,b4,b5,b6,b7] implies b2 = b3 ) ) );

:: deftheorem Def9 defines `2_5 RECDEF_2:def 9 :
for b1 being set holds
( ex b2, b3, b4, b5, b6 being set st b1 = [b2,b3,b4,b5,b6] implies for b2 being set holds
( b2 = b1 `2_5 iff for b3, b4, b5, b6, b7 being set holds
( b1 = [b3,b4,b5,b6,b7] implies b2 = b4 ) ) );

:: deftheorem Def10 defines `3_5 RECDEF_2:def 10 :
for b1 being set holds
( ex b2, b3, b4, b5, b6 being set st b1 = [b2,b3,b4,b5,b6] implies for b2 being set holds
( b2 = b1 `3_5 iff for b3, b4, b5, b6, b7 being set holds
( b1 = [b3,b4,b5,b6,b7] implies b2 = b5 ) ) );

:: deftheorem Def11 defines `4_5 RECDEF_2:def 11 :
for b1 being set holds
( ex b2, b3, b4, b5, b6 being set st b1 = [b2,b3,b4,b5,b6] implies for b2 being set holds
( b2 = b1 `4_5 iff for b3, b4, b5, b6, b7 being set holds
( b1 = [b3,b4,b5,b6,b7] implies b2 = b6 ) ) );

:: deftheorem Def12 defines `5_5 RECDEF_2:def 12 :
for b1 being set holds
( ex b2, b3, b4, b5, b6 being set st b1 = [b2,b3,b4,b5,b6] implies for b2 being set holds
( b2 = b1 `5_5 iff for b3, b4, b5, b6, b7 being set holds
( b1 = [b3,b4,b5,b6,b7] implies b2 = b7 ) ) );

theorem Th7: :: RECDEF_2:7
for b1 being set holds
( ex b2, b3, b4, b5, b6 being set st b1 = [b2,b3,b4,b5,b6] implies b1 = [(b1 `1_5 ),(b1 `2_5 ),(b1 `3_5 ),(b1 `4_5 ),(b1 `5_5 )] )
proof end;

theorem Th8: :: RECDEF_2:8
for b1, b2, b3, b4, b5, b6 being set holds
( b1 in [:b2,b3,b4,b5,b6:] implies ( b1 `1_5 in b2 & b1 `2_5 in b3 & b1 `3_5 in b4 & b1 `4_5 in b5 & b1 `5_5 in b6 ) )
proof end;

theorem Th9: :: RECDEF_2:9
for b1, b2, b3, b4, b5, b6 being set holds
( b1 in [:b2,b3,b4,b5,b6:] implies b1 = [(b1 `1_5 ),(b1 `2_5 ),(b1 `3_5 ),(b1 `4_5 ),(b1 `5_5 )] )
proof end;

scheme :: RECDEF_2:sch 1
s1{ F1() -> set , P1[ set ], P2[ set ], P3[ set ], F2( set ) -> set , F3( set ) -> set , F4( set ) -> set } :
ex b1 being Function st
( dom b1 = F1() & ( for b2 being set holds
( b2 in F1() implies ( ( P1[b2] implies b1 . b2 = F2(b2) ) & ( P2[b2] implies b1 . b2 = F3(b2) ) & ( P3[b2] implies b1 . b2 = F4(b2) ) ) ) ) )
provided
E16: for b1 being set holds
( b1 in F1() implies ( not ( P1[b1] & P2[b1] ) & not ( P1[b1] & P3[b1] ) & not ( P2[b1] & P3[b1] ) ) ) and E17: for b1 being set holds
not ( b1 in F1() & not P1[b1] & not P2[b1] & not P3[b1] )
proof end;

scheme :: RECDEF_2:sch 2
s2{ F1() -> set , P1[ set ], P2[ set ], P3[ set ], P4[ set ], F2( set ) -> set , F3( set ) -> set , F4( set ) -> set , F5( set ) -> set } :
ex b1 being Function st
( dom b1 = F1() & ( for b2 being set holds
( b2 in F1() implies ( ( P1[b2] implies b1 . b2 = F2(b2) ) & ( P2[b2] implies b1 . b2 = F3(b2) ) & ( P3[b2] implies b1 . b2 = F4(b2) ) & ( P4[b2] implies b1 . b2 = F5(b2) ) ) ) ) )
provided
E16: for b1 being set holds
( b1 in F1() implies ( not ( P1[b1] & P2[b1] ) & not ( P1[b1] & P3[b1] ) & not ( P1[b1] & P4[b1] ) & not ( P2[b1] & P3[b1] ) & not ( P2[b1] & P4[b1] ) & not ( P3[b1] & P4[b1] ) ) ) and E17: for b1 being set holds
not ( b1 in F1() & not P1[b1] & not P2[b1] & not P3[b1] & not P4[b1] )
proof end;

scheme :: RECDEF_2:sch 3
s3{ F1() -> non empty set , F2() -> non empty set , F3() -> Element of F1(), F4() -> Element of F2(), P1[ set , set , set , set , set ] } :
ex b1 being Function of NAT ,F1()ex b2 being Function of NAT ,F2() st
( b1 . 0 = F3() & b2 . 0 = F4() & ( for b3 being Element of NAT holds P1[b3,b1 . b3,b2 . b3,b1 . (b3 + 1),b2 . (b3 + 1)] ) )
provided
E16: for b1 being Element of NAT
for b2 being Element of F1()
for b3 being Element of F2() holds
ex b4 being Element of F1()ex b5 being Element of F2() st P1[b1,b2,b3,b4,b5]
proof end;

scheme :: RECDEF_2:sch 4
s4{ F1() -> set , F2() -> set , F3( set , set , set ) -> set } :
ex b1 being Function st
( dom b1 = NAT & b1 . 0 = F1() & b1 . 1 = F2() & ( for b2 being Nat holds b1 . (b2 + 2) = F3(b2,(b1 . b2),(b1 . (b2 + 1))) ) )
proof end;

scheme :: RECDEF_2:sch 5
s5{ F1() -> non empty set , F2() -> Element of F1(), F3() -> Element of F1(), F4( set , set , set ) -> Element of F1() } :
ex b1 being Function of NAT ,F1() st
( b1 . 0 = F2() & b1 . 1 = F3() & ( for b2 being Nat holds b1 . (b2 + 2) = F4(b2,(b1 . b2),(b1 . (b2 + 1))) ) )
proof end;

scheme :: RECDEF_2:sch 6
s6{ F1() -> set , F2() -> set , F3() -> Function, F4() -> Function, F5( set , set , set ) -> set } :
F3() = F4()
provided
E16: dom F3() = NAT and E17: ( F3() . 0 = F1() & F3() . 1 = F2() ) and E18: for b1 being Nat holds F3() . (b1 + 2) = F5(b1,(F3() . b1),(F3() . (b1 + 1))) and E19: dom F4() = NAT and E20: ( F4() . 0 = F1() & F4() . 1 = F2() ) and E21: for b1 being Nat holds F4() . (b1 + 2) = F5(b1,(F4() . b1),(F4() . (b1 + 1)))
proof end;

scheme :: RECDEF_2:sch 7
s7{ F1() -> non empty set , F2() -> Element of F1(), F3() -> Element of F1(), F4() -> Function of NAT ,F1(), F5() -> Function of NAT ,F1(), F6( set , set , set ) -> Element of F1() } :
F4() = F5()
provided
E16: ( F4() . 0 = F2() & F4() . 1 = F3() ) and E17: for b1 being Nat holds F4() . (b1 + 2) = F6(b1,(F4() . b1),(F4() . (b1 + 1))) and E18: ( F5() . 0 = F2() & F5() . 1 = F3() ) and E19: for b1 being Nat holds F5() . (b1 + 2) = F6(b1,(F5() . b1),(F5() . (b1 + 1)))
proof end;

scheme :: RECDEF_2:sch 8
s8{ F1() -> set , F2() -> set , F3() -> set , F4( set , set , set , set ) -> set } :
ex b1 being Function st
( dom b1 = NAT & b1 . 0 = F1() & b1 . 1 = F2() & b1 . 2 = F3() & ( for b2 being Nat holds b1 . (b2 + 3) = F4(b2,(b1 . b2),(b1 . (b2 + 1)),(b1 . (b2 + 2))) ) )
proof end;

scheme :: RECDEF_2:sch 9
s9{ F1() -> non empty set , F2() -> Element of F1(), F3() -> Element of F1(), F4() -> Element of F1(), F5( set , set , set , set ) -> Element of F1() } :
ex b1 being Function of NAT ,F1() st
( b1 . 0 = F2() & b1 . 1 = F3() & b1 . 2 = F4() & ( for b2 being Nat holds b1 . (b2 + 3) = F5(b2,(b1 . b2),(b1 . (b2 + 1)),(b1 . (b2 + 2))) ) )
proof end;

scheme :: RECDEF_2:sch 10
s10{ F1() -> set , F2() -> set , F3() -> set , F4() -> Function, F5() -> Function, F6( set , set , set , set ) -> set } :
F4() = F5()
provided
E16: dom F4() = NAT and E17: ( F4() . 0 = F1() & F4() . 1 = F2() & F4() . 2 = F3() ) and E18: for b1 being Nat holds F4() . (b1 + 3) = F6(b1,(F4() . b1),(F4() . (b1 + 1)),(F4() . (b1 + 2))) and E19: dom F5() = NAT and E20: ( F5() . 0 = F1() & F5() . 1 = F2() & F5() . 2 = F3() ) and E21: for b1 being Nat holds F5() . (b1 + 3) = F6(b1,(F5() . b1),(F5() . (b1 + 1)),(F5() . (b1 + 2)))
proof end;

scheme :: RECDEF_2:sch 11
s11{ F1() -> non empty set , F2() -> Element of F1(), F3() -> Element of F1(), F4() -> Element of F1(), F5() -> Function of NAT ,F1(), F6() -> Function of NAT ,F1(), F7( set , set , set , set ) -> Element of F1() } :
F5() = F6()
provided
E16: ( F5() . 0 = F2() & F5() . 1 = F3() & F5() . 2 = F4() ) and E17: for b1 being Nat holds F5() . (b1 + 3) = F7(b1,(F5() . b1),(F5() . (b1 + 1)),(F5() . (b1 + 2))) and E18: ( F6() . 0 = F2() & F6() . 1 = F3() & F6() . 2 = F4() ) and E19: for b1 being Nat holds F6() . (b1 + 3) = F7(b1,(F6() . b1),(F6() . (b1 + 1)),(F6() . (b1 + 2)))
proof end;

scheme :: RECDEF_2:sch 12
s12{ F1() -> set , F2() -> set , F3() -> set , F4() -> set , F5( set , set , set , set , set ) -> set } :
ex b1 being Function st
( dom b1 = NAT & b1 . 0 = F1() & b1 . 1 = F2() & b1 . 2 = F3() & b1 . 3 = F4() & ( for b2 being Nat holds b1 . (b2 + 4) = F5(b2,(b1 . b2),(b1 . (b2 + 1)),(b1 . (b2 + 2)),(b1 . (b2 + 3))) ) )
proof end;

scheme :: RECDEF_2:sch 13
s13{ F1() -> non empty set , F2() -> Element of F1(), F3() -> Element of F1(), F4() -> Element of F1(), F5() -> Element of F1(), F6( set , set , set , set , set ) -> Element of F1() } :
ex b1 being Function of NAT ,F1() st
( b1 . 0 = F2() & b1 . 1 = F3() & b1 . 2 = F4() & b1 . 3 = F5() & ( for b2 being Nat holds b1 . (b2 + 4) = F6(b2,(b1 . b2),(b1 . (b2 + 1)),(b1 . (b2 + 2)),(b1 . (b2 + 3))) ) )
proof end;

scheme :: RECDEF_2:sch 14
s14{ F1() -> set , F2() -> set , F3() -> set , F4() -> set , F5() -> Function, F6() -> Function, F7( set , set , set , set , set ) -> set } :
F5() = F6()
provided
E16: dom F5() = NAT and E17: ( F5() . 0 = F1() & F5() . 1 = F2() & F5() . 2 = F3() & F5() . 3 = F4() ) and E18: for b1 being Nat holds F5() . (b1 + 4) = F7(b1,(F5() . b1),(F5() . (b1 + 1)),(F5() . (b1 + 2)),(F5() . (b1 + 3))) and E19: dom F6() = NAT and E20: ( F6() . 0 = F1() & F6() . 1 = F2() & F6() . 2 = F3() & F6() . 3 = F4() ) and E21: for b1 being Nat holds F6() . (b1 + 4) = F7(b1,(F6() . b1),(F6() . (b1 + 1)),(F6() . (b1 + 2)),(F6() . (b1 + 3)))
proof end;

scheme :: RECDEF_2:sch 15
s15{ F1() -> non empty set , F2() -> Element of F1(), F3() -> Element of F1(), F4() -> Element of F1(), F5() -> Element of F1(), F6() -> Function of NAT ,F1(), F7() -> Function of NAT ,F1(), F8( set , set , set , set , set ) -> Element of F1() } :
F6() = F7()
provided
E16: ( F6() . 0 = F2() & F6() . 1 = F3() & F6() . 2 = F4() & F6() . 3 = F5() ) and E17: for b1 being Nat holds F6() . (b1 + 4) = F8(b1,(F6() . b1),(F6() . (b1 + 1)),(F6() . (b1 + 2)),(F6() . (b1 + 3))) and E18: ( F7() . 0 = F2() & F7() . 1 = F3() & F7() . 2 = F4() & F7() . 3 = F5() ) and E19: for b1 being Nat holds F7() . (b1 + 4) = F8(b1,(F7() . b1),(F7() . (b1 + 1)),(F7() . (b1 + 2)),(F7() . (b1 + 3)))
proof end;