:: Functions from a Set to a Set :: by Czes{\l}aw Byli\'nski :: :: Received April 6, 1989 :: Copyright (c) 1990-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 RELAT_1, XBOOLE_0, PARTFUN1, FUNCT_1, TARSKI, SUBSET_1, ZFMISC_1, RELAT_2, MCART_1, SETFAM_1, FUNCT_2, GROUP_9; notations TARSKI, XBOOLE_0, ZFMISC_1, XTUPLE_0, SUBSET_1, SETFAM_1, MCART_1, RELAT_1, RELAT_2, FUNCT_1, RELSET_1, PARTFUN1; constructors RELAT_2, PARTFUN1, MCART_1, SETFAM_1, RELSET_1, XTUPLE_0; registrations XBOOLE_0, SUBSET_1, RELAT_1, FUNCT_1, PARTFUN1, RELSET_1, GRFUNC_1, ZFMISC_1; requirements SUBSET, BOOLE; begin :: Function from a set into a set reserve P,Q,X,Y,Z for set, p,x,x9,x1,x2,y,z for object; definition let X,Y; let R be Relation of X,Y; attr R is quasi_total means :: FUNCT_2:def 1 X = dom R if Y <> {} otherwise R = {}; end; registration let X,Y; cluster quasi_total for PartFunc of X,Y; end; registration let X,Y; cluster total -> quasi_total for Relation of X,Y; end; definition let X,Y; mode Function of X,Y is quasi_total PartFunc of X,Y; end; registration let X be empty set, Y be set; cluster quasi_total -> total for Relation of X,Y; end; registration let X be set, Y be non empty set; cluster quasi_total -> total for Relation of X,Y; end; registration let X be set; cluster quasi_total -> total for Relation of X,X; end; registration let X be set; cluster quasi_total -> total for Relation of [:X,X:],X; end; theorem :: FUNCT_2:1 for f being Function holds f is Function of dom f, rng f; theorem :: FUNCT_2:2 for f being Function st rng f c= Y holds f is Function of dom f, Y; theorem :: FUNCT_2:3 for f being Function st dom f = X & for x st x in X holds f.x in Y holds f is Function of X,Y; theorem :: FUNCT_2:4 for f being Function of X,Y st Y <> {} & x in X holds f.x in rng f; theorem :: FUNCT_2:5 for f being Function of X,Y st Y <> {} & x in X holds f.x in Y; theorem :: FUNCT_2:6 for f being Function of X,Y st (Y = {} implies X = {}) & rng f c= Z holds f is Function of X,Z; theorem :: FUNCT_2:7 for f being Function of X,Y st (Y = {} implies X = {}) & Y c= Z holds f is Function of X,Z; scheme :: FUNCT_2:sch 1 FuncEx1{X, Y() -> set, P[object,object]}: ex f being Function of X(),Y() st for x being object st x in X() holds P[x,f.x] provided for x being object st x in X() ex y being object st y in Y() & P[x,y]; scheme :: FUNCT_2:sch 2 Lambda1{X, Y() -> set, F(object)->object}: ex f being Function of X(),Y() st for x being object st x in X() holds f.x = F(x) provided for x being object st x in X() holds F(x) in Y(); definition let X,Y; func Funcs(X,Y) -> set means :: FUNCT_2:def 2 x in it iff ex f being Function st x = f & dom f = X & rng f c= Y; end; theorem :: FUNCT_2:8 for f being Function of X,Y st Y = {} implies X = {} holds f in Funcs(X,Y); theorem :: FUNCT_2:9 for f being Function of X,X holds f in Funcs(X,X); registration let X be set, Y be non empty set; cluster Funcs(X,Y) -> non empty; end; registration let X be set; cluster Funcs(X,X) -> non empty; end; registration let X be non empty set, Y be empty set; cluster Funcs(X,Y) -> empty; end; theorem :: FUNCT_2:10 for f being Function of X,Y st for y being object st y in Y ex x being object st x in X & y = f.x holds rng f = Y; theorem :: FUNCT_2:11 for f being Function of X,Y st y in rng f ex x being object st x in X & f.x = y; theorem :: FUNCT_2:12 for f1,f2 being Function of X,Y st for x being object st x in X holds f1.x = f2.x holds f1 = f2; theorem :: FUNCT_2:13 for f being quasi_total Relation of X,Y for g being quasi_total Relation of Y,Z st Y = {} implies Z = {} or X = {} holds f*g is quasi_total; theorem :: FUNCT_2:14 for f being Function of X,Y for g being Function of Y,Z st Z <> {} & rng f = Y & rng g = Z holds rng(g*f) = Z; theorem :: FUNCT_2:15 for x being object for f being Function of X,Y, g being Function st Y <> {} & x in X holds (g*f).x = g.(f.x); theorem :: FUNCT_2:16 for f being Function of X,Y st Y <> {} holds rng f = Y iff for Z st Z <> {} for g,h being Function of Y,Z st g*f = h*f holds g = h; theorem :: FUNCT_2:17 for f being Relation of X,Y holds (id X)*f = f & f*(id Y) = f; theorem :: FUNCT_2:18 for f being Function of X,Y for g being Function of Y,X st f*g = id Y holds rng f = Y; theorem :: FUNCT_2:19 for f being Function of X,Y st Y = {} implies X = {} holds f is one-to-one iff for x1,x2 being object st x1 in X & x2 in X & f.x1 = f.x2 holds x1 = x2; theorem :: FUNCT_2:20 for f being Function of X,Y for g being Function of Y,Z st (Z = {} implies Y = {}) & g*f is one-to-one holds f is one-to-one; theorem :: FUNCT_2:21 for f being Function of X,Y st X <> {} & Y <> {} holds f is one-to-one iff for Z for g,h being Function of Z,X st f*g = f*h holds g = h; theorem :: FUNCT_2:22 for f being Function of X,Y for g being Function of Y,Z st Z <> {} & rng(g*f) = Z & g is one-to-one holds rng f = Y; definition let Y be set; let f be Y-valued Relation; attr f is onto means :: FUNCT_2:def 3 rng f = Y; end; theorem :: FUNCT_2:23 for f being Function of X,Y for g being Function of Y,X st g*f = id X holds f is one-to-one & g is onto; theorem :: FUNCT_2:24 for f being Function of X,Y for g being Function of Y,Z st (Z = {} implies Y = {}) & g*f is one-to-one & rng f = Y holds f is one-to-one & g is one-to-one; theorem :: FUNCT_2:25 for f being Function of X,Y st f is one-to-one & rng f = Y holds f" is Function of Y,X; theorem :: FUNCT_2:26 for f being Function of X,Y st Y <> {} & f is one-to-one & x in X holds (f").(f.x) = x; theorem :: FUNCT_2:27 for X be set, Y,Z be non empty set for f be Function of X,Y for g be Function of Y,Z holds f is onto & g is onto implies g*f is onto; theorem :: FUNCT_2:28 for f being Function of X,Y for g being Function of Y,X st X <> {} & Y <> {} & rng f = Y & f is one-to-one & for y,x being object holds y in Y & g.y = x iff x in X & f.x = y holds g = f"; theorem :: FUNCT_2:29 for f being Function of X,Y st Y <> {} & rng f = Y & f is one-to-one holds f"*f = id X & f*f" = id Y; theorem :: FUNCT_2:30 for f being Function of X,Y for g being Function of Y,X st X <> {} & Y <> {} & rng f = Y & g*f = id X & f is one-to-one holds g = f"; theorem :: FUNCT_2:31 for f being Function of X,Y st Y <> {} & ex g being Function of Y,X st g*f = id X holds f is one-to-one; theorem :: FUNCT_2:32 for f being Function of X,Y st (Y = {} implies X = {}) & Z c= X holds f|Z is Function of Z,Y; theorem :: FUNCT_2:33 for f being Function of X,Y st X c= Z holds f|Z = f; theorem :: FUNCT_2:34 for f being Function of X,Y st Y <> {} & x in X & f.x in Z holds (Z|`f) .x = f.x; theorem :: FUNCT_2:35 for f being Function of X,Y st Y <> {} for y holds (ex x st x in X & x in P & y = f.x) implies y in f.:P; theorem :: FUNCT_2:36 for f being Function of X,Y holds f.:P c= Y; ::$CT theorem :: FUNCT_2:38 for f being Function of X,Y st Y <> {} for x holds x in f"Q iff x in X & f.x in Q; theorem :: FUNCT_2:39 for f being PartFunc of X,Y holds f"Q c= X; theorem :: FUNCT_2:40 for f being Function of X,Y st Y = {} implies X = {} holds f"Y = X; theorem :: FUNCT_2:41 for f being Function of X,Y holds (for y being object st y in Y holds f"{y} <> {}) iff rng f = Y; theorem :: FUNCT_2:42 for f being Function of X,Y st (Y = {} implies X = {}) & P c= X holds P c= f"(f.:P); theorem :: FUNCT_2:43 for f being Function of X,Y st Y = {} implies X = {} holds f"(f.:X) = X; theorem :: FUNCT_2:44 for f being Function of X,Y for g being Function of Y,Z st (Z = {} implies Y = {}) holds f"Q c= (g*f)"(g.:Q); theorem :: FUNCT_2:45 for f being Function of {},Y holds f.:P = {}; theorem :: FUNCT_2:46 for f being Function of {},Y holds f"Q = {}; theorem :: FUNCT_2:47 for x being object for f being Function of {x},Y st Y <> {} holds f.x in Y; theorem :: FUNCT_2:48 for x being object for f being Function of {x},Y st Y <> {} holds rng f = {f.x}; theorem :: FUNCT_2:49 for x being object for f being Function of {x},Y st Y <> {} holds f.:P c= {f.x}; theorem :: FUNCT_2:50 for y being object for f being Function of X,{y} st x in X holds f.x = y; theorem :: FUNCT_2:51 for y being object for f1,f2 being Function of X,{y} holds f1 = f2; theorem :: FUNCT_2:52 for f being Function of X,X holds dom f = X; registration let X,Y be set; let f be quasi_total PartFunc of X,Y; let g be quasi_total PartFunc of X,X; cluster f*g -> quasi_total for PartFunc of X,Y; end; registration let X,Y be set; let f be quasi_total PartFunc of Y,Y; let g be quasi_total PartFunc of X,Y; cluster f*g -> quasi_total for PartFunc of X,Y; end; theorem :: FUNCT_2:53 for f,g being Relation of X,X st rng f = X & rng g = X holds rng (g*f) = X; theorem :: FUNCT_2:54 for f,g being Function of X,X st g*f = f & rng f = X holds g = id X; theorem :: FUNCT_2:55 for f,g being Function of X,X st f*g = f & f is one-to-one holds g = id X; theorem :: FUNCT_2:56 for f being Function of X,X holds f is one-to-one iff for x1,x2 being object st x1 in X & x2 in X & f.x1 = f.x2 holds x1 = x2; definition let X, Y; let f be X-defined Y-valued Function; attr f is bijective means :: FUNCT_2:def 4 f is one-to-one onto; end; registration let X, Y be set; cluster bijective -> one-to-one onto for PartFunc of X,Y; cluster one-to-one onto -> bijective for PartFunc of X,Y; end; registration let X; cluster bijective for Function of X,X; end; definition let X; mode Permutation of X is bijective Function of X,X; end; theorem :: FUNCT_2:57 for f being Function of X, X st f is one-to-one & rng f = X holds f is Permutation of X; theorem :: FUNCT_2:58 for f being Function of X,X st f is one-to-one holds for x1,x2 st x1 in X & x2 in X & f.x1 = f.x2 holds x1 = x2; registration let X; let f,g be onto PartFunc of X,X; cluster f*g -> onto for PartFunc of X,X; end; registration let X; let f,g be bijective Function of X,X; cluster g*f -> bijective for Function of X,X; end; registration let X; cluster reflexive total -> bijective for Function of X,X; end; definition let X; let f be Permutation of X; redefine func f" -> Permutation of X; end; theorem :: FUNCT_2:59 for f,g being Permutation of X st g*f = g holds f = id X; theorem :: FUNCT_2:60 for f,g being Permutation of X st g*f = id X holds g = f"; theorem :: FUNCT_2:61 for f being Permutation of X holds (f")*f =id X & f*(f") = id X; theorem :: FUNCT_2:62 for f being Permutation of X st P c= X holds f.:(f"P) = P & f"(f .:P) = P; reserve D for non empty set; registration let X,D,Z; let f be Function of X,D; let g be Function of D,Z; cluster g*f -> quasi_total for PartFunc of X,Z; end; definition let C be non empty set, D be set; let f be Function of C,D; let c be Element of C; redefine func f.c -> Element of D; end; scheme :: FUNCT_2:sch 3 FuncExD{C, D() -> non empty set, P[object,object]}: ex f being Function of C(),D() st for x being Element of C() holds P[x,f.x] provided for x being Element of C() ex y being Element of D() st P[x,y]; scheme :: FUNCT_2:sch 4 LambdaD{C, D() -> non empty set, F(Element of C()) -> Element of D()}: ex f being Function of C(),D() st for x being Element of C() holds f.x = F(x); theorem :: FUNCT_2:63 for f1,f2 being Function of X,Y st for x being Element of X holds f1.x = f2.x holds f1 = f2; theorem :: FUNCT_2:64 for P being set for f being Function of X,Y for y holds y in f.:P implies ex x st x in X & x in P & y = f.x; theorem :: FUNCT_2:65 for f being Function of X,Y for y st y in f.:P ex c being Element of X st c in P & y = f.c; begin :: PARTFUN1 theorem :: FUNCT_2:66 for f being set st f in Funcs(X,Y) holds f is Function of X,Y; scheme :: FUNCT_2:sch 5 Lambda1C{A, B() -> set, C[object], F, G(object)->object}: ex f being Function of A(),B() st for x being object st x in A() holds (C[ x] implies f.x = F(x)) & ( not C[ x] implies f.x = G(x)) provided for x being object st x in A() holds (C[ x] implies F(x) in B()) & (not C[ x] implies G(x) in B()); theorem :: FUNCT_2:67 for f being PartFunc of X,Y st dom f = X holds f is Function of X,Y; theorem :: FUNCT_2:68 for f being PartFunc of X,Y st f is total holds f is Function of X,Y; theorem :: FUNCT_2:69 for f being PartFunc of X,Y st (Y = {} implies X = {}) & f is Function of X,Y holds f is total; theorem :: FUNCT_2:70 for f being Function of X,Y st (Y = {} implies X = {}) holds <:f,X,Y:> is total; registration let X; let f be Function of X,X; cluster <:f,X,X:> -> total; end; theorem :: FUNCT_2:71 for f being PartFunc of X,Y st Y = {} implies X = {} ex g being Function of X,Y st for x being object st x in dom f holds g.x = f.x; theorem :: FUNCT_2:72 Funcs(X,Y) c= PFuncs(X,Y); theorem :: FUNCT_2:73 for f,g being Function of X,Y st (Y = {} implies X = {}) & f tolerates g holds f = g; theorem :: FUNCT_2:74 for f,g being Function of X,X st f tolerates g holds f = g; theorem :: FUNCT_2:75 for f being PartFunc of X,Y for g being Function of X,Y st Y = {} implies X = {} holds f tolerates g iff for x being object st x in dom f holds f.x = g.x; theorem :: FUNCT_2:76 for f being PartFunc of X,X for g being Function of X,X holds f tolerates g iff for x being object st x in dom f holds f.x = g.x; theorem :: FUNCT_2:77 for f being PartFunc of X,Y st Y = {} implies X = {} ex g being Function of X,Y st f tolerates g; theorem :: FUNCT_2:78 for f,g being PartFunc of X,X for h being Function of X,X st f tolerates h & g tolerates h holds f tolerates g; theorem :: FUNCT_2:79 for f,g being PartFunc of X,Y st (Y = {} implies X = {}) & f tolerates g ex h being Function of X,Y st f tolerates h & g tolerates h; theorem :: FUNCT_2:80 for f being PartFunc of X,Y for g being Function of X,Y st (Y = {} implies X = {}) & f tolerates g holds g in TotFuncs f; theorem :: FUNCT_2:81 for f being PartFunc of X,X for g being Function of X,X st f tolerates g holds g in TotFuncs f; theorem :: FUNCT_2:82 for f being PartFunc of X,Y for g being set st g in TotFuncs(f) holds g is Function of X,Y; theorem :: FUNCT_2:83 for f being PartFunc of X,Y holds TotFuncs f c= Funcs(X,Y); theorem :: FUNCT_2:84 TotFuncs <:{},X,Y:> = Funcs(X,Y); theorem :: FUNCT_2:85 for f being Function of X,Y st Y = {} implies X = {} holds TotFuncs <:f,X,Y:> = {f}; theorem :: FUNCT_2:86 for f being Function of X,X holds TotFuncs <:f,X,X:> = {f}; theorem :: FUNCT_2:87 for f being PartFunc of X,{y} for g being Function of X,{y} holds TotFuncs f = {g}; theorem :: FUNCT_2:88 for f,g being PartFunc of X,Y st g c= f holds TotFuncs f c= TotFuncs g; theorem :: FUNCT_2:89 for f,g being PartFunc of X,Y st dom g c= dom f & TotFuncs f c= TotFuncs g holds g c= f; theorem :: FUNCT_2:90 for f,g being PartFunc of X,Y st TotFuncs f c= TotFuncs g & ( for y holds Y <> {y}) holds g c= f; theorem :: FUNCT_2:91 for f,g being PartFunc of X,Y st (for y holds Y <> {y}) & TotFuncs f = TotFuncs g holds f = g; :: from WAYBEL_1 registration let A,B be non empty set; cluster -> non empty for Function of A,B; end; begin :: Addenda :: from RLVECT_2 scheme :: FUNCT_2:sch 6 LambdaSep1{D, R() -> non empty set, A() -> Element of D(), B() -> Element of R(), F(object) -> Element of R()}: ex f being Function of D(),R() st f.A() = B() & for x being Element of D() st x <> A() holds f.x = F(x); scheme :: FUNCT_2:sch 7 LambdaSep2{D, R() -> non empty set, A1, A2() -> Element of D(), B1, B2() -> Element of R(), F(object) -> Element of R()}: ex f being Function of D(),R() st f. A1() = B1() & f.A2() = B2() & for x being Element of D() st x <> A1() & x <> A2 () holds f.x = F(x) provided A1() <> A2(); :: from ALTCAT_1, PRALG_3 theorem :: FUNCT_2:92 for A,B being set for f being Function st f in Funcs(A,B) holds dom f = A & rng f c= B; :: from SUPINF_2 scheme :: FUNCT_2:sch 8 FunctRealEx{X()->non empty set,Y()->set,F(object)->object}: ex f being Function of X(),Y() st for x being Element of X() holds f.x = F(x) provided for x being Element of X() holds F(x) in Y(); :: from YELLOW_2 scheme :: FUNCT_2:sch 9 KappaMD{X, Y() -> non empty set, F(object) -> object}: ex f being Function of X(), Y() st for x being Element of X() holds f.x = F(x) provided for x being Element of X() holds F(x) is Element of Y(); definition let A,B,C be non empty set; let f be Function of A, [:B,C:]; redefine func pr1 f -> Function of A,B means :: FUNCT_2:def 5 for x being Element of A holds it.x = (f.x)`1; redefine func pr2 f -> Function of A,C means :: FUNCT_2:def 6 for x being Element of A holds it .x = (f.x)`2; end; definition let A1 be set, B1 be non empty set, A2 be set, B2 be non empty set, f1 be Function of A1,B1, f2 be Function of A2,B2; redefine pred f1 = f2 means :: FUNCT_2:def 7 A1 = A2 & for a being Element of A1 holds f1.a = f2.a; end; definition let A,B be set, f1,f2 be Function of A,B; redefine pred f1 = f2 means :: FUNCT_2:def 8 for a being Element of A holds f1.a = f2.a; end; :: missing, 2006.11.05, A.T. theorem :: FUNCT_2:93 for N being set, f being Function of N, bool N ex R being Relation of N st for i being set st i in N holds Im(R,i) = f.i; :: Moved from BORSUK_1 by AK on 27.12.2006 theorem :: FUNCT_2:94 for A being Subset of X holds (id X)"A = A; :: Moved from TMAP_1 by AK on 27.12.2006 reserve A,B for non empty set; theorem :: FUNCT_2:95 for f being Function of A,B, A0 being Subset of A, B0 being Subset of B holds f.:A0 c= B0 iff A0 c= f"B0; theorem :: FUNCT_2:96 for f being Function of A,B, A0 being non empty Subset of A, f0 being Function of A0,B st for c being Element of A st c in A0 holds f.c = f0.c holds f|A0 = f0; theorem :: FUNCT_2:97 for f being Function, A0, C being set st C c= A0 holds f.:C = (f|A0).: C; theorem :: FUNCT_2:98 for f being Function, A0, D being set st f"D c= A0 holds f"D = (f|A0)" D; scheme :: FUNCT_2:sch 10 MChoice{A()-> non empty set, B()-> non empty set, F(object) -> set}: ex t being Function of A(),B() st for a being Element of A() holds t.a in F(a) provided for a being Element of A() holds B() meets F(a); :: Moved from FINSEQ_4 by AK on 2007.10.09 theorem :: FUNCT_2:99 for X, D be non empty set, p be Function of X,D, i be Element of X holds p/.i = p.i; registration let X, D be non empty set, p be Function of X,D, i be Element of X; identify p/.i with p.i; end; :: from JCT_MISC, 2008.06.01, A.T. theorem :: FUNCT_2:100 for S,X being set, f being Function of S,X, A being Subset of X st X = {} implies S = {} holds (f"A)` = f"(A`); :: from CAT_1, 2008.07.01, A.T. theorem :: FUNCT_2:101 for X,Y,Z being set, D being non empty set, f being Function of X,D st Y c= X & f.:Y c= Z holds f|Y is Function of Y,Z; :: from WEIERSTR, 2008.07.07, A.T. definition let T,S be non empty set; let f be Function of T,S; let G be Subset-Family of S; func f"G -> Subset-Family of T means :: FUNCT_2:def 9 for A being Subset of T holds A in it iff ex B being Subset of S st B in G & A = f"B; end; theorem :: FUNCT_2:102 for T,S being non empty set, f being Function of T,S, A,B being Subset-Family of S st A c= B holds f"A c= f"B; definition let T,S be set; let f be Function of T,S; let G be Subset-Family of T; func f.:G -> Subset-Family of S means :: FUNCT_2:def 10 for A being Subset of S holds A in it iff ex B being Subset of T st B in G & A = f.:B; end; theorem :: FUNCT_2:103 for T,S being set, f being Function of T,S, A,B being Subset-Family of T st A c= B holds f.:A c= f.:B; theorem :: FUNCT_2:104 for T,S being non empty set, f being Function of T,S, B being Subset-Family of S, P being Subset of S st f.:(f"B) is Cover of P holds B is Cover of P; theorem :: FUNCT_2:105 for T,S being non empty set, f being Function of T,S, B being Subset-Family of T, P being Subset of T st B is Cover of P holds f"(f.:B) is Cover of P; theorem :: FUNCT_2:106 for T,S being non empty set, f being Function of T,S, Q being Subset-Family of S holds union(f.:(f"(Q))) c= union Q; theorem :: FUNCT_2:107 for T,S being non empty set, f being Function of T,S, P being Subset-Family of T holds union P c= union(f"(f.:P)); :: Generalized RFUNCT_2:def 1,CFCONT_1:def 1,NFCONT_1:def 7,def 8 :: NCFCONT1:def 9,def 10,def 11,def 12,def 13,def 14 :: 2008.08.15, A.T. definition let X,Z be set, Y be non empty set; let f be Function of X,Y; let p be Z-valued Function; assume rng f c= dom p; func p/*f -> Function of X,Z equals :: FUNCT_2:def 11 p*f; end; reserve Y for non empty set, f for Function of X,Y, p for PartFunc of Y,Z, x for Element of X; theorem :: FUNCT_2:108 X <> {} & rng f c= dom p implies (p/*f).x = p.(f.x); theorem :: FUNCT_2:109 X <> {} & rng f c= dom p implies (p/*f).x = p/.(f.x); reserve g for Function of X,X; theorem :: FUNCT_2:110 rng f c= dom p implies (p/*f)*g = p/*(f*g); :: from RAMSEY_1, 2008.09.12,A.T. theorem :: FUNCT_2:111 for X,Y being non empty set, f being Function of X,Y holds f is constant iff ex y being Element of Y st rng f = {y}; :: from ISOCAT_2, 2008.09.14, A.T. theorem :: FUNCT_2:112 for A,B being non empty set, x being Element of A, f being Function of A,B holds f.x in rng f; :: missing, 2008.09.14, A.T. theorem :: FUNCT_2:113 for A,B being set, f being Function of A,B st y in rng f ex x being Element of A st y = f.x; :: from RFUNCT_2, 2008.09.14, A.T. theorem :: FUNCT_2:114 for A,B being non empty set, f being Function of A,B st for x being Element of A holds f.x in Z holds rng f c= Z; reserve X,Y for non empty set, Z,S,T for set, f for Function of X,Y, g for PartFunc of Y,Z, x for Element of X; theorem :: FUNCT_2:115 g is total implies (g/*f).x = g.(f.x); theorem :: FUNCT_2:116 g is total implies (g/*f).x = g/.(f.x); theorem :: FUNCT_2:117 rng f c= dom (g|S) implies (g|S)/*f = g/*f; theorem :: FUNCT_2:118 rng f c= dom (g|S) & S c= T implies (g|S)/*f = (g|T)/*f; :: missing, 2009.01.09, A.T. theorem :: FUNCT_2:119 for H being Function of D, [:A,B:], d being Element of D holds H.d = [ pr1 H.d,pr2 H.d]; :: from YELLOW20, 2009.01.21, A.T. theorem :: FUNCT_2:120 for A1,A2, B1,B2 being set for f being Function of A1,A2, g being Function of B1,B2 st f tolerates g holds f /\ g is Function of A1 /\ B1, A2 /\ B2; :: from FRAENKEL, 2009.05.06, A.K. registration let A, B be set; cluster Funcs(A,B) -> functional; end; definition let A, B be set; mode FUNCTION_DOMAIN of A,B -> non empty set means :: FUNCT_2:def 12 for x being Element of it holds x is Function of A,B; end; registration let A, B be set; cluster -> functional for FUNCTION_DOMAIN of A,B; end; theorem :: FUNCT_2:121 for f being Function of P,Q holds { f } is FUNCTION_DOMAIN of P,Q; theorem :: FUNCT_2:122 Funcs(P,B) is FUNCTION_DOMAIN of P,B; definition let A be set, B be non empty set; redefine func Funcs(A,B) -> FUNCTION_DOMAIN of A,B; let F be FUNCTION_DOMAIN of A,B; redefine mode Element of F -> Function of A,B; end; registration let I be set; cluster id I -> total for I-defined Function; end; :: from CAT_3, 2009.09.14 definition let X,A; let F be Function of X,A; let x be set; assume x in X; redefine func F/.x equals :: FUNCT_2:def 13 F.x; end; theorem :: FUNCT_2:123 for X being set, Y being non empty set for f being Function of X, Y, g being X-valued Function holds dom(f*g) = dom g; theorem :: FUNCT_2:124 for X being non empty set, f being Function of X,X st for x being Element of X holds f.x = x holds f = id X; :: Moved from GROUP_9, AK definition let O,E be set; mode Action of O,E is Function of O, Funcs(E,E); end; theorem :: FUNCT_2:125 for x being set, A being set for f,g being Function of {x}, A st f.x = g.x holds f = g; theorem :: FUNCT_2:126 for A being set holds id A in Funcs(A,A); theorem :: FUNCT_2:127 Funcs({},{}) = { id {} }; theorem :: FUNCT_2:128 for A,B,C being set, f,g being Function st f in Funcs(A,B) & g in Funcs(B,C) holds g*f in Funcs(A,C); theorem :: FUNCT_2:129 for A,B,C being set st Funcs(A,B) <> {} & Funcs(B,C) <> {} holds Funcs(A,C) <> {}; theorem :: FUNCT_2:130 for A being set holds {} is Function of A,{}; scheme :: FUNCT_2:sch 11 Lambda1{X, Y() -> set, F(object)->object}: ex f being Function of X(),Y() st for x being set st x in X() holds f.x = F(x) provided for x being set st x in X() holds F(x) in Y();