:: Countable Sets and Hessenberg's Theorem
:: by Grzegorz Bancerek
::
:: Received September 5, 1990
:: Copyright (c) 1990 Association of Mizar Users

:: CARD_4 semantic presentation

Lm1: ( 0 = Card 0 & 1 = Card 1 & 2 = Card 2 )
by CARD_1:def 5;

theorem Th1: :: CARD_4:1
for X being set holds
( X is finite iff Card X is finite )
proof end;

theorem Th2: :: CARD_4:2
for X being set holds
( X is finite iff Card X in omega ) by CARD_1:84, CARD_3:58, Th1;

theorem :: CARD_4:3
canceled;

theorem :: CARD_4:4
for X being set holds
( X is finite iff ex n being Nat st Card X = Card n )
proof end;

theorem :: CARD_4:5
canceled;

theorem :: CARD_4:6
canceled;

theorem :: CARD_4:7
canceled;

theorem Th8: :: CARD_4:8
for A being Ordinal holds
( not A is finite iff omega c= A )
proof end;

theorem :: CARD_4:9
canceled;

theorem :: CARD_4:10
canceled;

theorem :: CARD_4:11
canceled;

theorem :: CARD_4:12
canceled;

theorem Th13: :: CARD_4:13
for N, M being Cardinal st N is finite & not M is finite holds
( N in M & N c= M )
proof end;

theorem :: CARD_4:14
for X being set holds
( not X is finite iff ex Y being set st
( Y c= X & Card Y = omega ) )
proof end;

theorem :: CARD_4:15
not NAT is finite ;

theorem :: CARD_4:16
canceled;

theorem :: CARD_4:17
for X being set holds
( X = {} iff Card X = 0 ) ;

theorem :: CARD_4:18
canceled;

theorem :: CARD_4:19
canceled;

theorem Th20: :: CARD_4:20
for X, Y being set holds
( Card X = Card Y iff nextcard X = nextcard Y )
proof end;

theorem :: CARD_4:21
for M, N being Cardinal holds
( M = N iff nextcard N = nextcard M )
proof end;

theorem Th22: :: CARD_4:22
for N, M being Cardinal holds
( N in M iff nextcard N c= M )
proof end;

theorem :: CARD_4:23
for N, M being Cardinal holds
( N in nextcard M iff N c= M )
proof end;

theorem Th24: :: CARD_4:24
for M being Cardinal holds
( 0 in M iff 1 c= M )
proof end;

theorem :: CARD_4:25
for M being Cardinal holds
( 1 in M iff 2 c= M )
proof end;

theorem Th26: :: CARD_4:26
for M, N being Cardinal st M is finite & ( N c= M or N in M ) holds
N is finite
proof end;

set two = succ 1;

theorem Th27: :: CARD_4:27
for A being Ordinal holds
( A is_limit_ordinal iff for B being Ordinal
for n being Nat st B in A holds
B +^ n in A )
proof end;

theorem Th28: :: CARD_4:28
for n being Nat
for A being Ordinal holds
( A +^ (succ n) = (succ A) +^ n & A +^ (n + 1) = (succ A) +^ n )
proof end;

theorem Th29: :: CARD_4:29
for A being Ordinal ex n being Nat st A *^ (succ 1) = A +^ n
proof end;

theorem Th30: :: CARD_4:30
for A being Ordinal st A is_limit_ordinal holds
A *^ (succ 1) = A
proof end;

Lm2: omega is_limit_ordinal
by ORDINAL1:def 12;

theorem Th31: :: CARD_4:31
for A being Ordinal st omega c= A holds
1 +^ A = A
proof end;

theorem Th32: :: CARD_4:32
for M being Cardinal st not M is finite holds
M is_limit_ordinal
proof end;

theorem Th33: :: CARD_4:33
for M being Cardinal st not M is finite holds
M +` M = M
proof end;

theorem Th34: :: CARD_4:34
for M, N being Cardinal st not M is finite & ( N c= M or N in M ) holds
( M +` N = M & N +` M = M )
proof end;

theorem :: CARD_4:35
for X, Y being set st not X is finite & ( X,Y are_equipotent or Y,X are_equipotent ) holds
( X \/ Y,X are_equipotent & Card (X \/ Y) = Card X )
proof end;

theorem :: CARD_4:36
for X, Y being set st not X is finite & Y is finite holds
( X \/ Y,X are_equipotent & Card (X \/ Y) = Card X )
proof end;

theorem :: CARD_4:37
for X, Y being set st not X is finite & ( Card Y in Card X or Card Y c= Card X ) holds
( X \/ Y,X are_equipotent & Card (X \/ Y) = Card X )
proof end;

theorem :: CARD_4:38
for M, N being finite Cardinal holds M +` N is finite
proof end;

theorem :: CARD_4:39
for M, N being Cardinal st not M is finite holds
( not M +` N is finite & not N +` M is finite )
proof end;

