:: BINOM semantic presentation

definition
let c1 be non empty LoopStr ;
canceled;
canceled;
attr a1 is add-cancelable means :E1: :: BINOM:def 3
for b1, b2, b3 being Element of a1 holds
( ( b1 + b2 = b1 + b3 implies b2 = b3 ) & ( b2 + b1 = b3 + b1 implies b2 = b3 ) );
end;

:: deftheorem BINOM:def 1 :
canceled;

:: deftheorem BINOM:def 2 :
canceled;

:: deftheorem E1 defines add-cancelable BINOM:def 3 :
for b1 being non empty LoopStr holds
( b1 is add-cancelable iff for b2, b3, b4 being Element of b1 holds
( ( b2 + b3 = b2 + b4 implies b3 = b4 ) & ( b3 + b2 = b4 + b2 implies b3 = b4 ) ) );

registration
cluster non empty add-left-cancelable LoopStr ;
existence
ex b1 being non empty LoopStr st b1 is add-left-cancelable
proof
consider c1 being comRing;
take c1 ;
thus c1 is add-left-cancelable ;
end;
cluster non empty add-right-cancelable LoopStr ;
existence
ex b1 being non empty LoopStr st b1 is add-right-cancelable
proof
consider c1 being comRing;
take c1 ;
thus c1 is add-right-cancelable ;
end;
cluster non empty add-cancelable LoopStr ;
existence
ex b1 being non empty LoopStr st b1 is add-cancelable
proof
consider c1 being comRing;
take c1 ;
now
let c2, c3, c4 be Element of c1;
now
assume E2: c3 + c2 = c4 + c2 ;
thus c3 = c3 + (0. c1) by RLVECT_1:def 7
.= c3 + (c2 + (- c2)) by RLVECT_1:16
.= (c4 + c2) + (- c2) by E2, RLVECT_1:def 6
.= c4 + (c2 + (- c2)) by RLVECT_1:def 6
.= c4 + (0. c1) by RLVECT_1:16
.= c4 by RLVECT_1:def 7 ;
end;
hence ( ( c2 + c3 = c2 + c4 implies c3 = c4 ) & ( c3 + c2 = c4 + c2 implies c3 = c4 ) ) ;
end;
hence c1 is add-cancelable by E1;
end;
end;

registration
cluster non empty add-left-cancelable add-right-cancelable -> non empty add-cancelable LoopStr ;
coherence
for b1 being non empty LoopStr holds
( ( b1 is add-left-cancelable & b1 is add-right-cancelable ) implies ( b1 is add-cancelable ) )
proof
let c1 be non empty LoopStr ;
assume ( c1 is add-left-cancelable & c1 is add-right-cancelable ) ;
then for b1, b2, b3 being Element of c1 holds
( ( b1 + b2 = b1 + b3 implies b2 = b3 ) & ( b2 + b1 = b3 + b1 implies b2 = b3 ) ) by ALGSTR_1:def 6, ALGSTR_1:def 7;
hence c1 is add-cancelable by E1;
end;
cluster non empty add-cancelable -> non empty add-left-cancelable add-right-cancelable LoopStr ;
coherence
for b1 being non empty LoopStr holds
( b1 is add-cancelable implies ( b1 is add-left-cancelable & b1 is add-right-cancelable ) )
proof
let c1 be non empty LoopStr ;
assume c1 is add-cancelable ;
then for b1, b2, b3 being Element of c1 holds
( ( b1 + b2 = b1 + b3 implies b2 = b3 ) & ( b2 + b1 = b3 + b1 implies b2 = b3 ) ) by E1;
hence ( c1 is add-left-cancelable & c1 is add-right-cancelable ) by ALGSTR_1:def 6, ALGSTR_1:def 7;
end;
end;

registration
cluster non empty Abelian add-right-cancelable -> non empty add-left-cancelable LoopStr ;
coherence
for b1 being non empty LoopStr holds
( ( b1 is Abelian & b1 is add-right-cancelable ) implies ( b1 is add-left-cancelable ) )
proof
let c1 be non empty LoopStr ;
assume E2: ( c1 is Abelian & c1 is add-right-cancelable ) ;
now
let c2, c3, c4 be Element of c1;
assume c2 + c3 = c2 + c4 ;
then c3 + c2 = c2 + c4 by E2, RLVECT_1:def 5
.= c4 + c2 by E2, RLVECT_1:def 5 ;
hence c3 = c4 by E2, ALGSTR_1:def 7;
end;
hence c1 is add-left-cancelable by ALGSTR_1:def 6;
end;
cluster non empty Abelian add-left-cancelable -> non empty add-right-cancelable LoopStr ;
coherence
for b1 being non empty LoopStr holds
( ( b1 is Abelian & b1 is add-left-cancelable ) implies ( b1 is add-right-cancelable ) )
proof
let c1 be non empty LoopStr ;
assume E2: ( c1 is Abelian & c1 is add-left-cancelable ) ;
now
let c2, c3, c4 be Element of c1;
assume c3 + c2 = c4 + c2 ;
then c2 + c3 = c4 + c2 by E2, RLVECT_1:def 5
.= c2 + c4 by E2, RLVECT_1:def 5 ;
hence c3 = c4 by E2, ALGSTR_1:def 6;
end;
hence c1 is add-right-cancelable by ALGSTR_1:def 7;
end;
end;

