:: CARD_FIN semantic presentation

Lemma1: for b1, b2 being set st b1 in b2 holds
(b2 \ {b1}) \/ {b1} = b2
by ZFMISC_1:140;

Lemma2: for b1, b2 being set st not b1 in b2 holds
(b2 \/ {b1}) \ {b1} = b2
by ZFMISC_1:141;

theorem Th1: :: CARD_FIN:1
for b1, b2 being finite set st b1 c= b2 & card b1 = card b2 holds
b1 = b2
proof end;

theorem Th2: :: CARD_FIN:2
for b1, b2 being finite set
for b3, b4 being set st ( b2 = {} implies b1 = {} ) & not b3 in b1 holds
card (Funcs b1,b2) = Card { b5 where B is Function of b1 \/ {b3},b2 \/ {b4} : ( rng (b5 | b1) c= b2 & b5 . b3 = b4 ) }
proof end;

theorem Th3: :: CARD_FIN:3
for b1, b2 being finite set
for b3, b4 being set st not b3 in b1 & b4 in b2 holds
card (Funcs b1,b2) = Card { b5 where B is Function of b1 \/ {b3},b2 : b5 . b3 = b4 }
proof end;

theorem Th4: :: CARD_FIN:4
for b1, b2 being finite set st ( b1 = {} implies b2 = {} ) holds
card (Funcs b2,b1) = (card b1) |^ (card b2)
proof end;

theorem Th5: :: CARD_FIN:5
for b1, b2 being finite set
for b3, b4 being set st ( b2 is empty implies b1 is empty ) & not b3 in b1 & not b4 in b2 holds
Card { b5 where B is Function of b1,b2 : b5 is one-to-one } = Card { b5 where B is Function of b1 \/ {b3},b2 \/ {b4} : ( b5 is one-to-one & b5 . b3 = b4 ) }
proof end;