theorem :: CARD_4:40
for M, N being finite Cardinal holds M *` N is finite
proof end;

theorem Th41: :: CARD_4:41
for K, L, M, N being Cardinal st ( ( K in L & M in N ) or ( K c= L & M in N ) or ( K in L & M c= N ) or ( K c= L & M c= N ) ) holds
( K +` M c= L +` N & M +` K c= L +` N )
proof end;

theorem :: CARD_4:42
for M, N, K being Cardinal st ( M in N or M c= N ) holds
( K +` M c= K +` N & K +` M c= N +` K & M +` K c= K +` N & M +` K c= N +` K ) by Th41;

definition
let X be set ;
attr X is countable means :Def1: :: CARD_4:def 1
Card X c= omega ;
attr X is denumerable means :: CARD_4:def 2
Card X = omega ;
end;

:: deftheorem Def1 defines countable CARD_4:def 1 :
for X being set holds
( X is countable iff Card X c= omega );

:: deftheorem defines denumerable CARD_4:def 2 :
for X being set holds
( X is denumerable iff Card X = omega );

registration
cluster denumerable -> infinite countable set ;
coherence
for b1 being set st b1 is denumerable holds
( b1 is countable & not b1 is finite )
proof end;
cluster infinite countable -> denumerable set ;
coherence
for b1 being set st b1 is countable & not b1 is finite holds
b1 is denumerable
proof end;
end;

registration
cluster finite -> countable set ;
coherence
for b1 being set st b1 is finite holds
b1 is countable
proof end;
end;

theorem :: CARD_4:43
for X being set st X is finite holds
X is countable ;

registration
cluster NAT -> denumerable ;
coherence
omega is denumerable
proof end;
end;

registration
cluster denumerable set ;
existence
ex b1 being set st b1 is denumerable
proof end;
end;

theorem :: CARD_4:44
omega is countable ;

theorem Th45: :: CARD_4:45
for X being set holds
( X is countable iff ex f being Function st
( dom f = NAT & X c= rng f ) )
proof end;

theorem Th46: :: CARD_4:46
for Y, X being set st Y c= X & X is countable holds
Y is countable
proof end;

theorem Th47: :: CARD_4:47
for X, Y being set st X is countable & Y is countable holds
X \/ Y is countable
proof end;

theorem :: CARD_4:48
for X, Y being set st X is countable holds
( X /\ Y is countable & Y /\ X is countable ) by Th46, XBOOLE_1:17;

theorem :: CARD_4:49
for X, Y being set st X is countable holds
X \ Y is countable by Th46;

theorem :: CARD_4:50
for X, Y being set st X is countable & Y is countable holds
X \+\ Y is countable
proof end;

theorem Th51: :: CARD_4:51
for n being Nat
for r being Real holds
( ( r <> 0 or n = 0 ) iff r |^ n <> 0 )
proof end;

Lm3: for n1, m1, n2, m2 being Nat st (2 |^ n1) * ((2 * m1) + 1) = (2 |^ n2) * ((2 * m2) + 1) holds
n1 <= n2
proof end;

theorem Th52: :: CARD_4:52
for n1, m1, n2, m2 being Nat st (2 |^ n1) * ((2 * m1) + 1) = (2 |^ n2) * ((2 * m2) + 1) holds
( n1 = n2 & m1 = m2 )
proof end;

Lm4: for x being set st x in [:NAT ,NAT :] holds
ex n1, n2 being Element of NAT st x = [n1,n2]
proof end;

theorem Th53: :: CARD_4:53
( [:NAT ,NAT :], NAT are_equipotent & Card NAT = Card [:NAT ,NAT :] )
proof end;

theorem Th54: :: CARD_4:54
omega *` omega = omega by Th53, CARD_1:84, CARD_2:def 2;

theorem Th55: :: CARD_4:55
for X, Y being set st X is countable & Y is countable holds
[:X,Y:] is countable
proof end;

theorem Th56: :: CARD_4:56
for D being non empty set holds
( 1 -tuples_on D,D are_equipotent & Card (1 -tuples_on D) = Card D )
proof end;

theorem Th57: :: CARD_4:57
for D being non empty set
for n, m being Element of NAT holds
( [:(n -tuples_on D),(m -tuples_on D):],(n + m) -tuples_on D are_equipotent & Card [:(n -tuples_on D),(m -tuples_on D):] = Card ((n + m) -tuples_on D) )
proof end;

theorem Th58: :: CARD_4:58
for D being non empty set
for n being Element of NAT st D is countable holds
n -tuples_on D is countable
proof end;

theorem Th59: :: CARD_4:59
for M, N being Cardinal
for f being Function st Card (dom f) c= M & ( for x being set st x in dom f holds
Card (f . x) c= N ) holds
Card (Union f) c= M *` N
proof end;

theorem Th60: :: CARD_4:60
for X being set
for M, N being Cardinal st Card X c= M & ( for Y being set st Y in X holds
Card Y c= N ) holds
Card (union X) c= M *` N
proof end;

theorem Th61: :: CARD_4:61
for f being Function st dom f is countable & ( for x being set st x in dom f holds
f . x is countable ) holds
Union f is countable
proof end;