registration
cluster non empty add-associative right_zeroed right_complementable -> non empty add-right-cancelable LoopStr ;
coherence
for b1 being non empty LoopStr holds
( ( b1 is right_zeroed & b1 is right_complementable & b1 is add-associative ) implies ( b1 is add-right-cancelable ) )
proof
let c1 be non empty LoopStr ;
assume E2: ( c1 is right_zeroed & c1 is right_complementable & c1 is add-associative ) ;
now
let c2, c3, c4 be Element of c1;
assume E3: c3 + c2 = c4 + c2 ;
thus c3 = c3 + (0. c1) by E2, RLVECT_1:def 7
.= c3 + (c2 + (- c2)) by E2, RLVECT_1:16
.= (c4 + c2) + (- c2) by E2, E3, RLVECT_1:def 6
.= c4 + (c2 + (- c2)) by E2, RLVECT_1:def 6
.= c4 + (0. c1) by E2, RLVECT_1:16
.= c4 by E2, RLVECT_1:def 7 ;
end;
hence c1 is add-right-cancelable by ALGSTR_1:def 7;
end;
end;

registration
cluster non empty Abelian add-associative right_zeroed unital associative commutative distributive left_zeroed add-left-cancelable add-right-cancelable add-cancelable doubleLoopStr ;
existence
ex b1 being non empty doubleLoopStr st
( b1 is Abelian & b1 is add-associative & b1 is left_zeroed & b1 is right_zeroed & b1 is commutative & b1 is associative & b1 is add-cancelable & b1 is distributive & b1 is unital )
proof
consider c1 being comRing;
take c1 ;
thus ( c1 is Abelian & c1 is add-associative & c1 is left_zeroed & c1 is right_zeroed & c1 is commutative & c1 is associative & c1 is add-cancelable & c1 is distributive & c1 is unital ) ;
end;
end;

theorem E2: :: BINOM:1
for b1 being non empty right_zeroed left-distributive add-left-cancelable doubleLoopStr
for b2 being Element of b1 holds (0. b1) * b2 = 0. b1
proof
let c1 be non empty right_zeroed left-distributive add-left-cancelable doubleLoopStr ;
let c2 be Element of c1;
(0. c1) * c2 = ((0. c1) + (0. c1)) * c2 by RLVECT_1:def 7
.= ((0. c1) * c2) + ((0. c1) * c2) by VECTSP_1:def 12 ;
then ((0. c1) * c2) + ((0. c1) * c2) = ((0. c1) * c2) + (0. c1) by RLVECT_1:def 7;
hence (0. c1) * c2 = 0. c1 by ALGSTR_1:def 6;
end;

theorem E3: :: BINOM:2
for b1 being non empty right-distributive left_zeroed add-right-cancelable doubleLoopStr
for b2 being Element of b1 holds b2 * (0. b1) = 0. b1
proof
let c1 be non empty right-distributive left_zeroed add-right-cancelable doubleLoopStr ;
let c2 be Element of c1;
c2 * (0. c1) = c2 * ((0. c1) + (0. c1)) by ALGSTR_1:def 5
.= (c2 * (0. c1)) + (c2 * (0. c1)) by VECTSP_1:def 11 ;
then (c2 * (0. c1)) + (c2 * (0. c1)) = (0. c1) + (c2 * (0. c1)) by ALGSTR_1:def 5;
hence c2 * (0. c1) = 0. c1 by ALGSTR_1:def 7;
end;

