:: RECDEF_2 semantic presentation begin definition let x be triple set ; consider x1, x2, x3 being set such that A1: x = [x1,x2,x3] by XTUPLE_0:def_5; A2: [x1,x2,x3] `1_3 = x1 ; A3: [x1,x2,x3] `2_3 = x2 ; A4: [x1,x2,x3] `3_3 = x3 ; redefine func x `1_3 means :Def1: :: RECDEF_2:def 1 for y1, y2, y3 being set st x = [y1,y2,y3] holds it = y1; compatibility for b1 being set holds ( b1 = x `1_3 iff for y1, y2, y3 being set st x = [y1,y2,y3] holds b1 = y1 ) by A1, A2, XTUPLE_0:3; redefine func x `2_3 means :Def2: :: RECDEF_2:def 2 for y1, y2, y3 being set st x = [y1,y2,y3] holds it = y2; compatibility for b1 being set holds ( b1 = x `2_3 iff for y1, y2, y3 being set st x = [y1,y2,y3] holds b1 = y2 ) by A1, A3, XTUPLE_0:3; redefine func x `2 means :Def3: :: RECDEF_2:def 3 for y1, y2, y3 being set st x = [y1,y2,y3] holds it = y3; compatibility for b1 being set holds ( b1 = x `3_3 iff for y1, y2, y3 being set st x = [y1,y2,y3] holds b1 = y3 ) by A1, A4, XTUPLE_0:3; end; :: deftheorem Def1 defines `1_3 RECDEF_2:def_1_:_ for x being triple set for b2 being set holds ( b2 = x `1_3 iff for y1, y2, y3 being set st x = [y1,y2,y3] holds b2 = y1 ); :: deftheorem Def2 defines `2_3 RECDEF_2:def_2_:_ for x being triple set for b2 being set holds ( b2 = x `2_3 iff for y1, y2, y3 being set st x = [y1,y2,y3] holds b2 = y2 ); :: deftheorem Def3 defines `3_3 RECDEF_2:def_3_:_ for x being triple set for b2 being set holds ( b2 = x `3_3 iff for y1, y2, y3 being set st x = [y1,y2,y3] holds b2 = y3 ); theorem Th1: :: RECDEF_2:1 for z being set st ex a, b, c being set st z = [a,b,c] holds z = [(z `1_3),(z `2_3),(z `3_3)] proof let z be set ; ::_thesis: ( ex a, b, c being set st z = [a,b,c] implies z = [(z `1_3),(z `2_3),(z `3_3)] ) given a, b, c being set such that A1: z = [a,b,c] ; ::_thesis: z = [(z `1_3),(z `2_3),(z `3_3)] ( z `1_3 = a & z `2_3 = b ) by A1, Def1, Def2; hence z = [(z `1_3),(z `2_3),(z `3_3)] by A1, Def3; ::_thesis: verum end; theorem :: RECDEF_2:2 for z, A, B, C being set st z in [:A,B,C:] holds ( z `1_3 in A & z `2_3 in B & z `3_3 in C ) proof let z, A, B, C be set ; ::_thesis: ( z in [:A,B,C:] implies ( z `1_3 in A & z `2_3 in B & z `3_3 in C ) ) assume A1: z in [:A,B,C:] ; ::_thesis: ( z `1_3 in A & z `2_3 in B & z `3_3 in C ) then A2: not C is empty by MCART_1:31; A3: ( not A is empty & not B is empty ) by A1, MCART_1:31; then consider a being Element of A, b being Element of B, c being Element of C such that A4: z = [a,b,c] by A1, A2, DOMAIN_1:3; A5: z `3_3 = c by A4, Def3; ( z `1_3 = a & z `2_3 = b ) by A4, Def1, Def2; hence ( z `1_3 in A & z `2_3 in B & z `3_3 in C ) by A3, A2, A5; ::_thesis: verum end; theorem Th3: :: RECDEF_2:3 for z, A, B, C being set st z in [:A,B,C:] holds z = [(z `1_3),(z `2_3),(z `3_3)] proof let z, A, B, C be set ; ::_thesis: ( z in [:A,B,C:] implies z = [(z `1_3),(z `2_3),(z `3_3)] ) assume A1: z in [:A,B,C:] ; ::_thesis: z = [(z `1_3),(z `2_3),(z `3_3)] then A2: not C is empty by MCART_1:31; ( not A is empty & not B is empty ) by A1, MCART_1:31; then ex a being Element of A ex b being Element of B ex c being Element of C st z = [a,b,c] by A1, A2, DOMAIN_1:3; hence z = [(z `1_3),(z `2_3),(z `3_3)] by Th1; ::_thesis: verum end; definition let x be quadruple set ; consider x1, x2, x3, x4 being set such that A1: x = [x1,x2,x3,x4] by XTUPLE_0:def_9; A2: [x1,x2,x3,x4] `1_4 = x1 ; A3: [x1,x2,x3,x4] `2_4 = x2 ; A4: [x1,x2,x3,x4] `3_4 = x3 ; A5: [x1,x2,x3,x4] `4_4 = x4 ; redefine func x `1_4 means :Def4: :: RECDEF_2:def 4 for y1, y2, y3, y4 being set st x = [y1,y2,y3,y4] holds it = y1; compatibility for b1 being set holds ( b1 = x `1_4 iff for y1, y2, y3, y4 being set st x = [y1,y2,y3,y4] holds b1 = y1 ) by A1, A2, XTUPLE_0:5; redefine func x `2_4 means :Def5: :: RECDEF_2:def 5 for y1, y2, y3, y4 being set st x = [y1,y2,y3,y4] holds it = y2; compatibility for b1 being set holds ( b1 = x `2_4 iff for y1, y2, y3, y4 being set st x = [y1,y2,y3,y4] holds b1 = y2 ) by A1, A3, XTUPLE_0:5; redefine func x `2_3 means :Def6: :: RECDEF_2:def 6 for y1, y2, y3, y4 being set st x = [y1,y2,y3,y4] holds it = y3; compatibility for b1 being set holds ( b1 = x `2_3 iff for y1, y2, y3, y4 being set st x = [y1,y2,y3,y4] holds b1 = y3 ) by A1, A4, XTUPLE_0:5; redefine func x `2 means :Def7: :: RECDEF_2:def 7 for y1, y2, y3, y4 being set st x = [y1,y2,y3,y4] holds it = y4; compatibility for b1 being set holds ( b1 = x `3_3 iff for y1, y2, y3, y4 being set st x = [y1,y2,y3,y4] holds b1 = y4 ) by A1, A5, XTUPLE_0:5; end; :: deftheorem Def4 defines `1_4 RECDEF_2:def_4_:_ for x being quadruple set for b2 being set holds ( b2 = x `1_4 iff for y1, y2, y3, y4 being set st x = [y1,y2,y3,y4] holds b2 = y1 ); :: deftheorem Def5 defines `2_4 RECDEF_2:def_5_:_ for x being quadruple set for b2 being set holds ( b2 = x `2_4 iff for y1, y2, y3, y4 being set st x = [y1,y2,y3,y4] holds b2 = y2 ); :: deftheorem Def6 defines `2_3 RECDEF_2:def_6_:_ for x being quadruple set for b2 being set holds ( b2 = x `2_3 iff for y1, y2, y3, y4 being set st x = [y1,y2,y3,y4] holds b2 = y3 ); :: deftheorem Def7 defines `3_3 RECDEF_2:def_7_:_ for x being quadruple set for b2 being set holds ( b2 = x `3_3 iff for y1, y2, y3, y4 being set st x = [y1,y2,y3,y4] holds b2 = y4 ); theorem Th4: :: RECDEF_2:4 for z being set st ex a, b, c, d being set st z = [a,b,c,d] holds z = [(z `1_4),(z `2_4),(z `3_4),(z `4_4)] proof let z be set ; ::_thesis: ( ex a, b, c, d being set st z = [a,b,c,d] implies z = [(z `1_4),(z `2_4),(z `3_4),(z `4_4)] ) given a, b, c, d being set such that A1: z = [a,b,c,d] ; ::_thesis: z = [(z `1_4),(z `2_4),(z `3_4),(z `4_4)] A2: z `3_4 = c by A1, Def6; ( z `1_4 = a & z `2_4 = b ) by A1, Def4, Def5; hence z = [(z `1_4),(z `2_4),(z `3_4),(z `4_4)] by A1, A2, Def7; ::_thesis: verum end; theorem :: RECDEF_2:5 for z, A, B, C, D being set st z in [:A,B,C,D:] holds ( z `1_4 in A & z `2_4 in B & z `3_4 in C & z `4_4 in D ) proof let z, A, B, C, D be set ; ::_thesis: ( z in [:A,B,C,D:] implies ( z `1_4 in A & z `2_4 in B & z `3_4 in C & z `4_4 in D ) ) assume A1: z in [:A,B,C,D:] ; ::_thesis: ( z `1_4 in A & z `2_4 in B & z `3_4 in C & z `4_4 in D ) then A2: ( not C is empty & not D is empty ) by MCART_1:51; A3: ( not A is empty & not B is empty ) by A1, MCART_1:51; then consider a being Element of A, b being Element of B, c being Element of C, d being Element of D such that A4: z = [a,b,c,d] by A1, A2, DOMAIN_1:10; A5: ( z `3_4 = c & z `4_4 = d ) by A4, Def6, Def7; ( z `1_4 = a & z `2_4 = b ) by A4, Def4, Def5; hence ( z `1_4 in A & z `2_4 in B & z `3_4 in C & z `4_4 in D ) by A3, A2, A5; ::_thesis: verum end; theorem :: RECDEF_2:6 for z, A, B, C, D being set st z in [:A,B,C,D:] holds z = [(z `1_4),(z `2_4),(z `3_4),(z `4_4)] proof let z, A, B, C, D be set ; ::_thesis: ( z in [:A,B,C,D:] implies z = [(z `1_4),(z `2_4),(z `3_4),(z `4_4)] ) assume A1: z in [:A,B,C,D:] ; ::_thesis: z = [(z `1_4),(z `2_4),(z `3_4),(z `4_4)] then A2: ( not C is empty & not D is empty ) by MCART_1:51; ( not A is empty & not B is empty ) by A1, MCART_1:51; then ex a being Element of A ex b being Element of B ex c being Element of C ex d being Element of D st z = [a,b,c,d] by A1, A2, DOMAIN_1:10; hence z = [(z `1_4),(z `2_4),(z `3_4),(z `4_4)] by Th4; ::_thesis: verum end; definition canceled; canceled; canceled; canceled; canceled; end; :: deftheorem RECDEF_2:def_8_:_ canceled; :: deftheorem RECDEF_2:def_9_:_ canceled; :: deftheorem RECDEF_2:def_10_:_ canceled; :: deftheorem RECDEF_2:def_11_:_ canceled; :: deftheorem RECDEF_2:def_12_:_ canceled; theorem :: RECDEF_2:7 canceled; theorem :: RECDEF_2:8 canceled; theorem :: RECDEF_2:9 canceled; scheme :: RECDEF_2:sch 1 ExFunc3Cond{ F1() -> set , P1[ set ], P2[ set ], P3[ set ], F2( set ) -> set , F3( set ) -> set , F4( set ) -> set } : 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] ) proof consider D1 being set such that A3: for x being set holds ( x in D1 iff ( x in F1() & P1[x] ) ) from XBOOLE_0:sch_1(); consider D3 being set such that A4: for x being set holds ( x in D3 iff ( x in F1() & P3[x] ) ) from XBOOLE_0:sch_1(); consider f1 being Function such that A5: dom f1 = D1 and A6: for x being set st x in D1 holds f1 . x = F2(x) from FUNCT_1:sch_3(); consider D2 being set such that A7: for x being set holds ( x in D2 iff ( x in F1() & P2[x] ) ) from XBOOLE_0:sch_1(); consider f3 being Function such that A8: dom f3 = D3 and A9: for x being set st x in D3 holds f3 . x = F4(x) from FUNCT_1:sch_3(); consider f2 being Function such that A10: dom f2 = D2 and A11: for x being set st x in D2 holds f2 . x = F3(x) from FUNCT_1:sch_3(); set f = (f1 +* f2) +* f3; take (f1 +* f2) +* f3 ; ::_thesis: ( dom ((f1 +* f2) +* f3) = F1() & ( for c being set st c in F1() holds ( ( P1[c] implies ((f1 +* f2) +* f3) . c = F2(c) ) & ( P2[c] implies ((f1 +* f2) +* f3) . c = F3(c) ) & ( P3[c] implies ((f1 +* f2) +* f3) . c = F4(c) ) ) ) ) A12: dom ((f1 +* f2) +* f3) = (dom (f1 +* f2)) \/ (dom f3) by FUNCT_4:def_1 .= ((dom f1) \/ (dom f2)) \/ (dom f3) by FUNCT_4:def_1 ; thus dom ((f1 +* f2) +* f3) = F1() ::_thesis: for c being set st c in F1() holds ( ( P1[c] implies ((f1 +* f2) +* f3) . c = F2(c) ) & ( P2[c] implies ((f1 +* f2) +* f3) . c = F3(c) ) & ( P3[c] implies ((f1 +* f2) +* f3) . c = F4(c) ) ) proof A13: D3 c= F1() proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in D3 or x in F1() ) thus ( not x in D3 or x in F1() ) by A4; ::_thesis: verum end; A14: D2 c= F1() proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in D2 or x in F1() ) thus ( not x in D2 or x in F1() ) by A7; ::_thesis: verum end; D1 c= F1() proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in D1 or x in F1() ) thus ( not x in D1 or x in F1() ) by A3; ::_thesis: verum end; then D1 \/ D2 c= F1() by A14, XBOOLE_1:8; hence dom ((f1 +* f2) +* f3) c= F1() by A5, A10, A8, A12, A13, XBOOLE_1:8; :: according to XBOOLE_0:def_10 ::_thesis: F1() c= dom ((f1 +* f2) +* f3) let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in F1() or x in dom ((f1 +* f2) +* f3) ) assume A15: x in F1() ; ::_thesis: x in dom ((f1 +* f2) +* f3) then ( P1[x] or P2[x] or P3[x] ) by A2; then ( x in D1 or x in D2 or x in D3 ) by A3, A7, A4, A15; then ( x in D1 \/ D2 or x in D3 ) by XBOOLE_0:def_3; hence x in dom ((f1 +* f2) +* f3) by A5, A10, A8, A12, XBOOLE_0:def_3; ::_thesis: verum end; let c be set ; ::_thesis: ( c in F1() implies ( ( P1[c] implies ((f1 +* f2) +* f3) . c = F2(c) ) & ( P2[c] implies ((f1 +* f2) +* f3) . c = F3(c) ) & ( P3[c] implies ((f1 +* f2) +* f3) . c = F4(c) ) ) ) assume A16: c in F1() ; ::_thesis: ( ( P1[c] implies ((f1 +* f2) +* f3) . c = F2(c) ) & ( P2[c] implies ((f1 +* f2) +* f3) . c = F3(c) ) & ( P3[c] implies ((f1 +* f2) +* f3) . c = F4(c) ) ) hereby ::_thesis: ( ( P2[c] implies ((f1 +* f2) +* f3) . c = F3(c) ) & ( P3[c] implies ((f1 +* f2) +* f3) . c = F4(c) ) ) assume A17: P1[c] ; ::_thesis: ((f1 +* f2) +* f3) . c = F2(c) P2[c] by A1, A16, A17; then A19: not c in D2 by A7; P3[c] by A1, A16, A17; then not c in D3 by A4; hence ((f1 +* f2) +* f3) . c = (f1 +* f2) . c by A8, FUNCT_4:11 .= f1 . c by A10, A19, FUNCT_4:11 .= F2(c) by A6, A17, A3, A16 ; ::_thesis: verum end; hereby ::_thesis: ( P3[c] implies ((f1 +* f2) +* f3) . c = F4(c) ) assume A20: P2[c] ; ::_thesis: ((f1 +* f2) +* f3) . c = F3(c) P3[c] by A1, A16, A20; then not c in D3 by A4; hence ((f1 +* f2) +* f3) . c = (f1 +* f2) . c by A8, FUNCT_4:11 .= f2 . c by A10, A20, A7, A16, FUNCT_4:13 .= F3(c) by A11, A20, A7, A16 ; ::_thesis: verum end; assume Z: P3[c] ; ::_thesis: ((f1 +* f2) +* f3) . c = F4(c) hence ((f1 +* f2) +* f3) . c = f3 . c by A8, A4, A16, FUNCT_4:13 .= F4(c) by A9, Z, A4, A16 ; ::_thesis: verum end; scheme :: RECDEF_2:sch 2 ExFunc4Cond{ F1() -> set , P1[ set ], P2[ set ], P3[ set ], P4[ set ], F2( set ) -> set , F3( set ) -> set , F4( set ) -> set , F5( set ) -> set } : 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] ) proof consider D1 being set such that A3: for x being set holds ( x in D1 iff ( x in F1() & P1[x] ) ) from XBOOLE_0:sch_1(); consider D4 being set such that A4: for x being set holds ( x in D4 iff ( x in F1() & P4[x] ) ) from XBOOLE_0:sch_1(); consider f1 being Function such that A5: dom f1 = D1 and A6: for x being set st x in D1 holds f1 . x = F2(x) from FUNCT_1:sch_3(); consider D2 being set such that A7: for x being set holds ( x in D2 iff ( x in F1() & P2[x] ) ) from XBOOLE_0:sch_1(); consider f2 being Function such that A8: dom f2 = D2 and A9: for x being set st x in D2 holds f2 . x = F3(x) from FUNCT_1:sch_3(); consider D3 being set such that A10: for x being set holds ( x in D3 iff ( x in F1() & P3[x] ) ) from XBOOLE_0:sch_1(); consider f4 being Function such that A11: dom f4 = D4 and A12: for x being set st x in D4 holds f4 . x = F5(x) from FUNCT_1:sch_3(); consider f3 being Function such that A13: dom f3 = D3 and A14: for x being set st x in D3 holds f3 . x = F4(x) from FUNCT_1:sch_3(); set f = ((f1 +* f2) +* f3) +* f4; take ((f1 +* f2) +* f3) +* f4 ; ::_thesis: ( dom (((f1 +* f2) +* f3) +* f4) = F1() & ( for c being set st c in F1() holds ( ( P1[c] implies (((f1 +* f2) +* f3) +* f4) . c = F2(c) ) & ( P2[c] implies (((f1 +* f2) +* f3) +* f4) . c = F3(c) ) & ( P3[c] implies (((f1 +* f2) +* f3) +* f4) . c = F4(c) ) & ( P4[c] implies (((f1 +* f2) +* f3) +* f4) . c = F5(c) ) ) ) ) A15: dom (((f1 +* f2) +* f3) +* f4) = (dom ((f1 +* f2) +* f3)) \/ (dom f4) by FUNCT_4:def_1 .= ((dom (f1 +* f2)) \/ (dom f3)) \/ (dom f4) by FUNCT_4:def_1 .= (((dom f1) \/ (dom f2)) \/ (dom f3)) \/ (dom f4) by FUNCT_4:def_1 ; thus dom (((f1 +* f2) +* f3) +* f4) = F1() ::_thesis: for c being set st c in F1() holds ( ( P1[c] implies (((f1 +* f2) +* f3) +* f4) . c = F2(c) ) & ( P2[c] implies (((f1 +* f2) +* f3) +* f4) . c = F3(c) ) & ( P3[c] implies (((f1 +* f2) +* f3) +* f4) . c = F4(c) ) & ( P4[c] implies (((f1 +* f2) +* f3) +* f4) . c = F5(c) ) ) proof A16: D4 c= F1() proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in D4 or x in F1() ) thus ( not x in D4 or x in F1() ) by A4; ::_thesis: verum end; A17: D3 c= F1() proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in D3 or x in F1() ) thus ( not x in D3 or x in F1() ) by A10; ::_thesis: verum end; A18: D2 c= F1() proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in D2 or x in F1() ) thus ( not x in D2 or x in F1() ) by A7; ::_thesis: verum end; D1 c= F1() proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in D1 or x in F1() ) thus ( not x in D1 or x in F1() ) by A3; ::_thesis: verum end; then D1 \/ D2 c= F1() by A18, XBOOLE_1:8; then (D1 \/ D2) \/ D3 c= F1() by A17, XBOOLE_1:8; hence dom (((f1 +* f2) +* f3) +* f4) c= F1() by A5, A8, A13, A11, A15, A16, XBOOLE_1:8; :: according to XBOOLE_0:def_10 ::_thesis: F1() c= dom (((f1 +* f2) +* f3) +* f4) let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in F1() or x in dom (((f1 +* f2) +* f3) +* f4) ) assume A19: x in F1() ; ::_thesis: x in dom (((f1 +* f2) +* f3) +* f4) then ( P1[x] or P2[x] or P3[x] or P4[x] ) by A2; then ( x in D1 or x in D2 or x in D3 or x in D4 ) by A3, A7, A10, A4, A19; then ( x in D1 \/ D2 or x in D3 or x in D4 ) by XBOOLE_0:def_3; then ( x in (D1 \/ D2) \/ D3 or x in D4 ) by XBOOLE_0:def_3; hence x in dom (((f1 +* f2) +* f3) +* f4) by A5, A8, A13, A11, A15, XBOOLE_0:def_3; ::_thesis: verum end; let c be set ; ::_thesis: ( c in F1() implies ( ( P1[c] implies (((f1 +* f2) +* f3) +* f4) . c = F2(c) ) & ( P2[c] implies (((f1 +* f2) +* f3) +* f4) . c = F3(c) ) & ( P3[c] implies (((f1 +* f2) +* f3) +* f4) . c = F4(c) ) & ( P4[c] implies (((f1 +* f2) +* f3) +* f4) . c = F5(c) ) ) ) assume A20: c in F1() ; ::_thesis: ( ( P1[c] implies (((f1 +* f2) +* f3) +* f4) . c = F2(c) ) & ( P2[c] implies (((f1 +* f2) +* f3) +* f4) . c = F3(c) ) & ( P3[c] implies (((f1 +* f2) +* f3) +* f4) . c = F4(c) ) & ( P4[c] implies (((f1 +* f2) +* f3) +* f4) . c = F5(c) ) ) hereby ::_thesis: ( ( P2[c] implies (((f1 +* f2) +* f3) +* f4) . c = F3(c) ) & ( P3[c] implies (((f1 +* f2) +* f3) +* f4) . c = F4(c) ) & ( P4[c] implies (((f1 +* f2) +* f3) +* f4) . c = F5(c) ) ) assume A21: P1[c] ; ::_thesis: (((f1 +* f2) +* f3) +* f4) . c = F2(c) P3[c] by A1, A20, A21; then A23: not c in D3 by A10; P2[c] by A1, A20, A21; then A24: not c in D2 by A7; P4[c] by A1, A20, A21; then not c in D4 by A4; hence (((f1 +* f2) +* f3) +* f4) . c = ((f1 +* f2) +* f3) . c by A11, FUNCT_4:11 .= (f1 +* f2) . c by A13, A23, FUNCT_4:11 .= f1 . c by A8, A24, FUNCT_4:11 .= F2(c) by A6, A21, A3, A20 ; ::_thesis: verum end; hereby ::_thesis: ( ( P3[c] implies (((f1 +* f2) +* f3) +* f4) . c = F4(c) ) & ( P4[c] implies (((f1 +* f2) +* f3) +* f4) . c = F5(c) ) ) assume A25: P2[c] ; ::_thesis: (((f1 +* f2) +* f3) +* f4) . c = F3(c) P3[c] by A1, A20, A25; then A27: not c in D3 by A10; P4[c] by A1, A20, A25; then not c in D4 by A4; hence (((f1 +* f2) +* f3) +* f4) . c = ((f1 +* f2) +* f3) . c by A11, FUNCT_4:11 .= (f1 +* f2) . c by A13, A27, FUNCT_4:11 .= f2 . c by A8, A25, A7, A20, FUNCT_4:13 .= F3(c) by A9, A25, A7, A20 ; ::_thesis: verum end; hereby ::_thesis: ( P4[c] implies (((f1 +* f2) +* f3) +* f4) . c = F5(c) ) assume A28: P3[c] ; ::_thesis: (((f1 +* f2) +* f3) +* f4) . c = F4(c) P4[c] by A1, A20, A28; then not c in D4 by A4; hence (((f1 +* f2) +* f3) +* f4) . c = ((f1 +* f2) +* f3) . c by A11, FUNCT_4:11 .= f3 . c by A13, A28, A10, A20, FUNCT_4:13 .= F4(c) by A14, A28, A10, A20 ; ::_thesis: verum end; assume Z: P4[c] ; ::_thesis: (((f1 +* f2) +* f3) +* f4) . c = F5(c) hence (((f1 +* f2) +* f3) +* f4) . c = f4 . c by A11, A4, A20, FUNCT_4:13 .= F5(c) by A12, Z, A4, A20 ; ::_thesis: verum end; scheme :: RECDEF_2:sch 3 DoubleChoiceRec{ F1() -> non empty set , F2() -> non empty set , F3() -> Element of F1(), F4() -> Element of F2(), P1[ set , set , set , set , set ] } : ex f being Function of NAT,F1() ex g being Function of NAT,F2() st ( f . 0 = F3() & g . 0 = F4() & ( for n being Element of NAT holds P1[n,f . n,g . n,f . (n + 1),g . (n + 1)] ) ) provided A1: for n being Element of NAT for x being Element of F1() for y being Element of F2() ex x1 being Element of F1() ex y1 being Element of F2() st P1[n,x,y,x1,y1] proof defpred S1[ set , set , set ] means P1[$1,$2 `1 ,$2 `2 ,$3 `1 ,$3 `2 ]; A2: for n being Element of NAT for x being Element of [:F1(),F2():] ex y being Element of [:F1(),F2():] st S1[n,x,y] proof let n be Element of NAT ; ::_thesis: for x being Element of [:F1(),F2():] ex y being Element of [:F1(),F2():] st S1[n,x,y] let x be Element of [:F1(),F2():]; ::_thesis: ex y being Element of [:F1(),F2():] st S1[n,x,y] consider ai being Element of F1(), bi being Element of F2() such that A3: P1[n,x `1 ,x `2 ,ai,bi] by A1; take [ai,bi] ; ::_thesis: S1[n,x,[ai,bi]] thus S1[n,x,[ai,bi]] by A3; ::_thesis: verum end; consider f being Function of NAT,[:F1(),F2():] such that A4: f . 0 = [F3(),F4()] and A5: for e being Element of NAT holds S1[e,f . e,f . (e + 1)] from RECDEF_1:sch_2(A2); take pr1 f ; ::_thesis: ex g being Function of NAT,F2() st ( (pr1 f) . 0 = F3() & g . 0 = F4() & ( for n being Element of NAT holds P1[n,(pr1 f) . n,g . n,(pr1 f) . (n + 1),g . (n + 1)] ) ) take pr2 f ; ::_thesis: ( (pr1 f) . 0 = F3() & (pr2 f) . 0 = F4() & ( for n being Element of NAT holds P1[n,(pr1 f) . n,(pr2 f) . n,(pr1 f) . (n + 1),(pr2 f) . (n + 1)] ) ) ( [F3(),F4()] `1 = F3() & [F3(),F4()] `2 = F4() ) ; hence ( (pr1 f) . 0 = F3() & (pr2 f) . 0 = F4() ) by A4, FUNCT_2:def_5, FUNCT_2:def_6; ::_thesis: for n being Element of NAT holds P1[n,(pr1 f) . n,(pr2 f) . n,(pr1 f) . (n + 1),(pr2 f) . (n + 1)] let i be Element of NAT ; ::_thesis: P1[i,(pr1 f) . i,(pr2 f) . i,(pr1 f) . (i + 1),(pr2 f) . (i + 1)] A6: ( (f . (i + 1)) `1 = (pr1 f) . (i + 1) & (f . (i + 1)) `2 = (pr2 f) . (i + 1) ) by FUNCT_2:def_5, FUNCT_2:def_6; ( (f . i) `1 = (pr1 f) . i & (f . i) `2 = (pr2 f) . i ) by FUNCT_2:def_5, FUNCT_2:def_6; hence P1[i,(pr1 f) . i,(pr2 f) . i,(pr1 f) . (i + 1),(pr2 f) . (i + 1)] by A5, A6; ::_thesis: verum end; scheme :: RECDEF_2:sch 4 LambdaRec2Ex{ F1() -> set , F2() -> set , F3( set , set , set ) -> set } : ex f being Function st ( dom f = NAT & f . 0 = F1() & f . 1 = F2() & ( for n being Element of NAT holds f . (n + 2) = F3(n,(f . n),(f . (n + 1))) ) ) proof defpred S1[ set ] means $1 = 0 ; deffunc H1( Nat, set ) -> set = [($2 `2_3),($2 `3_3),F3(($1 + 1),($2 `2_3),($2 `3_3))]; set r03 = F3(0,F1(),F2()); set r13 = F3(1,F2(),F3(0,F1(),F2())); deffunc H2( Nat, set ) -> set = H1($1 + 1,$2); consider h being Function such that dom h = NAT and A1: h . 0 = [F2(),F3(0,F1(),F2()),F3(1,F2(),F3(0,F1(),F2()))] and A2: for n being Nat holds h . (n + 1) = H2(n,h . n) from NAT_1:sch_11(); deffunc H3( Element of NAT ) -> set = h . ($1 -' 1); deffunc H4( set ) -> set = [F1(),F2(),F3(0,F1(),F2())]; consider g being Function such that dom g = NAT and A3: for x being Element of NAT holds ( ( S1[x] implies g . x = H4(x) ) & ( not S1[x] implies g . x = H3(x) ) ) from PARTFUN1:sch_4(); deffunc H5( set ) -> set = (g . $1) `1_3 ; consider f being Function such that A4: dom f = NAT and A5: for x being set st x in NAT holds f . x = H5(x) from FUNCT_1:sch_3(); defpred S2[ Element of NAT ] means ( f . ($1 + 2) = (g . ($1 + 1)) `2_3 & (g . ($1 + 1)) `1_3 = (g . $1) `2_3 & (g . ($1 + 2)) `1_3 = (g . $1) `3_3 & (g . ($1 + 2)) `1_3 = (g . ($1 + 1)) `2_3 & (g . ($1 + 2)) `2_3 = (g . ($1 + 1)) `3_3 & f . ($1 + 2) = F3($1,(f . $1),(f . ($1 + 1))) ); A6: g . 0 = [F1(),F2(),F3(0,F1(),F2())] by A3; A7: for n being Element of NAT holds g . (n + 2) = H1(n + 1,g . (n + 1)) proof let n be Element of NAT ; ::_thesis: g . (n + 2) = H1(n + 1,g . (n + 1)) A8: ( (n + 2) - 1 = n + (2 - 1) & 0 <= n + 1 ) by NAT_1:2; A9: g . (n + 1) = H3(n + 1) by A3 .= h . n by NAT_D:34 ; thus g . (n + 2) = H3(n + 2) by A3 .= h . (n + 1) by A8, XREAL_0:def_2 .= H1(n + 1,g . (n + 1)) by A2, A9 ; ::_thesis: verum end; then A10: (g . (0 + 2)) `2_3 = H1(0 + 1,g . (0 + 1)) `2_3 .= (g . (0 + 1)) `3_3 ; take f ; ::_thesis: ( dom f = NAT & f . 0 = F1() & f . 1 = F2() & ( for n being Element of NAT holds f . (n + 2) = F3(n,(f . n),(f . (n + 1))) ) ) thus dom f = NAT by A4; ::_thesis: ( f . 0 = F1() & f . 1 = F2() & ( for n being Element of NAT holds f . (n + 2) = F3(n,(f . n),(f . (n + 1))) ) ) thus A11: f . 0 = (g . 0) `1_3 by A5 .= F1() by A6, Def1 ; ::_thesis: ( f . 1 = F2() & ( for n being Element of NAT holds f . (n + 2) = F3(n,(f . n),(f . (n + 1))) ) ) A12: g . 1 = H3(1) by A3 .= [F2(),F3(0,F1(),F2()),F3(1,F2(),F3(0,F1(),F2()))] by A1, XREAL_1:232 ; then A13: (g . (0 + 1)) `1_3 = F2() by Def1 .= (g . 0) `2_3 by A6, Def2 ; A14: for x being Element of NAT st S2[x] holds S2[x + 1] proof let x be Element of NAT ; ::_thesis: ( S2[x] implies S2[x + 1] ) assume A15: S2[x] ; ::_thesis: S2[x + 1] then A16: f . (x + 1) = (g . x) `2_3 by A5; thus A17: f . ((x + 1) + 2) = (g . ((x + 1) + 2)) `1_3 by A5 .= H1((x + 1) + 1,g . ((x + 1) + 1)) `1_3 by A7 .= (g . ((x + 1) + 1)) `2_3 ; ::_thesis: ( (g . ((x + 1) + 1)) `1_3 = (g . (x + 1)) `2_3 & (g . ((x + 1) + 2)) `1_3 = (g . (x + 1)) `3_3 & (g . ((x + 1) + 2)) `1_3 = (g . ((x + 1) + 1)) `2_3 & (g . ((x + 1) + 2)) `2_3 = (g . ((x + 1) + 1)) `3_3 & f . ((x + 1) + 2) = F3((x + 1),(f . (x + 1)),(f . ((x + 1) + 1))) ) thus (g . ((x + 1) + 1)) `1_3 = (g . (x + 1)) `2_3 by A15; ::_thesis: ( (g . ((x + 1) + 2)) `1_3 = (g . (x + 1)) `3_3 & (g . ((x + 1) + 2)) `1_3 = (g . ((x + 1) + 1)) `2_3 & (g . ((x + 1) + 2)) `2_3 = (g . ((x + 1) + 1)) `3_3 & f . ((x + 1) + 2) = F3((x + 1),(f . (x + 1)),(f . ((x + 1) + 1))) ) thus (g . ((x + 1) + 2)) `1_3 = H1((x + 1) + 1,g . ((x + 1) + 1)) `1_3 by A7 .= (g . (x + 1)) `3_3 by A15 ; ::_thesis: ( (g . ((x + 1) + 2)) `1_3 = (g . ((x + 1) + 1)) `2_3 & (g . ((x + 1) + 2)) `2_3 = (g . ((x + 1) + 1)) `3_3 & f . ((x + 1) + 2) = F3((x + 1),(f . (x + 1)),(f . ((x + 1) + 1))) ) hence (g . ((x + 1) + 2)) `1_3 = (g . ((x + 1) + 1)) `2_3 by A15; ::_thesis: ( (g . ((x + 1) + 2)) `2_3 = (g . ((x + 1) + 1)) `3_3 & f . ((x + 1) + 2) = F3((x + 1),(f . (x + 1)),(f . ((x + 1) + 1))) ) thus (g . ((x + 1) + 2)) `2_3 = H1((x + 1) + 1,g . ((x + 1) + 1)) `2_3 by A7 .= (g . ((x + 1) + 1)) `3_3 ; ::_thesis: f . ((x + 1) + 2) = F3((x + 1),(f . (x + 1)),(f . ((x + 1) + 1))) percases ( x = 0 or x <> 0 ) ; supposeA18: x = 0 ; ::_thesis: f . ((x + 1) + 2) = F3((x + 1),(f . (x + 1)),(f . ((x + 1) + 1))) hence f . ((x + 1) + 2) = (g . (1 + 2)) `1_3 by A5 .= H1(1 + 1,g . (1 + 1)) `1_3 by A7 .= (g . (0 + 1)) `3_3 by A15, A18 .= F3(1,F2(),F3(0,F1(),F2())) by A12, Def3 .= F3((0 + 1),F2(),((g . 0) `3_3)) by A6, Def3 .= F3((x + 1),(f . (x + 1)),(f . ((x + 1) + 1))) by A6, A15, A16, A18, Def2 ; ::_thesis: verum end; suppose x <> 0 ; ::_thesis: f . ((x + 1) + 2) = F3((x + 1),(f . (x + 1)),(f . ((x + 1) + 1))) then 0 < x by NAT_1:3; then A19: 0 + 1 <= x by NAT_1:13; then A20: (x -' 1) + 1 = x by XREAL_1:235; 1 - 1 <= x - 1 by A19, XREAL_1:13; then A21: x - 1 = x -' 1 by XREAL_0:def_2; x + 1 = (x - 1) + 2 ; hence f . ((x + 1) + 2) = H1((x -' 1) + 1,g . ((x -' 1) + 1)) `3_3 by A7, A15, A17, A21 .= F3((x + 1),(f . (x + 1)),(f . ((x + 1) + 1))) by A15, A16, A20 ; ::_thesis: verum end; end; end; A22: f . (0 + 2) = (g . (0 + 2)) `1_3 by A5 .= H1(0 + 1,g . (0 + 1)) `1_3 by A7 .= (g . (0 + 1)) `2_3 ; thus A23: f . 1 = (g . 1) `1_3 by A5 .= F2() by A12, Def1 ; ::_thesis: for n being Element of NAT holds f . (n + 2) = F3(n,(f . n),(f . (n + 1))) A24: (g . (0 + 2)) `1_3 = H1(0 + 1,g . (0 + 1)) `1_3 by A7 .= (g . 1) `2_3 .= F3(0,F1(),F2()) by A12, Def2 .= (g . 0) `3_3 by A6, Def3 ; then (g . (0 + 2)) `1_3 = F3(0,F1(),F2()) by A6, Def3 .= (g . (0 + 1)) `2_3 by A12, Def2 ; then A25: S2[ 0 ] by A12, A11, A23, A22, A13, A24, A10, Def2; for x being Element of NAT holds S2[x] from NAT_1:sch_1(A25, A14); hence for n being Element of NAT holds f . (n + 2) = F3(n,(f . n),(f . (n + 1))) ; ::_thesis: verum end; scheme :: RECDEF_2:sch 5 LambdaRec2ExD{ F1() -> non empty set , F2() -> Element of F1(), F3() -> Element of F1(), F4( set , set , set ) -> Element of F1() } : ex f being Function of NAT,F1() st ( f . 0 = F2() & f . 1 = F3() & ( for n being Element of NAT holds f . (n + 2) = F4(n,(f . n),(f . (n + 1))) ) ) proof consider f being Function such that A1: dom f = NAT and A2: ( f . 0 = F2() & f . 1 = F3() ) and A3: for n being Element of NAT holds f . (n + 2) = F4(n,(f . n),(f . (n + 1))) from RECDEF_2:sch_4(); rng f c= F1() proof let y be set ; :: according to TARSKI:def_3 ::_thesis: ( not y in rng f or y in F1() ) assume y in rng f ; ::_thesis: y in F1() then consider n being set such that A4: n in dom f and A5: f . n = y by FUNCT_1:def_3; reconsider n = n as Element of NAT by A1, A4; percases ( n <= 1 or n > 1 ) ; suppose n <= 1 ; ::_thesis: y in F1() then ( n = 0 or n = 1 ) by NAT_1:25; hence y in F1() by A2, A5; ::_thesis: verum end; suppose n > 1 ; ::_thesis: y in F1() then 1 + 1 <= n by NAT_1:13; then n - 2 is Element of NAT by INT_1:5; then f . ((n - 2) + 2) = F4((n - 2),(f . (n - 2)),(f . ((n - 2) + 1))) by A3; hence y in F1() by A5; ::_thesis: verum end; end; end; then f is Function of NAT,F1() by A1, FUNCT_2:def_1, RELSET_1:4; hence ex f being Function of NAT,F1() st ( f . 0 = F2() & f . 1 = F3() & ( for n being Element of NAT holds f . (n + 2) = F4(n,(f . n),(f . (n + 1))) ) ) by A2, A3; ::_thesis: verum end; scheme :: RECDEF_2:sch 6 LambdaRec2Un{ F1() -> set , F2() -> set , F3() -> Function, F4() -> Function, F5( set , set , set ) -> set } : F3() = F4() provided A1: dom F3() = NAT and A2: ( F3() . 0 = F1() & F3() . 1 = F2() ) and A3: for n being Element of 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 Element of NAT holds F4() . (n + 2) = F5(n,(F4() . n),(F4() . (n + 1))) proof defpred S1[ Nat] means F3() . $1 <> F4() . $1; assume F3() <> F4() ; ::_thesis: contradiction then ex x being set st ( x in NAT & F3() . x <> F4() . x ) by A1, A4, FUNCT_1:2; then A7: ex k being Nat st S1[k] ; consider m being Nat such that A8: S1[m] and A9: for n being Nat st S1[n] holds m <= n from NAT_1:sch_5(A7); now__::_thesis:_(_m_<>_0_implies_not_m_<>_1_) set k = m -' 2; A10: ( F3() . ((m -' 2) + 2) = F5((m -' 2),(F3() . (m -' 2)),(F3() . ((m -' 2) + 1))) & F4() . ((m -' 2) + 2) = F5((m -' 2),(F4() . (m -' 2)),(F4() . ((m -' 2) + 1))) ) by A3, A6; assume ( m <> 0 & m <> 1 ) ; ::_thesis: contradiction then 2 <= m by NAT_1:26; then A11: m = (m -' 2) + 2 by XREAL_1:235; then A12: F3() . ((m -' 2) + 1) = F4() . ((m -' 2) + 1) by A9, XREAL_1:6; (m -' 2) + 0 < m by A11, XREAL_1:6; hence contradiction by A8, A9, A11, A12, A10; ::_thesis: verum end; hence contradiction by A2, A5, A8; ::_thesis: verum end; scheme :: RECDEF_2:sch 7 LambdaRec2UnD{ 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 A1: ( F4() . 0 = F2() & F4() . 1 = F3() ) and A2: for n being Element of 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 Element of NAT holds F5() . (n + 2) = F6(n,(F5() . n),(F5() . (n + 1))) proof A5: dom F5() = NAT by FUNCT_2:def_1; A6: dom F4() = NAT by FUNCT_2:def_1; thus F4() = F5() from RECDEF_2:sch_6(A6, A1, A2, A5, A3, A4); ::_thesis: verum end; scheme :: RECDEF_2:sch 8 LambdaRec3Ex{ F1() -> set , F2() -> set , F3() -> set , F4( set , set , set , set ) -> set } : ex f being Function st ( dom f = NAT & f . 0 = F1() & f . 1 = F2() & f . 2 = F3() & ( for n being Element of NAT holds f . (n + 3) = F4(n,(f . n),(f . (n + 1)),(f . (n + 2))) ) ) proof defpred S1[ set ] means In ($1,NAT) > 1; defpred S2[ set ] means $1 = 1; defpred S3[ set ] means $1 = 0 ; deffunc H1( Nat, set ) -> set = [($2 `2_4),($2 `3_4),($2 `4_4),F4(($1 + 1),($2 `2_4),($2 `3_4),($2 `4_4))]; set r04 = F4(0,F1(),F2(),F3()); set r14 = F4(1,F2(),F3(),F4(0,F1(),F2(),F3())); set r24 = F4(2,F3(),F4(0,F1(),F2(),F3()),F4(1,F2(),F3(),F4(0,F1(),F2(),F3()))); deffunc H2( Nat, set ) -> set = H1($1 + 2,$2); consider h being Function such that dom h = NAT and A1: h . 0 = [F3(),F4(0,F1(),F2(),F3()),F4(1,F2(),F3(),F4(0,F1(),F2(),F3())),F4(2,F3(),F4(0,F1(),F2(),F3()),F4(1,F2(),F3(),F4(0,F1(),F2(),F3())))] and A2: for n being Nat holds h . (n + 1) = H2(n,h . n) from NAT_1:sch_11(); deffunc H3( set ) -> set = h . ((In ($1,NAT)) -' 2); deffunc H4( set ) -> set = [F2(),F3(),F4(0,F1(),F2(),F3()),F4(1,F2(),F3(),F4(0,F1(),F2(),F3()))]; deffunc H5( set ) -> set = [F1(),F2(),F3(),F4(0,F1(),F2(),F3())]; A3: for c being set holds ( not c in NAT or S3[c] or S2[c] or S1[c] ) proof let c be set ; ::_thesis: ( not c in NAT or S3[c] or S2[c] or S1[c] ) assume c in NAT ; ::_thesis: ( S3[c] or S2[c] or S1[c] ) then In (c,NAT) = c by FUNCT_7:def_1; hence ( S3[c] or S2[c] or S1[c] ) by NAT_1:25; ::_thesis: verum end; A4: for c being set st c in NAT holds ( ( S3[c] implies not S2[c] ) & ( S3[c] implies not S1[c] ) & ( S2[c] implies not S1[c] ) ) proof let c be set ; ::_thesis: ( c in NAT implies ( ( S3[c] implies not S2[c] ) & ( S3[c] implies not S1[c] ) & ( S2[c] implies not S1[c] ) ) ) assume c in NAT ; ::_thesis: ( ( S3[c] implies not S2[c] ) & ( S3[c] implies not S1[c] ) & ( S2[c] implies not S1[c] ) ) then In (c,NAT) = c by FUNCT_7:def_1; hence ( ( S3[c] implies not S2[c] ) & ( S3[c] implies not S1[c] ) & ( S2[c] implies not S1[c] ) ) ; ::_thesis: verum end; consider g being Function such that dom g = NAT and A5: for x being set st x in NAT holds ( ( S3[x] implies g . x = H5(x) ) & ( S2[x] implies g . x = H4(x) ) & ( S1[x] implies g . x = H3(x) ) ) from RECDEF_2:sch_1(A4, A3); A6: In (2,NAT) = 2 by FUNCT_7:def_1; then A7: g . 2 = H3(2) by A5 .= [F3(),F4(0,F1(),F2(),F3()),F4(1,F2(),F3(),F4(0,F1(),F2(),F3())),F4(2,F3(),F4(0,F1(),F2(),F3()),F4(1,F2(),F3(),F4(0,F1(),F2(),F3())))] by A1, A6, XREAL_1:232 ; A8: for n being Element of NAT holds g . (n + 3) = H1(n + 2,g . (n + 2)) proof let n be Element of NAT ; ::_thesis: g . (n + 3) = H1(n + 2,g . (n + 2)) A9: In ((n + 2),NAT) = n + 2 by FUNCT_7:def_1; 0 + 1 < n + 2 by NAT_1:2, XREAL_1:8; then A10: g . (n + 2) = H3(n + 2) by A5, A9 .= h . n by A9, NAT_D:34 ; A11: In ((n + 3),NAT) = n + 3 by FUNCT_7:def_1; A12: ( (n + 3) - 2 = n + (3 - 2) & 0 <= n + 1 ) by NAT_1:2; 0 + 1 < n + 3 by NAT_1:2, XREAL_1:8; hence g . (n + 3) = H3(n + 3) by A5, A11 .= h . (n + 1) by A11, A12, XREAL_0:def_2 .= H1(n + 2,g . (n + 2)) by A2, A10 ; ::_thesis: verum end; A13: g . 1 = [F2(),F3(),F4(0,F1(),F2(),F3()),F4(1,F2(),F3(),F4(0,F1(),F2(),F3()))] by A5; then A14: (g . (0 + 1)) `3_4 = F4(0,F1(),F2(),F3()) by Def6 .= (g . (0 + 2)) `2_4 by A7, Def5 ; A15: g . 0 = [F1(),F2(),F3(),F4(0,F1(),F2(),F3())] by A5; then A16: (g . 0) `3_4 = F3() by Def6 .= (g . (0 + 1)) `2_4 by A13, Def5 ; A17: (g . (0 + 1)) `4_4 = F4(1,F2(),F3(),F4(0,F1(),F2(),F3())) by A13, Def7 .= (g . (0 + 2)) `3_4 by A7, Def6 ; A18: (g . 0) `4_4 = F4(0,F1(),F2(),F3()) by A15, Def7 .= (g . (0 + 1)) `3_4 by A13, Def6 ; A19: (g . (0 + 1)) `1_4 = F2() by A13, Def4 .= (g . 0) `2_4 by A15, Def5 ; deffunc H6( Element of NAT ) -> set = (g . $1) `1_4 ; consider f being Function such that A20: dom f = NAT and A21: for x being Element of NAT holds f . x = H6(x) from FUNCT_1:sch_4(); A22: f . (0 + 3) = (g . (0 + 3)) `1_4 by A21 .= H1(0 + 2,g . (0 + 2)) `1_4 by A8 .= (g . (0 + 2)) `2_4 ; take f ; ::_thesis: ( dom f = NAT & f . 0 = F1() & f . 1 = F2() & f . 2 = F3() & ( for n being Element of NAT holds f . (n + 3) = F4(n,(f . n),(f . (n + 1)),(f . (n + 2))) ) ) thus dom f = NAT by A20; ::_thesis: ( f . 0 = F1() & f . 1 = F2() & f . 2 = F3() & ( for n being Element of NAT holds f . (n + 3) = F4(n,(f . n),(f . (n + 1)),(f . (n + 2))) ) ) defpred S4[ Element of NAT ] means ( f . ($1 + 3) = (g . ($1 + 2)) `2_4 & (g . $1) `2_4 = (g . ($1 + 1)) `1_4 & (g . $1) `3_4 = (g . ($1 + 1)) `2_4 & (g . $1) `4_4 = (g . ($1 + 1)) `3_4 & (g . ($1 + 1)) `2_4 = (g . ($1 + 2)) `1_4 & (g . ($1 + 1)) `3_4 = (g . ($1 + 2)) `2_4 & (g . ($1 + 1)) `4_4 = (g . ($1 + 2)) `3_4 & (g . ($1 + 2)) `2_4 = (g . ($1 + 3)) `1_4 & f . ($1 + 3) = F4($1,(f . $1),(f . ($1 + 1)),(f . ($1 + 2))) ); A23: (g . (0 + 2)) `2_4 = H1(0 + 2,g . (0 + 2)) `1_4 .= (g . (0 + 3)) `1_4 by A8 ; thus A24: f . 0 = (g . 0) `1_4 by A21 .= F1() by A15, Def4 ; ::_thesis: ( f . 1 = F2() & f . 2 = F3() & ( for n being Element of NAT holds f . (n + 3) = F4(n,(f . n),(f . (n + 1)),(f . (n + 2))) ) ) thus A25: f . 1 = (g . 1) `1_4 by A21 .= F2() by A13, Def4 ; ::_thesis: ( f . 2 = F3() & ( for n being Element of NAT holds f . (n + 3) = F4(n,(f . n),(f . (n + 1)),(f . (n + 2))) ) ) thus A26: f . 2 = (g . 2) `1_4 by A21 .= F3() by A7, Def4 ; ::_thesis: for n being Element of NAT holds f . (n + 3) = F4(n,(f . n),(f . (n + 1)),(f . (n + 2))) A27: for x being Element of NAT st S4[x] holds S4[x + 1] proof let x be Element of NAT ; ::_thesis: ( S4[x] implies S4[x + 1] ) A28: (x + 1) + 2 = x + (1 + 2) ; assume A29: S4[x] ; ::_thesis: S4[x + 1] then A30: f . ((x + 1) + 1) = (g . x) `3_4 by A21; thus A31: f . ((x + 1) + 3) = (g . ((x + 1) + 3)) `1_4 by A21 .= H1((x + 1) + 2,g . ((x + 1) + 2)) `1_4 by A8 .= (g . ((x + 1) + 2)) `2_4 ; ::_thesis: ( (g . (x + 1)) `2_4 = (g . ((x + 1) + 1)) `1_4 & (g . (x + 1)) `3_4 = (g . ((x + 1) + 1)) `2_4 & (g . (x + 1)) `4_4 = (g . ((x + 1) + 1)) `3_4 & (g . ((x + 1) + 1)) `2_4 = (g . ((x + 1) + 2)) `1_4 & (g . ((x + 1) + 1)) `3_4 = (g . ((x + 1) + 2)) `2_4 & (g . ((x + 1) + 1)) `4_4 = (g . ((x + 1) + 2)) `3_4 & (g . ((x + 1) + 2)) `2_4 = (g . ((x + 1) + 3)) `1_4 & f . ((x + 1) + 3) = F4((x + 1),(f . (x + 1)),(f . ((x + 1) + 1)),(f . ((x + 1) + 2))) ) thus (g . ((x + 1) + 1)) `1_4 = (g . (x + 1)) `2_4 by A29; ::_thesis: ( (g . (x + 1)) `3_4 = (g . ((x + 1) + 1)) `2_4 & (g . (x + 1)) `4_4 = (g . ((x + 1) + 1)) `3_4 & (g . ((x + 1) + 1)) `2_4 = (g . ((x + 1) + 2)) `1_4 & (g . ((x + 1) + 1)) `3_4 = (g . ((x + 1) + 2)) `2_4 & (g . ((x + 1) + 1)) `4_4 = (g . ((x + 1) + 2)) `3_4 & (g . ((x + 1) + 2)) `2_4 = (g . ((x + 1) + 3)) `1_4 & f . ((x + 1) + 3) = F4((x + 1),(f . (x + 1)),(f . ((x + 1) + 1)),(f . ((x + 1) + 2))) ) thus (g . (x + 1)) `3_4 = (g . ((x + 1) + 1)) `2_4 by A29; ::_thesis: ( (g . (x + 1)) `4_4 = (g . ((x + 1) + 1)) `3_4 & (g . ((x + 1) + 1)) `2_4 = (g . ((x + 1) + 2)) `1_4 & (g . ((x + 1) + 1)) `3_4 = (g . ((x + 1) + 2)) `2_4 & (g . ((x + 1) + 1)) `4_4 = (g . ((x + 1) + 2)) `3_4 & (g . ((x + 1) + 2)) `2_4 = (g . ((x + 1) + 3)) `1_4 & f . ((x + 1) + 3) = F4((x + 1),(f . (x + 1)),(f . ((x + 1) + 1)),(f . ((x + 1) + 2))) ) thus (g . (x + 1)) `4_4 = (g . ((x + 1) + 1)) `3_4 by A29; ::_thesis: ( (g . ((x + 1) + 1)) `2_4 = (g . ((x + 1) + 2)) `1_4 & (g . ((x + 1) + 1)) `3_4 = (g . ((x + 1) + 2)) `2_4 & (g . ((x + 1) + 1)) `4_4 = (g . ((x + 1) + 2)) `3_4 & (g . ((x + 1) + 2)) `2_4 = (g . ((x + 1) + 3)) `1_4 & f . ((x + 1) + 3) = F4((x + 1),(f . (x + 1)),(f . ((x + 1) + 1)),(f . ((x + 1) + 2))) ) thus (g . ((x + 1) + 1)) `2_4 = H1(x + 2,g . (x + 2)) `1_4 .= (g . ((x + 1) + 2)) `1_4 by A8, A28 ; ::_thesis: ( (g . ((x + 1) + 1)) `3_4 = (g . ((x + 1) + 2)) `2_4 & (g . ((x + 1) + 1)) `4_4 = (g . ((x + 1) + 2)) `3_4 & (g . ((x + 1) + 2)) `2_4 = (g . ((x + 1) + 3)) `1_4 & f . ((x + 1) + 3) = F4((x + 1),(f . (x + 1)),(f . ((x + 1) + 1)),(f . ((x + 1) + 2))) ) thus (g . ((x + 1) + 1)) `3_4 = H1(x + 2,g . (x + 2)) `2_4 .= (g . ((x + 1) + 2)) `2_4 by A8, A28 ; ::_thesis: ( (g . ((x + 1) + 1)) `4_4 = (g . ((x + 1) + 2)) `3_4 & (g . ((x + 1) + 2)) `2_4 = (g . ((x + 1) + 3)) `1_4 & f . ((x + 1) + 3) = F4((x + 1),(f . (x + 1)),(f . ((x + 1) + 1)),(f . ((x + 1) + 2))) ) thus (g . ((x + 1) + 1)) `4_4 = H1(x + 2,g . (x + 2)) `3_4 .= (g . ((x + 1) + 2)) `3_4 by A8, A28 ; ::_thesis: ( (g . ((x + 1) + 2)) `2_4 = (g . ((x + 1) + 3)) `1_4 & f . ((x + 1) + 3) = F4((x + 1),(f . (x + 1)),(f . ((x + 1) + 1)),(f . ((x + 1) + 2))) ) thus (g . ((x + 1) + 2)) `2_4 = H1((x + 1) + 2,g . ((x + 1) + 2)) `1_4 .= (g . ((x + 1) + 3)) `1_4 by A8 ; ::_thesis: f . ((x + 1) + 3) = F4((x + 1),(f . (x + 1)),(f . ((x + 1) + 1)),(f . ((x + 1) + 2))) percases ( ( x <= 1 & x <> 1 ) or x = 1 or 1 < x ) ; suppose ( x <= 1 & x <> 1 ) ; ::_thesis: f . ((x + 1) + 3) = F4((x + 1),(f . (x + 1)),(f . ((x + 1) + 1)),(f . ((x + 1) + 2))) then A32: x = 0 by NAT_1:25; hence f . ((x + 1) + 3) = (g . (1 + 3)) `1_4 by A21 .= H1(1 + 2,g . (1 + 2)) `1_4 by A8 .= (g . (0 + 3)) `2_4 .= H1(0 + 2,g . (0 + 2)) `2_4 by A8 .= (g . (0 + 2)) `3_4 .= F4(1,F2(),F3(),F4(0,F1(),F2(),F3())) by A7, Def6 .= F4((x + 1),(f . (x + 1)),(f . ((x + 1) + 1)),(f . ((x + 1) + 2))) by A15, A25, A26, A29, A32, Def7 ; ::_thesis: verum end; supposeA33: x = 1 ; ::_thesis: f . ((x + 1) + 3) = F4((x + 1),(f . (x + 1)),(f . ((x + 1) + 1)),(f . ((x + 1) + 2))) then A34: ( f . ((x + 1) + 1) = F4(0,F1(),F2(),F3()) & f . ((x + 1) + 2) = F4(1,F2(),F3(),F4(0,F1(),F2(),F3())) ) by A13, A29, A30, Def6, Def7; thus f . ((x + 1) + 3) = (g . ((1 + 1) + 3)) `1_4 by A21, A33 .= H1(2 + 2,g . (2 + 2)) `1_4 by A8 .= (g . (1 + 3)) `2_4 .= H1(1 + 2,g . (1 + 2)) `2_4 by A8 .= (g . (0 + 3)) `3_4 .= H1(0 + 2,g . (0 + 2)) `3_4 by A8 .= (g . (0 + 2)) `4_4 .= F4((x + 1),(f . (x + 1)),(f . ((x + 1) + 1)),(f . ((x + 1) + 2))) by A7, A26, A33, A34, Def7 ; ::_thesis: verum end; supposeA35: 1 < x ; ::_thesis: f . ((x + 1) + 3) = F4((x + 1),(f . (x + 1)),(f . ((x + 1) + 1)),(f . ((x + 1) + 2))) then 1 - 1 <= x - 1 by XREAL_1:13; then A36: x - 1 = x -' 1 by XREAL_0:def_2; A37: 1 + 1 <= x by A35, NAT_1:13; then A38: (x -' 2) + 2 = x by XREAL_1:235; 2 - 2 <= x - 2 by A37, XREAL_1:13; then A39: x - 2 = x -' 2 by XREAL_0:def_2; A40: x + 1 = (x - 1) + 2 ; thus f . ((x + 1) + 3) = (g . (x + (1 + 2))) `2_4 by A31 .= H1(x + 2,g . (x + 2)) `2_4 by A8 .= (g . ((x -' 1) + 3)) `3_4 by A36 .= H1(x + 1,g . (x + 1)) `3_4 by A8, A36, A40 .= (g . ((x -' 2) + 3)) `4_4 by A39 .= H1((x -' 2) + 2,g . ((x -' 2) + 2)) `4_4 by A8 .= F4((x + 1),((g . x) `2_4),((g . x) `3_4),((g . x) `4_4)) by A38 .= F4((x + 1),(f . (x + 1)),(f . ((x + 1) + 1)),(f . ((x + 1) + 2))) by A21, A29, A30 ; ::_thesis: verum end; end; end; (g . (0 + 1)) `2_4 = F3() by A13, Def5 .= (g . (0 + 2)) `1_4 by A7, Def4 ; then A41: S4[ 0 ] by A7, A24, A25, A26, A22, A19, A16, A18, A14, A17, A23, Def5; for x being Element of NAT holds S4[x] from NAT_1:sch_1(A41, A27); hence for n being Element of NAT holds f . (n + 3) = F4(n,(f . n),(f . (n + 1)),(f . (n + 2))) ; ::_thesis: verum end; scheme :: RECDEF_2:sch 9 LambdaRec3ExD{ 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 f being Function of NAT,F1() st ( f . 0 = F2() & f . 1 = F3() & f . 2 = F4() & ( for n being Element of NAT holds f . (n + 3) = F5(n,(f . n),(f . (n + 1)),(f . (n + 2))) ) ) proof consider f being Function such that A1: dom f = NAT and A2: ( f . 0 = F2() & f . 1 = F3() & f . 2 = F4() ) and A3: for n being Element of NAT holds f . (n + 3) = F5(n,(f . n),(f . (n + 1)),(f . (n + 2))) from RECDEF_2:sch_8(); rng f c= F1() proof let y be set ; :: according to TARSKI:def_3 ::_thesis: ( not y in rng f or y in F1() ) assume y in rng f ; ::_thesis: y in F1() then consider n being set such that A4: n in dom f and A5: f . n = y by FUNCT_1:def_3; reconsider n = n as Element of NAT by A1, A4; percases ( n <= 2 or n > 2 ) ; suppose n <= 2 ; ::_thesis: y in F1() then ( n = 0 or n = 1 or n = 2 ) by NAT_1:26; hence y in F1() by A2, A5; ::_thesis: verum end; suppose n > 2 ; ::_thesis: y in F1() then 2 + 1 <= n by NAT_1:13; then n - 3 is Element of NAT by INT_1:5; then f . ((n - 3) + 3) = F5((n - 3),(f . (n - 3)),(f . ((n - 3) + 1)),(f . ((n - 3) + 2))) by A3; hence y in F1() by A5; ::_thesis: verum end; end; end; then f is Function of NAT,F1() by A1, FUNCT_2:def_1, RELSET_1:4; hence ex f being Function of NAT,F1() st ( f . 0 = F2() & f . 1 = F3() & f . 2 = F4() & ( for n being Element of NAT holds f . (n + 3) = F5(n,(f . n),(f . (n + 1)),(f . (n + 2))) ) ) by A2, A3; ::_thesis: verum end; scheme :: RECDEF_2:sch 10 LambdaRec3Un{ F1() -> set , F2() -> set , F3() -> set , F4() -> Function, F5() -> Function, F6( set , set , set , set ) -> set } : F4() = F5() provided A1: dom F4() = NAT and A2: ( F4() . 0 = F1() & F4() . 1 = F2() & F4() . 2 = F3() ) and A3: for n being Element of 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 Element of NAT holds F5() . (n + 3) = F6(n,(F5() . n),(F5() . (n + 1)),(F5() . (n + 2))) proof defpred S1[ Nat] means F4() . $1 <> F5() . $1; assume F4() <> F5() ; ::_thesis: contradiction then ex x being set st ( x in NAT & F4() . x <> F5() . x ) by A1, A4, FUNCT_1:2; then A7: ex k being Nat st S1[k] ; consider m being Nat such that A8: S1[m] and A9: for n being Nat st S1[n] holds m <= n from NAT_1:sch_5(A7); now__::_thesis:_(_m_<>_0_&_m_<>_1_implies_not_m_<>_2_) set k = m -' 3; A10: ( F4() . ((m -' 3) + 3) = F6((m -' 3),(F4() . (m -' 3)),(F4() . ((m -' 3) + 1)),(F4() . ((m -' 3) + 2))) & F5() . ((m -' 3) + 3) = F6((m -' 3),(F5() . (m -' 3)),(F5() . ((m -' 3) + 1)),(F5() . ((m -' 3) + 2))) ) by A3, A6; assume ( m <> 0 & m <> 1 & m <> 2 ) ; ::_thesis: contradiction then 3 <= m by NAT_1:27; then A11: m = (m -' 3) + 3 by XREAL_1:235; then A12: F4() . ((m -' 3) + 1) = F5() . ((m -' 3) + 1) by A9, XREAL_1:6; A13: F4() . ((m -' 3) + 2) = F5() . ((m -' 3) + 2) by A9, A11, XREAL_1:6; (m -' 3) + 0 < m by A11, XREAL_1:6; hence contradiction by A8, A9, A11, A12, A13, A10; ::_thesis: verum end; hence contradiction by A2, A5, A8; ::_thesis: verum end; scheme :: RECDEF_2:sch 11 LambdaRec3UnD{ 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 A1: ( F5() . 0 = F2() & F5() . 1 = F3() & F5() . 2 = F4() ) and A2: for n being Element of 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 Element of NAT holds F6() . (n + 3) = F7(n,(F6() . n),(F6() . (n + 1)),(F6() . (n + 2))) proof A5: dom F6() = NAT by FUNCT_2:def_1; A6: dom F5() = NAT by FUNCT_2:def_1; thus F5() = F6() from RECDEF_2:sch_10(A6, A1, A2, A5, A3, A4); ::_thesis: verum end; scheme :: RECDEF_2:sch 12 LambdaRec4Un{ F1() -> set , F2() -> set , F3() -> set , F4() -> set , F5() -> Function, F6() -> Function, F7( set , set , set , set , set ) -> set } : F5() = F6() provided A1: dom F5() = NAT and A2: ( F5() . 0 = F1() & F5() . 1 = F2() & F5() . 2 = F3() & F5() . 3 = F4() ) and A3: for n being Element of 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 Element of NAT holds F6() . (n + 4) = F7(n,(F6() . n),(F6() . (n + 1)),(F6() . (n + 2)),(F6() . (n + 3))) proof defpred S1[ Nat] means F5() . $1 <> F6() . $1; assume F5() <> F6() ; ::_thesis: contradiction then ex x being set st ( x in NAT & F5() . x <> F6() . x ) by A1, A4, FUNCT_1:2; then A7: ex k being Nat st S1[k] ; consider m being Nat such that A8: S1[m] and A9: for n being Nat st S1[n] holds m <= n from NAT_1:sch_5(A7); now__::_thesis:_(_m_<>_0_&_m_<>_1_&_m_<>_2_implies_not_m_<>_3_) set k = m -' 4; A10: ( F5() . ((m -' 4) + 4) = F7((m -' 4),(F5() . (m -' 4)),(F5() . ((m -' 4) + 1)),(F5() . ((m -' 4) + 2)),(F5() . ((m -' 4) + 3))) & F6() . ((m -' 4) + 4) = F7((m -' 4),(F6() . (m -' 4)),(F6() . ((m -' 4) + 1)),(F6() . ((m -' 4) + 2)),(F6() . ((m -' 4) + 3))) ) by A3, A6; assume ( m <> 0 & m <> 1 & m <> 2 & m <> 3 ) ; ::_thesis: contradiction then 4 <= m by NAT_1:28; then A11: m = (m -' 4) + 4 by XREAL_1:235; then A12: F5() . ((m -' 4) + 1) = F6() . ((m -' 4) + 1) by A9, XREAL_1:6; (m -' 4) + 3 < m by A11, XREAL_1:6; then A13: F5() . ((m -' 4) + 3) = F6() . ((m -' 4) + 3) by A9; (m -' 4) + 2 < m by A11, XREAL_1:6; then A14: F5() . ((m -' 4) + 2) = F6() . ((m -' 4) + 2) by A9; (m -' 4) + 0 < m by A11, XREAL_1:6; hence contradiction by A8, A9, A11, A12, A14, A13, A10; ::_thesis: verum end; hence contradiction by A2, A5, A8; ::_thesis: verum end; scheme :: RECDEF_2:sch 13 LambdaRec4UnD{ 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 A1: ( F6() . 0 = F2() & F6() . 1 = F3() & F6() . 2 = F4() & F6() . 3 = F5() ) and A2: for n being Element of 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 Element of NAT holds F7() . (n + 4) = F8(n,(F7() . n),(F7() . (n + 1)),(F7() . (n + 2)),(F7() . (n + 3))) proof A5: dom F7() = NAT by FUNCT_2:def_1; A6: dom F6() = NAT by FUNCT_2:def_1; thus F6() = F7() from RECDEF_2:sch_12(A6, A1, A2, A5, A3, A4); ::_thesis: verum end; begin theorem :: RECDEF_2:10 for x, y, X, Y, Z being set st x `1_3 = y `1_3 & x `2_3 = y `2_3 & x `3_3 = y `3_3 & y in [:X,Y,Z:] & x in [:X,Y,Z:] holds x = y proof let x, y, X, Y, Z be set ; ::_thesis: ( x `1_3 = y `1_3 & x `2_3 = y `2_3 & x `3_3 = y `3_3 & y in [:X,Y,Z:] & x in [:X,Y,Z:] implies x = y ) assume A1: ( x `1_3 = y `1_3 & x `2_3 = y `2_3 & x `3_3 = y `3_3 & y in [:X,Y,Z:] ) ; ::_thesis: ( not x in [:X,Y,Z:] or x = y ) assume x in [:X,Y,Z:] ; ::_thesis: x = y hence x = [(x `1_3),(x `2_3),(x `3_3)] by Th3 .= y by A1, Th3 ; ::_thesis: verum end;