theorem :: CARD_4:62
for X being set st X is countable & ( for Y being set st Y in X holds
Y is countable ) holds
union X is countable
proof end;

theorem Th63: :: CARD_4:63
for f being Function st dom f is finite & ( for x being set st x in dom f holds
f . x is finite ) holds
Union f is finite
proof end;

theorem :: CARD_4:64
canceled;

theorem :: CARD_4:65
for D being non empty set st D is countable holds
D * is countable
proof end;

theorem :: CARD_4:66
for D being non empty set holds omega c= Card (D * )
proof end;

scheme :: CARD_4:sch 1
FraenCoun1{ F1( set ) -> set , P1[ set ] } :
{ F1(n) where n is Element of NAT : P1[n] } is countable
proof end;

scheme :: CARD_4:sch 2
FraenCoun2{ F1( set , set ) -> set , P1[ set , set ] } :
{ F1(n1,n2) where n1, n2 is Element of NAT : P1[n1,n2] } is countable
proof end;

scheme :: CARD_4:sch 3
FraenCoun3{ F1( set , set , set ) -> set , P1[ set , set , set ] } :
{ F1(n1,n2,n3) where n1, n2, n3 is Element of NAT : P1[n1,n2,n3] } is countable
proof end;

theorem Th67: :: CARD_4:67
for n being Element of NAT holds
( omega *` (Card n) c= omega & (Card n) *` omega c= omega )
proof end;

theorem Th68: :: CARD_4:68
for K, L, M, N being Cardinal st ( ( K in L & M in N ) or ( K c= L & M in N ) or ( K in L & M c= N ) or ( K c= L & M c= N ) ) holds
( K *` M c= L *` N & M *` K c= L *` N )
proof end;

theorem :: CARD_4:69
for M, N, K being Cardinal st ( M in N or M c= N ) holds
( K *` M c= K *` N & K *` M c= N *` K & M *` K c= K *` N & M *` K c= N *` K ) by Th68;

theorem Th70: :: CARD_4:70
for K, L, M, N being Cardinal holds
( ( not ( K in L & M in N ) & not ( K c= L & M in N ) & not ( K in L & M c= N ) & not ( K c= L & M c= N ) ) or K = 0 or exp K,M c= exp L,N )
proof end;

theorem :: CARD_4:71
for M, N, K being Cardinal holds
( ( not M in N & not M c= N ) or K = 0 or ( exp K,M c= exp K,N & exp M,K c= exp N,K ) )
proof end;

theorem Th72: :: CARD_4:72
for M, N being Cardinal holds
( M c= M +` N & N c= M +` N )
proof end;

theorem :: CARD_4:73
for N, M being Cardinal st N <> 0 holds
( M c= M *` N & M c= N *` M )
proof end;

theorem Th74: :: CARD_4:74
for K, L, M, N being Cardinal st K in L & M in N holds
( K +` M in L +` N & M +` K in L +` N )
proof end;

theorem :: CARD_4:75
for K, M, N being Cardinal st K +` M in K +` N holds
M in N
proof end;

theorem Th76: :: CARD_4:76
for X, Y being set st (Card X) +` (Card Y) = Card X & Card Y in Card X holds
Card (X \ Y) = Card X
proof end;

theorem Th77: :: CARD_4:77
for M being Cardinal st not M is finite holds
M *` M = M
proof end;

theorem Th78: :: CARD_4:78
for M, N being Cardinal st not M is finite & 0 in N & ( N c= M or N in M ) holds
( M *` N = M & N *` M = M )
proof end;

theorem Th79: :: CARD_4:79
for M, N being Cardinal st not M is finite & ( N c= M or N in M ) holds
( M *` N c= M & N *` M c= M )
proof end;

theorem :: CARD_4:80
for X being set st not X is finite holds
( [:X,X:],X are_equipotent & Card [:X,X:] = Card X )
proof end;

theorem :: CARD_4:81
for X, Y being set st not X is finite & Y is finite & Y <> {} holds
( [:X,Y:],X are_equipotent & Card [:X,Y:] = Card X )
proof end;

theorem :: CARD_4:82
for K, L, M, N being Cardinal st K in L & M in N holds
( K *` M in L *` N & M *` K in L *` N )
proof end;

theorem :: CARD_4:83
for K, M, N being Cardinal st K *` M in K *` N holds
M in N
proof end;

theorem Th84: :: CARD_4:84
for X being set st not X is finite holds
Card X = omega *` (Card X)
proof end;

theorem :: CARD_4:85
for X, Y being set st X <> {} & X is finite & not Y is finite holds
(Card Y) *` (Card X) = Card Y
proof end;

theorem Th86: :: CARD_4:86
for D being non empty set
for n being Element of NAT st not D is finite & n <> 0 holds
( n -tuples_on D,D are_equipotent & Card (n -tuples_on D) = Card D )
proof end;

theorem :: CARD_4:87
for D being non empty set st not D is finite holds
Card D = Card (D * )
proof end;

registration
let A be finite set ;
let B be set ;
let f be Function of A, Fin B;
cluster Union f -> finite ;
coherence
Union f is finite
proof end;
end;