theorem Th6: :: CARD_FIN:6
for b1, b2 being Nat holds (b1 ! ) / ((b1 -' b2) ! ) is Nat
proof end;

theorem Th7: :: CARD_FIN:7
for b1, b2 being finite set st card b1 <= card b2 holds
Card { b3 where B is Function of b1,b2 : b3 is one-to-one } = ((card b2) ! ) / (((card b2) -' (card b1)) ! )
proof end;

theorem Th8: :: CARD_FIN:8
for b1 being finite set holds Card { b2 where B is Function of b1,b1 : b2 is Permutation of b1 } = (card b1) !
proof end;

definition
let c1 be finite set ;
let c2 be Nat;
let c3, c4 be set ;
func Choose c1,c2,c3,c4 -> Subset of (Funcs a1,{a3,a4}) means :Def1: :: CARD_FIN:def 1
for b1 being set holds
( b1 in a5 iff ex b2 being Function of a1,{a3,a4} st
( b2 = b1 & Card (b2 " {a3}) = a2 ) );
existence
ex b1 being Subset of (Funcs c1,{c3,c4}) st
for b2 being set holds
( b2 in b1 iff ex b3 being Function of c1,{c3,c4} st
( b3 = b2 & Card (b3 " {c3}) = c2 ) )
proof end;
uniqueness
for b1, b2 being Subset of (Funcs c1,{c3,c4}) st ( for b3 being set holds
( b3 in b1 iff ex b4 being Function of c1,{c3,c4} st
( b4 = b3 & Card (b4 " {c3}) = c2 ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4 being Function of c1,{c3,c4} st
( b4 = b3 & Card (b4 " {c3}) = c2 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def1 defines Choose CARD_FIN:def 1 :
for b1 being finite set
for b2 being Nat
for b3, b4 being set
for b5 being Subset of (Funcs b1,{b3,b4}) holds
( b5 = Choose b1,b2,b3,b4 iff for b6 being set holds
( b6 in b5 iff ex b7 being Function of b1,{b3,b4} st
( b7 = b6 & Card (b7 " {b3}) = b2 ) ) );

theorem Th9: :: CARD_FIN:9
for b1 being set
for b2 being finite set
for b3 being Nat st card b2 <> b3 holds
Choose b2,b3,b1,b1 is empty
proof end;

theorem Th10: :: CARD_FIN:10
for b1, b2 being set
for b3 being finite set
for b4 being Nat st card b3 < b4 holds
Choose b3,b4,b1,b2 is empty
proof end;

theorem Th11: :: CARD_FIN:11
for b1, b2 being set
for b3 being finite set st b1 <> b2 holds
card (Choose b3,0,b1,b2) = 1
proof end;

theorem Th12: :: CARD_FIN:12
for b1, b2 being set
for b3 being finite set holds card (Choose b3,(card b3),b1,b2) = 1
proof end;

theorem Th13: :: CARD_FIN:13
for b1, b2 being set
for b3 being Function st b3 . b1 = b2 & b1 in dom b3 holds
{b1} \/ ((b3 | ((dom b3) \ {b1})) " {b2}) = b3 " {b2}
proof end;

theorem Th14: :: CARD_FIN:14
for b1, b2, b3 being set
for b4 being finite set
for b5 being Nat st not b1 in b4 holds
card (Choose b4,b5,b2,b3) = Card { b6 where B is Function of b4 \/ {b1},{b2,b3} : ( Card (b6 " {b2}) = b5 + 1 & b6 . b1 = b2 ) }
proof end;

theorem Th15: :: CARD_FIN:15
for b1, b2 being set
for b3 being Function st b3 . b1 <> b2 holds
(b3 | ((dom b3) \ {b1})) " {b2} = b3 " {b2}
proof end;

theorem Th16: :: CARD_FIN:16
for b1, b2, b3 being set
for b4 being finite set
for b5 being Nat st not b1 in b4 & b2 <> b3 holds
card (Choose b4,b5,b2,b3) = Card { b6 where B is Function of b4 \/ {b1},{b2,b3} : ( Card (b6 " {b2}) = b5 & b6 . b1 = b3 ) }
proof end;

Lemma18: for b1, b2, b3 being set
for b4 being finite set
for b5 being Nat st b1 <> b2 & not b3 in b4 holds
( { b6 where B is Function of b4 \/ {b3},{b1,b2} : ( Card (b6 " {b1}) = b5 + 1 & b6 . b3 = b1 ) } \/ { b6 where B is Function of b4 \/ {b3},{b1,b2} : ( Card (b6 " {b1}) = b5 + 1 & b6 . b3 = b2 ) } = Choose (b4 \/ {b3}),(b5 + 1),b1,b2 & { b6 where B is Function of b4 \/ {b3},{b1,b2} : ( Card (b6 " {b1}) = b5 + 1 & b6 . b3 = b1 ) } misses { b6 where B is Function of b4 \/ {b3},{b1,b2} : ( Card (b6 " {b1}) = b5 + 1 & b6 . b3 = b2 ) } )
proof end;

theorem Th17: :: CARD_FIN:17
for b1, b2, b3 being set
for b4 being finite set
for b5 being Nat st b1 <> b2 & not b3 in b4 holds
card (Choose (b4 \/ {b3}),(b5 + 1),b1,b2) = (card (Choose b4,(b5 + 1),b1,b2)) + (card (Choose b4,b5,b1,b2))
proof end;

theorem Th18: :: CARD_FIN:18
for b1, b2 being set
for b3 being finite set
for b4 being Nat st b1 <> b2 holds
card (Choose b3,b4,b1,b2) = (card b3) choose b4
proof end;

theorem Th19: :: CARD_FIN:19
for b1, b2 being set
for b3, b4 being finite set st b1 <> b2 holds
(b3 --> b2) +* (b4 --> b1) in Choose (b4 \/ b3),(card b4),b1,b2
proof end;

theorem Th20: :: CARD_FIN:20
for b1, b2 being set
for b3, b4 being finite set st b1 <> b2 & b3 misses b4 holds
(b3 --> b1) +* (b4 --> b2) in Choose (b3 \/ b4),(card b3),b1,b2
proof end;

definition
let c1, c2 be Function;
let c3 be set ;
func Intersection c1,c2,c3 -> Subset of (union (rng a1)) means :Def2: :: CARD_FIN:def 2
for b1 being set holds
( b1 in a4 iff ( b1 in union (rng a1) & ( for b2 being set st b2 in dom a2 & a2 . b2 = a3 holds
b1 in a1 . b2 ) ) );
existence
ex b1 being Subset of (union (rng c1)) st
for b2 being set holds
( b2 in b1 iff ( b2 in union (rng c1) & ( for b3 being set st b3 in dom c2 & c2 . b3 = c3 holds
b2 in c1 . b3 ) ) )
proof end;
uniqueness
for b1, b2 being Subset of (union (rng c1)) st ( for b3 being set holds
( b3 in b1 iff ( b3 in union (rng c1) & ( for b4 being set st b4 in dom c2 & c2 . b4 = c3 holds
b3 in c1 . b4 ) ) ) ) & ( for b3 being set holds
( b3 in b2 iff ( b3 in union (rng c1) & ( for b4 being set st b4 in dom c2 & c2 . b4 = c3 holds
b3 in c1 . b4 ) ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def2 defines Intersection CARD_FIN:def 2 :
for b1, b2 being Function
for b3 being set
for b4 being Subset of (union (rng b1)) holds
( b4 = Intersection b1,b2,b3 iff for b5 being set holds
( b5 in b4 iff ( b5 in union (rng b1) & ( for b6 being set st b6 in dom b2 & b2 . b6 = b3 holds
b5 in b1 . b6 ) ) ) );

theorem Th21: :: CARD_FIN:21
for b1, b2 being set
for b3, b4 being Function st not (dom b3) /\ (b4 " {b1}) is empty holds
( b2 in Intersection b3,b4,b1 iff for b5 being set st b5 in dom b4 & b4 . b5 = b1 holds
b2 in b3 . b5 )
proof end;

theorem Th22: :: CARD_FIN:22
for b1 being set
for b2, b3 being Function st not Intersection b2,b3,b1 is empty holds
b3 " {b1} c= dom b2
proof end;

theorem Th23: :: CARD_FIN:23
for b1 being set
for b2, b3 being Function st not Intersection b2,b3,b1 is empty holds
for b4, b5 being set st b4 in b3 " {b1} & b5 in b3 " {b1} holds
b2 . b4 meets b2 . b5
proof end;

theorem Th24: :: CARD_FIN:24
for b1, b2 being set
for b3, b4 being Function st b1 in Intersection b3,b4,b2 & b2 in rng b4 holds
ex b5 being set st
( b5 in dom b4 & b4 . b5 = b2 & b1 in b3 . b5 )
proof end;

theorem Th25: :: CARD_FIN:25
for b1 being set
for b2, b3 being Function st ( b2 is empty or union (rng b2) is empty ) holds
Intersection b2,b3,b1 = union (rng b2)
proof end;

theorem Th26: :: CARD_FIN:26
for b1 being set
for b2, b3 being Function st b2 | (b3 " {b1}) = (b3 " {b1}) --> (union (rng b2)) holds
Intersection b2,b3,b1 = union (rng b2)
proof end;

theorem Th27: :: CARD_FIN:27
for b1 being set
for b2, b3 being Function st not union (rng b2) is empty & Intersection b2,b3,b1 = union (rng b2) holds
b2 | (b3 " {b1}) = (b3 " {b1}) --> (union (rng b2))
proof end;

theorem Th28: :: CARD_FIN:28
for b1 being set
for b2 being Function holds Intersection b2,{} ,b1 = union (rng b2)
proof end;

theorem Th29: :: CARD_FIN:29
for b1, b2 being set
for b3, b4 being Function holds Intersection b3,b4,b1 c= Intersection b3,(b4 | b2),b1
proof end;

theorem Th30: :: CARD_FIN:30
for b1, b2 being set
for b3, b4 being Function st b3 " {b1} = (b3 | b2) " {b1} holds
Intersection b4,b3,b1 = Intersection b4,(b3 | b2),b1
proof end;

theorem Th31: :: CARD_FIN:31
for b1, b2 being set
for b3, b4 being Function holds Intersection (b3 | b1),b4,b2 c= Intersection b3,b4,b2
proof end;

theorem Th32: :: CARD_FIN:32
for b1, b2 being set
for b3, b4 being Function st b1 in rng b3 & b3 " {b1} c= b2 holds
Intersection (b4 | b2),b3,b1 = Intersection b4,b3,b1
proof end;

theorem Th33: :: CARD_FIN:33
for b1, b2 being set
for b3, b4 being Function st b1 in b3 " {b2} holds
Intersection b4,b3,b2 c= b4 . b1
proof end;

theorem Th34: :: CARD_FIN:34
for b1, b2 being set
for b3, b4 being Function st b1 in b3 " {b2} holds
(Intersection b4,(b3 | ((dom b3) \ {b1})),b2) /\ (b4 . b1) = Intersection b4,b3,b2
proof end;

theorem Th35: :: CARD_FIN:35
for b1, b2 being set
for b3, b4, b5 being Function st b4 " {b1} = b5 " {b2} holds
Intersection b3,b4,b1 = Intersection b3,b5,b2
proof end;

theorem Th36: :: CARD_FIN:36
for b1 being set
for b2, b3 being Function st b2 " {b1} = {} holds
Intersection b3,b2,b1 = union (rng b3)
proof end;

theorem Th37: :: CARD_FIN:37
for b1, b2 being set
for b3, b4 being Function st {b1} = b3 " {b2} holds
Intersection b4,b3,b2 = b4 . b1
proof end;

theorem Th38: :: CARD_FIN:38
for b1, b2, b3 being set
for b4, b5 being Function st {b1,b2} = b4 " {b3} holds
Intersection b5,b4,b3 = (b5 . b1) /\ (b5 . b2)
proof end;

theorem Th39: :: CARD_FIN:39
for b1, b2 being set
for b3 being Function st not b3 is empty holds
( b1 in Intersection b3,((dom b3) --> b2),b2 iff for b4 being set st b4 in dom b3 holds
b1 in b3 . b4 )
proof end;

definition
let c1 be Function;
attr a1 is finite-yielding means :Def3: :: CARD_FIN:def 3
for b1 being set holds a1 . b1 is finite;
end;

:: deftheorem Def3 defines finite-yielding CARD_FIN:def 3 :
for b1 being Function holds
( b1 is finite-yielding iff for b2 being set holds b1 . b2 is finite );

registration
cluster non empty finite-yielding set ;
existence
ex b1 being Function st
( not b1 is empty & b1 is finite-yielding )
proof end;
cluster empty finite-yielding set ;
existence
ex b1 being Function st
( b1 is empty & b1 is finite-yielding )
proof end;
end;

registration
let c1 be finite-yielding Function;
let c2 be set ;
cluster a1 . a2 -> finite ;
coherence
c1 . c2 is finite
by Def3;
end;

registration
let c1 be finite-yielding Function;
let c2 be set ;
cluster a1 | a2 -> finite-yielding ;
coherence
c1 | c2 is finite-yielding
proof end;
end;

registration
let c1 be finite-yielding Function;
let c2 be Function;
cluster a2 * a1 -> finite-yielding ;
coherence
c1 * c2 is finite-yielding
proof end;
cluster Intersect a1,a2 -> finite-yielding ;
coherence
Intersect c1,c2 is finite-yielding
proof end;
end;

theorem Th40: :: CARD_FIN:40
for b1 being set
for b2 being Function
for b3 being finite-yielding Function st b1 in rng b2 holds
Intersection b3,b2,b1 is finite
proof end;

theorem Th41: :: CARD_FIN:41
for b1 being finite-yielding Function st dom b1 is finite holds
union (rng b1) is finite
proof end;

definition
let c1 be XFinSequence;
let c2 be Nat;
redefine func | as c1 | c2 -> XFinSequence;
coherence
c1 | c2 is XFinSequence
by AFINSQ_1:12;
end;

definition
let c1 be set ;
let c2 be XFinSequence of c1;
let c3 be Nat;
redefine func | as c2 | c3 -> XFinSequence of a1;
coherence
c2 | c3 is XFinSequence of c1
by AFINSQ_1:16;
end;

Lemma41: for b1 being Nat
for b2 being XFinSequence st b1 <= len b2 holds
( len (b2 | b1) = b1 & dom (b2 | b1) = b1 )
proof end;

theorem Th42: :: CARD_FIN:42
for b1 being non empty set
for b2 being XFinSequence of b1
for b3 being BinOp of b1
for b4 being Nat st b4 in dom b2 & ( b3 has_a_unity or b4 <> 0 ) holds
b3 . (b3 "**" (b2 | b4)),(b2 . b4) = b3 "**" (b2 | (b4 + 1))
proof end;

theorem Th43: :: CARD_FIN:43
for b1 being non empty set
for b2 being XFinSequence of b1
for b3 being Nat st len b2 = b3 + 1 holds
b2 = (b2 | b3) ^ <%(b2 . b3)%>
proof end;

theorem Th44: :: CARD_FIN:44
for b1 being XFinSequence of NAT
for b2 being Nat st b2 in dom b1 holds
(Sum (b1 | b2)) + (b1 . b2) = Sum (b1 | (b2 + 1))
proof end;

theorem Th45: :: CARD_FIN:45
for b1 being XFinSequence of NAT
for b2 being Nat st rng b1 c= {0,b2} holds
Sum b1 = b2 * (card (b1 " {b2}))
proof end;

theorem Th46: :: CARD_FIN:46
for b1 being set
for b2, b3 being Nat holds
( b1 in Choose b2,b3,1,0 iff ex b4 being XFinSequence of NAT st
( b4 = b1 & dom b4 = b2 & rng b4 c= {0,1} & Sum b4 = b3 ) )
proof end;

theorem Th47: :: CARD_FIN:47
for b1 being non empty set
for b2 being XFinSequence of b1
for b3 being BinOp of b1 st ( b3 has_a_unity or len b2 >= 1 ) holds
b3 "**" b2 = b3 "**" (XFS2FS b2)
proof end;

theorem Th48: :: CARD_FIN:48
for b1 being non empty set
for b2 being BinOp of b1
for b3, b4 being XFinSequence of b1
for b5 being Permutation of dom b3 st b2 is commutative & b2 is associative & ( b2 has_a_unity or len b3 >= 1 ) & b4 = b3 * b5 holds
b2 "**" b3 = b2 "**" b4
proof end;

Lemma47: for b1 being finite set ex b2 being Function of card b1,b1 st b2 is one-to-one
proof end;

definition
let c1 be Nat;
let c2 be finite-yielding Function;
assume E48: dom c2 is finite ;
func Card_Intersection c2,c1 -> Nat means :Def4: :: CARD_FIN:def 4
for b1, b2 being set
for b3 being finite set
for b4 being Function of card (Choose b3,a1,b1,b2), Choose b3,a1,b1,b2 st dom a2 = b3 & b4 is one-to-one & b1 <> b2 holds
ex b5 being XFinSequence of NAT st
( dom b5 = dom b4 & ( for b6 being set
for b7 being Function st b6 in dom b5 & b7 = b4 . b6 holds
b5 . b6 = Card (Intersection a2,b7,b1) ) & a3 = Sum b5 );
existence
ex b1 being Nat st
for b2, b3 being set
for b4 being finite set
for b5 being Function of card (Choose b4,c1,b2,b3), Choose b4,c1,b2,b3 st dom c2 = b4 & b5 is one-to-one & b2 <> b3 holds
ex b6 being XFinSequence of NAT st
( dom b6 = dom b5 & ( for b7 being set
for b8 being Function st b7 in dom b6 & b8 = b5 . b7 holds
b6 . b7 = Card (Intersection c2,b8,b2) ) & b1 = Sum b6 )
proof end;
uniqueness
for b1, b2 being Nat st ( for b3, b4 being set
for b5 being finite set
for b6 being Function of card (Choose b5,c1,b3,b4), Choose b5,c1,b3,b4 st dom c2 = b5 & b6 is one-to-one & b3 <> b4 holds
ex b7 being XFinSequence of NAT st
( dom b7 = dom b6 & ( for b8 being set
for b9 being Function st b8 in dom b7 & b9 = b6 . b8 holds
b7 . b8 = Card (Intersection c2,b9,b3) ) & b1 = Sum b7 ) ) & ( for b3, b4 being set
for b5 being finite set
for b6 being Function of card (Choose b5,c1,b3,b4), Choose b5,c1,b3,b4 st dom c2 = b5 & b6 is one-to-one & b3 <> b4 holds
ex b7 being XFinSequence of NAT st
( dom b7 = dom b6 & ( for b8 being set
for b9 being Function st b8 in dom b7 & b9 = b6 . b8 holds
b7 . b8 = Card (Intersection c2,b9,b3) ) & b2 = Sum b7 ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def4 defines Card_Intersection CARD_FIN:def 4 :
for b1 being Nat
for b2 being finite-yielding Function st dom b2 is finite holds
for b3 being Nat holds
( b3 = Card_Intersection b2,b1 iff for b4, b5 being set
for b6 being finite set
for b7 being Function of card (Choose b6,b1,b4,b5), Choose b6,b1,b4,b5 st dom b2 = b6 & b7 is one-to-one & b4 <> b5 holds
ex b8 being XFinSequence of NAT st
( dom b8 = dom b7 & ( for b9 being set
for b10 being Function st b9 in dom b8 & b10 = b7 . b9 holds
b8 . b9 = Card (Intersection b2,b10,b4) ) & b3 = Sum b8 ) );

theorem Th49: :: CARD_FIN:49
for b1 being Nat
for b2 being finite-yielding Function
for b3, b4 being set
for b5 being finite set
for b6 being Function of card (Choose b5,b1,b3,b4), Choose b5,b1,b3,b4 st dom b2 = b5 & b6 is one-to-one & b3 <> b4 holds
for b7 being XFinSequence of NAT st dom b7 = dom b6 & ( for b8 being set
for b9 being Function st b8 in dom b7 & b9 = b6 . b8 holds
b7 . b8 = Card (Intersection b2,b9,b3) ) holds
Card_Intersection b2,b1 = Sum b7
proof end;

theorem Th50: :: CARD_FIN:50
for b1 being Nat
for b2 being finite-yielding Function st dom b2 is finite & b1 = 0 holds
Card_Intersection b2,b1 = Card (union (rng b2))
proof end;

theorem Th51: :: CARD_FIN:51
for b1 being finite set
for b2 being Nat
for b3 being finite-yielding Function st dom b3 = b1 & b2 > card b1 holds
Card_Intersection b3,b2 = 0
proof end;

theorem Th52: :: CARD_FIN:52
for b1 being finite-yielding Function
for b2 being finite set st dom b1 = b2 holds
for b3 being Function of card b2,b2 st b3 is one-to-one holds
ex b4 being XFinSequence of NAT st
( dom b4 = card b2 & ( for b5 being set st b5 in dom b4 holds
b4 . b5 = card ((b1 * b3) . b5) ) & Card_Intersection b1,1 = Sum b4 )
proof end;

theorem Th53: :: CARD_FIN:53
for b1 being set
for b2 being finite set
for b3 being finite-yielding Function st dom b3 = b2 holds
Card_Intersection b3,(card b2) = Card (Intersection b3,(b2 --> b1),b1)
proof end;

theorem Th54: :: CARD_FIN:54
for b1 being set
for b2 being finite set
for b3 being finite-yielding Function st b3 = b1 .--> b2 holds
Card_Intersection b3,1 = card b2
proof end;

theorem Th55: :: CARD_FIN:55
for b1, b2 being set
for b3, b4 being finite set
for b5 being finite-yielding Function st b1 <> b2 & b5 = b1,b2 --> b3,b4 holds
( Card_Intersection b5,1 = (card b3) + (card b4) & Card_Intersection b5,2 = card (b3 /\ b4) )
proof end;

theorem Th56: :: CARD_FIN:56
for b1 being finite-yielding Function
for b2 being set st dom b1 is finite & b2 in dom b1 holds
Card_Intersection b1,1 = (Card_Intersection (b1 | ((dom b1) \ {b2})),1) + (card (b1 . b2))
proof end;

theorem Th57: :: CARD_FIN:57
for b1 being set
for b2 being Function holds
( dom (Intersect b2,((dom b2) --> b1)) = dom b2 & ( for b3 being set st b3 in dom b2 holds
(Intersect b2,((dom b2) --> b1)) . b3 = (b2 . b3) /\ b1 ) )
proof end;

theorem Th58: :: CARD_FIN:58
for b1 being set
for b2 being Function holds (union (rng b2)) /\ b1 = union (rng (Intersect b2,((dom b2) --> b1)))
proof end;

theorem Th59: :: CARD_FIN:59
for b1, b2 being set
for b3, b4 being Function holds (Intersection b3,b4,b1) /\ b2 = Intersection (Intersect b3,((dom b3) --> b2)),b4,b1
proof end;

theorem Th60: :: CARD_FIN:60
for b1, b2 being XFinSequence st b1 is one-to-one & b2 is one-to-one & rng b1 misses rng b2 holds
b1 ^ b2 is one-to-one
proof end;

theorem Th61: :: CARD_FIN:61
for b1 being Nat
for b2 being finite-yielding Function
for b3 being finite set
for b4 being set
for b5 being Nat st dom b2 = b3 & b4 in dom b2 & b1 > 0 holds
Card_Intersection b2,(b1 + 1) = (Card_Intersection (b2 | ((dom b2) \ {b4})),(b1 + 1)) + (Card_Intersection (Intersect (b2 | ((dom b2) \ {b4})),(((dom b2) \ {b4}) --> (b2 . b4))),b1)
proof end;

theorem Th62: :: CARD_FIN:62
for b1 being non empty set
for b2 being BinOp of b1
for b3, b4, b5 being XFinSequence of b1 st b2 is commutative & b2 is associative & ( b2 has_a_unity or len b3 >= 1 ) & len b3 = len b4 & len b3 = len b5 & ( for b6 being Nat st b6 in dom b5 holds
b5 . b6 = b2 . (b3 . b6),(b4 . b6) ) holds
b2 "**" (b3 ^ b4) = b2 "**" b5
proof end;

definition
let c1 be XFinSequence of INT ;
func Sum c1 -> Integer equals :: CARD_FIN:def 5
addint "**" a1;
coherence
addint "**" c1 is Integer
;
end;

:: deftheorem Def5 defines Sum CARD_FIN:def 5 :
for b1 being XFinSequence of INT holds Sum b1 = addint "**" b1;

definition
let c1 be XFinSequence of INT ;
let c2 be set ;
redefine func . as c1 . c2 -> Integer;
coherence
c1 . c2 is Integer
proof end;
end;

theorem Th63: :: CARD_FIN:63
for b1 being XFinSequence of NAT
for b2 being XFinSequence of INT st b2 = b1 holds
Sum b2 = Sum b1
proof end;

theorem Th64: :: CARD_FIN:64
for b1, b2 being XFinSequence of INT
for b3 being Integer st dom b1 = dom b2 & ( for b4 being Nat st b4 in dom b1 holds
b3 * (b1 . b4) = b2 . b4 ) holds
b3 * (Sum b1) = Sum b2
proof end;

theorem Th65: :: CARD_FIN:65
for b1 being set
for b2 being Function st b1 in dom b2 holds
union (rng b2) = (union (rng (b2 | ((dom b2) \ {b1})))) \/ (b2 . b1)
proof end;

theorem Th66: :: CARD_FIN:66
for b1 being finite-yielding Function
for b2 being finite set ex b3 being XFinSequence of INT st
( dom b3 = card b2 & ( for b4 being Nat st b4 in dom b3 holds
b3 . b4 = ((- 1) |^ b4) * (Card_Intersection b1,(b4 + 1)) ) )
proof end;

theorem Th67: :: CARD_FIN:67
for b1 being finite-yielding Function
for b2 being finite set st dom b1 = b2 holds
for b3 being XFinSequence of INT st dom b3 = card b2 & ( for b4 being Nat st b4 in dom b3 holds
b3 . b4 = ((- 1) |^ b4) * (Card_Intersection b1,(b4 + 1)) ) holds
Card (union (rng b1)) = Sum b3
proof end;

theorem Th68: :: CARD_FIN:68
for b1 being finite-yielding Function
for b2 being finite set
for b3, b4 being Nat st dom b1 = b2 & ex b5, b6 being set st
( b5 <> b6 & ( for b7 being Function st b7 in Choose b2,b4,b5,b6 holds
Card (Intersection b1,b7,b5) = b3 ) ) holds
Card_Intersection b1,b4 = b3 * ((card b2) choose b4)
proof end;

theorem Th69: :: CARD_FIN:69
for b1 being finite-yielding Function
for b2 being finite set st dom b1 = b2 holds
for b3 being XFinSequence of NAT st dom b3 = card b2 & ( for b4 being Nat st b4 in dom b3 holds
ex b5, b6 being set st
( b5 <> b6 & ( for b7 being Function st b7 in Choose b2,(b4 + 1),b5,b6 holds
Card (Intersection b1,b7,b5) = b3 . b4 ) ) ) holds
ex b4 being XFinSequence of INT st
( dom b4 = card b2 & Card (union (rng b1)) = Sum b4 & ( for b5 being Nat st b5 in dom b4 holds
b4 . b5 = (((- 1) |^ b5) * (b3 . b5)) * ((card b2) choose (b5 + 1)) ) )
proof end;

Lemma67: for b1, b2 being finite set st not b1 is empty & not b2 is empty holds
ex b3 being XFinSequence of INT st
( dom b3 = card b2 & ((card b2) |^ (card b1)) - (Sum b3) = Card { b4 where B is Function of b1,b2 : b4 is onto } & ( for b4 being Nat st b4 in dom b3 holds
b3 . b4 = (((- 1) |^ b4) * ((card b2) choose (b4 + 1))) * ((((card b2) - b4) - 1) |^ (card b1)) ) )
proof end;

theorem Th70: :: CARD_FIN:70
for b1, b2 being finite set st not b1 is empty & not b2 is empty holds
ex b3 being XFinSequence of INT st
( dom b3 = (card b2) + 1 & Sum b3 = Card { b4 where B is Function of b1,b2 : b4 is onto } & ( for b4 being Nat st b4 in dom b3 holds
b3 . b4 = (((- 1) |^ b4) * ((card b2) choose b4)) * (((card b2) - b4) |^ (card b1)) ) )
proof end;

theorem Th71: :: CARD_FIN:71
for b1, b2 being Nat st b2 <= b1 holds
ex b3 being XFinSequence of INT st
( b1 block b2 = (1 / (b2 ! )) * (Sum b3) & dom b3 = b2 + 1 & ( for b4 being Nat st b4 in dom b3 holds
b3 . b4 = (((- 1) |^ b4) * (b2 choose b4)) * ((b2 - b4) |^ b1) ) )
proof end;

theorem Th72: :: CARD_FIN:72
for b1, b2, b3 being finite set st ( b2 is empty implies b1 is empty ) & b3 c= b1 holds
for b4 being Function of b1,b2 st b4 is one-to-one & card b1 = card b2 holds
((card b1) -' (card b3)) ! = Card { b5 where B is Function of b1,b2 : ( b5 is one-to-one & rng (b5 | (b1 \ b3)) c= b4 .: (b1 \ b3) & ( for b1 being set st b6 in b3 holds
b5 . b6 = b4 . b6 ) )
}
proof end;

Lemma70: for b1, b2 being finite set
for b3 being Function of b1,b2 st dom b3 = b1 & b3 is one-to-one holds
ex b4 being XFinSequence of INT st
( dom b4 = card b1 & ((card b1) ! ) - (Sum b4) = Card { b5 where B is Function of b1, rng b3 : ( b5 is one-to-one & ( for b1 being set st b6 in b1 holds
b5 . b6 <> b3 . b6 ) )
}
& ( for b5 being Nat st b5 in dom b4 holds
b4 . b5 = (((- 1) |^ b5) * ((card b1) ! )) / ((b5 + 1) ! ) ) )
proof end;

theorem Th73: :: CARD_FIN:73
for b1 being finite set
for b2 being Function st dom b2 = b1 & b2 is one-to-one holds
ex b3 being XFinSequence of INT st
( Sum b3 = Card { b4 where B is Function of b1, rng b2 : ( b4 is one-to-one & ( for b1 being set st b5 in b1 holds
b4 . b5 <> b2 . b5 ) )
}
& dom b3 = (card b1) + 1 & ( for b4 being Nat st b4 in dom b3 holds
b3 . b4 = (((- 1) |^ b4) * ((card b1) ! )) / (b4 ! ) ) )
proof end;

theorem Th74: :: CARD_FIN:74
for b1 being finite set ex b2 being XFinSequence of INT st
( Sum b2 = Card { b3 where B is Function of b1,b1 : ( b3 is one-to-one & ( for b1 being set st b4 in b1 holds
b3 . b4 <> b4 ) )
}
& dom b2 = (card b1) + 1 & ( for b3 being Nat st b3 in dom b2 holds
b2 . b3 = (((- 1) |^ b3) * ((card b1) ! )) / (b3 ! ) ) )
proof end;