scheme :: BINOM:sch 1
s1{ F1() -> Nat, P1[ Nat] } :
for b1 being Nat holds
( F1() <= b1 implies P1[b1] )
provided
E4: P1[F1()] and E5: for b1 being Nat holds
( ( F1() <= b1 & P1[b1] ) implies ( P1[b1 + 1] ) )
proof
let c1 be Nat;
assume E6: F1() <= c1 ;
defpred S1[ Nat] means P1[F1() + a1];
E7: S1[0] by E4;
E8: now
let c2 be Nat;
assume E9: S1[c2] ;
F1() <= F1() + c2 by NAT_1:29;
then P1[(F1() + c2) + 1] by E5, E9;
hence S1[c2 + 1] ;
end;
E9: for b1 being Nat holds
S1[b1] from NAT_1:sch 1(E7, E8);
ex b1 being Nat st c1 = F1() + b1 by E6, NAT_1:28;
hence P1[c1] by E9;
end;

scheme :: BINOM:sch 2
s2{ F1() -> non empty set , F2() -> non empty set , F3() -> Element of F2(), F4() -> Function of [:F1(),F2():],F2() } :
ex b1 being Function of [:NAT ,F1():],F2() st
for b2 being Element of F1() holds
( b1 . 0,b2 = F3() & for b3 being Nat holds b1 . (b3 + 1),b2 = F4() . b2,(b1 . b3,b2) )
provided
proof
E4: for b1 being Element of F1() holds
ex b2 being Function of NAT ,F2() st
( b2 . 0 = F3() & for b3 being Nat holds b2 . (b3 + 1) = F4() . b1,(b2 . b3) )
proof
let c1 be Element of F1();
defpred S1[ Nat, Element of F2(), Element of F2()] means a3 = F4() . c1,a2;
E5: for b1 being Nat
for b2 being Element of F2() holds
ex b3 being Element of F2() st
S1[b1,b2,b3] ;
ex b1 being Function of NAT ,F2() st
( b1 . 0 = F3() & for b2 being Element of NAT holds
S1[b2,b1 . b2,b1 . (b2 + 1)] ) from RECDEF_1:sch 2(E5);
hence ex b1 being Function of NAT ,F2() st
( b1 . 0 = F3() & for b2 being Nat holds b1 . (b2 + 1) = F4() . c1,(b1 . b2) ) ;
end;
ex b1 being Function of F1(), Funcs NAT ,F2() st
for b2 being Element of F1() holds
ex b3 being Function of NAT ,F2() st
( b1 . b2 = b3 & b3 . 0 = F3() & for b4 being Nat holds b3 . (b4 + 1) = F4() . b2,(b3 . b4) )
proof
set c1 = { [b1,b2] where B is Element of F1(), B is Element of Funcs NAT ,F2() : ex b1 being Function of NAT ,F2() st
( b3 = b2 & b3 . 0 = F3() & for b2 being Nat holds b3 . (b4 + 1) = F4() . b1,(b3 . b4) )
}
;
E5: now
let c2, c3, c4 be set ;
assume E6: ( [c2,c3] in { [b1,b2] where B is Element of F1(), B is Element of Funcs NAT ,F2() : ex b1 being Function of NAT ,F2() st
( b3 = b2 & b3 . 0 = F3() & for b2 being Nat holds b3 . (b4 + 1) = F4() . b1,(b3 . b4) )
}
& [c2,c4] in { [b1,b2] where B is Element of F1(), B is Element of Funcs NAT ,F2() : ex b1 being Function of NAT ,F2() st
( b3 = b2 & b3 . 0 = F3() & for b2 being Nat holds b3 . (b4 + 1) = F4() . b1,(b3 . b4) )
}
) ;
then consider c5 being Element of F1(), c6 being Element of Funcs NAT ,F2() such that
E7: ( [c2,c3] = [c5,c6] & ex b1 being Function of NAT ,F2() st
( b1 = c6 & b1 . 0 = F3() & for b2 being Nat holds b1 . (b2 + 1) = F4() . c5,(b1 . b2) ) ) ;
consider c7 being Function of NAT ,F2() such that
E8: ( c7 = c6 & c7 . 0 = F3() & for b1 being Nat holds c7 . (b1 + 1) = F4() . c5,(c7 . b1) ) by E7;
consider c8 being Element of F1(), c9 being Element of Funcs NAT ,F2() such that
E9: ( [c2,c4] = [c8,c9] & ex b1 being Function of NAT ,F2() st
( b1 = c9 & b1 . 0 = F3() & for b2 being Nat holds b1 . (b2 + 1) = F4() . c8,(b1 . b2) ) ) by E6;
consider c10 being Function of NAT ,F2() such that
E10: ( c10 = c9 & c10 . 0 = F3() & for b1 being Nat holds c10 . (b1 + 1) = F4() . c8,(c10 . b1) ) by E9;
E11: c5 = [c2,c3] `1 by E7, MCART_1:def 1
.= c2 by MCART_1:def 1
.= [c8,c9] `1 by E9, MCART_1:def 1
.= c8 by MCART_1:def 1 ;
E12: ( NAT = dom c7 & NAT = dom c10 ) by FUNCT_2:def 1;
E13: now
let c11 be set ;
assume c11 in NAT ;
then reconsider c12 = c11 as Nat ;
defpred S1[ Nat] means c7 . a1 = c10 . a1;
E14: S1[0] by E8, E10;
E15: now
let c13 be Nat;
assume E16: S1[c13] ;
c7 . (c13 + 1) = F4() . c8,(c7 . c13) by E8, E11
.= c10 . (c13 + 1) by E10, E16 ;
hence S1[c13 + 1] ;
end;
for b1 being Nat holds
S1[b1] from NAT_1:sch 1(E14, E15);
hence c7 . c11 = c10 . c12
.= c10 . c11 ;

