:: Function Domains and Fr{\ae}nkel Operator
:: by Andrzej Trybulec
::
:: Received February 7, 1990
:: Copyright (c) 1990-2018 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 XBOOLE_0, SUBSET_1, TARSKI, FUNCT_1, RELAT_1, FUNCT_2, ZFMISC_1,
PARTFUN1, FINSET_1, MCART_1, FINSUB_1, SETWISEO;
notations TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, XTUPLE_0, MCART_1, RELAT_1,
FINSET_1, FINSUB_1, FUNCT_1, RELSET_1, PARTFUN1, FUNCT_2, BINOP_1,
DOMAIN_1, SETWISEO;
constructors PARTFUN1, BINOP_1, DOMAIN_1, FINSET_1, SETWISEO, RELSET_1,
XTUPLE_0;
registrations SUBSET_1, RELAT_1, FINSET_1, FINSUB_1, RELSET_1, XTUPLE_0;
requirements BOOLE, SUBSET;
definitions TARSKI, XBOOLE_0;
equalities XBOOLE_0, BINOP_1;
expansions TARSKI, XBOOLE_0;
theorems FINSET_1, ZFMISC_1, MCART_1, FUNCT_1, FUNCT_2, FINSUB_1, RELAT_1,
RELSET_1, XBOOLE_0, XBOOLE_1, TARSKI, SUBSET_1;
schemes FUNCT_1, FUNCT_2, SETWISEO, DOMAIN_1, PARTFUN1;
begin
reserve B for non empty set,
A,X,x for set;
scheme
Fraenkel59{ A() -> set, F(object) -> object, P,Q[object] } :
{ F(v) where v is Element of A() : P[v] } c=
{ F(u) where u is Element of A() : Q[u] }
provided
A1: for v being Element of A() holds P[v] implies Q[v]
proof
let x be object;
assume x in { F(v9) where v9 is Element of A() : P[v9] };
then consider v being Element of A() such that
A2: x = F(v) and
A3: P[v];
Q[v] by A1,A3;
hence thesis by A2;
end;
scheme
Fraenkel599 { A,B() -> set, F(object,object) -> object, P,Q[object,object] }:
{ F(u1,v1) where u1 is Element of A(), v1 is Element of B() : P[u1,v1] } c=
{ F(u2,v2) where u2 is Element of A(), v2 is Element of B() : Q[u2,v2] }
provided
A1: for u being (Element of A()), v being Element of B() holds P[u,v]
implies Q[u,v]
proof
let x be object;
assume x in {F(u9,v9) where u9 is (Element of A()), v9 is Element of B() :
P[u9,v9]};
then consider u being (Element of A()), v being Element of B() such that
A2: x = F(u,v) and
A3: P[u,v];
Q[u,v] by A1,A3;
hence thesis by A2;
end;
scheme
Fraenkel69{ B() -> set, F(object) -> object, P, Q[object] } :
{ F(v1) where v1 is Element of B() : P[v1] } =
{ F(v2) where v2 is Element of B() : Q[v2] }
provided
A1: for v being Element of B() holds P[v] iff Q[v]
proof
set A = { F(v1) where v1 is Element of B() : P[v1] }, B = { F(v2) where v2
is Element of B() : Q[v2] };
A2: for v being Element of B() holds P[v] implies Q[v] by A1;
thus A c= B from Fraenkel59(A2);
A3: for v being Element of B() holds Q[v] implies P[v] by A1;
thus B c= A from Fraenkel59(A3);
end;
scheme
Fraenkel699 { A,B() -> set, F(object,object) -> object, P,Q[object,object] }:
{ F(u1,v1) where u1 is Element of A(), v1 is Element of B() : P[u1,v1] } =
{ F(u2,v2) where u2 is Element of A(), v2 is Element of B() : Q[u2,v2] }
provided
A1: for u being Element of A(), v being Element of B() holds P[u,v]
iff Q[u,v]
proof
set B = { F(u2,v2) where u2 is (Element of A()), v2 is Element of B() : Q[u2
,v2] };
set A = { F(u1,v1) where u1 is (Element of A()), v1 is Element of B() : P[u1
,v1] };
A2: for u being (Element of A()), v being Element of B() holds P[u,v]
implies Q[u,v] by A1;
thus A c= B from Fraenkel599(A2);
A3: for u being (Element of A()), v being Element of B() holds Q[u,v]
implies P[u,v] by A1;
thus B c= A from Fraenkel599(A3);
end;
scheme
FraenkelF9{ B() -> set, F,G(object) -> object, P[object] } :
{ F(v1) where v1 is Element of B() : P[v1] } =
{ G(v2) where v2 is Element of B() : P[v2] }
provided
A1: for v being Element of B() holds F(v) = G(v)
proof
set X = { F(v1) where v1 is Element of B() : P[v1] }, Y = { G(v2) where v2
is Element of B() : P[v2] };
A2: Y c= X
proof
let x be object;
assume x in Y;
then consider v1 being Element of B() such that
A3: x = G(v1) and
A4: P[v1];
x = F(v1) by A1,A3;
hence thesis by A4;
end;
X c= Y
proof
let x be object;
assume x in X;
then consider v1 being Element of B() such that
A5: x = F(v1) and
A6: P[v1];
x = G(v1) by A1,A5;
hence thesis by A6;
end;
hence thesis by A2;
end;
scheme
FraenkelF9R{ B() -> set, F,G(object) -> object, P[object] } :
{ F(v1) where v1 is Element of B() : P[v1] } =
{ G(v2) where v2 is Element of B() : P[v2] }
provided
A1: for v being Element of B() st P[v] holds F(v) = G(v)
proof
set X = { F(v1) where v1 is Element of B() : P[v1] }, Y = { G(v2) where v2
is Element of B() : P[v2] };
A2: Y c= X
proof
let x be object;
assume x in Y;
then consider v1 being Element of B() such that
A3: x = G(v1) and
A4: P[v1];
x = F(v1) by A1,A3,A4;
hence thesis by A4;
end;
X c= Y
proof
let x be object;
assume x in X;
then consider v1 being Element of B() such that
A5: x = F(v1) and
A6: P[v1];
x = G(v1) by A1,A5,A6;
hence thesis by A6;
end;
hence thesis by A2;
end;
scheme
FraenkelF99 { A,B() -> set, F,G(object,object) -> object, P[object,object] }:
{ F(u1,v1) where u1 is Element of A(), v1 is Element of B() : P[u1,v1] } =
{ G(u2,v2) where u2 is Element of A(), v2 is Element of B() : P[u2,v2] }
provided
A1: for u being Element of A(), v being Element of B() holds F(u,v) = G(u,v)
proof
set Y = { G(u2,v2) where u2 is (Element of A()), v2 is Element of B() : P[u2
,v2] };
set X = { F(u1,v1) where u1 is (Element of A()), v1 is Element of B() : P[u1
,v1] };
A2: Y c= X
proof
let x be object;
assume x in Y;
then consider u1 being (Element of A()), v1 being Element of B() such that
A3: x = G(u1,v1) and
A4: P[u1,v1];
x = F(u1,v1) by A1,A3;
hence thesis by A4;
end;
X c= Y
proof
let x be object;
assume x in X;
then consider u1 being (Element of A()), v1 being Element of B() such that
A5: x = F(u1,v1) and
A6: P[u1,v1];
x = G(u1,v1) by A1,A5;
hence thesis by A6;
end;
hence thesis by A2;
end;
scheme
FraenkelF699 { A,B() -> set, F(object,object) -> object,
P,Q[object,object] }:
{ F(u1,v1) where u1 is Element of A(), v1 is Element of B() : P[u1,v1] } =
{ F(v2,u2) where u2 is Element of A(), v2 is Element of B() : Q[u2,v2] }
provided
A1: for u being Element of A(), v being Element of B() holds P[u,v]
iff Q[u,v] and
A2: for u being Element of A(), v being Element of B() holds F(u,v) = F(v,u)
proof
A3: for u being Element of A(), v being Element of B() holds Q[u,v]
implies P[u,v] by A1;
A4: { F(u1,v1) where u1 is (Element of A()), v1 is Element of B() : Q[u1,v1]
} c= { F(u2,v2) where u2 is (Element of A()), v2 is Element of B() : P[u2,v2] }
from Fraenkel599(A3);
deffunc H(set,set) = F($2,$1);
A5: for u being (Element of A()), v being Element of B() holds P[u,v]
implies Q[u,v] by A1;
A6: { F(u1,v1) where u1 is (Element of A()), v1 is Element of B() : P[u1,v1]
} c= { F(u2,v2) where u2 is (Element of A()), v2 is Element of B() : Q[u2,v2] }
from Fraenkel599(A5);
A7: for u being Element of A(), v being Element of B() holds F(u,v) = H(u,v)
by A2;
{ F(u1,v1) where u1 is Element of A(), v1 is Element of B() : Q[u1,v1] }
= { H(u2,v2) where u2 is Element of A(), v2 is Element of B() : Q[u2,v2] } from
FraenkelF99(A7);
hence thesis by A6,A4;
end;
theorem Th1:
for A,B being set, F,G being Function of A,B for X
being set st F|X = G|X for x being Element of A st x in X holds F.x = G.x
proof
let A,B be set, F,G be Function of A,B;
let X be set such that
A1: F|X = G|X;
let x be Element of A;
assume
A2: x in X;
hence F.x = (G|X).x by A1,FUNCT_1:49
.= G.x by A2,FUNCT_1:49;
end;
theorem Th2:
for A,B being set holds Funcs(A,B) c= bool [:A,B:]
proof
let A,B be set, x be object;
assume x in Funcs(A,B);
then consider f being Function such that
A1: x = f and
A2: dom f = A and
A3: rng f c= B by FUNCT_2:def 2;
A4: f c= [: dom f, rng f:] by RELAT_1:7;
[:dom f, rng f:] c= [:A,B:] by A2,A3,ZFMISC_1:95;
then f c= [:A,B:] by A4;
hence thesis by A1;
end;
theorem Th3:
for X,Y being set st Funcs(X,Y) <> {} & X c= A & Y c= B for f
being Element of Funcs(X,Y) holds f is PartFunc of A,B
proof
let X,Y be set such that
A1: Funcs(X,Y) <> {} and
A2: X c= A and
A3: Y c= B;
let f be Element of Funcs(X,Y);
consider g being Function such that
A4: f = g and
A5: dom g = X and
A6: rng g c= Y by A1,FUNCT_2:def 2;
rng g c= B by A3,A6;
hence thesis by A2,A4,A5,RELSET_1:4;
end;
scheme
RelevantArgs
{ A,B,X() -> set, f,g() -> Function of A(),B(), P,Q[object] } :
{ f().u9 where u9 is Element of A() : P[u9] & u9 in X() } =
{ g().v9 where v9 is Element of A() : Q[v9] & v9 in X() }
provided
A1: f()|X() = g()|X() and
A2: for u being Element of A() st u in X() holds P[u] iff Q[u]
proof
deffunc F(set) = f().$1;
deffunc G(set) = g().$1;
defpred PP[set] means P[$1] & $1 in X();
defpred QQ[set] means Q[$1] & $1 in X();
set C = { G(v9) where v9 is Element of A() : PP[v9] };
A3: for v being Element of A() holds PP[v] iff QQ[v] by A2;
A4: C = { G(v9) where v9 is Element of A() : QQ[v9] } from Fraenkel69(A3);
A5: for v being Element of A() st PP[v] holds F(v) = G(v) by A1,Th1;
{ F(u9) where u9 is Element of A() : PP[u9] } = C from FraenkelF9R(A5);
hence thesis by A4;
end;
scheme
FrSet0{ A() -> non empty set, P[object] }:
{ x where x is Element of A(): P[x] } c= A()
proof
{ x where x is Element of A(): P[x] } is Subset of A() from DOMAIN_1:sch 7;
hence thesis;
end;
scheme
Gen199{A,B() -> set, F(object,object) -> object, P[object,object],
Q[object] }:
for s being Element of A(), t being Element of B() st P[s,t] holds Q[F(s,t)]
provided
A1: for st1 being set st st1 in { F(s1,t1) where s1 is (Element of A()),
t1 is Element of B(): P[s1,t1] } holds Q[st1]
proof
let s be (Element of A()), t be Element of B();
assume P[s,t];
then
F(s,t) in { F(s1,t1) where s1 is (Element of A()), t1 is Element of B():
P[s1,t1] };
hence thesis by A1;
end;
scheme
Gen199A{A,B() -> set, F(object,object) -> object, P[object,object],
Q[object] } :
for st1 being set st st1 in { F(s1,t1) where s1 is Element of A(),
t1 is Element of B(): P[s1,t1] } holds Q[st1]
provided
A1: for s being Element of A(), t being Element of B() st P[s,t] holds
Q[F(s,t)]
proof
let st1 be set;
assume st1 in { F(s1,t1) where s1 is (Element of A()), t1 is Element of B()
: P[s1,t1] };
then
ex s1 being (Element of A()), t1 being Element of B() st st1 = F(s1,t1)
& P[s1,t1];
hence thesis by A1;
end;
scheme
Gen299{A,B,C() -> set, F(object,object) -> Element of C(), P[object,object],
Q[object] } :
{ st1 where st1 is Element of C() :
st1 in { F(s1,t1) where s1 is Element of A(), t1 is Element of B() :
P[s1,t1] } & Q[st1] } =
{ F(s2,t2) where s2 is Element of A(), t2 is Element of B() :
P[s2,t2] & Q[F(s2,t2)]}
proof
thus { st1 where st1 is Element of C() : st1 in { F(s1,t1) where s1 is (
Element of A()), t1 is Element of B() : P[s1,t1] } & Q[st1] } c= { F(s2,t2)
where s2 is (Element of A()), t2 is Element of B() : P[s2,t2] & Q[F(s2,t2)]}
proof
let x be object;
assume x in { st1 where st1 is Element of C() : st1 in { F(s1,t1) where
s1 is (Element of A()), t1 is Element of B() : P[s1,t1] } & Q[st1] };
then consider st1 being Element of C() such that
A1: x = st1 and
A2: st1 in { F(s1,t1) where s1 is (Element of A()), t1 is Element of B
() : P[s1,t1] } and
A3: Q[st1];
ex s1 being (Element of A()), t1 being Element of B() st st1 = F(s1,t1
) & P[s1,t1] by A2;
hence thesis by A1,A3;
end;
let x be object;
assume x in { F(s2,t2) where s2 is (Element of A()), t2 is Element of B() :
P[s2,t2] & Q[F(s2,t2)]};
then consider s2 being (Element of A()), t2 being Element of B() such that
A4: x = F(s2,t2) and
A5: P[s2,t2] and
A6: Q[F(s2,t2)];
F(s2,t2) in { F(s1,t1) where s1 is (Element of A()), t1 is Element of B
( ) : P[s1,t1] } by A5;
hence thesis by A4,A6;
end;
scheme
Gen39{A() -> set, F(object) -> object, P,Q[object] } :
{ F(s) where s is Element of A() :
s in { s1 where s1 is Element of A(): Q[s1] } & P[s] } = {
F(s2) where s2 is Element of A() : Q[s2] & P[s2] } proof
defpred QQ[set] means Q[$1] & P[$1];
defpred PP[set] means $1 in { s1 where s1 is Element of A(): Q[s1] } & P[$1];
A1: for s being Element of A() holds PP[s] iff QQ[s]
proof
let s be Element of A();
now
assume s in { s1 where s1 is Element of A(): Q[s1] };
then ex s1 being Element of A() st s = s1 & Q[s1];
hence Q[s];
end;
hence thesis;
end;
thus { F(s) where s is Element of A() : PP[s] } = { F(s2) where s2 is
Element of A() : QQ[s2] } from Fraenkel69(A1);
end;
scheme
Gen399{A,B() -> set, F(object,object) -> object, P[object,object],
Q[object] }:
{ F(s,t) where s is (Element of A()), t is Element of B() : s
in { s1 where s1 is Element of A(): Q[s1] } & P[s,t] } = { F(s2,t2) where s2 is
(Element of A()), t2 is Element of B() : Q[s2] & P[s2,t2] } proof
defpred QQ[set,set] means Q[$1] & P[$1,$2];
defpred PP[set,set] means $1 in { s1 where s1 is Element of A(): Q[s1] } & P
[$1,$2];
A1: for s being Element of A(), t being Element of B() holds PP[s,t] iff QQ[
s,t]
proof
let s be Element of A(), t be Element of B();
now
assume s in { s1 where s1 is Element of A(): Q[s1] };
then ex s1 being Element of A() st s = s1 & Q[s1];
hence Q[s];
end;
hence thesis;
end;
thus { F(s,t) where s is (Element of A()), t is Element of B() : PP[s,t] } =
{ F(s2,t2) where s2 is (Element of A()), t2 is Element of B() : QQ[s2,t2] }
from Fraenkel699(A1);
end;
scheme
Gen499{A,B() -> set, F(object,object) -> object, P,Q[object,object] } :
{ F(s,t) where s is (Element of A()), t is Element of B()
: P[s,t] } c= { F(s1,t1) where s1 is (Element of A()), t1 is Element of B() : Q
[s1,t1] }
provided
A1: for s being (Element of A()), t being Element of B() st P[s,t] ex s9
being Element of A() st Q[s9,t] & F(s,t) = F(s9,t)
proof
let x be object;
assume
x in { F(s,t) where s is (Element of A()), t is Element of B() : P[s ,t] };
then consider s being (Element of A()), t being Element of B() such that
A2: x = F(s,t) and
A3: P[s,t];
ex s9 being Element of A() st Q[s9,t] & F(s,t) = F(s9,t) by A1,A3;
hence thesis by A2;
end;
scheme
FrSet1{ D,A() -> set, P[object], F(object) -> object }:
{ F(y) where y is Element of D() : F(y) in A() & P[y] } c= A()
proof
let x be object;
assume x in { F(y) where y is Element of D() : F(y) in A() & P[y] };
then ex y being Element of D() st x = F(y) & F(y) in A() & P[y];
hence thesis;
end;
scheme
FrSet2{ D,A() -> set, Q[object], F(object) -> object }:
{ F(y) where y is Element of D() : Q[y] & not F(y) in A() } misses A()
proof
assume
{ F(y) where y is Element of D() : Q[y] & not F(y) in A() } meets A( );
then consider x be object such that
A1: x in { F(y) where y is Element of D() : Q[y] & not F(y) in A() } and
A2: x in A() by XBOOLE_0:3;
ex y being Element of D() st x = F(y) & Q[y] & not F(y) in A() by A1;
hence thesis by A2;
end;
scheme
FrEqua1{ A,B() -> set, F(object,object) -> object, x() -> (Element of B()),
P,Q[object,object] }: { F(s,t) where s is (Element of
A()), t is Element of B(): Q[s,t] } = { F(s9,x()) where s9 is Element of A(): P
[s9,x()] }
provided
A1: for s being Element of A() for t being Element of B() holds Q[s,t]
iff t = x() & P[s,t]
proof
thus { F(s,t) where s is (Element of A()), t is Element of B(): Q[s,t] } c=
{ F(s9,x()) where s9 is Element of A(): P[s9,x()] }
proof
let x be object;
assume
x in { F(s,t) where s is (Element of A()), t is Element of B(): Q[ s,t ] };
then consider s being (Element of A()), t being Element of B() such that
A2: x = F(s,t) and
A3: Q[s,t];
A4: P[s,t] by A1,A3;
t = x() by A1,A3;
hence thesis by A2,A4;
end;
let x be object;
assume x in { F(s9,x()) where s9 is Element of A(): P[s9,x()] };
then consider s9 being Element of A() such that
A5: x = F(s9,x()) and
A6: P[s9,x()];
Q[s9,x()] by A1,A6;
hence thesis by A5;
end;
scheme
FrEqua2{ A,B() -> set, F(object,object) -> object, x() -> (Element of B()),
P[object,object] }: { F(s,t) where s is (Element of A()), t is
Element of B(): t = x() & P[s,t] } = { F(s9,x()) where s9 is Element of A(): P[
s9,x()] } proof
defpred Q[set,set] means $2 = x() & P[$1,$2];
A1: for s being Element of A() for t being Element of B() holds Q[s,t] iff t
= x() & P[s,t];
thus { F(s,t) where s is Element of A(), t is Element of B(): Q[s,t] } = { F
(s9,x()) where s9 is Element of A(): P[s9,x()] } from FrEqua1(A1);
end;
:: dziedziny funkcji
reserve phi for Element of Funcs(A,B);
theorem Th4:
for X,Y being set st Funcs(X,Y) <> {} & X c= A & Y c= B for f
being Element of Funcs(X,Y) ex phi being Element of Funcs(A,B) st phi|X = f
proof
let X,Y be set such that
A1: Funcs(X,Y) <> {} and
A2: X c= A and
A3: Y c= B;
let f be Element of Funcs(X,Y);
reconsider f9=f as PartFunc of A,B by A1,A2,A3,Th3;
consider phi being Function of A,B such that
A4: for x being object st x in dom f9 holds phi.x = f9.x by FUNCT_2:71;
reconsider phi as Element of Funcs(A,B) by FUNCT_2:8;
take phi;
ex g being Function st f = g & dom g = X & rng g c= Y by A1,FUNCT_2:def 2;
then dom f9 = A /\ X by XBOOLE_1:28
.= dom phi /\ X by FUNCT_2:def 1;
hence thesis by A4,FUNCT_1:46;
end;
theorem Th5:
phi|X = phi|(A /\ X)
proof
dom phi = A by FUNCT_2:def 1;
then
A1: dom (phi|X) = (dom phi /\ A) /\ X by RELAT_1:61
.= dom phi /\ (A /\ X) by XBOOLE_1:16;
for x being object st x in dom (phi|X) holds (phi|X).x = phi.x by
FUNCT_1:47;
hence thesis by A1,FUNCT_1:46;
end;
:: Zbiory skonczone
scheme
FraenkelFin { A,X() -> set, F(object) -> object }:
{ F(w) where w is Element of A(): w in X() } is finite
provided
A1: X() is finite
proof
set M = { F(w) where w is Element of A(): w in X() };
per cases;
suppose
A2: A() is empty;
M c= {F({})}
proof
let x be object;
assume x in M;
then consider w being Element of A() such that
A3: x = F(w) & w in X();
w = {} by A2,SUBSET_1:def 1;
hence thesis by A3,TARSKI:def 1;
end;
hence thesis;
end;
suppose
A4: A() is non empty;
consider f being Function such that
A5: dom f = X() /\ A() and
A6: for y being object st y in X() /\ A() holds f.y = F(y) from FUNCT_1:sch 3;
M = f.:X()
proof
thus M c= f.:X()
proof
let x be object;
assume x in M;
then consider u being Element of A() such that
A7: x = F(u) and
A8: u in X();
A9: u in dom f by A4,A5,A8,XBOOLE_0:def 4;
then f.u = F(u) by A5,A6;
hence thesis by A7,A8,A9,FUNCT_1:def 6;
end;
let x be object;
assume x in f.:X();
then consider y being object such that
A10: y in dom f and
A11: y in X() and
A12: x = f.y by FUNCT_1:def 6;
reconsider y as Element of A() by A5,A10,XBOOLE_0:def 4;
x = F(y) by A5,A6,A10,A12;
hence thesis by A11;
end;
hence thesis by A1;
end;
end;
scheme
CartFin { A, B() -> non empty set, X, Y() -> set,
F(object, object) -> object }:
{ F(u,v) where u is Element of A(), v is Element of B() :
u in X() & v in Y () } is finite
provided
A1: X() is finite and
A2: Y() is finite
proof
deffunc G(object) = F($1`1,$1`2);
set M = { F(u9,v9) where u9 is (Element of A()), v9 is Element of B() : u9
in X() & v9 in Y() };
consider f being Function such that
A3: dom f = [:X() /\ A(), Y() /\ B():] and
A4: for y being object st y in [:X() /\ A(), Y() /\ B():] holds f.y = G(y)
from FUNCT_1:sch 3;
A5: dom f = [:X(), Y():] /\ [:A(), B():] by A3,ZFMISC_1:100;
M = f.:[:X(), Y():]
proof
thus M c= f.:[:X(), Y():]
proof
let x be object;
assume x in M;
then consider u being Element of A(), v being Element of B() such that
A6: x = F(u,v) and
A7: u in X() and
A8: v in Y();
A9: [u,v] in [:X(), Y():] by A7,A8,ZFMISC_1:87;
then
A10: [u,v] in dom f by A5,XBOOLE_0:def 4;
A11: [u,v]`2 = v;
[u,v]`1 = u;
then f.(u,v) = F(u,v) by A3,A4,A10,A11;
hence thesis by A6,A9,A10,FUNCT_1:def 6;
end;
let x be object;
assume x in f.:[:X(), Y():];
then consider y being object such that
A12: y in dom f and
A13: y in [:X(), Y():] and
A14: x = f.y by FUNCT_1:def 6;
reconsider y as Element of [:A(), B():] by A5,A12,XBOOLE_0:def 4;
A15: y = [y`1,y`2] by MCART_1:21;
then
A16: y`1 in X() by A13,ZFMISC_1:87;
A17: y`2 in Y() by A13,A15,ZFMISC_1:87;
x = F(y`1,y`2) by A3,A4,A12,A14;
hence thesis by A16,A17;
end;
hence thesis by A1,A2;
end;
scheme
Finiteness { A()->non empty set, B()->(Element of Fin A()), P[(Element of A(
)), Element of A()] } : for x being Element of A() st x in B() ex y being
Element of A() st y in B() & P[y,x] & for z being Element of A() st z in B() &
P[z,y] holds P[y,z]
provided
A1: for x being Element of A() holds P[x,x] and
A2: for x,y,z being Element of A() st P[x,y] & P[y,z] holds P[x,z]
proof
defpred R[(Element of A()), Element of Fin A()] means ex y being Element of
A() st y in $2 & P[y,$1] & for z being Element of A() st z in $2 & P[z,y] holds
P[y,z];
defpred Q[Element of Fin A()] means for x being Element of A() st x in $1
holds R[x, $1];
A3: now
let B be (Element of Fin A()), x be Element of A();
assume
A4: Q[B];
thus Q[B \/ {.x.}]
proof
let z be Element of A() such that
A5: z in B \/ {x};
now
per cases by A5,ZFMISC_1:136;
suppose
z in B;
then consider y being Element of A() such that
A6: y in B and
A7: P[y,z] and
A8: for x being Element of A() st x in B & P[x,y] holds P[y,x] by A4;
now
per cases;
case
A9: P[x,y];
thus x in B \/ {x} by ZFMISC_1:136;
thus P[x,z] by A2,A7,A9;
let v be Element of A() such that
A10: v in B \/ {x} and
A11: P[v,x];
A12: now
assume
A13: v in B;
P[v,y] by A2,A9,A11;
then P[y,v] by A8,A13;
hence P[x,v] by A2,A9;
end;
v in B or v = x by A10,ZFMISC_1:136;
hence P[x,v] by A1,A12;
end;
case
A14: not P[x,y];
thus y in B \/ {x} by A6,XBOOLE_0:def 3;
thus P[y,z] by A7;
let v be Element of A() such that
A15: v in B \/ {x} and
A16: P[v,y];
v in B or v = x by A15,ZFMISC_1:136;
hence P[y,v] by A8,A14,A16;
end;
end;
hence thesis;
end;
suppose
A17: z = x;
now
per cases;
case
ex w being Element of A() st w in B & P[w,x];
then consider w being Element of A() such that
A18: w in B and
A19: P[w,z] by A17;
consider y being Element of A() such that
A20: y in B and
A21: P[y,w] and
A22: for x being Element of A() st x in B & P[x,y] holds P[y
,x] by A4,A18;
take u = y;
thus u in B \/ {x} by A20,XBOOLE_0:def 3;
thus P[u,z] by A2,A19,A21;
let v be Element of A() such that
A23: v in B \/ {x} and
A24: P[v,u];
v in B or v = x by A23,ZFMISC_1:136;
hence P[u,v] by A2,A17,A19,A21,A22,A24;
end;
case
A25: for w being Element of A() st w in B holds not P[w,x];
thus x in B \/ {x} by ZFMISC_1:136;
thus
A26: P[x,x] by A1;
let v be Element of A() such that
A27: v in B \/ {x} and
A28: P[v,x];
not v in B by A25,A28;
hence P[x,v] by A26,A27,ZFMISC_1:136;
end;
end;
hence thesis by A17;
end;
end;
hence thesis;
end;
end;
A29: Q[{}.A()];
for B being Element of Fin A() holds Q[B] from SETWISEO:sch 4(A29,A3 );
hence thesis;
end;
scheme
FinIm{A,B()->non empty set, x()-> (Element of Fin B()),
F(object)->(Element of A()), P[object,object]}:
ex c1 being Element of Fin A() st for t
being Element of A() holds t in c1 iff ex t9 being Element of B() st t9 in x()
& t = F(t9) & P[t,t9] proof
defpred R[set] means ex t9 being Element of B() st t9 in x() & $1 = F(t9) &
P[$1,t9];
set c = { F(t9) where t9 is Element of B() : t9 in x() }, c1 = { tt where tt
is Element of A() : R[tt]};
A1: c1 c= c
proof
let x be object;
assume x in c1;
then ex tt being Element of A() st x = tt & ex t9 being Element of B() st
t9 in x() & tt = F(t9) & P[tt,t9];
hence thesis;
end;
A2: c1 c= A() from FrSet0;
A3: x() is finite;
c is finite from FraenkelFin(A3);
then reconsider c1 as Element of Fin A() by A1,A2,FINSUB_1:def 5;
take c1;
let t be Element of A();
t in c1 implies ex tt being Element of A() st t = tt & ex t9 being
Element of B() st t9 in x() & tt = F(t9) & P[tt,t9];
hence thesis;
end;
registration
let A, B be finite set;
cluster Funcs(A,B) -> finite;
coherence
proof
bool [:A,B:] is finite;
hence thesis by Th2,FINSET_1:1;
end;
end;
theorem
for A,B being set st A is finite & B is finite holds Funcs(A,B) is finite;
scheme
ImFin { A() -> set, B() -> non empty set, X,Y() -> set,
F(object) -> object } :
{ F(phi9) where phi9 is Element of Funcs(A(),B()): phi9.:X() c= Y() }
is finite
provided
A1: X() is finite and
A2: Y() is finite and
A3: for phi,psi being Element of Funcs(A(),B()) holds phi|X() = psi|X()
implies F(phi) = F(psi)
proof
defpred P[set,set] means for phi being Element of Funcs(A(),B()) st phi|X()
= $1 holds $2 = F(phi);
set Z = { F(phi9) where phi9 is Element of Funcs(A(),B()): phi9.: X() c= Y()
};
set x = the Element of Z;
A4: B() /\ Y() c= B() by XBOOLE_1:17;
assume
A5: not thesis;
then Z <> {};
then x in Z;
then consider phi being Element of Funcs(A(),B()) such that
x = F(phi) and
A6: phi.:X() c= Y();
now
assume B() /\ Y() = {};
then
A7: phi.:X() = {} by A6,XBOOLE_1:3,19;
A() = dom phi by FUNCT_2:def 1;
then A() misses X() by A7,RELAT_1:118;
hence A() /\ X() = {};
end;
then reconsider FF = Funcs(A() /\ X(),B() /\ Y()), Z as non empty set by A5,
FUNCT_2:8;
A8: B() /\ Y() c= Y() by XBOOLE_1:17;
A9: A() /\ X() c= A() by XBOOLE_1:17;
A10: now
let f be Element of FF;
consider phi being Element of Funcs(A(),B()) such that
A11: phi|(A() /\ X()) = f by A9,A4,Th4;
A12: phi|X() = f by A11,Th5;
ex g being Function st f = g & dom g = A() /\ X() & rng g c= B() /\ Y
() by FUNCT_2:def 2;
then rng (phi|X()) c= Y() by A8,A12;
then phi.:X() c= Y() by RELAT_1:115;
then F(phi) in Z;
then reconsider g9 = F(phi) as Element of Z;
take g = g9;
thus P[f,g] by A3,A12;
end;
consider F being Function of FF, Z such that
A13: for f being Element of FF holds P[f,F.f] from FUNCT_2:sch 3(A10);
Z c= F.:Funcs(A() /\ X(), B() /\ Y())
proof
let y be object;
assume y in Z;
then consider phi being Element of Funcs(A(),B()) such that
A14: y = F(phi) and
A15: phi.:X() c= Y();
rng (phi|X()) c= Y() by A15,RELAT_1:115;
then
A16: rng (phi|X()) c= B() /\ Y() by XBOOLE_1:19;
A17: dom (phi|X()) = dom phi /\ X() by RELAT_1:61
.= A() /\ X() by FUNCT_2:def 1;
then reconsider
x = phi|X() as Element of Funcs(A() /\ X(), B() /\ Y()) by A16,FUNCT_2:def 2;
phi|X() in Funcs(A() /\ X(), B() /\ Y()) by A17,A16,FUNCT_2:def 2;
then
A18: x in dom F by FUNCT_2:def 1;
y = F.x by A13,A14;
hence thesis by A18,FUNCT_1:def 6;
end;
hence contradiction by A1,A2,A5;
end;
:: Schematy zwiazane z pewnikiem wyboru
scheme
FunctChoice { A()->non empty set, B()->non empty set, P[(Element of A()),
Element of B()], x()->Element of Fin A() }: ex ff being Function of A(), B() st
for t being Element of A() st t in x() holds P[t,ff.t]
provided
A1: for t being Element of A() st t in x() ex ff being Element of B() st
P[t,ff]
proof
set b = the Element of B();
set M = { { ff where ff is Element of B() : P[tt,ff] } where tt is Element
of A() : tt in x() };
set f = the Function of A(), B();
assume
A2: not thesis;
then consider t being Element of A() such that
A3: t in x() and
not P[t,f.t];
{ ff where ff is Element of B() : P[t,ff] } in M by A3;
then reconsider M as non empty set;
now
let X;
assume X in M;
then consider t being Element of A() such that
A4: X = { ff where ff is Element of B() : P[t,ff] } and
A5: t in x();
consider ff being Element of B() such that
A6: P[t,ff] by A1,A5;
ff in X by A4,A6;
hence X <> {};
end;
then consider Choice being Function such that
dom Choice = M and
A7: X in M implies Choice.X in X by FUNCT_1:111;
defpred Q[(Element of A()),set] means ($1 in x() implies $2 = Choice.{ ff
where ff is Element of B() : P[$1,ff] }) & ($1 in x() or $2 = b);
A8: now
let t be Element of A();
A9: now
set s = { ff where ff is Element of B() : P[t,ff] };
assume t in x();
then s in M;
then Choice.s in s by A7;
then ex ff being Element of B() st Choice.s = ff & P[t,ff];
hence Choice.s is Element of B();
end;
t in x() implies t in x();
hence ex y being Element of B() st Q[t,y] by A9;
end;
consider f being Function of A(), B() such that
A10: for x being Element of A() holds Q[x,f.x] from FUNCT_2:sch 3(A8);
now
let t be Element of A();
assume
A11: t in x();
then
A12: { ff where ff is Element of B() : P[t,ff] } in M;
f.t = Choice.{ ff where ff is Element of B() : P[t,ff] } by A10,A11;
then f.t in { ff where ff is Element of B() : P[t,ff] } by A7,A12;
then ex ff being Element of B() st f.t = ff & P[t,ff];
hence P[t,f.t];
end;
hence contradiction by A2;
end;
scheme
FuncsChoice { A()->non empty set, B()->non empty set, P[Element of A(),
Element of B()], x()->Element of Fin A() }: ex ff being Element of Funcs(A(),B(
)) st for t being Element of A() st t in x() holds P[t,ff.t]
provided
A1: for t being Element of A() st t in x() ex ff being Element of B() st
P[t,ff]
proof
A2: for t being Element of A() st t in x() ex ff being Element of B() st P[t
,ff] by A1;
consider ff being Function of A(), B() such that
A3: for t being Element of A() st t in x() holds P[t,ff.t] from
FunctChoice(A2);
reconsider ff as Element of Funcs(A(),B()) by FUNCT_2:8;
take ff;
thus thesis by A3;
end;
scheme
FraenkelFin9 { A,B() -> non empty set, X() -> set, P[object,object] }:
{ x where x
is Element of B(): ex w being Element of A() st P[w,x] & w in X() } is finite
provided
A1: X() is finite and
A2: for w being Element of A(), x,y being Element of B() st P[w,x] & P[w
,y] holds x = y
proof
set M = { x where x is Element of B(): ex w being Element of A() st P[w,x] &
w in X() };
defpred Q[object,object] means P[$1,$2] & $1 in X() & $2 in B();
A3: for x,y being object st x in A() & Q[x,y] holds y in B();
A4: for x,y1,y2 being object st x in A() & Q[x,y1] & Q[x,y2] holds y1 = y2
by A2;
consider f being PartFunc of A(),B() such that
A5: for x being object holds x in dom f iff x in A() &
ex y being object st Q[x,y] and
A6: for x being object st x in dom f holds Q[x,f.x]
from PARTFUN1:sch 2(A3,A4);
M = f.:X()
proof
thus M c= f.:X()
proof
let x be object;
assume x in M;
then consider u being Element of B() such that
A7: x = u and
A8: ex w being Element of A() st P[w,u] & w in X();
consider w being Element of A() such that
A9: P[w,u] and
A10: w in X() by A8;
A11: w in dom f by A5,A9,A10;
then Q[w,f.w] by A6;
then f.w = x by A2,A7,A9;
hence thesis by A10,A11,FUNCT_1:def 6;
end;
let x be object;
assume x in f.:X();
then consider y being object such that
A12: y in dom f and
A13: y in X() and
A14: x = f.y by FUNCT_1:def 6;
reconsider x as Element of B() by A6,A12,A14;
P[y,x] by A6,A12,A14;
hence thesis by A12,A13;
end;
hence thesis by A1;
end;