:: Stirling Numbers of the Second Kind
:: by Karol P\c{a}k
::
:: Received March 15, 2005
:: Copyright (c) 2005-2021 Association of Mizar Users
:: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland).
:: This code can be distributed under the GNU General Public Licence
:: version 3.0 or later, or the Creative Commons Attribution-ShareAlike
:: License version 3.0 or later, subject to the binding interpretation
:: detailed in file COPYING.interpretation.
:: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these
:: licenses, or see http://www.gnu.org/licenses/gpl.html and
:: http://creativecommons.org/licenses/by-sa/3.0/.
environ
vocabularies NUMBERS, SUBSET_1, XBOOLE_0, XXREAL_0, NAT_1, ORDINAL1, CARD_1,
TARSKI, ARYTM_3, ARYTM_1, FUNCT_1, RELAT_1, FUNCT_2, INT_1, FINSET_1,
AFINSQ_1, FINSEQ_1, FINSOP_1, CARD_3, BINOP_2, ZFMISC_1, NEWTON,
REALSET1, STIRL2_1, XCMPLX_0;
notations TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, ORDINAL1, CARD_1, NUMBERS,
RELAT_1, FUNCT_1, RELSET_1, SEQ_4, PARTFUN1, FINSET_1, AFINSQ_1,
AFINSQ_2, XXREAL_0, XCMPLX_0, FUNCT_2, INT_1, NAT_1, BINOP_1, BINOP_2,
NEWTON, DOMAIN_1;
constructors WELLORD2, DOMAIN_1, SETWISEO, REAL_1, BINOP_2, SEQ_4, NEWTON,
AFINSQ_2, RELSET_1, PARTFUN3, BINOP_1;
registrations XBOOLE_0, SUBSET_1, RELAT_1, FUNCT_1, ORDINAL1, FUNCT_2,
FINSET_1, XXREAL_0, XREAL_0, NAT_1, INT_1, BINOP_2, MEMBERED, AFINSQ_1,
CARD_1, VALUED_0, XXREAL_2, RELSET_1, AFINSQ_2, NEWTON;
requirements REAL, NUMERALS, SUBSET, BOOLE, ARITHM;
begin
reserve k, l, m, n, i, j for Nat,
K, N for non empty Subset of NAT,
Ke, Ne, Me for Subset of NAT,
X,Y for set;
theorem :: STIRL2_1:1
min N = min* N;
theorem :: STIRL2_1:2
min(min K,min N) = min(K\/N);
theorem :: STIRL2_1:3
min(min* Ke,min* Ne) <= min* (Ke\/Ne);
theorem :: STIRL2_1:4
not min* Ne in Ne/\Ke implies min* Ne = min* (Ne\Ke);
theorem :: STIRL2_1:5
for n be Element of NAT holds min* {n} = n & min {n} = n;
theorem :: STIRL2_1:6
for n,k be Element of NAT holds min* {n,k} = min(n,k) & min {n,k} = min(n,k);
theorem :: STIRL2_1:7
for n,k,l be Element of NAT holds min* {n,k,l} = min(n,min(k,l));
theorem :: STIRL2_1:8
n is Subset of NAT;
registration
let n;
cluster -> natural for Element of Segm n;
end;
theorem :: STIRL2_1:9
N c= n implies n-1 is Element of NAT;
theorem :: STIRL2_1:10
k in Segm n implies k<=n-1 & n-1 is Element of NAT;
theorem :: STIRL2_1:11
min* n = 0;
theorem :: STIRL2_1:12
N c= Segm n implies min* N <= n-1;
theorem :: STIRL2_1:13
N c= Segm n & N <> {n-1} implies min* N < n-1;
theorem :: STIRL2_1:14
Ne c= Segm n & n>0 implies min* Ne <= n-1;
reserve f for Function of Segm n,Segm k;
definition
let n,X;
let f be Function of Segm n,X;
let x be set;
redefine func f"x -> Subset of NAT;
end;
definition
let X,k;
let f be Function of X, Segm k;
let x be object;
redefine func f.x -> Element of Segm k;
end;
definition
let n,k be Nat;
let f be Function of Segm n,Segm k;
attr f is "increasing means
:: STIRL2_1:def 1
(n = 0 iff k = 0) & for l,m st l in rng f
& m in rng f & l < m holds min* f"{l} < min* f"{m};
end;
theorem :: STIRL2_1:15
n=0 & k=0 implies f is onto "increasing;
theorem :: STIRL2_1:16
n>0 implies min* f"{m} <= n-1;
theorem :: STIRL2_1:17
f is onto implies n>=k;
theorem :: STIRL2_1:18
f is onto "increasing implies for m st m < k holds m <= min* f"{ m};
theorem :: STIRL2_1:19
f is onto "increasing implies for m st m < k holds min* f"{m} <= n-k+m;
theorem :: STIRL2_1:20
f is onto "increasing & n = k implies f = id n;
theorem :: STIRL2_1:21
f = id n & n > 0 implies f is "increasing;
theorem :: STIRL2_1:22
(n=0 iff k=0) implies
ex f be Function of Segm n, Segm k st f is "increasing;
theorem :: STIRL2_1:23
(n=0 iff k=0) & n>=k implies
ex f be Function of Segm n,Segm k st f is onto "increasing;
scheme :: STIRL2_1:sch 1
:: uogolnic na skonczone zbiory, a moze gdzies jest ??? !!!
Sch1{n,k() -> Nat,P[set]}:
{f where f is Function of Segm n(),Segm k():P[f]} is finite;
theorem :: STIRL2_1:24
for n,k holds
{f where f is Function of Segm n,Segm k:f is onto "increasing} is finite;
theorem :: STIRL2_1:25
for n,k holds
card {f where f is Function of Segm n,Segm k:f is onto "increasing}
is Element of NAT;
:: Stirling Numbers of the second kind
definition
let n,k be Nat;
func n block k -> set equals
:: STIRL2_1:def 2
card {f where f is Function of Segm n,Segm k:f is onto "increasing};
end;
registration
let n,k be Nat;
cluster n block k -> natural;
end;
theorem :: STIRL2_1:26
n block n = 1;
theorem :: STIRL2_1:27
k<>0 implies 0 block k = 0;
theorem :: STIRL2_1:28
0 block k = 1 iff k=0;
theorem :: STIRL2_1:29
n0 implies n block 0 = 0;
theorem :: STIRL2_1:32
n<>0 implies n block 1 = 1;
theorem :: STIRL2_1:33
1<=k & k <=n or k=n iff n block k qua Nat > 0;
reserve x,y for set;
scheme :: STIRL2_1:sch 2
Sch2{X,Y,X1,Y1()->set,f()->Function of X(),Y(),F(object)->object}:
ex h be
Function of X1(),Y1() st h|X() = f() & for x st x in X1()\X() holds h.x = F(x)
provided
for x st x in X1()\X() holds F(x) in Y1() and
X() c= X1() & Y() c= Y1() and
Y() is empty implies X() is empty;
scheme :: STIRL2_1:sch 3
Sch3{X,Y,X1,Y1()->set,F(object)->object,P[set,set,set]}:
card{f where f is Function of X(),Y(): P[f,X(),Y()]}
= card{f where f is Function of X1(),Y1():
P[f,X1(),Y1()]& rng (f|X()) c=Y()&
(for x st x in X1()\X() holds f.x=F(x))}
provided
for x st x in X1()\X() holds F(x) in Y1() and
X() c= X1() & Y() c= Y1() and
Y() is empty implies X() is empty and
for f be Function of X1(),Y1() st (for x st x in X1()\X() holds F(x)
=f.x) holds P[f,X1(),Y1()] iff P[f|X(),X(),Y()];
scheme :: STIRL2_1:sch 4
Sch4{X,Y()->set, x,y()->object,P[set,set,set]}:
card{f where f is Function of X(),Y(): P[f,X(),Y()]}
= card{f where f is Function of (X()\/{x()}),(Y()\/{y()}): P[f,X()
\/{x()},Y()\/{y()}] & rng (f|X()) c=Y() & f.x()=y()}
provided
Y() is empty implies X() is empty and
not x() in X() and
for f be Function of X()\/{x()},Y()\/{y()} st f.x()=y() holds P[f,X(
)\/{x()},Y()\/{y()}] iff P[f|X(),X(),Y()];
theorem :: STIRL2_1:34
for f be Function of Segm(n+1),Segm(k+1)
st f is onto "increasing & f"{f.n}=
{n} holds f.n=k;
theorem :: STIRL2_1:35
for f be Function of Segm(n+1),Segm k st k<>0 & f"{f.n}<>{n}
ex m st m in f"{f.n} & m<>n;
theorem :: STIRL2_1:36
for f be Function of Segm n, Segm k,
g be Function of Segm(n+m),Segm(k+l) st g is
"increasing & f=g|n holds for i,j st i in rng f & j in rng f & i{n} & f|n =g holds g is onto "increasing;
theorem :: STIRL2_1:39
for f be Function of Segm n,Segm k, g be Function of Segm(n+1),Segm(k+m)
st f is onto
"increasing & f=g|n holds for i,j st i in rng g & j in rng g & i{n}
;
theorem :: STIRL2_1:42
card{f where f is Function of Segm(n+1),Segm(k+1):
f is onto "increasing & f
"{f.n}={n}}=
card{f where f is Function of Segm n,Segm k: f is onto "increasing};
theorem :: STIRL2_1:43
for l st l{n} & f.n=l}
= card{f where f is Function of Segm n,Segm k: f is onto "increasing};
theorem :: STIRL2_1:44
for f be Function, n holds union (rng (f|n)) \/ f.n=union rng (f |(n+1));
scheme :: STIRL2_1:sch 5
Sch6{D()->non empty set,n()->Nat,P[object,object]}:
ex p be XFinSequence of D() st dom p = Segm n() &
for k st k in Segm n() holds P[k,p.k]
provided
for k st k in Segm n() ex x be Element of D() st P[k,x];
scheme :: STIRL2_1:sch 6
Sch8{X,Y()->finite set,x()->set,P[set],f()->Function of card Y(),Y()}:
ex F be XFinSequence of NAT st dom F = card Y() &
card{g where g is Function of X(),Y():P[g]} = Sum(F) &
for i st i in dom F holds F.i = card{g where g is Function
of X(),Y(): P[g] & g.x()=f().i}
provided
f() is onto one-to-one and
Y() is non empty and
x() in X();
theorem :: STIRL2_1:45
k * (n block k)= card{f where f is
Function of Segm(n+1),Segm k: f is onto "increasing & f"{f.n}<>{n}};
:: Recursive dependence
theorem :: STIRL2_1:46
(n+1) block (k+1) = (k+1)*(n block (k+1) ) + (n block k);
theorem :: STIRL2_1:47
n>=1 implies n block 2 = 1/2 * (2 |^ n - 2 );
theorem :: STIRL2_1:48
n >= 2 implies n block 3 = 1/6 * ( 3 |^ n - 3 * 2 |^ n + 3 );
theorem :: STIRL2_1:49
n >= 3 implies n block 4 = 1/24 * ( 4 |^ n - 4 * 3 |^ n + 6* 2|^ n - 4 );
theorem :: STIRL2_1:50
3! = 6 & 4! = 24;
theorem :: STIRL2_1:51
n choose 1=n & n choose 2=n*(n-1)/2 & n choose 3=n*(n-1)*(n-2)/6
& n choose 4=n*(n-1)*(n-2)*(n-3)/24;
theorem :: STIRL2_1:52
(n + 1) block n = (n + 1) choose 2;
theorem :: STIRL2_1:53
(n + 2) block n = 3*((n + 2) choose 4) + ((n + 2) choose 3);
theorem :: STIRL2_1:54
for F be Function,y holds rng (F|(dom F\F"{y}))=rng F\{y} & for
x st x<>y holds (F|(dom F\F"{y}))"{x}=F"{x};
theorem :: STIRL2_1:55
card X=k+1 & x in X implies card (X\{x})=k;
scheme :: STIRL2_1:sch 7
Sch9{P[set],Q[set,Function]}: for F be Function st rng F is finite holds P[F
]
provided
P[{}] and
for F be Function st for x st x in rng F & Q[x,F] holds P[F|(dom F\F
"{x})] holds P[F];
theorem :: STIRL2_1:56
for N be Subset of NAT st N is finite ex k st for n st n in N holds n<=k;
theorem :: STIRL2_1:57
for X,Y for x,y being object
st (Y is empty implies X is empty) & not x in X
for
F be Function of X,Y ex G be Function of X\/{x},Y\/{y} st G|X = F & G.x=y;
theorem :: STIRL2_1:58
for X,Y,x,y st (Y is empty implies X is empty) for F be Function
of X,Y,G be Function of X\/{x},Y\/{y} st G|X=F & G.x=y holds ( F is onto
implies G is onto) & ( not y in Y & F is one-to-one implies G is one-to-one);
theorem :: STIRL2_1:59
for N be finite Subset of NAT
ex Order be Function of N, Segm card N
st Order is bijective & for n,k st n in dom Order & k in dom Order & nj holds F.i misses F.j)
ex CardF be XFinSequence of NAT st dom CardF = dom F &
(for i st i in dom CardF holds CardF.i=card (F.i)) &
card union rng F = Sum(CardF);