end;
thus c3 = [c5,c6] `2 by E7, MCART_1:def 2
.= c6 by MCART_1:def 2
.= c9 by E8, E10, E12, E13, FUNCT_1:9
.= [c2,c4] `2 by E9, MCART_1:def 2
.= c4 by MCART_1:def 2 ;
end;
now
let c2 be set ;
assume c2 in { [b1,b2] where B is Element of F1(), B is Element of Funcs NAT ,F2() : ex b1 being Function of NAT ,F2() st
( b3 = b2 & b3 . 0 = F3() & for b2 being Nat holds b3 . (b4 + 1) = F4() . b1,(b3 . b4) )
}
;
then consider c3 being Element of F1(), c4 being Element of Funcs NAT ,F2() such that
E6: ( c2 = [c3,c4] & ex b1 being Function of NAT ,F2() st
( b1 = c4 & b1 . 0 = F3() & for b2 being Nat holds b1 . (b2 + 1) = F4() . c3,(b1 . b2) ) ) ;
thus c2 in [:F1(),(Funcs NAT ,F2()):] by E6, ZFMISC_1:def 2;
end;
then { [b1,b2] where B is Element of F1(), B is Element of Funcs NAT ,F2() : ex b1 being Function of NAT ,F2() st
( b3 = b2 & b3 . 0 = F3() & for b2 being Nat holds b3 . (b4 + 1) = F4() . b1,(b3 . b4) )
}
c= [:F1(),(Funcs NAT ,F2()):] by TARSKI:def 3;
then reconsider c2 = { [b1,b2] where B is Element of F1(), B is Element of Funcs NAT ,F2() : ex b1 being Function of NAT ,F2() st
( b3 = b2 & b3 . 0 = F3() & for b2 being Nat holds b3 . (b4 + 1) = F4() . b1,(b3 . b4) )
}
as Relation of F1(), Funcs NAT ,F2() by RELSET_1:def 1;
E6: for b1 being set holds
( b1 in dom c2 implies b1 in F1() ) ;
for b1 being set holds
( b1 in F1() implies b1 in dom c2 )
proof
let c3 be set ;
assume E7: c3 in F1() ;
then consider c4 being Function of NAT ,F2() such that
E8: ( c4 . 0 = F3() & for b1 being Nat holds c4 . (b1 + 1) = F4() . c3,(c4 . b1) ) by E4;
reconsider c5 = c4 as Element of Funcs NAT ,F2() by FUNCT_2:11;
[c3,c5] in c2 by E7, E8;
hence c3 in dom c2 by RELAT_1:def 4;
end;
then dom c2 = F1() by E6, TARSKI:2;
then reconsider c3 = c2 as Function of F1(), Funcs NAT ,F2() by E5, FUNCT_1:def 1, FUNCT_2:def 1;
take c3 ;
for b1 being Element of F1() holds
ex b2 being Function of NAT ,F2() st
( c3 . b1 = b2 & b2 . 0 = F3() & for b3 being Nat holds b2 . (b3 + 1) = F4() . b1,(b2 . b3) )
proof
let c4 be Element of F1();
dom c3 = F1() by FUNCT_2:def 1;
then [c4,(c3 . c4)] in c3 by FUNCT_1:8;
then consider c5 being Element of F1(), c6 being Element of Funcs NAT ,F2() such that
E7: ( [c4,(c3 . c4)] = [c5,c6] & ex b1 being Function of NAT ,F2() st
( b1 = c6 & b1 . 0 = F3() & for b2 being Nat holds b1 . (b2 + 1) = F4() . c5,(b1 . b2) ) ) ;
consider c7 being Function of NAT ,F2() such that
E8: ( c7 = c6 & c7 . 0 = F3() & for b1 being Nat holds c7 . (b1 + 1) = F4() . c5,(c7 . b1) ) by E7;
E9: c4 = [c5,c6] `1 by E7, MCART_1:def 1
.= c5 by MCART_1:def 1 ;
c3 . c4 = [c5,c6] `2 by E7, MCART_1:def 2
.= c6 by MCART_1:def 2 ;
hence ex b1 being Function of NAT ,F2() st
( c3 . c4 = b1 & b1 . 0 = F3() & for b2 being Nat holds b1 . (b2 + 1) = F4() . c4,(b1 . b2) ) by E8, E9;
end;
hence for b1 being Element of F1() holds
ex b2 being Function of NAT ,F2() st
( c3 . b1 = b2 & b2 . 0 = F3() & for b3 being Nat holds b2 . (b3 + 1) = F4() . b1,(b2 . b3) ) ;
end;
then consider c1 being Function of F1(), Funcs NAT ,F2() such that
E5: for b1 being Element of F1() holds
ex b2 being Function of NAT ,F2() st
( c1 . b1 = b2 & b2 . 0 = F3() & for b3 being Nat holds b2 . (b3 + 1) = F4() . b1,(b2 . b3) ) ;
set c2 = { [[b1,b2],b3] where B is Nat, B is Element of F1(), B is Element of F2() : ex b1 being Function of NAT ,F2() st
( b4 = c1 . b2 & b3 = b4 . b1 )
}
;
E6: now
let c3, c4, c5 be set ;
assume E7: ( [c3,c4] in { [[b1,b2],b3] where B is Nat, B is Element of F1(), B is Element of F2() : ex b1 being Function of NAT ,F2() st
( b4 = c1 . b2 & b3 = b4 . b1 )
}
& [c3,c5] in { [[b1,b2],b3] where B is Nat, B is Element of F1(), B is Element of F2() : ex b1 being Function of NAT ,F2() st
( b4 = c1 . b2 & b3 = b4 . b1 )
}
) ;
then consider c6 being Nat, c7 being Element of F1(), c8 being Element of F2() such that
E8: ( [c3,c4] = [[c6,c7],c8] & ex b1 being Function of NAT ,F2() st
( b1 = c1 . c7 & c8 = b1 . c6 ) ) ;
consider c9 being Nat, c10 being Element of F1(), c11 being Element of F2() such that
E9: ( [c3,c5] = [[c9,c10],c11] & ex b1 being Function of NAT ,F2() st
( b1 = c1 . c10 & c11 = b1 . c9 ) ) by E7;
E10: [c6,c7] = [c3,c4] `1 by E8, MCART_1:def 1
.= c3 by MCART_1:def 1
.= [[c9,c10],c11] `1 by E9, MCART_1:def 1
.= [c9,c10] by MCART_1:def 1 ;
then E11: c6 = [c9,c10] `1 by MCART_1:def 1
.= c9 by MCART_1:def 1 ;
c7 = [c9,c10] `2 by E10, MCART_1:def 2
.= c10 by MCART_1:def 2 ;
hence c4 = [c3,c5] `2 by E8, E9, E11, MCART_1:def 2
.= c5 by MCART_1:def 2 ;

end;
now
let c3 be set ;
assume c3 in { [[b1,b2],b3] where B is Nat, B is Element of F1(), B is Element of F2() : ex b1 being Function of NAT ,F2() st
( b4 = c1 . b2 & b3 = b4 . b1 )
}
;
then consider c4 being Nat, c5 being Element of F1(), c6 being Element of F2() such that
E7: ( c3 = [[c4,c5],c6] & ex b1 being Function of NAT ,F2() st
( b1 = c1 . c5 & c6 = b1 . c4 ) ) ;
[c4,c5] in [:NAT ,F1():] by ZFMISC_1:def 2;
hence c3 in [:[:NAT ,F1():],F2():] by E7, ZFMISC_1:def 2;
end;
then { [[b1,b2],b3] where B is Nat, B is Element of F1(), B is Element of F2() : ex b1 being Function of NAT ,F2() st
( b4 = c1 . b2 & b3 = b4 . b1 )
}
c= [:[:NAT ,F1():],F2():] by TARSKI:def 3;
then reconsider c3 = { [[b1,b2],b3] where B is Nat, B is Element of F1(), B is Element of F2() : ex b1 being Function of NAT ,F2() st
( b4 = c1 . b2 & b3 = b4 . b1 )
}
as Relation of [:NAT ,F1():],F2() by RELSET_1:def 1;
E7: for b1 being set holds
( b1 in dom c3 implies b1 in [:NAT ,F1():] ) ;
for b1 being set holds
( b1 in [:NAT ,F1():] implies b1 in dom c3 )
proof
let c4 be set ;
assume c4 in [:NAT ,F1():] ;
then consider c5, c6 being set such that
E8: ( c5 in NAT & c6 in F1() & c4 = [c5,c6] ) by ZFMISC_1:def 2;
reconsider c7 = c5 as Nat by E8;
reconsider c8 = c6 as Element of F1() by E8;
consider c9 being Function of NAT ,F2() such that
E9: ( c1 . c8 = c9 & c9 . 0 = F3() & for b1 being Nat holds c9 . (b1 + 1) = F4() . c8,(c9 . b1) ) by E5;
ex b1 being Element of F2()ex b2 being Function of NAT ,F2() st
( b2 = c1 . c8 & b1 = b2 . c7 )
proof
take c9 . c7 ;
take c9 ;
thus ( c9 = c1 . c8 & c9 . c7 = c9 . c7 ) by E9;
end;
then consider c10 being Element of F2() such that
E10: ex b1 being Function of NAT ,F2() st
( b1 = c1 . c8 & c10 = b1 . c7 ) ;
[c4,c10] in c3 by E8, E10;
hence c4 in dom c3 by RELAT_1:def 4;
end;
then dom c3 = [:NAT ,F1():] by E7, TARSKI:2;
then reconsider c4 = c3 as Function of [:NAT ,F1():],F2() by E6, FUNCT_1:def 1, FUNCT_2:def 1;
take c4 ;
for b1 being Element of F1() holds
( c4 . 0,b1 = F3() & for b2 being Nat holds c4 . (b2 + 1),b1 = F4() . b1,(c4 . b2,b1) )
proof
let c5 be Element of F1();
consider c6 being Function of NAT ,F2() such that
E8: ( c1 . c5 = c6 & c6 . 0 = F3() & for b1 being Nat holds c6 . (b1 + 1) = F4() . c5,(c6 . b1) ) by E5;
[0,c5] in [:NAT ,F1():] by ZFMISC_1:def 2;
then [0,c5] in dom c4 by FUNCT_2:def 1;
then consider c7 being set such that
E9: [[0,c5],c7] in c4 by RELAT_1:def 4;
consider c8 being Nat, c9 being Element of F1(), c10 being Element of F2() such that
E10: ( [[0,c5],c7] = [[c8,c9],c10] & ex b1 being Function of NAT ,F2() st
( b1 = c1 . c9 & c10 = b1 . c8 ) ) by E9;
consider c11 being Function of NAT ,F2() such that
E11: ( c11 = c1 . c9 & c10 = c11 . c8 ) by E10;
E12: [0,c5] = [[c8,c9],c10] `1 by E10, MCART_1:def 1
.= [c8,c9] by MCART_1:def 1 ;
then E13: c8 = [0,c5] `1 by MCART_1:def 1
.= 0 by MCART_1:def 1 ;
E14: c7 = [[c8,c9],c10] `2 by E10, MCART_1:def 2
.= c10 by MCART_1:def 2 ;
E15: c9 = [0,c5] `2 by E12, MCART_1:def 2
.= c5 by MCART_1:def 2 ;
E16: c4 . 0,c5 = c4 . [0,c5] by BINOP_1:def 1
.= F3() by E8, E9, E11, E13, E14, E15, FUNCT_1:8 ;
now
let c12 be Nat;
[(c12 + 1),c5] in [:NAT ,F1():] by ZFMISC_1:def 2;
then [(c12 + 1),c5] in dom c4 by FUNCT_2:def 1;
then consider c13 being set such that
E17: [[(c12 + 1),c5],c13] in c4 by RELAT_1:def 4;
consider c14 being Nat, c15 being Element of F1(), c16 being Element of F2() such that
E18: ( [[(c12 + 1),c5],c13] = [[c14,c15],c16] & ex b1 being Function of NAT ,F2() st
( b1 = c1 . c15 & c16 = b1 . c14 ) ) by E17;
consider c17 being Function of NAT ,F2() such that
E19: ( c17 = c1 . c15 & c16 = c17 . c14 ) by E18;
E20: [(c12 + 1),c5] = [[c14,c15],c16] `1 by E18, MCART_1:def 1
.= [c14,c15] by MCART_1:def 1 ;
then E21: c14 = [(c12 + 1),c5] `1 by MCART_1:def 1
.= c12 + 1 by MCART_1:def 1 ;
E22: c13 = [[c14,c15],c16] `2 by E18, MCART_1:def 2
.= c16 by MCART_1:def 2 ;
E23: c15 = [(c12 + 1),c5] `2 by E20, MCART_1:def 2
.= c5 by MCART_1:def 2 ;
[c12,c5] in [:NAT ,F1():] by ZFMISC_1:def 2;
then [c12,c5] in dom c4 by FUNCT_2:def 1;
then consider c18 being set such that
E24: [[c12,c5],c18] in c4 by RELAT_1:def 4;
consider c19 being Nat, c20 being Element of F1(), c21 being Element of F2() such that
E25: ( [[c12,c5],c18] = [[c19,c20],c21] & ex b1 being Function of NAT ,F2() st
( b1 = c1 . c20 & c21 = b1 . c19 ) ) by E24;
consider c22 being Function of NAT ,F2() such that
E26: ( c22 = c1 . c20 & c21 = c22 . c19 ) by E25;
E27: [c12,c5] = [[c19,c20],c21] `1 by E25, MCART_1:def 1
.= [c19,c20] by MCART_1:def 1 ;
then E28: c19 = [c12,c5] `1 by MCART_1:def 1
.= c12 by MCART_1:def 1 ;
E29: c18 = [[c19,c20],c21] `2 by E25, MCART_1:def 2
.= c21 by MCART_1:def 2 ;
E30: c20 = [c12,c5] `2 by E27, MCART_1:def 2
.= c5 by MCART_1:def 2 ;
thus c4 . (c12 + 1),c5 = c4 . [(c12 + 1),c5] by BINOP_1:def 1
.= c6 . (c12 + 1) by E8, E17, E19, E21, E22, E23, FUNCT_1:8
.= F4() . c5,c21 by E8, E26, E28, E30
.= F4() . c5,(c4 . [c12,c5]) by E24, E29, FUNCT_1:8
.= F4() . c5,(c4 . c12,c5) by BINOP_1:def 1 ;
end;
hence ( c4 . 0,c5 = F3() & for b1 being Nat holds c4 . (b1 + 1),c5 = F4() . c5,(c4 . b1,c5) ) by E16;
end;
hence for b1 being Element of F1() holds
( c4 . 0,b1 = F3() & for b2 being Nat holds c4 . (b2 + 1),b1 = F4() . b1,(c4 . b2,b1) ) ;
end;

scheme :: BINOM:sch 3
s3{ F1() -> non empty set , F2() -> non empty set , F3() -> Element of F2(), F4() -> Function of [:F2(),F1():],F2() } :
ex b1 being Function of [:F1(),NAT :],F2() st
for b2 being Element of F1() holds
( b1 . b2,0 = F3() & for b3 being Nat holds b1 . b2,(b3 + 1) = F4() . (b1 . b2,b3),b2 )
provided
proof
E4: for b1 being Element of F1() holds
ex b2 being Function of NAT ,F2() st
( b2 . 0 = F3() & for b3 being Nat holds b2 . (b3 + 1) = F4() . (b2 . b3),b1 )
proof
let c1 be Element of F1();
defpred S1[ Nat, Element of F2(), Element of F2()] means a3 = F4() . a2,c1;
E5: for b1 being Nat
for b2 being Element of F2() holds
ex b3 being Element of F2() st
S1[b1,b2,b3] ;
ex b1 being Function of NAT ,F2() st
( b1 . 0 = F3() & for b2 being Element of NAT holds
S1[b2,b1 . b2,b1 . (b2 + 1)] ) from RECDEF_1:sch 2(E5);
hence ex b1 being Function of NAT ,F2() st
( b1 . 0 = F3() & for b2 being Nat holds b1 . (b2 + 1) = F4() . (b1 . b2),c1 ) ;
end;
ex b1 being Function of F1(), Funcs NAT ,F2() st
for b2 being Element of F1() holds
ex b3 being Function of NAT ,F2() st
( b1 . b2 = b3 & b3 . 0 = F3() & for b4 being Nat holds b3 . (b4 + 1) = F4() . (b3 . b4),b2 )
proof
set c1 = { [b1,b2] where B is Element of F1(), B is Element of Funcs NAT ,F2() : ex b1 being Function of NAT ,F2() st
( b3 = b2 & b3 . 0 = F3() & for b2 being Nat holds b3 . (b4 + 1) = F4() . (b3 . b4),b1 )
}
;
E5: now
let c2, c3, c4 be set ;
assume E6: ( [c2,c3] in { [b1,b2] where B is Element of F1(), B is Element of Funcs NAT ,F2() : ex b1 being Function of NAT ,F2() st
( b3 = b2 & b3 . 0 = F3() & for b2 being Nat holds b3 . (b4 + 1) = F4() . (b3 . b4),b1 )
}
& [c2,c4] in { [b1,b2] where B is Element of F1(), B is Element of Funcs NAT ,F2() : ex b1 being Function of NAT ,F2() st
( b3 = b2 & b3 . 0 = F3() & for b2 being Nat holds b3 . (b4 + 1) = F4() . (b3 . b4),b1 )
}
) ;
then consider c5 being Element of F1(), c6 being Element of Funcs NAT ,F2() such that
E7: ( [c2,c3] = [c5,c6] & ex b1 being Function of NAT ,F2() st
( b1 = c6 & b1 . 0 = F3() & for b2 being Nat holds b1 . (b2 + 1) = F4() . (b1 . b2),c5 ) ) ;
consider c7 being Function of NAT ,F2() such that
E8: ( c7 = c6 & c7 . 0 = F3() & for b1 being Nat holds c7 . (b1 + 1) = F4() . (c7 . b1),c5 ) by E7;
consider c8 being Element of F1(), c9 being Element of Funcs NAT ,F2() such that
E9: ( [c2,c4] = [c8,c9] & ex b1 being Function of NAT ,F2() st
( b1 = c9 & b1 . 0 = F3() & for b2 being Nat holds b1 . (b2 + 1) = F4() . (b1 . b2),c8 ) ) by E6;
consider c10 being Function of NAT ,F2() such that
E10: ( c10 = c9 & c10 . 0 = F3() & for b1 being Nat holds c10 . (b1 + 1) = F4() . (c10 . b1),c8 ) by E9;
E11: c5 = [c2,c3] `1 by E7, MCART_1:def 1
.= c2 by MCART_1:def 1
.= [c8,c9] `1 by E9, MCART_1:def 1
.= c8 by MCART_1:def 1 ;
E12: ( NAT = dom c7 & NAT = dom c10 ) by FUNCT_2:def 1;
E13: now
let c11 be set ;
assume c11 in NAT ;
then reconsider c12 = c11 as Nat ;
defpred S1[ Nat] means c7 . a1 = c10 . a1;
E14: S1[0] by E8, E10;
E15: now
let c13 be Nat;
assume E16: S1[c13] ;
c7 . (c13 + 1) = F4() . (c7 . c13),c8 by E8, E11
.= c10 . (c13 + 1) by E10, E16 ;
hence S1[c13 + 1] ;
end;
for b1 being Nat holds
S1[b1] from NAT_1:sch 1(E14, E15);
hence c7 . c11 = c10 . c12
.= c10 . c11 ;

end;
thus c3 = [c5,c6] `2 by E7, MCART_1:def 2
.= c6 by MCART_1:def 2
.= c9 by E8, E10, E12, E13, FUNCT_1:9
.= [c2,c4] `2 by E9, MCART_1:def 2
.= c4 by MCART_1:def 2 ;
end;
now
let c2 be set ;
assume c2 in { [b1,b2] where B is Element of F1(), B is Element of Funcs NAT ,F2() : ex b1 being Function of NAT ,F2() st
( b3 = b2 & b3 . 0 = F3() & for b2 being Nat holds b3 . (b4 + 1) = F4() . (b3 . b4),b1 )
}
;
then consider c3 being Element of F1(), c4 being Element of Funcs NAT ,F2() such that
E6: ( c2 = [c3,c4] & ex b1 being Function of NAT ,F2() st
( b1 = c4 & b1 . 0 = F3() & for b2 being Nat holds b1 . (b2 + 1) = F4() . (b1 . b2),c3 ) ) ;
thus c2 in [:F1(),(Funcs NAT ,F2()):] by E6, ZFMISC_1:def 2;
end;
then { [b1,b2] where B is Element of F1(), B is Element of Funcs NAT ,F2() : ex b1 being Function of NAT ,F2() st
( b3 = b2 & b3 . 0 = F3() & for b2 being Nat holds b3 . (b4 + 1) = F4() . (b3 . b4),b1 )
}
c= [:F1(),(Funcs NAT ,F2()):] by TARSKI:def 3;
then reconsider c2 = { [b1,b2] where B is Element of F1(), B is Element of Funcs NAT ,F2() : ex b1 being Function of NAT ,F2() st
( b3 = b2 & b3 . 0 = F3() & for b2 being Nat holds b3 . (b4<