:: ENS_1 semantic presentation begin definition let V be non empty set ; func Funcs V -> set equals :: ENS_1:def 1 union { (Funcs (A,B)) where A, B is Element of V : verum } ; coherence union { (Funcs (A,B)) where A, B is Element of V : verum } is set ; end; :: deftheorem defines Funcs ENS_1:def_1_:_ for V being non empty set holds Funcs V = union { (Funcs (A,B)) where A, B is Element of V : verum } ; registration let V be non empty set ; cluster Funcs V -> functional non empty ; coherence ( Funcs V is functional & not Funcs V is empty ) proof set F = { (Funcs (A,B)) where A, B is Element of V : verum } ; set A = the Element of V; ( id the Element of V in Funcs ( the Element of V, the Element of V) & Funcs ( the Element of V, the Element of V) in { (Funcs (A,B)) where A, B is Element of V : verum } ) by FUNCT_2:9; then reconsider UF = union { (Funcs (A,B)) where A, B is Element of V : verum } as non empty set by TARSKI:def_4; now__::_thesis:_for_f_being_set_st_f_in_UF_holds_ f_is_Function let f be set ; ::_thesis: ( f in UF implies f is Function ) assume f in UF ; ::_thesis: f is Function then consider C being set such that A1: f in C and A2: C in { (Funcs (A,B)) where A, B is Element of V : verum } by TARSKI:def_4; ex A, B being Element of V st C = Funcs (A,B) by A2; hence f is Function by A1; ::_thesis: verum end; hence ( Funcs V is functional & not Funcs V is empty ) by FUNCT_1:def_13; ::_thesis: verum end; end; theorem Th1: :: ENS_1:1 for V being non empty set for f being set holds ( f in Funcs V iff ex A, B being Element of V st ( ( B = {} implies A = {} ) & f is Function of A,B ) ) proof let V be non empty set ; ::_thesis: for f being set holds ( f in Funcs V iff ex A, B being Element of V st ( ( B = {} implies A = {} ) & f is Function of A,B ) ) let f be set ; ::_thesis: ( f in Funcs V iff ex A, B being Element of V st ( ( B = {} implies A = {} ) & f is Function of A,B ) ) set F = { (Funcs (A,B)) where A, B is Element of V : verum } ; thus ( f in Funcs V implies ex A, B being Element of V st ( ( B = {} implies A = {} ) & f is Function of A,B ) ) ::_thesis: ( ex A, B being Element of V st ( ( B = {} implies A = {} ) & f is Function of A,B ) implies f in Funcs V ) proof assume f in Funcs V ; ::_thesis: ex A, B being Element of V st ( ( B = {} implies A = {} ) & f is Function of A,B ) then consider C being set such that A1: f in C and A2: C in { (Funcs (A,B)) where A, B is Element of V : verum } by TARSKI:def_4; consider A, B being Element of V such that A3: C = Funcs (A,B) by A2; take A ; ::_thesis: ex B being Element of V st ( ( B = {} implies A = {} ) & f is Function of A,B ) take B ; ::_thesis: ( ( B = {} implies A = {} ) & f is Function of A,B ) thus ( ( B = {} implies A = {} ) & f is Function of A,B ) by A1, A3, FUNCT_2:66; ::_thesis: verum end; given A, B being Element of V such that A4: ( ( B = {} implies A = {} ) & f is Function of A,B ) ; ::_thesis: f in Funcs V A5: Funcs (A,B) in { (Funcs (A,B)) where A, B is Element of V : verum } ; f in Funcs (A,B) by A4, FUNCT_2:8; hence f in Funcs V by A5, TARSKI:def_4; ::_thesis: verum end; theorem :: ENS_1:2 for V being non empty set for A, B being Element of V holds Funcs (A,B) c= Funcs V proof let V be non empty set ; ::_thesis: for A, B being Element of V holds Funcs (A,B) c= Funcs V let A, B be Element of V; ::_thesis: Funcs (A,B) c= Funcs V let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in Funcs (A,B) or x in Funcs V ) assume A1: x in Funcs (A,B) ; ::_thesis: x in Funcs V then A2: x is Function of A,B by FUNCT_2:66; ( B = {} implies A = {} ) by A1; hence x in Funcs V by A2, Th1; ::_thesis: verum end; theorem Th3: :: ENS_1:3 for V being non empty set for W being non empty Subset of V holds Funcs W c= Funcs V proof let V be non empty set ; ::_thesis: for W being non empty Subset of V holds Funcs W c= Funcs V let W be non empty Subset of V; ::_thesis: Funcs W c= Funcs V let f be set ; :: according to TARSKI:def_3 ::_thesis: ( not f in Funcs W or f in Funcs V ) assume f in Funcs W ; ::_thesis: f in Funcs V then ex A, B being Element of W st ( ( B = {} implies A = {} ) & f is Function of A,B ) by Th1; hence f in Funcs V by Th1; ::_thesis: verum end; definition let V be non empty set ; func Maps V -> set equals :: ENS_1:def 2 { [[A,B],f] where A, B is Element of V, f is Element of Funcs V : ( ( B = {} implies A = {} ) & f is Function of A,B ) } ; coherence { [[A,B],f] where A, B is Element of V, f is Element of Funcs V : ( ( B = {} implies A = {} ) & f is Function of A,B ) } is set ; end; :: deftheorem defines Maps ENS_1:def_2_:_ for V being non empty set holds Maps V = { [[A,B],f] where A, B is Element of V, f is Element of Funcs V : ( ( B = {} implies A = {} ) & f is Function of A,B ) } ; registration let V be non empty set ; cluster Maps V -> non empty ; coherence not Maps V is empty proof set FV = { [[A,B],f] where A, B is Element of V, f is Element of Funcs V : ( ( B = {} implies A = {} ) & f is Function of A,B ) } ; set A = the Element of V; now__::_thesis:_ex_m_being_Element_of_[:[:V,V:],(bool_[:_the_Element_of_V,_the_Element_of_V:]):]_st_m_in__{__[[A,B],f]_where_A,_B_is_Element_of_V,_f_is_Element_of_Funcs_V_:_(_(_B_=_{}_implies_A_=_{}_)_&_f_is_Function_of_A,B_)__}_ set f = id the Element of V; take m = [[ the Element of V, the Element of V],(id the Element of V)]; ::_thesis: m in { [[A,B],f] where A, B is Element of V, f is Element of Funcs V : ( ( B = {} implies A = {} ) & f is Function of A,B ) } A1: ( the Element of V = {} implies the Element of V = {} ) ; id the Element of V in Funcs V by Th1; hence m in { [[A,B],f] where A, B is Element of V, f is Element of Funcs V : ( ( B = {} implies A = {} ) & f is Function of A,B ) } by A1; ::_thesis: verum end; hence not Maps V is empty ; ::_thesis: verum end; end; theorem Th4: :: ENS_1:4 for V being non empty set for m being Element of Maps V ex f being Element of Funcs V ex A, B being Element of V st ( m = [[A,B],f] & ( B = {} implies A = {} ) & f is Function of A,B ) proof let V be non empty set ; ::_thesis: for m being Element of Maps V ex f being Element of Funcs V ex A, B being Element of V st ( m = [[A,B],f] & ( B = {} implies A = {} ) & f is Function of A,B ) let m be Element of Maps V; ::_thesis: ex f being Element of Funcs V ex A, B being Element of V st ( m = [[A,B],f] & ( B = {} implies A = {} ) & f is Function of A,B ) m in { [[A,B],f] where A, B is Element of V, f is Element of Funcs V : ( ( B = {} implies A = {} ) & f is Function of A,B ) } ; then ex A, B being Element of V ex f being Element of Funcs V st ( m = [[A,B],f] & ( B = {} implies A = {} ) & f is Function of A,B ) ; hence ex f being Element of Funcs V ex A, B being Element of V st ( m = [[A,B],f] & ( B = {} implies A = {} ) & f is Function of A,B ) ; ::_thesis: verum end; theorem Th5: :: ENS_1:5 for V being non empty set for A, B being Element of V for f being Function of A,B st ( B = {} implies A = {} ) holds [[A,B],f] in Maps V proof let V be non empty set ; ::_thesis: for A, B being Element of V for f being Function of A,B st ( B = {} implies A = {} ) holds [[A,B],f] in Maps V let A, B be Element of V; ::_thesis: for f being Function of A,B st ( B = {} implies A = {} ) holds [[A,B],f] in Maps V let f be Function of A,B; ::_thesis: ( ( B = {} implies A = {} ) implies [[A,B],f] in Maps V ) assume A1: ( B = {} implies A = {} ) ; ::_thesis: [[A,B],f] in Maps V then f in Funcs V by Th1; hence [[A,B],f] in Maps V by A1; ::_thesis: verum end; theorem :: ENS_1:6 for V being non empty set holds Maps V c= [:[:V,V:],(Funcs V):] proof let V be non empty set ; ::_thesis: Maps V c= [:[:V,V:],(Funcs V):] let m be set ; :: according to TARSKI:def_3 ::_thesis: ( not m in Maps V or m in [:[:V,V:],(Funcs V):] ) assume m in Maps V ; ::_thesis: m in [:[:V,V:],(Funcs V):] then ex A, B being Element of V ex f being Element of Funcs V st ( m = [[A,B],f] & ( B = {} implies A = {} ) & f is Function of A,B ) ; hence m in [:[:V,V:],(Funcs V):] ; ::_thesis: verum end; theorem Th7: :: ENS_1:7 for V being non empty set for W being non empty Subset of V holds Maps W c= Maps V proof let V be non empty set ; ::_thesis: for W being non empty Subset of V holds Maps W c= Maps V let W be non empty Subset of V; ::_thesis: Maps W c= Maps V let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in Maps W or x in Maps V ) assume x in Maps W ; ::_thesis: x in Maps V then consider A, B being Element of W, f being Element of Funcs W such that A1: ( x = [[A,B],f] & ( B = {} implies A = {} ) & f is Function of A,B ) ; ( Funcs W c= Funcs V & f in Funcs W ) by Th3; hence x in Maps V by A1; ::_thesis: verum end; Lm1: for x1, y1, x2, y2, x3, y3 being set st [[x1,x2],x3] = [[y1,y2],y3] holds ( x1 = y1 & x2 = y2 ) proof let x1, y1, x2, y2, x3, y3 be set ; ::_thesis: ( [[x1,x2],x3] = [[y1,y2],y3] implies ( x1 = y1 & x2 = y2 ) ) assume [[x1,x2],x3] = [[y1,y2],y3] ; ::_thesis: ( x1 = y1 & x2 = y2 ) then [x1,x2] = [y1,y2] by XTUPLE_0:1; hence ( x1 = y1 & x2 = y2 ) by XTUPLE_0:1; ::_thesis: verum end; registration let V be non empty set ; let m be Element of Maps V; clusterm `2 -> Relation-like Function-like ; coherence ( m `2 is Function-like & m `2 is Relation-like ) proof ex f being Element of Funcs V ex A, B being Element of V st ( m = [[A,B],f] & ( B = {} implies A = {} ) & f is Function of A,B ) by Th4; hence ( m `2 is Function-like & m `2 is Relation-like ) by MCART_1:7; ::_thesis: verum end; end; definition let V be non empty set ; let m be Element of Maps V; func dom m -> Element of V equals :: ENS_1:def 3 (m `1) `1 ; coherence (m `1) `1 is Element of V proof consider f being Element of Funcs V, A, B being Element of V such that A1: m = [[A,B],f] and ( B = {} implies A = {} ) and f is Function of A,B by Th4; [A,B] = m `1 by A1, MCART_1:7; hence (m `1) `1 is Element of V by MCART_1:7; ::_thesis: verum end; func cod m -> Element of V equals :: ENS_1:def 4 (m `1) `2 ; coherence (m `1) `2 is Element of V proof consider f being Element of Funcs V, A, B being Element of V such that A2: m = [[A,B],f] and ( B = {} implies A = {} ) and f is Function of A,B by Th4; [A,B] = m `1 by A2, MCART_1:7; hence (m `1) `2 is Element of V by MCART_1:7; ::_thesis: verum end; end; :: deftheorem defines dom ENS_1:def_3_:_ for V being non empty set for m being Element of Maps V holds dom m = (m `1) `1 ; :: deftheorem defines cod ENS_1:def_4_:_ for V being non empty set for m being Element of Maps V holds cod m = (m `1) `2 ; theorem Th8: :: ENS_1:8 for V being non empty set for m being Element of Maps V holds m = [[(dom m),(cod m)],(m `2)] proof let V be non empty set ; ::_thesis: for m being Element of Maps V holds m = [[(dom m),(cod m)],(m `2)] let m be Element of Maps V; ::_thesis: m = [[(dom m),(cod m)],(m `2)] consider f being Element of Funcs V, A, B being Element of V such that A1: ( m = [[A,B],f] & ( B = {} implies A = {} ) & f is Function of A,B ) by Th4; m `1 = [A,B] by A1, MCART_1:7; then m `1 = [(dom m),(cod m)] by MCART_1:8; hence m = [[(dom m),(cod m)],(m `2)] by A1, MCART_1:8; ::_thesis: verum end; Lm2: for V being non empty set for m, m9 being Element of Maps V st m `2 = m9 `2 & dom m = dom m9 & cod m = cod m9 holds m = m9 proof let V be non empty set ; ::_thesis: for m, m9 being Element of Maps V st m `2 = m9 `2 & dom m = dom m9 & cod m = cod m9 holds m = m9 let m, m9 be Element of Maps V; ::_thesis: ( m `2 = m9 `2 & dom m = dom m9 & cod m = cod m9 implies m = m9 ) m = [[(dom m),(cod m)],(m `2)] by Th8; hence ( m `2 = m9 `2 & dom m = dom m9 & cod m = cod m9 implies m = m9 ) by Th8; ::_thesis: verum end; theorem Th9: :: ENS_1:9 for V being non empty set for m being Element of Maps V holds ( ( cod m <> {} or dom m = {} ) & m `2 is Function of (dom m),(cod m) ) proof let V be non empty set ; ::_thesis: for m being Element of Maps V holds ( ( cod m <> {} or dom m = {} ) & m `2 is Function of (dom m),(cod m) ) let m be Element of Maps V; ::_thesis: ( ( cod m <> {} or dom m = {} ) & m `2 is Function of (dom m),(cod m) ) consider f being Element of Funcs V, A, B being Element of V such that A1: m = [[A,B],f] and A2: ( ( B = {} implies A = {} ) & f is Function of A,B ) by Th4; A3: m = [[(dom m),(cod m)],(m `2)] by Th8; then ( f = m `2 & A = dom m ) by A1, Lm1, XTUPLE_0:1; hence ( ( cod m <> {} or dom m = {} ) & m `2 is Function of (dom m),(cod m) ) by A1, A2, A3, Lm1; ::_thesis: verum end; Lm3: for V being non empty set for m being Element of Maps V holds ( dom (m `2) = dom m & rng (m `2) c= cod m ) proof let V be non empty set ; ::_thesis: for m being Element of Maps V holds ( dom (m `2) = dom m & rng (m `2) c= cod m ) let m be Element of Maps V; ::_thesis: ( dom (m `2) = dom m & rng (m `2) c= cod m ) A1: m `2 is Function of (dom m),(cod m) by Th9; ( cod m <> {} or dom m = {} ) by Th9; hence ( dom (m `2) = dom m & rng (m `2) c= cod m ) by A1, FUNCT_2:def_1, RELAT_1:def_19; ::_thesis: verum end; theorem Th10: :: ENS_1:10 for V being non empty set for f being Function for A, B being set st [[A,B],f] in Maps V holds ( ( B = {} implies A = {} ) & f is Function of A,B ) proof let V be non empty set ; ::_thesis: for f being Function for A, B being set st [[A,B],f] in Maps V holds ( ( B = {} implies A = {} ) & f is Function of A,B ) let f be Function; ::_thesis: for A, B being set st [[A,B],f] in Maps V holds ( ( B = {} implies A = {} ) & f is Function of A,B ) let A, B be set ; ::_thesis: ( [[A,B],f] in Maps V implies ( ( B = {} implies A = {} ) & f is Function of A,B ) ) assume [[A,B],f] in Maps V ; ::_thesis: ( ( B = {} implies A = {} ) & f is Function of A,B ) then consider f9 being Element of Funcs V, A9, B9 being Element of V such that A1: [[A,B],f] = [[A9,B9],f9] and A2: ( ( B9 = {} implies A9 = {} ) & f9 is Function of A9,B9 ) by Th4; ( f = f9 & A = A9 ) by A1, Lm1, XTUPLE_0:1; hence ( ( B = {} implies A = {} ) & f is Function of A,B ) by A1, A2, Lm1; ::_thesis: verum end; definition let V be non empty set ; let A be Element of V; func id$ A -> Element of Maps V equals :: ENS_1:def 5 [[A,A],(id A)]; coherence [[A,A],(id A)] is Element of Maps V by Th5; end; :: deftheorem defines id$ ENS_1:def_5_:_ for V being non empty set for A being Element of V holds id$ A = [[A,A],(id A)]; theorem Th11: :: ENS_1:11 for V being non empty set for A being Element of V holds ( (id$ A) `2 = id A & dom (id$ A) = A & cod (id$ A) = A ) proof let V be non empty set ; ::_thesis: for A being Element of V holds ( (id$ A) `2 = id A & dom (id$ A) = A & cod (id$ A) = A ) let A be Element of V; ::_thesis: ( (id$ A) `2 = id A & dom (id$ A) = A & cod (id$ A) = A ) [[(dom (id$ A)),(cod (id$ A))],((id$ A) `2)] = [[A,A],(id A)] by Th8; hence ( (id$ A) `2 = id A & dom (id$ A) = A & cod (id$ A) = A ) by Lm1, XTUPLE_0:1; ::_thesis: verum end; definition let V be non empty set ; let m1, m2 be Element of Maps V; assume A1: cod m1 = dom m2 ; funcm2 * m1 -> Element of Maps V equals :Def6: :: ENS_1:def 6 [[(dom m1),(cod m2)],((m2 `2) * (m1 `2))]; coherence [[(dom m1),(cod m2)],((m2 `2) * (m1 `2))] is Element of Maps V proof A2: ( cod m2 <> {} or dom m2 = {} ) by Th9; A3: ( cod m1 <> {} or dom m1 = {} ) by Th9; ( m1 `2 is Function of (dom m1),(cod m1) & m2 `2 is Function of (dom m2),(cod m2) ) by Th9; then (m2 `2) * (m1 `2) is Function of (dom m1),(cod m2) by A1, A3, FUNCT_2:13; hence [[(dom m1),(cod m2)],((m2 `2) * (m1 `2))] is Element of Maps V by A1, A3, A2, Th5; ::_thesis: verum end; end; :: deftheorem Def6 defines * ENS_1:def_6_:_ for V being non empty set for m1, m2 being Element of Maps V st cod m1 = dom m2 holds m2 * m1 = [[(dom m1),(cod m2)],((m2 `2) * (m1 `2))]; theorem Th12: :: ENS_1:12 for V being non empty set for m2, m1 being Element of Maps V st dom m2 = cod m1 holds ( (m2 * m1) `2 = (m2 `2) * (m1 `2) & dom (m2 * m1) = dom m1 & cod (m2 * m1) = cod m2 ) proof let V be non empty set ; ::_thesis: for m2, m1 being Element of Maps V st dom m2 = cod m1 holds ( (m2 * m1) `2 = (m2 `2) * (m1 `2) & dom (m2 * m1) = dom m1 & cod (m2 * m1) = cod m2 ) let m2, m1 be Element of Maps V; ::_thesis: ( dom m2 = cod m1 implies ( (m2 * m1) `2 = (m2 `2) * (m1 `2) & dom (m2 * m1) = dom m1 & cod (m2 * m1) = cod m2 ) ) assume dom m2 = cod m1 ; ::_thesis: ( (m2 * m1) `2 = (m2 `2) * (m1 `2) & dom (m2 * m1) = dom m1 & cod (m2 * m1) = cod m2 ) then [[(dom m1),(cod m2)],((m2 `2) * (m1 `2))] = m2 * m1 by Def6 .= [[(dom (m2 * m1)),(cod (m2 * m1))],((m2 * m1) `2)] by Th8 ; hence ( (m2 * m1) `2 = (m2 `2) * (m1 `2) & dom (m2 * m1) = dom m1 & cod (m2 * m1) = cod m2 ) by Lm1, XTUPLE_0:1; ::_thesis: verum end; theorem Th13: :: ENS_1:13 for V being non empty set for m2, m1, m3 being Element of Maps V st dom m2 = cod m1 & dom m3 = cod m2 holds m3 * (m2 * m1) = (m3 * m2) * m1 proof let V be non empty set ; ::_thesis: for m2, m1, m3 being Element of Maps V st dom m2 = cod m1 & dom m3 = cod m2 holds m3 * (m2 * m1) = (m3 * m2) * m1 let m2, m1, m3 be Element of Maps V; ::_thesis: ( dom m2 = cod m1 & dom m3 = cod m2 implies m3 * (m2 * m1) = (m3 * m2) * m1 ) assume that A1: dom m2 = cod m1 and A2: dom m3 = cod m2 ; ::_thesis: m3 * (m2 * m1) = (m3 * m2) * m1 A3: cod (m2 * m1) = cod m2 by A1, Th12; (m2 * m1) `2 = (m2 `2) * (m1 `2) by A1, Th12; then A4: (m3 * (m2 * m1)) `2 = (m3 `2) * ((m2 `2) * (m1 `2)) by A2, A3, Th12; A5: dom (m3 * m2) = dom m2 by A2, Th12; then A6: dom ((m3 * m2) * m1) = dom m1 by A1, Th12; dom (m2 * m1) = dom m1 by A1, Th12; then A7: dom (m3 * (m2 * m1)) = dom m1 by A2, A3, Th12; cod (m3 * m2) = cod m3 by A2, Th12; then A8: cod ((m3 * m2) * m1) = cod m3 by A1, A5, Th12; (m3 * m2) `2 = (m3 `2) * (m2 `2) by A2, Th12; then A9: ((m3 * m2) * m1) `2 = ((m3 `2) * (m2 `2)) * (m1 `2) by A1, A5, Th12; cod (m3 * (m2 * m1)) = cod m3 by A2, A3, Th12; hence m3 * (m2 * m1) = (m3 * m2) * m1 by A4, A7, A9, A6, A8, Lm2, RELAT_1:36; ::_thesis: verum end; theorem Th14: :: ENS_1:14 for V being non empty set for m being Element of Maps V holds ( m * (id$ (dom m)) = m & (id$ (cod m)) * m = m ) proof let V be non empty set ; ::_thesis: for m being Element of Maps V holds ( m * (id$ (dom m)) = m & (id$ (cod m)) * m = m ) let m be Element of Maps V; ::_thesis: ( m * (id$ (dom m)) = m & (id$ (cod m)) * m = m ) set i1 = id$ (dom m); set i2 = id$ (cod m); A1: ( (id$ (dom m)) `2 = id (dom m) & dom (id$ (dom m)) = dom m ) by Th11; A2: m `2 is Function of (dom m),(cod m) by Th9; then A3: rng (m `2) c= cod m by RELAT_1:def_19; ( cod m <> {} or dom m = {} ) by Th9; then A4: dom (m `2) = dom m by A2, FUNCT_2:def_1; A5: cod (id$ (dom m)) = dom m by Th11; then A6: cod (m * (id$ (dom m))) = cod m by Th12; ( (m * (id$ (dom m))) `2 = (m `2) * ((id$ (dom m)) `2) & dom (m * (id$ (dom m))) = dom (id$ (dom m)) ) by A5, Th12; hence m * (id$ (dom m)) = m by A4, A1, A6, Lm2, RELAT_1:52; ::_thesis: (id$ (cod m)) * m = m A7: ( (id$ (cod m)) `2 = id (cod m) & cod (id$ (cod m)) = cod m ) by Th11; A8: dom (id$ (cod m)) = cod m by Th11; then A9: cod ((id$ (cod m)) * m) = cod (id$ (cod m)) by Th12; ( ((id$ (cod m)) * m) `2 = ((id$ (cod m)) `2) * (m `2) & dom ((id$ (cod m)) * m) = dom m ) by A8, Th12; hence (id$ (cod m)) * m = m by A3, A7, A9, Lm2, RELAT_1:53; ::_thesis: verum end; definition let V be non empty set ; let A, B be Element of V; func Maps (A,B) -> set equals :: ENS_1:def 7 { [[A,B],f] where f is Element of Funcs V : [[A,B],f] in Maps V } ; correctness coherence { [[A,B],f] where f is Element of Funcs V : [[A,B],f] in Maps V } is set ; ; end; :: deftheorem defines Maps ENS_1:def_7_:_ for V being non empty set for A, B being Element of V holds Maps (A,B) = { [[A,B],f] where f is Element of Funcs V : [[A,B],f] in Maps V } ; theorem Th15: :: ENS_1:15 for V being non empty set for A, B being Element of V for f being Function of A,B st ( B = {} implies A = {} ) holds [[A,B],f] in Maps (A,B) proof let V be non empty set ; ::_thesis: for A, B being Element of V for f being Function of A,B st ( B = {} implies A = {} ) holds [[A,B],f] in Maps (A,B) let A, B be Element of V; ::_thesis: for f being Function of A,B st ( B = {} implies A = {} ) holds [[A,B],f] in Maps (A,B) let f be Function of A,B; ::_thesis: ( ( B = {} implies A = {} ) implies [[A,B],f] in Maps (A,B) ) assume ( B = {} implies A = {} ) ; ::_thesis: [[A,B],f] in Maps (A,B) then ( f in Funcs V & [[A,B],f] in Maps V ) by Th1, Th5; hence [[A,B],f] in Maps (A,B) ; ::_thesis: verum end; theorem Th16: :: ENS_1:16 for V being non empty set for A, B being Element of V for m being Element of Maps V st m in Maps (A,B) holds m = [[A,B],(m `2)] proof let V be non empty set ; ::_thesis: for A, B being Element of V for m being Element of Maps V st m in Maps (A,B) holds m = [[A,B],(m `2)] let A, B be Element of V; ::_thesis: for m being Element of Maps V st m in Maps (A,B) holds m = [[A,B],(m `2)] let m be Element of Maps V; ::_thesis: ( m in Maps (A,B) implies m = [[A,B],(m `2)] ) assume m in Maps (A,B) ; ::_thesis: m = [[A,B],(m `2)] then A1: ex f being Element of Funcs V st ( m = [[A,B],f] & [[A,B],f] in Maps V ) ; m = [[(dom m),(cod m)],(m `2)] by Th8; hence m = [[A,B],(m `2)] by A1, XTUPLE_0:1; ::_thesis: verum end; theorem Th17: :: ENS_1:17 for V being non empty set for A, B being Element of V holds Maps (A,B) c= Maps V proof let V be non empty set ; ::_thesis: for A, B being Element of V holds Maps (A,B) c= Maps V let A, B be Element of V; ::_thesis: Maps (A,B) c= Maps V let z be set ; :: according to TARSKI:def_3 ::_thesis: ( not z in Maps (A,B) or z in Maps V ) assume z in Maps (A,B) ; ::_thesis: z in Maps V then ex f being Element of Funcs V st ( z = [[A,B],f] & [[A,B],f] in Maps V ) ; hence z in Maps V ; ::_thesis: verum end; Lm4: for V being non empty set for A, B being Element of V for f being Function st [[A,B],f] in Maps (A,B) holds ( ( B = {} implies A = {} ) & f is Function of A,B ) proof let V be non empty set ; ::_thesis: for A, B being Element of V for f being Function st [[A,B],f] in Maps (A,B) holds ( ( B = {} implies A = {} ) & f is Function of A,B ) let A, B be Element of V; ::_thesis: for f being Function st [[A,B],f] in Maps (A,B) holds ( ( B = {} implies A = {} ) & f is Function of A,B ) A1: Maps (A,B) c= Maps V by Th17; let f be Function; ::_thesis: ( [[A,B],f] in Maps (A,B) implies ( ( B = {} implies A = {} ) & f is Function of A,B ) ) assume [[A,B],f] in Maps (A,B) ; ::_thesis: ( ( B = {} implies A = {} ) & f is Function of A,B ) hence ( ( B = {} implies A = {} ) & f is Function of A,B ) by A1, Th10; ::_thesis: verum end; theorem :: ENS_1:18 for V being non empty set holds Maps V = union { (Maps (A,B)) where A, B is Element of V : verum } proof let V be non empty set ; ::_thesis: Maps V = union { (Maps (A,B)) where A, B is Element of V : verum } set M = { (Maps (A,B)) where A, B is Element of V : verum } ; now__::_thesis:_for_z_being_set_holds_ (_(_z_in_Maps_V_implies_z_in_union__{__(Maps_(A,B))_where_A,_B_is_Element_of_V_:_verum__}__)_&_(_z_in_union__{__(Maps_(A,B))_where_A,_B_is_Element_of_V_:_verum__}__implies_z_in_Maps_V_)_) let z be set ; ::_thesis: ( ( z in Maps V implies z in union { (Maps (A,B)) where A, B is Element of V : verum } ) & ( z in union { (Maps (A,B)) where A, B is Element of V : verum } implies z in Maps V ) ) thus ( z in Maps V implies z in union { (Maps (A,B)) where A, B is Element of V : verum } ) ::_thesis: ( z in union { (Maps (A,B)) where A, B is Element of V : verum } implies z in Maps V ) proof assume z in Maps V ; ::_thesis: z in union { (Maps (A,B)) where A, B is Element of V : verum } then consider f being Element of Funcs V, A, B being Element of V such that A1: ( z = [[A,B],f] & ( B = {} implies A = {} ) & f is Function of A,B ) by Th4; A2: Maps (A,B) in { (Maps (A,B)) where A, B is Element of V : verum } ; z in Maps (A,B) by A1, Th15; hence z in union { (Maps (A,B)) where A, B is Element of V : verum } by A2, TARSKI:def_4; ::_thesis: verum end; assume z in union { (Maps (A,B)) where A, B is Element of V : verum } ; ::_thesis: z in Maps V then consider C being set such that A3: z in C and A4: C in { (Maps (A,B)) where A, B is Element of V : verum } by TARSKI:def_4; consider A, B being Element of V such that A5: C = Maps (A,B) by A4; ex f being Element of Funcs V st ( z = [[A,B],f] & [[A,B],f] in Maps V ) by A3, A5; hence z in Maps V ; ::_thesis: verum end; hence Maps V = union { (Maps (A,B)) where A, B is Element of V : verum } by TARSKI:1; ::_thesis: verum end; theorem Th19: :: ENS_1:19 for V being non empty set for A, B being Element of V for m being Element of Maps V holds ( m in Maps (A,B) iff ( dom m = A & cod m = B ) ) proof let V be non empty set ; ::_thesis: for A, B being Element of V for m being Element of Maps V holds ( m in Maps (A,B) iff ( dom m = A & cod m = B ) ) let A, B be Element of V; ::_thesis: for m being Element of Maps V holds ( m in Maps (A,B) iff ( dom m = A & cod m = B ) ) let m be Element of Maps V; ::_thesis: ( m in Maps (A,B) iff ( dom m = A & cod m = B ) ) A1: m `2 is Function of (dom m),(cod m) by Th9; thus ( m in Maps (A,B) implies ( dom m = A & cod m = B ) ) ::_thesis: ( dom m = A & cod m = B implies m in Maps (A,B) ) proof assume m in Maps (A,B) ; ::_thesis: ( dom m = A & cod m = B ) then A2: m = [[A,B],(m `2)] by Th16; m = [[(dom m),(cod m)],(m `2)] by Th8; hence ( dom m = A & cod m = B ) by A2, Lm1; ::_thesis: verum end; ( cod m <> {} or dom m = {} ) by Th9; then [[(dom m),(cod m)],(m `2)] in Maps ((dom m),(cod m)) by A1, Th15; hence ( dom m = A & cod m = B implies m in Maps (A,B) ) by Th8; ::_thesis: verum end; theorem Th20: :: ENS_1:20 for V being non empty set for A, B being Element of V for m being Element of Maps V st m in Maps (A,B) holds m `2 in Funcs (A,B) proof let V be non empty set ; ::_thesis: for A, B being Element of V for m being Element of Maps V st m in Maps (A,B) holds m `2 in Funcs (A,B) let A, B be Element of V; ::_thesis: for m being Element of Maps V st m in Maps (A,B) holds m `2 in Funcs (A,B) let m be Element of Maps V; ::_thesis: ( m in Maps (A,B) implies m `2 in Funcs (A,B) ) assume A1: m in Maps (A,B) ; ::_thesis: m `2 in Funcs (A,B) then A2: m = [[A,B],(m `2)] by Th16; then A3: m `2 is Function of A,B by A1, Lm4; ( B = {} implies A = {} ) by A1, A2, Lm4; hence m `2 in Funcs (A,B) by A3, FUNCT_2:8; ::_thesis: verum end; Lm5: for V being non empty set for W being non empty Subset of V for A, B being Element of W for A9, B9 being Element of V st A = A9 & B = B9 holds Maps (A,B) = Maps (A9,B9) proof let V be non empty set ; ::_thesis: for W being non empty Subset of V for A, B being Element of W for A9, B9 being Element of V st A = A9 & B = B9 holds Maps (A,B) = Maps (A9,B9) let W be non empty Subset of V; ::_thesis: for A, B being Element of W for A9, B9 being Element of V st A = A9 & B = B9 holds Maps (A,B) = Maps (A9,B9) let A, B be Element of W; ::_thesis: for A9, B9 being Element of V st A = A9 & B = B9 holds Maps (A,B) = Maps (A9,B9) let A9, B9 be Element of V; ::_thesis: ( A = A9 & B = B9 implies Maps (A,B) = Maps (A9,B9) ) assume A1: ( A = A9 & B = B9 ) ; ::_thesis: Maps (A,B) = Maps (A9,B9) now__::_thesis:_for_x_being_set_holds_ (_(_x_in_Maps_(A,B)_implies_x_in_Maps_(A9,B9)_)_&_(_x_in_Maps_(A9,B9)_implies_x_in_Maps_(A,B)_)_) let x be set ; ::_thesis: ( ( x in Maps (A,B) implies x in Maps (A9,B9) ) & ( x in Maps (A9,B9) implies x in Maps (A,B) ) ) thus ( x in Maps (A,B) implies x in Maps (A9,B9) ) ::_thesis: ( x in Maps (A9,B9) implies x in Maps (A,B) ) proof A2: Maps W c= Maps V by Th7; assume A3: x in Maps (A,B) ; ::_thesis: x in Maps (A9,B9) A4: Maps (A,B) c= Maps W by Th17; then reconsider m = x as Element of Maps W by A3; A5: m = [[(dom m),(cod m)],(m `2)] by Th8; x in Maps W by A3, A4; then reconsider m9 = x as Element of Maps V by A2; A6: ( dom m = dom m9 & cod m = cod m9 ) ; m = [[A,B],(m `2)] by A3, Th16; then ( dom m = A & cod m = B ) by A5, Lm1; hence x in Maps (A9,B9) by A1, A6, Th19; ::_thesis: verum end; assume A7: x in Maps (A9,B9) ; ::_thesis: x in Maps (A,B) Maps (A9,B9) c= Maps V by Th17; then reconsider m9 = x as Element of Maps V by A7; A8: m9 = [[A9,B9],(m9 `2)] by A7, Th16; then A9: m9 `2 is Function of A9,B9 by A7, Lm4; ( B9 = {} implies A9 = {} ) by A7, A8, Lm4; hence x in Maps (A,B) by A1, A8, A9, Th15; ::_thesis: verum end; hence Maps (A,B) = Maps (A9,B9) by TARSKI:1; ::_thesis: verum end; definition let V be non empty set ; let m be Element of Maps V; attrm is surjective means :: ENS_1:def 8 rng (m `2) = cod m; end; :: deftheorem defines surjective ENS_1:def_8_:_ for V being non empty set for m being Element of Maps V holds ( m is surjective iff rng (m `2) = cod m ); begin definition let V be non empty set ; func fDom V -> Function of (Maps V),V means :Def9: :: ENS_1:def 9 for m being Element of Maps V holds it . m = dom m; existence ex b1 being Function of (Maps V),V st for m being Element of Maps V holds b1 . m = dom m proof deffunc H1( Element of Maps V) -> Element of V = dom $1; ex F being Function of (Maps V),V st for m being Element of Maps V holds F . m = H1(m) from FUNCT_2:sch_4(); hence ex b1 being Function of (Maps V),V st for m being Element of Maps V holds b1 . m = dom m ; ::_thesis: verum end; uniqueness for b1, b2 being Function of (Maps V),V st ( for m being Element of Maps V holds b1 . m = dom m ) & ( for m being Element of Maps V holds b2 . m = dom m ) holds b1 = b2 proof let h1, h2 be Function of (Maps V),V; ::_thesis: ( ( for m being Element of Maps V holds h1 . m = dom m ) & ( for m being Element of Maps V holds h2 . m = dom m ) implies h1 = h2 ) assume that A1: for m being Element of Maps V holds h1 . m = dom m and A2: for m being Element of Maps V holds h2 . m = dom m ; ::_thesis: h1 = h2 now__::_thesis:_for_m_being_Element_of_Maps_V_holds_h1_._m_=_h2_._m let m be Element of Maps V; ::_thesis: h1 . m = h2 . m thus h1 . m = dom m by A1 .= h2 . m by A2 ; ::_thesis: verum end; hence h1 = h2 by FUNCT_2:63; ::_thesis: verum end; func fCod V -> Function of (Maps V),V means :Def10: :: ENS_1:def 10 for m being Element of Maps V holds it . m = cod m; existence ex b1 being Function of (Maps V),V st for m being Element of Maps V holds b1 . m = cod m proof deffunc H1( Element of Maps V) -> Element of V = cod $1; ex F being Function of (Maps V),V st for m being Element of Maps V holds F . m = H1(m) from FUNCT_2:sch_4(); hence ex b1 being Function of (Maps V),V st for m being Element of Maps V holds b1 . m = cod m ; ::_thesis: verum end; uniqueness for b1, b2 being Function of (Maps V),V st ( for m being Element of Maps V holds b1 . m = cod m ) & ( for m being Element of Maps V holds b2 . m = cod m ) holds b1 = b2 proof let h1, h2 be Function of (Maps V),V; ::_thesis: ( ( for m being Element of Maps V holds h1 . m = cod m ) & ( for m being Element of Maps V holds h2 . m = cod m ) implies h1 = h2 ) assume that A3: for m being Element of Maps V holds h1 . m = cod m and A4: for m being Element of Maps V holds h2 . m = cod m ; ::_thesis: h1 = h2 now__::_thesis:_for_m_being_Element_of_Maps_V_holds_h1_._m_=_h2_._m let m be Element of Maps V; ::_thesis: h1 . m = h2 . m thus h1 . m = cod m by A3 .= h2 . m by A4 ; ::_thesis: verum end; hence h1 = h2 by FUNCT_2:63; ::_thesis: verum end; func fComp V -> PartFunc of [:(Maps V),(Maps V):],(Maps V) means :Def11: :: ENS_1:def 11 ( ( for m2, m1 being Element of Maps V holds ( [m2,m1] in dom it iff dom m2 = cod m1 ) ) & ( for m2, m1 being Element of Maps V st dom m2 = cod m1 holds it . [m2,m1] = m2 * m1 ) ); existence ex b1 being PartFunc of [:(Maps V),(Maps V):],(Maps V) st ( ( for m2, m1 being Element of Maps V holds ( [m2,m1] in dom b1 iff dom m2 = cod m1 ) ) & ( for m2, m1 being Element of Maps V st dom m2 = cod m1 holds b1 . [m2,m1] = m2 * m1 ) ) proof defpred S1[ set , set , set ] means for m2, m1 being Element of Maps V st m2 = $1 & m1 = $2 holds ( dom m2 = cod m1 & $3 = m2 * m1 ); A5: for x, y, z1, z2 being set st x in Maps V & y in Maps V & S1[x,y,z1] & S1[x,y,z2] holds z1 = z2 proof let x, y, z1, z2 be set ; ::_thesis: ( x in Maps V & y in Maps V & S1[x,y,z1] & S1[x,y,z2] implies z1 = z2 ) assume ( x in Maps V & y in Maps V ) ; ::_thesis: ( not S1[x,y,z1] or not S1[x,y,z2] or z1 = z2 ) then reconsider m2 = x, m1 = y as Element of Maps V ; assume that A6: S1[x,y,z1] and A7: S1[x,y,z2] ; ::_thesis: z1 = z2 z1 = m2 * m1 by A6; hence z1 = z2 by A7; ::_thesis: verum end; A8: for x, y, z being set st x in Maps V & y in Maps V & S1[x,y,z] holds z in Maps V proof let x, y, z be set ; ::_thesis: ( x in Maps V & y in Maps V & S1[x,y,z] implies z in Maps V ) assume ( x in Maps V & y in Maps V ) ; ::_thesis: ( not S1[x,y,z] or z in Maps V ) then reconsider m2 = x, m1 = y as Element of Maps V ; assume S1[x,y,z] ; ::_thesis: z in Maps V then z = m2 * m1 ; hence z in Maps V ; ::_thesis: verum end; consider h being PartFunc of [:(Maps V),(Maps V):],(Maps V) such that A9: for x, y being set holds ( [x,y] in dom h iff ( x in Maps V & y in Maps V & ex z being set st S1[x,y,z] ) ) and A10: for x, y being set st [x,y] in dom h holds S1[x,y,h . (x,y)] from BINOP_1:sch_5(A8, A5); take h ; ::_thesis: ( ( for m2, m1 being Element of Maps V holds ( [m2,m1] in dom h iff dom m2 = cod m1 ) ) & ( for m2, m1 being Element of Maps V st dom m2 = cod m1 holds h . [m2,m1] = m2 * m1 ) ) thus A11: for m2, m1 being Element of Maps V holds ( [m2,m1] in dom h iff dom m2 = cod m1 ) ::_thesis: for m2, m1 being Element of Maps V st dom m2 = cod m1 holds h . [m2,m1] = m2 * m1 proof let m2, m1 be Element of Maps V; ::_thesis: ( [m2,m1] in dom h iff dom m2 = cod m1 ) thus ( [m2,m1] in dom h implies dom m2 = cod m1 ) ::_thesis: ( dom m2 = cod m1 implies [m2,m1] in dom h ) proof assume [m2,m1] in dom h ; ::_thesis: dom m2 = cod m1 then ex z being set st S1[m2,m1,z] by A9; hence dom m2 = cod m1 ; ::_thesis: verum end; assume dom m2 = cod m1 ; ::_thesis: [m2,m1] in dom h then S1[m2,m1,m2 * m1] ; hence [m2,m1] in dom h by A9; ::_thesis: verum end; let m2, m1 be Element of Maps V; ::_thesis: ( dom m2 = cod m1 implies h . [m2,m1] = m2 * m1 ) assume dom m2 = cod m1 ; ::_thesis: h . [m2,m1] = m2 * m1 then [m2,m1] in dom h by A11; then S1[m2,m1,h . (m2,m1)] by A10; hence h . [m2,m1] = m2 * m1 ; ::_thesis: verum end; uniqueness for b1, b2 being PartFunc of [:(Maps V),(Maps V):],(Maps V) st ( for m2, m1 being Element of Maps V holds ( [m2,m1] in dom b1 iff dom m2 = cod m1 ) ) & ( for m2, m1 being Element of Maps V st dom m2 = cod m1 holds b1 . [m2,m1] = m2 * m1 ) & ( for m2, m1 being Element of Maps V holds ( [m2,m1] in dom b2 iff dom m2 = cod m1 ) ) & ( for m2, m1 being Element of Maps V st dom m2 = cod m1 holds b2 . [m2,m1] = m2 * m1 ) holds b1 = b2 proof let h1, h2 be PartFunc of [:(Maps V),(Maps V):],(Maps V); ::_thesis: ( ( for m2, m1 being Element of Maps V holds ( [m2,m1] in dom h1 iff dom m2 = cod m1 ) ) & ( for m2, m1 being Element of Maps V st dom m2 = cod m1 holds h1 . [m2,m1] = m2 * m1 ) & ( for m2, m1 being Element of Maps V holds ( [m2,m1] in dom h2 iff dom m2 = cod m1 ) ) & ( for m2, m1 being Element of Maps V st dom m2 = cod m1 holds h2 . [m2,m1] = m2 * m1 ) implies h1 = h2 ) assume that A12: for m2, m1 being Element of Maps V holds ( [m2,m1] in dom h1 iff dom m2 = cod m1 ) and A13: for m2, m1 being Element of Maps V st dom m2 = cod m1 holds h1 . [m2,m1] = m2 * m1 and A14: for m2, m1 being Element of Maps V holds ( [m2,m1] in dom h2 iff dom m2 = cod m1 ) and A15: for m2, m1 being Element of Maps V st dom m2 = cod m1 holds h2 . [m2,m1] = m2 * m1 ; ::_thesis: h1 = h2 A16: dom h2 c= [:(Maps V),(Maps V):] by RELAT_1:def_18; A17: dom h1 c= [:(Maps V),(Maps V):] by RELAT_1:def_18; A18: dom h1 = dom h2 proof let x, y be set ; :: according to RELAT_1:def_2 ::_thesis: ( ( not [x,y] in dom h1 or [x,y] in dom h2 ) & ( not [x,y] in dom h2 or [x,y] in dom h1 ) ) thus ( [x,y] in dom h1 implies [x,y] in dom h2 ) ::_thesis: ( not [x,y] in dom h2 or [x,y] in dom h1 ) proof assume A19: [x,y] in dom h1 ; ::_thesis: [x,y] in dom h2 then reconsider m2 = x, m1 = y as Element of Maps V by A17, ZFMISC_1:87; dom m2 = cod m1 by A12, A19; hence [x,y] in dom h2 by A14; ::_thesis: verum end; assume A20: [x,y] in dom h2 ; ::_thesis: [x,y] in dom h1 then reconsider m2 = x, m1 = y as Element of Maps V by A16, ZFMISC_1:87; dom m2 = cod m1 by A14, A20; hence [x,y] in dom h1 by A12; ::_thesis: verum end; now__::_thesis:_for_m_being_Element_of_[:(Maps_V),(Maps_V):]_st_m_in_dom_h1_holds_ h1_._m_=_h2_._m let m be Element of [:(Maps V),(Maps V):]; ::_thesis: ( m in dom h1 implies h1 . m = h2 . m ) consider m2, m1 being Element of Maps V such that A21: m = [m2,m1] by DOMAIN_1:1; assume m in dom h1 ; ::_thesis: h1 . m = h2 . m then A22: dom m2 = cod m1 by A12, A21; then h1 . [m2,m1] = m2 * m1 by A13; hence h1 . m = h2 . m by A15, A21, A22; ::_thesis: verum end; hence h1 = h2 by A18, PARTFUN1:5; ::_thesis: verum end; end; :: deftheorem Def9 defines fDom ENS_1:def_9_:_ for V being non empty set for b2 being Function of (Maps V),V holds ( b2 = fDom V iff for m being Element of Maps V holds b2 . m = dom m ); :: deftheorem Def10 defines fCod ENS_1:def_10_:_ for V being non empty set for b2 being Function of (Maps V),V holds ( b2 = fCod V iff for m being Element of Maps V holds b2 . m = cod m ); :: deftheorem Def11 defines fComp ENS_1:def_11_:_ for V being non empty set for b2 being PartFunc of [:(Maps V),(Maps V):],(Maps V) holds ( b2 = fComp V iff ( ( for m2, m1 being Element of Maps V holds ( [m2,m1] in dom b2 iff dom m2 = cod m1 ) ) & ( for m2, m1 being Element of Maps V st dom m2 = cod m1 holds b2 . [m2,m1] = m2 * m1 ) ) ); definition canceled; let V be non empty set ; func Ens V -> non empty non void strict CatStr equals :: ENS_1:def 13 CatStr(# V,(Maps V),(fDom V),(fCod V),(fComp V) #); coherence CatStr(# V,(Maps V),(fDom V),(fCod V),(fComp V) #) is non empty non void strict CatStr ; end; :: deftheorem ENS_1:def_12_:_ canceled; :: deftheorem defines Ens ENS_1:def_13_:_ for V being non empty set holds Ens V = CatStr(# V,(Maps V),(fDom V),(fCod V),(fComp V) #); registration let V be non empty set ; cluster Ens V -> non empty non void strict Category-like transitive associative reflexive with_identities ; coherence ( Ens V is Category-like & Ens V is reflexive & Ens V is transitive & Ens V is associative & Ens V is with_identities ) proof set M = Maps V; set d = fDom V; set c = fCod V; set p = fComp V; reconsider C = CatStr(# V,(Maps V),(fDom V),(fCod V),(fComp V) #) as non empty non void CatStr ; A1: C is Category-like proof let ff, gg be Morphism of C; :: according to CAT_1:def_6 ::_thesis: ( ( not [gg,ff] in proj1 the Comp of C or dom gg = cod ff ) & ( not dom gg = cod ff or [gg,ff] in proj1 the Comp of C ) ) reconsider f = ff, g = gg as Element of Maps V ; ( (fDom V) . g = dom g & (fCod V) . f = cod f ) by Def9, Def10; hence ( ( not [gg,ff] in proj1 the Comp of C or dom gg = cod ff ) & ( not dom gg = cod ff or [gg,ff] in proj1 the Comp of C ) ) by Def11; ::_thesis: verum end; A2: C is transitive proof let ff, gg be Morphism of C; :: according to CAT_1:def_7 ::_thesis: ( not dom gg = cod ff or ( dom (gg (*) ff) = dom ff & cod (gg (*) ff) = cod gg ) ) assume A3: dom gg = cod ff ; ::_thesis: ( dom (gg (*) ff) = dom ff & cod (gg (*) ff) = cod gg ) [gg,ff] in dom the Comp of C by A3, A1, CAT_1:def_6; then A4: the Comp of C . (gg,ff) = gg (*) ff by CAT_1:def_1; reconsider f = ff, g = gg as Element of Maps V ; A5: ( (fDom V) . g = dom g & (fCod V) . f = cod f ) by Def9, Def10; then A6: (fComp V) . [g,f] = g * f by A3, Def11; A7: ( (fDom V) . f = dom f & (fCod V) . g = cod g ) by Def9, Def10; ( dom (g * f) = dom f & cod (g * f) = cod g ) by A3, A5, Th12; hence ( dom (gg (*) ff) = dom ff & cod (gg (*) ff) = cod gg ) by A6, A7, Def9, Def10, A4; ::_thesis: verum end; A8: C is associative proof let ff, gg, hh be Morphism of C; :: according to CAT_1:def_8 ::_thesis: ( not dom hh = cod gg or not dom gg = cod ff or hh (*) (gg (*) ff) = (hh (*) gg) (*) ff ) assume that A9: dom hh = cod gg and A10: dom gg = cod ff ; ::_thesis: hh (*) (gg (*) ff) = (hh (*) gg) (*) ff reconsider f = ff, g = gg, h = hh as Element of Maps V ; A11: ( dom h = (fDom V) . h & cod g = (fCod V) . g ) by Def9, Def10; then A12: dom (h * g) = dom g by A9, Th12; A13: ( dom g = (fDom V) . g & cod f = (fCod V) . f ) by Def9, Def10; then A14: cod (g * f) = dom h by A9, A10, A11, Th12; [hh,gg] in dom the Comp of C by A9, A1, CAT_1:def_6; then A15: hh (*) gg = the Comp of C . (hh,gg) by CAT_1:def_1; dom (hh (*) gg) = dom gg by A2, CAT_1:def_7, A9; then A16: [(hh (*) gg),ff] in dom the Comp of C by A1, CAT_1:def_6, A10; [gg,ff] in dom the Comp of C by A10, A1, CAT_1:def_6; then A17: gg (*) ff = the Comp of C . (gg,ff) by CAT_1:def_1; cod (gg (*) ff) = cod gg by A2, CAT_1:def_7, A10; then [hh,(gg (*) ff)] in dom the Comp of C by A1, CAT_1:def_6, A9; hence hh (*) (gg (*) ff) = the Comp of C . (hh,( the Comp of C . (gg,ff))) by A17, CAT_1:def_1 .= (fComp V) . [h,(g * f)] by A10, A13, Def11 .= h * (g * f) by A14, Def11 .= (h * g) * f by A9, A10, A11, A13, Th13 .= (fComp V) . [(h * g),f] by A10, A13, A12, Def11 .= the Comp of C . (( the Comp of C . (hh,gg)),ff) by A9, A11, Def11 .= (hh (*) gg) (*) ff by A16, A15, CAT_1:def_1 ; ::_thesis: verum end; A18: C is reflexive proof let a be Element of C; :: according to CAT_1:def_9 ::_thesis: not Hom (a,a) = {} reconsider aa = a as Element of V ; reconsider ii = id$ aa as Morphism of C ; A19: cod ii = cod (id$ aa) by Def10 .= a by Th11 ; dom ii = dom (id$ aa) by Def9 .= a by Th11 ; then ii in Hom (a,a) by A19; hence Hom (a,a) <> {} ; ::_thesis: verum end; C is with_identities proof let a be Element of C; :: according to CAT_1:def_10 ::_thesis: ex b1 being Morphism of a,a st for b2 being Element of the carrier of C holds ( ( Hom (a,b2) = {} or for b3 being Morphism of a,b2 holds b3 (*) b1 = b3 ) & ( Hom (b2,a) = {} or for b3 being Morphism of b2,a holds b1 (*) b3 = b3 ) ) reconsider aa = a as Element of V ; reconsider ii = id$ aa as Morphism of C ; A20: cod ii = cod (id$ aa) by Def10 .= a by Th11 ; A21: dom ii = dom (id$ aa) by Def9 .= a by Th11 ; then reconsider ii = ii as Morphism of a,a by A20, CAT_1:4; take ii ; ::_thesis: for b1 being Element of the carrier of C holds ( ( Hom (a,b1) = {} or for b2 being Morphism of a,b1 holds b2 (*) ii = b2 ) & ( Hom (b1,a) = {} or for b2 being Morphism of b1,a holds ii (*) b2 = b2 ) ) let b be Element of C; ::_thesis: ( ( Hom (a,b) = {} or for b1 being Morphism of a,b holds b1 (*) ii = b1 ) & ( Hom (b,a) = {} or for b1 being Morphism of b,a holds ii (*) b1 = b1 ) ) thus ( Hom (a,b) <> {} implies for g being Morphism of a,b holds g (*) ii = g ) ::_thesis: ( Hom (b,a) = {} or for b1 being Morphism of b,a holds ii (*) b1 = b1 ) proof assume A22: Hom (a,b) <> {} ; ::_thesis: for g being Morphism of a,b holds g (*) ii = g let g be Morphism of a,b; ::_thesis: g (*) ii = g reconsider gg = g as Element of Maps V ; A23: dom gg = dom g by Def9 .= aa by A22, CAT_1:5 ; then A24: cod (id$ aa) = dom gg by Th11; dom g = a by A22, CAT_1:5; then [g,ii] in dom (fComp V) by A20, A1, CAT_1:def_6; hence g (*) ii = (fComp V) . (g,ii) by CAT_1:def_1 .= gg * (id$ aa) by A24, Def11 .= g by A23, Th14 ; ::_thesis: verum end; assume A25: Hom (b,a) <> {} ; ::_thesis: for b1 being Morphism of b,a holds ii (*) b1 = b1 let g be Morphism of b,a; ::_thesis: ii (*) g = g reconsider gg = g as Element of Maps V ; A26: cod gg = cod g by Def10 .= aa by A25, CAT_1:5 ; then A27: dom (id$ aa) = cod gg by Th11; cod g = a by A25, CAT_1:5; then [ii,g] in dom (fComp V) by A21, A1, CAT_1:def_6; hence ii (*) g = (fComp V) . (ii,g) by CAT_1:def_1 .= (id$ aa) * gg by A27, Def11 .= g by A26, Th14 ; ::_thesis: verum end; hence ( Ens V is Category-like & Ens V is reflexive & Ens V is transitive & Ens V is associative & Ens V is with_identities ) by A1, A2, A8, A18; ::_thesis: verum end; end; theorem :: ENS_1:21 canceled; theorem :: ENS_1:22 for V being non empty set for A being Element of V holds A is Object of (Ens V) ; definition let V be non empty set ; let A be Element of V; func @ A -> Object of (Ens V) equals :: ENS_1:def 14 A; coherence A is Object of (Ens V) ; end; :: deftheorem defines @ ENS_1:def_14_:_ for V being non empty set for A being Element of V holds @ A = A; theorem :: ENS_1:23 for V being non empty set for a being Object of (Ens V) holds a is Element of V ; definition let V be non empty set ; let a be Object of (Ens V); func @ a -> Element of V equals :: ENS_1:def 15 a; coherence a is Element of V ; end; :: deftheorem defines @ ENS_1:def_15_:_ for V being non empty set for a being Object of (Ens V) holds @ a = a; theorem :: ENS_1:24 for V being non empty set for m being Element of Maps V holds m is Morphism of (Ens V) ; definition let V be non empty set ; let m be Element of Maps V; func @ m -> Morphism of (Ens V) equals :: ENS_1:def 16 m; coherence m is Morphism of (Ens V) ; end; :: deftheorem defines @ ENS_1:def_16_:_ for V being non empty set for m being Element of Maps V holds @ m = m; theorem :: ENS_1:25 for V being non empty set for f being Morphism of (Ens V) holds f is Element of Maps V ; definition let V be non empty set ; let f be Morphism of (Ens V); func @ f -> Element of Maps V equals :: ENS_1:def 17 f; coherence f is Element of Maps V ; end; :: deftheorem defines @ ENS_1:def_17_:_ for V being non empty set for f being Morphism of (Ens V) holds @ f = f; theorem :: ENS_1:26 for V being non empty set for f being Morphism of (Ens V) holds ( dom f = dom (@ f) & cod f = cod (@ f) ) by Def9, Def10; theorem Th27: :: ENS_1:27 for V being non empty set for a, b being Object of (Ens V) holds Hom (a,b) = Maps ((@ a),(@ b)) proof let V be non empty set ; ::_thesis: for a, b being Object of (Ens V) holds Hom (a,b) = Maps ((@ a),(@ b)) let a, b be Object of (Ens V); ::_thesis: Hom (a,b) = Maps ((@ a),(@ b)) now__::_thesis:_for_x_being_set_holds_ (_(_x_in_Hom_(a,b)_implies_x_in_Maps_((@_a),(@_b))_)_&_(_x_in_Maps_((@_a),(@_b))_implies_x_in_Hom_(a,b)_)_) let x be set ; ::_thesis: ( ( x in Hom (a,b) implies x in Maps ((@ a),(@ b)) ) & ( x in Maps ((@ a),(@ b)) implies x in Hom (a,b) ) ) thus ( x in Hom (a,b) implies x in Maps ((@ a),(@ b)) ) ::_thesis: ( x in Maps ((@ a),(@ b)) implies x in Hom (a,b) ) proof assume A1: x in Hom (a,b) ; ::_thesis: x in Maps ((@ a),(@ b)) then reconsider f = x as Morphism of (Ens V) ; cod f = b by A1, CAT_1:1; then A2: cod (@ f) = @ b by Def10; dom f = a by A1, CAT_1:1; then dom (@ f) = @ a by Def9; hence x in Maps ((@ a),(@ b)) by A2, Th19; ::_thesis: verum end; assume A3: x in Maps ((@ a),(@ b)) ; ::_thesis: x in Hom (a,b) Maps ((@ a),(@ b)) c= Maps V by Th17; then reconsider m = x as Element of Maps V by A3; cod m = @ b by A3, Th19; then A4: cod (@ m) = b by Def10; dom m = @ a by A3, Th19; then dom (@ m) = a by Def9; hence x in Hom (a,b) by A4; ::_thesis: verum end; hence Hom (a,b) = Maps ((@ a),(@ b)) by TARSKI:1; ::_thesis: verum end; Lm6: for V being non empty set for a, b being Object of (Ens V) st Hom (a,b) <> {} holds Funcs ((@ a),(@ b)) <> {} proof let V be non empty set ; ::_thesis: for a, b being Object of (Ens V) st Hom (a,b) <> {} holds Funcs ((@ a),(@ b)) <> {} let a, b be Object of (Ens V); ::_thesis: ( Hom (a,b) <> {} implies Funcs ((@ a),(@ b)) <> {} ) set m = the Element of Maps ((@ a),(@ b)); assume Hom (a,b) <> {} ; ::_thesis: Funcs ((@ a),(@ b)) <> {} then A1: Maps ((@ a),(@ b)) <> {} by Th27; reconsider m = the Element of Maps ((@ a),(@ b)) as Element of Maps V by A1, TARSKI:def_3, Th17; m `2 in Funcs ((@ a),(@ b)) by A1, Th20; hence Funcs ((@ a),(@ b)) <> {} ; ::_thesis: verum end; theorem Th28: :: ENS_1:28 for V being non empty set for g, f being Morphism of (Ens V) st dom g = cod f holds g (*) f = (@ g) * (@ f) proof let V be non empty set ; ::_thesis: for g, f being Morphism of (Ens V) st dom g = cod f holds g (*) f = (@ g) * (@ f) let g, f be Morphism of (Ens V); ::_thesis: ( dom g = cod f implies g (*) f = (@ g) * (@ f) ) assume A1: dom g = cod f ; ::_thesis: g (*) f = (@ g) * (@ f) then dom (@ g) = cod f by Def9; then A2: dom (@ g) = cod (@ f) by Def10; thus g (*) f = the Comp of (Ens V) . ((@ g),f) by A1, CAT_1:16 .= (@ g) * (@ f) by A2, Def11 ; ::_thesis: verum end; theorem Th29: :: ENS_1:29 for V being non empty set for a being Object of (Ens V) holds id a = id$ (@ a) proof let V be non empty set ; ::_thesis: for a being Object of (Ens V) holds id a = id$ (@ a) let a be Object of (Ens V); ::_thesis: id a = id$ (@ a) reconsider aa = a as Element of V ; reconsider ii = id$ aa as Morphism of (Ens V) ; A1: cod ii = cod (id$ aa) by Def10 .= a by Th11 ; A2: dom ii = dom (id$ aa) by Def9 .= a by Th11 ; then reconsider ii = ii as Morphism of a,a by A1, CAT_1:4; for b being Object of (Ens V) holds ( ( Hom (a,b) <> {} implies for f being Morphism of a,b holds f (*) ii = f ) & ( Hom (b,a) <> {} implies for f being Morphism of b,a holds ii (*) f = f ) ) proof let b be Element of (Ens V); ::_thesis: ( ( Hom (a,b) <> {} implies for f being Morphism of a,b holds f (*) ii = f ) & ( Hom (b,a) <> {} implies for f being Morphism of b,a holds ii (*) f = f ) ) set p = the Comp of (Ens V); thus ( Hom (a,b) <> {} implies for g being Morphism of a,b holds g (*) ii = g ) ::_thesis: ( Hom (b,a) <> {} implies for f being Morphism of b,a holds ii (*) f = f ) proof assume A3: Hom (a,b) <> {} ; ::_thesis: for g being Morphism of a,b holds g (*) ii = g let g be Morphism of a,b; ::_thesis: g (*) ii = g reconsider gg = g as Element of Maps V ; A4: dom gg = dom g by Def9 .= aa by A3, CAT_1:5 ; then A5: cod (id$ aa) = dom gg by Th11; dom g = a by A3, CAT_1:5; then [g,ii] in dom the Comp of (Ens V) by A1, CAT_1:def_6; hence g (*) ii = the Comp of (Ens V) . (g,ii) by CAT_1:def_1 .= gg * (id$ aa) by A5, Def11 .= g by A4, Th14 ; ::_thesis: verum end; assume A6: Hom (b,a) <> {} ; ::_thesis: for f being Morphism of b,a holds ii (*) f = f let g be Morphism of b,a; ::_thesis: ii (*) g = g reconsider gg = g as Element of Maps V ; A7: cod gg = cod g by Def10 .= aa by A6, CAT_1:5 ; then A8: dom (id$ aa) = cod gg by Th11; cod g = a by A6, CAT_1:5; then [ii,g] in dom the Comp of (Ens V) by A2, CAT_1:def_6; hence ii (*) g = the Comp of (Ens V) . (ii,g) by CAT_1:def_1 .= (id$ aa) * gg by A8, Def11 .= g by A7, Th14 ; ::_thesis: verum end; hence id a = id$ (@ a) by CAT_1:def_12; ::_thesis: verum end; theorem :: ENS_1:30 for V being non empty set for a being Object of (Ens V) st a = {} holds a is initial proof let V be non empty set ; ::_thesis: for a being Object of (Ens V) st a = {} holds a is initial let a be Object of (Ens V); ::_thesis: ( a = {} implies a is initial ) assume A1: a = {} ; ::_thesis: a is initial let b be Object of (Ens V); :: according to CAT_1:def_19 ::_thesis: ( not Hom (a,b) = {} & ex b1 being Morphism of a,b st for b2 being Morphism of a,b holds b1 = b2 ) Maps ((@ a),(@ b)) <> {} by A1, Th15; hence A2: Hom (a,b) <> {} by Th27; ::_thesis: ex b1 being Morphism of a,b st for b2 being Morphism of a,b holds b1 = b2 set m = [[(@ a),(@ b)],{}]; {} is Function of (@ a),(@ b) by A1, RELSET_1:12; then [[(@ a),(@ b)],{}] in Maps ((@ a),(@ b)) by A1, Th15; then [[(@ a),(@ b)],{}] in Hom (a,b) by Th27; then reconsider f = [[(@ a),(@ b)],{}] as Morphism of a,b by CAT_1:def_5; take f ; ::_thesis: for b1 being Morphism of a,b holds f = b1 let g be Morphism of a,b; ::_thesis: f = g reconsider m9 = g as Element of Maps V ; g in Hom (a,b) by A2, CAT_1:def_5; then A3: g in Maps ((@ a),(@ b)) by Th27; then A4: m9 = [[(@ a),(@ b)],(m9 `2)] by Th16; then m9 `2 is Function of (@ a),(@ b) by A3, Lm4; hence f = g by A1, A4; ::_thesis: verum end; theorem Th31: :: ENS_1:31 for V being non empty set for a being Object of (Ens V) st {} in V & a is initial holds a = {} proof let V be non empty set ; ::_thesis: for a being Object of (Ens V) st {} in V & a is initial holds a = {} let a be Object of (Ens V); ::_thesis: ( {} in V & a is initial implies a = {} ) assume {} in V ; ::_thesis: ( not a is initial or a = {} ) then reconsider B = {} as Element of V ; set b = @ B; assume a is initial ; ::_thesis: a = {} then Hom (a,(@ B)) <> {} by CAT_1:def_19; then Funcs ((@ a),(@ (@ B))) <> {} by Lm6; hence a = {} ; ::_thesis: verum end; theorem :: ENS_1:32 for W being Universe for a being Object of (Ens W) st a is initial holds a = {} by Th31, CLASSES2:56; theorem :: ENS_1:33 for V being non empty set for a being Object of (Ens V) st ex x being set st a = {x} holds a is terminal proof let V be non empty set ; ::_thesis: for a being Object of (Ens V) st ex x being set st a = {x} holds a is terminal let a be Object of (Ens V); ::_thesis: ( ex x being set st a = {x} implies a is terminal ) given x being set such that A1: a = {x} ; ::_thesis: a is terminal let b be Object of (Ens V); :: according to CAT_1:def_18 ::_thesis: ( not Hom (b,a) = {} & ex b1 being Morphism of b,a st for b2 being Morphism of b,a holds b1 = b2 ) set h = the Function of (@ b),(@ a); set m = [[(@ b),(@ a)], the Function of (@ b),(@ a)]; A2: [[(@ b),(@ a)], the Function of (@ b),(@ a)] in Maps ((@ b),(@ a)) by A1, Th15; hence A3: Hom (b,a) <> {} by Th27; ::_thesis: ex b1 being Morphism of b,a st for b2 being Morphism of b,a holds b1 = b2 [[(@ b),(@ a)], the Function of (@ b),(@ a)] in Hom (b,a) by A2, Th27; then reconsider f = [[(@ b),(@ a)], the Function of (@ b),(@ a)] as Morphism of b,a by CAT_1:def_5; take f ; ::_thesis: for b1 being Morphism of b,a holds f = b1 let g be Morphism of b,a; ::_thesis: f = g reconsider m9 = g as Element of Maps V ; g in Hom (b,a) by A3, CAT_1:def_5; then A4: g in Maps ((@ b),(@ a)) by Th27; then A5: m9 = [[(@ b),(@ a)],(m9 `2)] by Th16; then m9 `2 is Function of (@ b),(@ a) by A4, Lm4; hence f = g by A1, A5, FUNCT_2:51; ::_thesis: verum end; theorem Th34: :: ENS_1:34 for V being non empty set for a being Object of (Ens V) st V <> {{}} & a is terminal holds ex x being set st a = {x} proof let V be non empty set ; ::_thesis: for a being Object of (Ens V) st V <> {{}} & a is terminal holds ex x being set st a = {x} let a be Object of (Ens V); ::_thesis: ( V <> {{}} & a is terminal implies ex x being set st a = {x} ) assume that A1: V <> {{}} and A2: a is terminal ; ::_thesis: ex x being set st a = {x} set x = the Element of @ a; A3: now__::_thesis:_not_@_a_=_{} assume A4: @ a = {} ; ::_thesis: contradiction now__::_thesis:_contradiction consider C being set such that A5: C in V and A6: C <> {} by A1, ZFMISC_1:35; reconsider C = C as Element of V by A5; set b = @ C; Hom ((@ C),a) <> {} by A2, CAT_1:def_18; then Funcs ((@ (@ C)),(@ a)) <> {} by Lm6; hence contradiction by A4, A6; ::_thesis: verum end; hence contradiction ; ::_thesis: verum end; now__::_thesis:_not_a_<>_{_the_Element_of_@_a} assume a <> { the Element of @ a} ; ::_thesis: contradiction then consider y being set such that A7: y in @ a and A8: y <> the Element of @ a by A3, ZFMISC_1:35; reconsider fy = (@ a) --> y as Function of (@ a),(@ a) by A7, FUNCOP_1:45; reconsider fx = (@ a) --> the Element of @ a as Function of (@ a),(@ a) by A7, FUNCOP_1:45; fx . y = the Element of @ a by A7, FUNCOP_1:7; then A9: fx <> fy by A7, A8, FUNCOP_1:7; A10: [[(@ a),(@ a)],fx] in Maps ((@ a),(@ a)) by Th15; A11: [[(@ a),(@ a)],fy] in Maps ((@ a),(@ a)) by Th15; Maps ((@ a),(@ a)) c= Maps V by Th17; then reconsider m1 = [[(@ a),(@ a)],fx], m2 = [[(@ a),(@ a)],fy] as Element of Maps V by A10, A11; A12: m2 in Hom (a,a) by A11, Th27; m1 in Hom (a,a) by A10, Th27; then reconsider f = @ m1, g = @ m2 as Morphism of a,a by A12, CAT_1:def_5; consider h being Morphism of a,a such that A13: for h9 being Morphism of a,a holds h = h9 by A2, CAT_1:def_18; f = h by A13 .= g by A13 ; hence contradiction by A9, XTUPLE_0:1; ::_thesis: verum end; hence ex x being set st a = {x} ; ::_thesis: verum end; theorem :: ENS_1:35 for W being Universe for a being Object of (Ens W) st a is terminal holds ex x being set st a = {x} proof let W be Universe; ::_thesis: for a being Object of (Ens W) st a is terminal holds ex x being set st a = {x} let a be Object of (Ens W); ::_thesis: ( a is terminal implies ex x being set st a = {x} ) now__::_thesis:_not_W_=_{{}} A1: {{}} in W by CLASSES2:56, CLASSES2:57; assume W = {{}} ; ::_thesis: contradiction hence contradiction by A1; ::_thesis: verum end; hence ( a is terminal implies ex x being set st a = {x} ) by Th34; ::_thesis: verum end; theorem :: ENS_1:36 for V being non empty set for a, b being Object of (Ens V) for f being Morphism of a,b st Hom (a,b) <> {} holds ( f is monic iff (@ f) `2 is one-to-one ) proof let V be non empty set ; ::_thesis: for a, b being Object of (Ens V) for f being Morphism of a,b st Hom (a,b) <> {} holds ( f is monic iff (@ f) `2 is one-to-one ) let a, b be Object of (Ens V); ::_thesis: for f being Morphism of a,b st Hom (a,b) <> {} holds ( f is monic iff (@ f) `2 is one-to-one ) let f be Morphism of a,b; ::_thesis: ( Hom (a,b) <> {} implies ( f is monic iff (@ f) `2 is one-to-one ) ) assume A1: Hom (a,b) <> {} ; ::_thesis: ( f is monic iff (@ f) `2 is one-to-one ) set m = @ f; A2: dom (@ f) = dom f by Def9; then A3: dom ((@ f) `2) = dom f by Lm3; thus ( f is monic implies (@ f) `2 is one-to-one ) ::_thesis: ( (@ f) `2 is one-to-one implies f is monic ) proof set A = dom ((@ f) `2); assume A4: f is monic ; ::_thesis: (@ f) `2 is one-to-one let x1, x2 be set ; :: according to FUNCT_1:def_4 ::_thesis: ( not x1 in proj1 ((@ f) `2) or not x2 in proj1 ((@ f) `2) or not ((@ f) `2) . x1 = ((@ f) `2) . x2 or x1 = x2 ) assume that A5: x1 in dom ((@ f) `2) and A6: x2 in dom ((@ f) `2) and A7: ((@ f) `2) . x1 = ((@ f) `2) . x2 ; ::_thesis: x1 = x2 A8: dom ((@ f) `2) = dom (@ f) by Lm3; then reconsider A = dom ((@ f) `2) as Element of V ; A9: dom f = A by A8, Def9; reconsider fx1 = A --> x1, fx2 = A --> x2 as Function of A,A by A5, A6, FUNCOP_1:45; reconsider m1 = [[A,A],fx1], m2 = [[A,A],fx2] as Element of Maps V by Th5; set f1 = @ m1; set f2 = @ m2; set h1 = ((@ f) `2) * ((@ (@ m1)) `2); set h2 = ((@ f) `2) * ((@ (@ m2)) `2); set ff1 = (@ f) * (@ (@ m1)); set ff2 = (@ f) * (@ (@ m2)); A10: m2 = [[(dom m2),(cod m2)],(m2 `2)] by Th8; then A11: dom m2 = A by Lm1; A12: cod m2 = A by A10, Lm1; then A13: ( ((@ f) * (@ (@ m2))) `2 = ((@ f) `2) * ((@ (@ m2)) `2) & dom ((@ f) * (@ (@ m2))) = dom (@ (@ m2)) ) by A8, Th12; cod ((@ f) * (@ (@ m2))) = cod (@ f) by A8, A12, Th12; then A14: (@ f) * (@ (@ m2)) = [[(dom (@ (@ m2))),(cod (@ f))],(((@ f) `2) * ((@ (@ m2)) `2))] by A13, Th8; dom (@ (@ m2)) = A by A10, Lm1; then A15: dom (@ m2) = A by Def9; cod (@ (@ m2)) = A by A10, Lm1; then A16: cod (@ m2) = A by Def10; then A17: f (*) (@ m2) = (@ f) * (@ (@ m2)) by A9, Th28; A18: m1 = [[(dom m1),(cod m1)],(m1 `2)] by Th8; then A19: cod m1 = A by Lm1; then A20: ( ((@ f) * (@ (@ m1))) `2 = ((@ f) `2) * ((@ (@ m1)) `2) & dom ((@ f) * (@ (@ m1))) = dom (@ (@ m1)) ) by A8, Th12; A21: dom m1 = A by A18, Lm1; now__::_thesis:_(_dom_(((@_f)_`2)_*_((@_(@_m1))_`2))_=_A_&_dom_(((@_f)_`2)_*_((@_(@_m2))_`2))_=_A_&_(_for_x_being_set_st_x_in_A_holds_ (((@_f)_`2)_*_((@_(@_m1))_`2))_._x_=_(((@_f)_`2)_*_((@_(@_m2))_`2))_._x_)_) thus A22: ( dom (((@ f) `2) * ((@ (@ m1)) `2)) = A & dom (((@ f) `2) * ((@ (@ m2)) `2)) = A ) by A21, A11, A20, A13, Lm3; ::_thesis: for x being set st x in A holds (((@ f) `2) * ((@ (@ m1)) `2)) . x = (((@ f) `2) * ((@ (@ m2)) `2)) . x let x be set ; ::_thesis: ( x in A implies (((@ f) `2) * ((@ (@ m1)) `2)) . x = (((@ f) `2) * ((@ (@ m2)) `2)) . x ) assume A23: x in A ; ::_thesis: (((@ f) `2) * ((@ (@ m1)) `2)) . x = (((@ f) `2) * ((@ (@ m2)) `2)) . x fx1 = m1 `2 by A18, XTUPLE_0:1; then ((@ (@ m1)) `2) . x = x1 by A23, FUNCOP_1:7; then A24: (((@ f) `2) * ((@ (@ m1)) `2)) . x = ((@ f) `2) . x1 by A22, A23, FUNCT_1:12; fx2 = m2 `2 by A10, XTUPLE_0:1; then ((@ (@ m2)) `2) . x = x2 by A23, FUNCOP_1:7; hence (((@ f) `2) * ((@ (@ m1)) `2)) . x = (((@ f) `2) * ((@ (@ m2)) `2)) . x by A7, A22, A23, A24, FUNCT_1:12; ::_thesis: verum end; then A25: ((@ f) `2) * ((@ (@ m1)) `2) = ((@ f) `2) * ((@ (@ m2)) `2) by FUNCT_1:2; cod ((@ f) * (@ (@ m1))) = cod (@ f) by A8, A19, Th12; then A26: (@ f) * (@ (@ m1)) = [[(dom (@ (@ m1))),(cod (@ f))],(((@ f) `2) * ((@ (@ m1)) `2))] by A20, Th8; dom (@ (@ m1)) = A by A18, Lm1; then A27: dom (@ m1) = A by Def9; cod (@ (@ m1)) = A by A18, Lm1; then A28: cod (@ m1) = A by Def10; reconsider A = A as Object of (Ens V) ; A29: dom f = a by A1, CAT_1:5; then A30: ( @ m1 in Hom (A,a) & @ m2 in Hom (A,a) ) by A27, A9, A28, A15, A16; then reconsider f1 = @ m1, f2 = @ m2 as Morphism of A,a by CAT_1:def_5; A31: f * f1 = f (*) f1 by A1, A30, CAT_1:def_13 .= f (*) f2 by A21, A11, A26, A14, A25, A17, A28, A9, Th28 .= f * f2 by A1, A30, CAT_1:def_13 ; Hom (A,a) <> {} by A29, A9; then f1 = f2 by A4, A31, CAT_1:def_14; then fx1 = fx2 by XTUPLE_0:1; hence x1 = fx2 . x1 by A5, FUNCOP_1:7 .= x2 by A5, FUNCOP_1:7 ; ::_thesis: verum end; assume A32: (@ f) `2 is one-to-one ; ::_thesis: f is monic thus Hom (a,b) <> {} by A1; :: according to CAT_1:def_14 ::_thesis: for b1 being Element of the carrier of (Ens V) holds ( Hom (b1,a) = {} or for b2, b3 being Morphism of b1,a holds ( not f * b2 = f * b3 or b2 = b3 ) ) let c be Object of (Ens V); ::_thesis: ( Hom (c,a) = {} or for b1, b2 being Morphism of c,a holds ( not f * b1 = f * b2 or b1 = b2 ) ) assume A33: Hom (c,a) <> {} ; ::_thesis: for b1, b2 being Morphism of c,a holds ( not f * b1 = f * b2 or b1 = b2 ) let f1, f2 be Morphism of c,a; ::_thesis: ( not f * f1 = f * f2 or f1 = f2 ) A34: dom f1 = c by A33, CAT_1:5 .= dom f2 by A33, CAT_1:5 ; A35: cod f1 = a by A33, CAT_1:5 .= dom f by A1, CAT_1:5 ; A36: cod f2 = a by A33, CAT_1:5 .= dom f by A1, CAT_1:5 ; assume A37: f * f1 = f * f2 ; ::_thesis: f1 = f2 set m1 = @ f1; set m2 = @ f2; A38: (@ f) * (@ f1) = f (*) f1 by A35, Th28 .= f * f1 by A33, A1, CAT_1:def_13 ; A39: (@ f) * (@ f2) = f (*) f2 by A36, Th28 .= f * f2 by A33, A1, CAT_1:def_13 ; A40: @ f1 = [[(dom (@ f1)),(cod (@ f1))],((@ f1) `2)] by Th8; A41: dom (@ f2) = dom f2 by Def9; then A42: dom ((@ f2) `2) = dom f2 by Lm3; A43: cod (@ f1) = cod f1 by Def10; then A44: rng ((@ f1) `2) c= cod f1 by Lm3; A45: cod (@ f2) = cod f2 by Def10; then A46: rng ((@ f2) `2) c= cod f2 by Lm3; A47: (@ f) * (@ f2) = [[(dom (@ f2)),(cod (@ f))],(((@ f) `2) * ((@ f2) `2))] by A36, A45, A2, Def6; (@ f) * (@ f1) = [[(dom (@ f1)),(cod (@ f))],(((@ f) `2) * ((@ f1) `2))] by A35, A43, A2, Def6; then A48: ((@ f) `2) * ((@ f1) `2) = ((@ f) `2) * ((@ f2) `2) by A39, A37, A38, A47, XTUPLE_0:1; A49: dom (@ f1) = dom f1 by Def9; then dom ((@ f1) `2) = dom f1 by Lm3; then (@ f1) `2 = (@ f2) `2 by A32, A34, A35, A36, A42, A3, A44, A46, A48, FUNCT_1:27; hence f1 = f2 by A34, A35, A36, A49, A41, A43, A45, A40, Th8; ::_thesis: verum end; theorem Th37: :: ENS_1:37 for V being non empty set for a, b being Object of (Ens V) for f being Morphism of a,b st Hom (a,b) <> {} & f is epi & ex A being Element of V ex x1, x2 being set st ( x1 in A & x2 in A & x1 <> x2 ) holds @ f is surjective proof let V be non empty set ; ::_thesis: for a, b being Object of (Ens V) for f being Morphism of a,b st Hom (a,b) <> {} & f is epi & ex A being Element of V ex x1, x2 being set st ( x1 in A & x2 in A & x1 <> x2 ) holds @ f is surjective let a, b be Object of (Ens V); ::_thesis: for f being Morphism of a,b st Hom (a,b) <> {} & f is epi & ex A being Element of V ex x1, x2 being set st ( x1 in A & x2 in A & x1 <> x2 ) holds @ f is surjective let f be Morphism of a,b; ::_thesis: ( Hom (a,b) <> {} & f is epi & ex A being Element of V ex x1, x2 being set st ( x1 in A & x2 in A & x1 <> x2 ) implies @ f is surjective ) assume A1: Hom (a,b) <> {} ; ::_thesis: ( not f is epi or for A being Element of V for x1, x2 being set holds ( not x1 in A or not x2 in A or not x1 <> x2 ) or @ f is surjective ) assume A2: f is epi ; ::_thesis: ( for A being Element of V for x1, x2 being set holds ( not x1 in A or not x2 in A or not x1 <> x2 ) or @ f is surjective ) given B being Element of V, x1, x2 being set such that A3: x1 in B and A4: x2 in B and A5: x1 <> x2 ; ::_thesis: @ f is surjective A6: cod (@ f) c= rng ((@ f) `2) proof set A = cod (@ f); reconsider g1 = (cod (@ f)) --> x1 as Function of (cod (@ f)),B by A3, FUNCOP_1:45; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in cod (@ f) or x in rng ((@ f) `2) ) assume that A7: x in cod (@ f) and A8: not x in rng ((@ f) `2) ; ::_thesis: contradiction set h = {x} --> x2; set g2 = g1 +* ({x} --> x2); A9: dom ({x} --> x2) = {x} by FUNCOP_1:13; A10: rng ({x} --> x2) = {x2} by FUNCOP_1:8; rng g1 = {x1} by A7, FUNCOP_1:8; then rng (g1 +* ({x} --> x2)) c= {x1} \/ {x2} by A10, FUNCT_4:17; then A11: rng (g1 +* ({x} --> x2)) c= {x1,x2} by ENUMSET1:1; {x1,x2} c= B by A3, A4, ZFMISC_1:32; then A12: rng (g1 +* ({x} --> x2)) c= B by A11, XBOOLE_1:1; dom g1 = cod (@ f) by FUNCOP_1:13; then dom (g1 +* ({x} --> x2)) = (cod (@ f)) \/ {x} by A9, FUNCT_4:def_1 .= cod (@ f) by A7, ZFMISC_1:40 ; then reconsider g2 = g1 +* ({x} --> x2) as Function of (cod (@ f)),B by A3, A12, FUNCT_2:def_1, RELSET_1:4; A13: cod f = cod (@ f) by Def10; A14: x in {x} by TARSKI:def_1; then ({x} --> x2) . x = x2 by FUNCOP_1:7; then A15: g2 . x = x2 by A14, A9, FUNCT_4:13; A16: g1 . x = x1 by A7, FUNCOP_1:7; reconsider m1 = [[(cod (@ f)),B],g1], m2 = [[(cod (@ f)),B],g2] as Element of Maps V by A3, Th5; set f1 = @ m1; set f2 = @ m2; set h1 = ((@ (@ m1)) `2) * ((@ f) `2); set h2 = ((@ (@ m2)) `2) * ((@ f) `2); set f1f = (@ (@ m1)) * (@ f); set f2f = (@ (@ m2)) * (@ f); A17: m1 = [[(dom m1),(cod m1)],(m1 `2)] by Th8; then A18: g1 = m1 `2 by XTUPLE_0:1; A19: dom m1 = cod (@ f) by A17, Lm1; then A20: ( ((@ (@ m1)) * (@ f)) `2 = ((@ (@ m1)) `2) * ((@ f) `2) & dom ((@ (@ m1)) * (@ f)) = dom (@ f) ) by Th12; A21: m2 = [[(dom m2),(cod m2)],(m2 `2)] by Th8; then A22: dom m2 = cod (@ f) by Lm1; then A23: ( ((@ (@ m2)) * (@ f)) `2 = ((@ (@ m2)) `2) * ((@ f) `2) & dom ((@ (@ m2)) * (@ f)) = dom (@ f) ) by Th12; cod (@ (@ m2)) = B by A21, Lm1; then A24: cod (@ m2) = B by Def10; dom (@ (@ m2)) = cod (@ f) by A21, Lm1; then A25: dom (@ m2) = cod (@ f) by Def9; then A26: (@ m2) (*) f = (@ (@ m2)) * (@ f) by A13, Th28; A27: g2 = m2 `2 by A21, XTUPLE_0:1; now__::_thesis:_(_dom_(((@_(@_m1))_`2)_*_((@_f)_`2))_=_dom_(@_f)_&_dom_(((@_(@_m2))_`2)_*_((@_f)_`2))_=_dom_(@_f)_&_(_for_z_being_set_st_z_in_dom_(@_f)_holds_ (((@_(@_m1))_`2)_*_((@_f)_`2))_._z_=_(((@_(@_m2))_`2)_*_((@_f)_`2))_._z_)_) thus A28: ( dom (((@ (@ m1)) `2) * ((@ f) `2)) = dom (@ f) & dom (((@ (@ m2)) `2) * ((@ f) `2)) = dom (@ f) ) by A20, A23, Lm3; ::_thesis: for z being set st z in dom (@ f) holds (((@ (@ m1)) `2) * ((@ f) `2)) . z = (((@ (@ m2)) `2) * ((@ f) `2)) . z let z be set ; ::_thesis: ( z in dom (@ f) implies (((@ (@ m1)) `2) * ((@ f) `2)) . z = (((@ (@ m2)) `2) * ((@ f) `2)) . z ) set y = ((@ f) `2) . z; assume A29: z in dom (@ f) ; ::_thesis: (((@ (@ m1)) `2) * ((@ f) `2)) . z = (((@ (@ m2)) `2) * ((@ f) `2)) . z then z in dom ((@ f) `2) by Lm3; then ((@ f) `2) . z in rng ((@ f) `2) by FUNCT_1:def_3; then A30: not ((@ f) `2) . z in {x} by A8, TARSKI:def_1; ( (((@ (@ m1)) `2) * ((@ f) `2)) . z = g1 . (((@ f) `2) . z) & (((@ (@ m2)) `2) * ((@ f) `2)) . z = g2 . (((@ f) `2) . z) ) by A18, A27, A28, A29, FUNCT_1:12; hence (((@ (@ m1)) `2) * ((@ f) `2)) . z = (((@ (@ m2)) `2) * ((@ f) `2)) . z by A9, A30, FUNCT_4:11; ::_thesis: verum end; then A31: ((@ (@ m1)) `2) * ((@ f) `2) = ((@ (@ m2)) `2) * ((@ f) `2) by FUNCT_1:2; cod ((@ (@ m1)) * (@ f)) = cod (@ (@ m1)) by A19, Th12; then A32: (@ (@ m1)) * (@ f) = [[(dom (@ f)),(cod (@ (@ m1)))],(((@ (@ m1)) `2) * ((@ f) `2))] by A20, Th8; cod ((@ (@ m2)) * (@ f)) = cod (@ (@ m2)) by A22, Th12; then A33: (@ (@ m2)) * (@ f) = [[(dom (@ f)),(cod (@ (@ m2)))],(((@ (@ m2)) `2) * ((@ f) `2))] by A23, Th8; cod m1 = B by A17, Lm1; then A34: (@ (@ m1)) * (@ f) = (@ (@ m2)) * (@ f) by A21, A32, A33, A31, Lm1; cod (@ (@ m1)) = B by A17, Lm1; then A35: cod (@ m1) = B by Def10; dom (@ (@ m1)) = cod (@ f) by A17, Lm1; then A36: dom (@ m1) = cod (@ f) by Def9; reconsider B = B as Object of (Ens V) ; A37: cod f = b by A1, CAT_1:5; then A38: @ m1 in Hom (b,B) by A13, A35, A36; then reconsider f1 = @ m1 as Morphism of b,B by CAT_1:def_5; @ m2 in Hom (b,B) by A13, A24, A25, A37; then reconsider f2 = @ m2 as Morphism of b,B by CAT_1:def_5; f1 * f = f1 (*) f by A1, A38, CAT_1:def_13 .= f2 (*) f by A34, A26, A36, A13, Th28 .= f2 * f by A1, A38, CAT_1:def_13 ; then f1 = f2 by A2, A38, CAT_1:def_15; hence contradiction by A5, A16, A15, XTUPLE_0:1; ::_thesis: verum end; rng ((@ f) `2) c= cod (@ f) by Lm3; hence rng ((@ f) `2) = cod (@ f) by A6, XBOOLE_0:def_10; :: according to ENS_1:def_8 ::_thesis: verum end; theorem :: ENS_1:38 for V being non empty set for a, b being Object of (Ens V) st Hom (a,b) <> {} holds for f being Morphism of a,b st @ f is surjective holds f is epi proof let V be non empty set ; ::_thesis: for a, b being Object of (Ens V) st Hom (a,b) <> {} holds for f being Morphism of a,b st @ f is surjective holds f is epi let a, b be Object of (Ens V); ::_thesis: ( Hom (a,b) <> {} implies for f being Morphism of a,b st @ f is surjective holds f is epi ) assume A1: Hom (a,b) <> {} ; ::_thesis: for f being Morphism of a,b st @ f is surjective holds f is epi let f be Morphism of a,b; ::_thesis: ( @ f is surjective implies f is epi ) set m = @ f; assume A2: rng ((@ f) `2) = cod (@ f) ; :: according to ENS_1:def_8 ::_thesis: f is epi thus Hom (a,b) <> {} by A1; :: according to CAT_1:def_15 ::_thesis: for b1 being Element of the carrier of (Ens V) holds ( Hom (b,b1) = {} or for b2, b3 being Morphism of b,b1 holds ( not b2 * f = b3 * f or b2 = b3 ) ) let c be Object of (Ens V); ::_thesis: ( Hom (b,c) = {} or for b1, b2 being Morphism of b,c holds ( not b1 * f = b2 * f or b1 = b2 ) ) assume A3: Hom (b,c) <> {} ; ::_thesis: for b1, b2 being Morphism of b,c holds ( not b1 * f = b2 * f or b1 = b2 ) let f1, f2 be Morphism of b,c; ::_thesis: ( not f1 * f = f2 * f or f1 = f2 ) A4: dom f1 = b by A3, CAT_1:5 .= cod f by A1, CAT_1:5 ; A5: dom f2 = b by A3, CAT_1:5 .= cod f by A1, CAT_1:5 ; A6: cod f1 = c by A3, CAT_1:5 .= cod f2 by A3, CAT_1:5 ; assume A7: f1 * f = f2 * f ; ::_thesis: f1 = f2 set m1 = @ f1; set m2 = @ f2; A8: (@ f1) * (@ f) = f1 (*) f by A4, Th28 .= f1 * f by A1, A3, CAT_1:def_13 ; A9: (@ f2) * (@ f) = f2 (*) f by A5, Th28 .= f2 * f by A1, A3, CAT_1:def_13 ; A10: @ f1 = [[(dom (@ f1)),(cod (@ f1))],((@ f1) `2)] by Th8; A11: ( cod (@ f1) = cod f1 & cod (@ f2) = cod f2 ) by Def10; A12: dom (@ f2) = dom f2 by Def9; then A13: dom ((@ f2) `2) = dom f2 by Lm3; A14: cod (@ f) = cod f by Def10; then A15: (@ f2) * (@ f) = [[(dom (@ f)),(cod (@ f2))],(((@ f2) `2) * ((@ f) `2))] by A5, A12, Def6; A16: dom (@ f1) = dom f1 by Def9; then (@ f1) * (@ f) = [[(dom (@ f)),(cod (@ f1))],(((@ f1) `2) * ((@ f) `2))] by A4, A14, Def6; then A17: ((@ f1) `2) * ((@ f) `2) = ((@ f2) `2) * ((@ f) `2) by A7, A8, A15, A9, XTUPLE_0:1; dom ((@ f1) `2) = dom f1 by A16, Lm3; then (@ f1) `2 = (@ f2) `2 by A2, A4, A5, A14, A17, A13, FUNCT_1:86; hence f1 = f2 by A4, A5, A6, A16, A12, A11, A10, Th8; ::_thesis: verum end; theorem :: ENS_1:39 for W being Universe for a, b being Object of (Ens W) st Hom (a,b) <> {} holds for f being Morphism of a,b st f is epi holds @ f is surjective proof let W be Universe; ::_thesis: for a, b being Object of (Ens W) st Hom (a,b) <> {} holds for f being Morphism of a,b st f is epi holds @ f is surjective let a, b be Object of (Ens W); ::_thesis: ( Hom (a,b) <> {} implies for f being Morphism of a,b st f is epi holds @ f is surjective ) assume A1: Hom (a,b) <> {} ; ::_thesis: for f being Morphism of a,b st f is epi holds @ f is surjective let f be Morphism of a,b; ::_thesis: ( f is epi implies @ f is surjective ) ( {} in W & {{}} in W ) by CLASSES2:56, CLASSES2:57; then A2: {{},{{}}} in W by CLASSES2:58; ( {} in {{},{{}}} & {{}} in {{},{{}}} ) by TARSKI:def_2; hence ( f is epi implies @ f is surjective ) by A2, Th37, A1; ::_thesis: verum end; Lm7: for V being non empty set for W being non empty Subset of V holds Ens W is Subcategory of Ens V proof let V be non empty set ; ::_thesis: for W being non empty Subset of V holds Ens W is Subcategory of Ens V let W be non empty Subset of V; ::_thesis: Ens W is Subcategory of Ens V A1: for a, b being Object of (Ens W) for a9, b9 being Object of (Ens V) st a = a9 & b = b9 holds Hom (a,b) = Hom (a9,b9) proof let a, b be Object of (Ens W); ::_thesis: for a9, b9 being Object of (Ens V) st a = a9 & b = b9 holds Hom (a,b) = Hom (a9,b9) let a9, b9 be Object of (Ens V); ::_thesis: ( a = a9 & b = b9 implies Hom (a,b) = Hom (a9,b9) ) assume A2: ( a = a9 & b = b9 ) ; ::_thesis: Hom (a,b) = Hom (a9,b9) ( Hom (a,b) = Maps ((@ a),(@ b)) & Hom (a9,b9) = Maps ((@ a9),(@ b9)) ) by Th27; hence Hom (a,b) = Hom (a9,b9) by A2, Lm5; ::_thesis: verum end; set w = the Comp of (Ens W); set v = the Comp of (Ens V); thus the carrier of (Ens W) c= the carrier of (Ens V) ; :: according to CAT_2:def_4 ::_thesis: ( ( for b1, b2 being Element of the carrier of (Ens W) for b3, b4 being Element of the carrier of (Ens V) holds ( not b1 = b3 or not b2 = b4 or Hom (b1,b2) c= Hom (b3,b4) ) ) & the Comp of (Ens W) c= the Comp of (Ens V) & ( for b1 being Element of the carrier of (Ens W) for b2 being Element of the carrier of (Ens V) holds ( not b1 = b2 or id b1 = id b2 ) ) ) thus for a, b being Object of (Ens W) for a9, b9 being Object of (Ens V) st a = a9 & b = b9 holds Hom (a,b) c= Hom (a9,b9) by A1; ::_thesis: ( the Comp of (Ens W) c= the Comp of (Ens V) & ( for b1 being Element of the carrier of (Ens W) for b2 being Element of the carrier of (Ens V) holds ( not b1 = b2 or id b1 = id b2 ) ) ) now__::_thesis:_(_dom_the_Comp_of_(Ens_W)_c=_dom_the_Comp_of_(Ens_V)_&_(_for_x_being_set_st_x_in_dom_the_Comp_of_(Ens_W)_holds_ the_Comp_of_(Ens_W)_._x_=_the_Comp_of_(Ens_V)_._x_)_) A3: dom the Comp of (Ens W) c= [:(Maps W),(Maps W):] by RELAT_1:def_18; thus A4: dom the Comp of (Ens W) c= dom the Comp of (Ens V) ::_thesis: for x being set st x in dom the Comp of (Ens W) holds the Comp of (Ens W) . x = the Comp of (Ens V) . x proof let x, y be set ; :: according to RELAT_1:def_3 ::_thesis: ( not [x,y] in dom the Comp of (Ens W) or [x,y] in dom the Comp of (Ens V) ) assume A5: [x,y] in dom the Comp of (Ens W) ; ::_thesis: [x,y] in dom the Comp of (Ens V) then consider m2, m1 being Element of Maps W such that A6: [x,y] = [m2,m1] by A3, DOMAIN_1:1; reconsider m19 = m1, m29 = m2 as Element of Maps V by Th7, TARSKI:def_3; A7: ( dom m29 = dom m2 & cod m19 = cod m1 ) ; dom m2 = cod m1 by A5, A6, Def11; hence [x,y] in dom the Comp of (Ens V) by A6, A7, Def11; ::_thesis: verum end; let x be set ; ::_thesis: ( x in dom the Comp of (Ens W) implies the Comp of (Ens W) . x = the Comp of (Ens V) . x ) assume A8: x in dom the Comp of (Ens W) ; ::_thesis: the Comp of (Ens W) . x = the Comp of (Ens V) . x then consider m2, m1 being Element of Maps W such that A9: x = [m2,m1] by A3, DOMAIN_1:1; reconsider m19 = m1, m29 = m2 as Element of Maps V by Th7, TARSKI:def_3; A10: dom m29 = cod m19 by A4, A8, A9, Def11; A11: dom m2 = cod m1 by A8, A9, Def11; then A12: m2 * m1 = [[(dom m1),(cod m2)],((m2 `2) * (m1 `2))] by Def6; ( dom m1 = dom m19 & cod m2 = cod m29 ) ; then m29 * m19 = [[(dom m1),(cod m2)],((m2 `2) * (m1 `2))] by A10, Def6; hence the Comp of (Ens W) . x = m29 * m19 by A9, A11, A12, Def11 .= the Comp of (Ens V) . x by A9, A10, Def11 ; ::_thesis: verum end; hence the Comp of (Ens W) c= the Comp of (Ens V) by GRFUNC_1:2; ::_thesis: for b1 being Element of the carrier of (Ens W) for b2 being Element of the carrier of (Ens V) holds ( not b1 = b2 or id b1 = id b2 ) let a be Object of (Ens W); ::_thesis: for b1 being Element of the carrier of (Ens V) holds ( not a = b1 or id a = id b1 ) let a9 be Object of (Ens V); ::_thesis: ( not a = a9 or id a = id a9 ) A13: id$ (@ a) = [[(@ a),(@ a)],(id (@ a))] ; assume a = a9 ; ::_thesis: id a = id a9 hence id a = id$ (@ a9) by A13, Th29 .= id a9 by Th29 ; ::_thesis: verum end; theorem :: ENS_1:40 for V being non empty set for W being non empty Subset of V holds Ens W is full Subcategory of Ens V proof let V be non empty set ; ::_thesis: for W being non empty Subset of V holds Ens W is full Subcategory of Ens V let W be non empty Subset of V; ::_thesis: Ens W is full Subcategory of Ens V reconsider E = Ens W as Subcategory of Ens V by Lm7; for a, b being Object of E for a9, b9 being Object of (Ens V) st a = a9 & b = b9 holds Hom (a,b) = Hom (a9,b9) proof let a, b be Object of E; ::_thesis: for a9, b9 being Object of (Ens V) st a = a9 & b = b9 holds Hom (a,b) = Hom (a9,b9) let a9, b9 be Object of (Ens V); ::_thesis: ( a = a9 & b = b9 implies Hom (a,b) = Hom (a9,b9) ) assume A1: ( a = a9 & b = b9 ) ; ::_thesis: Hom (a,b) = Hom (a9,b9) reconsider aa = a, bb = b as Element of (Ens W) ; ( Hom (aa,bb) = Maps ((@ aa),(@ bb)) & Hom (a9,b9) = Maps ((@ a9),(@ b9)) ) by Th27; hence Hom (a,b) = Hom (a9,b9) by A1, Lm5; ::_thesis: verum end; hence Ens W is full Subcategory of Ens V by CAT_2:def_6; ::_thesis: verum end; begin definition let C be Category; func Hom C -> set equals :: ENS_1:def 18 { (Hom (a,b)) where a, b is Object of C : verum } ; coherence { (Hom (a,b)) where a, b is Object of C : verum } is set ; end; :: deftheorem defines Hom ENS_1:def_18_:_ for C being Category holds Hom C = { (Hom (a,b)) where a, b is Object of C : verum } ; registration let C be Category; cluster Hom C -> non empty ; coherence not Hom C is empty proof set a = the Object of C; Hom ( the Object of C, the Object of C) in { (Hom (a9,b9)) where a9, b9 is Object of C : verum } ; hence not Hom C is empty ; ::_thesis: verum end; end; theorem :: ENS_1:41 for C being Category for a, b being Object of C holds Hom (a,b) in Hom C ; theorem :: ENS_1:42 for C being Category for a being Object of C for f being Morphism of C holds ( ( Hom (a,(cod f)) = {} implies Hom (a,(dom f)) = {} ) & ( Hom ((dom f),a) = {} implies Hom ((cod f),a) = {} ) ) proof let C be Category; ::_thesis: for a being Object of C for f being Morphism of C holds ( ( Hom (a,(cod f)) = {} implies Hom (a,(dom f)) = {} ) & ( Hom ((dom f),a) = {} implies Hom ((cod f),a) = {} ) ) let a be Object of C; ::_thesis: for f being Morphism of C holds ( ( Hom (a,(cod f)) = {} implies Hom (a,(dom f)) = {} ) & ( Hom ((dom f),a) = {} implies Hom ((cod f),a) = {} ) ) let f be Morphism of C; ::_thesis: ( ( Hom (a,(cod f)) = {} implies Hom (a,(dom f)) = {} ) & ( Hom ((dom f),a) = {} implies Hom ((cod f),a) = {} ) ) Hom ((dom f),(cod f)) <> {} by CAT_1:2; hence ( ( Hom (a,(cod f)) = {} implies Hom (a,(dom f)) = {} ) & ( Hom ((dom f),a) = {} implies Hom ((cod f),a) = {} ) ) by CAT_1:24; ::_thesis: verum end; definition let C be Category; let a be Object of C; let f be Morphism of C; func hom (a,f) -> Function of (Hom (a,(dom f))),(Hom (a,(cod f))) means :Def19: :: ENS_1:def 19 for g being Morphism of C st g in Hom (a,(dom f)) holds it . g = f (*) g; existence ex b1 being Function of (Hom (a,(dom f))),(Hom (a,(cod f))) st for g being Morphism of C st g in Hom (a,(dom f)) holds b1 . g = f (*) g proof defpred S1[ set , set ] means for g being Morphism of C st g = $1 holds $2 = f (*) g; set X = Hom (a,(dom f)); set Y = Hom (a,(cod f)); A1: for x being set st x in Hom (a,(dom f)) holds ex y being set st ( y in Hom (a,(cod f)) & S1[x,y] ) proof let x be set ; ::_thesis: ( x in Hom (a,(dom f)) implies ex y being set st ( y in Hom (a,(cod f)) & S1[x,y] ) ) assume A2: x in Hom (a,(dom f)) ; ::_thesis: ex y being set st ( y in Hom (a,(cod f)) & S1[x,y] ) then reconsider g = x as Morphism of a, dom f by CAT_1:def_5; take f (*) g ; ::_thesis: ( f (*) g in Hom (a,(cod f)) & S1[x,f (*) g] ) ( Hom ((dom f),(cod f)) <> {} & f is Morphism of dom f, cod f ) by CAT_1:1, CAT_1:4; hence ( f (*) g in Hom (a,(cod f)) & S1[x,f (*) g] ) by A2, CAT_1:23; ::_thesis: verum end; consider h being Function such that A3: ( dom h = Hom (a,(dom f)) & rng h c= Hom (a,(cod f)) ) and A4: for x being set st x in Hom (a,(dom f)) holds S1[x,h . x] from FUNCT_1:sch_5(A1); Hom ((dom f),(cod f)) <> {} by CAT_1:2; then ( Hom (a,(cod f)) = {} implies Hom (a,(dom f)) = {} ) by CAT_1:24; then reconsider h = h as Function of (Hom (a,(dom f))),(Hom (a,(cod f))) by A3, FUNCT_2:def_1, RELSET_1:4; take h ; ::_thesis: for g being Morphism of C st g in Hom (a,(dom f)) holds h . g = f (*) g thus for g being Morphism of C st g in Hom (a,(dom f)) holds h . g = f (*) g by A4; ::_thesis: verum end; uniqueness for b1, b2 being Function of (Hom (a,(dom f))),(Hom (a,(cod f))) st ( for g being Morphism of C st g in Hom (a,(dom f)) holds b1 . g = f (*) g ) & ( for g being Morphism of C st g in Hom (a,(dom f)) holds b2 . g = f (*) g ) holds b1 = b2 proof set X = Hom (a,(dom f)); set Y = Hom (a,(cod f)); let h1, h2 be Function of (Hom (a,(dom f))),(Hom (a,(cod f))); ::_thesis: ( ( for g being Morphism of C st g in Hom (a,(dom f)) holds h1 . g = f (*) g ) & ( for g being Morphism of C st g in Hom (a,(dom f)) holds h2 . g = f (*) g ) implies h1 = h2 ) assume that A5: for g being Morphism of C st g in Hom (a,(dom f)) holds h1 . g = f (*) g and A6: for g being Morphism of C st g in Hom (a,(dom f)) holds h2 . g = f (*) g ; ::_thesis: h1 = h2 now__::_thesis:_for_x_being_set_st_x_in_Hom_(a,(dom_f))_holds_ h1_._x_=_h2_._x let x be set ; ::_thesis: ( x in Hom (a,(dom f)) implies h1 . x = h2 . x ) assume A7: x in Hom (a,(dom f)) ; ::_thesis: h1 . x = h2 . x then reconsider g = x as Morphism of C ; thus h1 . x = f (*) g by A5, A7 .= h2 . x by A6, A7 ; ::_thesis: verum end; hence h1 = h2 by FUNCT_2:12; ::_thesis: verum end; func hom (f,a) -> Function of (Hom ((cod f),a)),(Hom ((dom f),a)) means :Def20: :: ENS_1:def 20 for g being Morphism of C st g in Hom ((cod f),a) holds it . g = g (*) f; existence ex b1 being Function of (Hom ((cod f),a)),(Hom ((dom f),a)) st for g being Morphism of C st g in Hom ((cod f),a) holds b1 . g = g (*) f proof defpred S1[ set , set ] means for g being Morphism of C st g = $1 holds $2 = g (*) f; set X = Hom ((cod f),a); set Y = Hom ((dom f),a); A8: for x being set st x in Hom ((cod f),a) holds ex y being set st ( y in Hom ((dom f),a) & S1[x,y] ) proof let x be set ; ::_thesis: ( x in Hom ((cod f),a) implies ex y being set st ( y in Hom ((dom f),a) & S1[x,y] ) ) assume A9: x in Hom ((cod f),a) ; ::_thesis: ex y being set st ( y in Hom ((dom f),a) & S1[x,y] ) then reconsider g = x as Morphism of cod f,a by CAT_1:def_5; take g (*) f ; ::_thesis: ( g (*) f in Hom ((dom f),a) & S1[x,g (*) f] ) ( Hom ((dom f),(cod f)) <> {} & f is Morphism of dom f, cod f ) by CAT_1:2, CAT_1:4; hence ( g (*) f in Hom ((dom f),a) & S1[x,g (*) f] ) by A9, CAT_1:23; ::_thesis: verum end; consider h being Function such that A10: ( dom h = Hom ((cod f),a) & rng h c= Hom ((dom f),a) ) and A11: for x being set st x in Hom ((cod f),a) holds S1[x,h . x] from FUNCT_1:sch_5(A8); Hom ((dom f),(cod f)) <> {} by CAT_1:2; then ( Hom ((dom f),a) = {} implies Hom ((cod f),a) = {} ) by CAT_1:24; then reconsider h = h as Function of (Hom ((cod f),a)),(Hom ((dom f),a)) by A10, FUNCT_2:def_1, RELSET_1:4; take h ; ::_thesis: for g being Morphism of C st g in Hom ((cod f),a) holds h . g = g (*) f thus for g being Morphism of C st g in Hom ((cod f),a) holds h . g = g (*) f by A11; ::_thesis: verum end; uniqueness for b1, b2 being Function of (Hom ((cod f),a)),(Hom ((dom f),a)) st ( for g being Morphism of C st g in Hom ((cod f),a) holds b1 . g = g (*) f ) & ( for g being Morphism of C st g in Hom ((cod f),a) holds b2 . g = g (*) f ) holds b1 = b2 proof set X = Hom ((cod f),a); set Y = Hom ((dom f),a); let h1, h2 be Function of (Hom ((cod f),a)),(Hom ((dom f),a)); ::_thesis: ( ( for g being Morphism of C st g in Hom ((cod f),a) holds h1 . g = g (*) f ) & ( for g being Morphism of C st g in Hom ((cod f),a) holds h2 . g = g (*) f ) implies h1 = h2 ) assume that A12: for g being Morphism of C st g in Hom ((cod f),a) holds h1 . g = g (*) f and A13: for g being Morphism of C st g in Hom ((cod f),a) holds h2 . g = g (*) f ; ::_thesis: h1 = h2 now__::_thesis:_for_x_being_set_st_x_in_Hom_((cod_f),a)_holds_ h1_._x_=_h2_._x let x be set ; ::_thesis: ( x in Hom ((cod f),a) implies h1 . x = h2 . x ) assume A14: x in Hom ((cod f),a) ; ::_thesis: h1 . x = h2 . x then reconsider g = x as Morphism of C ; thus h1 . x = g (*) f by A12, A14 .= h2 . x by A13, A14 ; ::_thesis: verum end; hence h1 = h2 by FUNCT_2:12; ::_thesis: verum end; end; :: deftheorem Def19 defines hom ENS_1:def_19_:_ for C being Category for a being Object of C for f being Morphism of C for b4 being Function of (Hom (a,(dom f))),(Hom (a,(cod f))) holds ( b4 = hom (a,f) iff for g being Morphism of C st g in Hom (a,(dom f)) holds b4 . g = f (*) g ); :: deftheorem Def20 defines hom ENS_1:def_20_:_ for C being Category for a being Object of C for f being Morphism of C for b4 being Function of (Hom ((cod f),a)),(Hom ((dom f),a)) holds ( b4 = hom (f,a) iff for g being Morphism of C st g in Hom ((cod f),a) holds b4 . g = g (*) f ); theorem Th43: :: ENS_1:43 for C being Category for a, c being Object of C holds hom (a,(id c)) = id (Hom (a,c)) proof let C be Category; ::_thesis: for a, c being Object of C holds hom (a,(id c)) = id (Hom (a,c)) let a, c be Object of C; ::_thesis: hom (a,(id c)) = id (Hom (a,c)) set A = Hom (a,c); now__::_thesis:_(_dom_(hom_(a,(id_c)))_=_Hom_(a,c)_&_(_for_x_being_set_st_x_in_Hom_(a,c)_holds_ (hom_(a,(id_c)))_._x_=_x_)_) ( Hom (a,c) = {} implies Hom (a,c) = {} ) ; hence dom (hom (a,(id c))) = Hom (a,c) by FUNCT_2:def_1; ::_thesis: for x being set st x in Hom (a,c) holds (hom (a,(id c))) . x = x let x be set ; ::_thesis: ( x in Hom (a,c) implies (hom (a,(id c))) . x = x ) assume A1: x in Hom (a,c) ; ::_thesis: (hom (a,(id c))) . x = x then reconsider g = x as Morphism of C ; A2: cod g = c by A1, CAT_1:1; thus (hom (a,(id c))) . x = (id c) (*) g by A1, Def19 .= x by A2, CAT_1:21 ; ::_thesis: verum end; hence hom (a,(id c)) = id (Hom (a,c)) by FUNCT_1:17; ::_thesis: verum end; theorem Th44: :: ENS_1:44 for C being Category for c, a being Object of C holds hom ((id c),a) = id (Hom (c,a)) proof let C be Category; ::_thesis: for c, a being Object of C holds hom ((id c),a) = id (Hom (c,a)) let c, a be Object of C; ::_thesis: hom ((id c),a) = id (Hom (c,a)) set A = Hom (c,a); now__::_thesis:_(_dom_(hom_((id_c),a))_=_Hom_(c,a)_&_(_for_x_being_set_st_x_in_Hom_(c,a)_holds_ (hom_((id_c),a))_._x_=_x_)_) ( Hom (c,a) = {} implies Hom (c,a) = {} ) ; hence dom (hom ((id c),a)) = Hom (c,a) by FUNCT_2:def_1; ::_thesis: for x being set st x in Hom (c,a) holds (hom ((id c),a)) . x = x let x be set ; ::_thesis: ( x in Hom (c,a) implies (hom ((id c),a)) . x = x ) assume A1: x in Hom (c,a) ; ::_thesis: (hom ((id c),a)) . x = x then reconsider g = x as Morphism of C ; A2: dom g = c by A1, CAT_1:1; thus (hom ((id c),a)) . x = g (*) (id c) by A1, Def20 .= x by A2, CAT_1:22 ; ::_thesis: verum end; hence hom ((id c),a) = id (Hom (c,a)) by FUNCT_1:17; ::_thesis: verum end; theorem Th45: :: ENS_1:45 for C being Category for a being Object of C for g, f being Morphism of C st dom g = cod f holds hom (a,(g (*) f)) = (hom (a,g)) * (hom (a,f)) proof let C be Category; ::_thesis: for a being Object of C for g, f being Morphism of C st dom g = cod f holds hom (a,(g (*) f)) = (hom (a,g)) * (hom (a,f)) let a be Object of C; ::_thesis: for g, f being Morphism of C st dom g = cod f holds hom (a,(g (*) f)) = (hom (a,g)) * (hom (a,f)) let g, f be Morphism of C; ::_thesis: ( dom g = cod f implies hom (a,(g (*) f)) = (hom (a,g)) * (hom (a,f)) ) assume A1: dom g = cod f ; ::_thesis: hom (a,(g (*) f)) = (hom (a,g)) * (hom (a,f)) then A2: dom (g (*) f) = dom f by CAT_1:17; A3: cod (g (*) f) = cod g by A1, CAT_1:17; now__::_thesis:_(_dom_(hom_(a,(g_(*)_f)))_=_Hom_(a,(dom_f))_&_dom_((hom_(a,g))_*_(hom_(a,f)))_=_Hom_(a,(dom_f))_&_(_for_x_being_set_st_x_in_Hom_(a,(dom_f))_holds_ (hom_(a,(g_(*)_f)))_._x_=_((hom_(a,g))_*_(hom_(a,f)))_._x_)_) set h = hom (a,(g (*) f)); set h2 = hom (a,g); set h1 = hom (a,f); A4: Hom ((dom f),(cod f)) <> {} by CAT_1:2; then A5: ( Hom (a,(cod f)) = {} implies Hom (a,(dom f)) = {} ) by CAT_1:24; Hom ((dom g),(cod g)) <> {} by CAT_1:2; then A6: ( Hom (a,(cod g)) = {} implies Hom (a,(dom g)) = {} ) by CAT_1:24; hence dom (hom (a,(g (*) f))) = Hom (a,(dom f)) by A1, A2, A3, A5, FUNCT_2:def_1; ::_thesis: ( dom ((hom (a,g)) * (hom (a,f))) = Hom (a,(dom f)) & ( for x being set st x in Hom (a,(dom f)) holds (hom (a,(g (*) f))) . x = ((hom (a,g)) * (hom (a,f))) . x ) ) thus A7: dom ((hom (a,g)) * (hom (a,f))) = Hom (a,(dom f)) by A1, A5, A6, FUNCT_2:def_1; ::_thesis: for x being set st x in Hom (a,(dom f)) holds (hom (a,(g (*) f))) . x = ((hom (a,g)) * (hom (a,f))) . x let x be set ; ::_thesis: ( x in Hom (a,(dom f)) implies (hom (a,(g (*) f))) . x = ((hom (a,g)) * (hom (a,f))) . x ) assume A8: x in Hom (a,(dom f)) ; ::_thesis: (hom (a,(g (*) f))) . x = ((hom (a,g)) * (hom (a,f))) . x then reconsider f9 = x as Morphism of C ; A9: cod f9 = dom f by A8, CAT_1:1; A10: (hom (a,f)) . x in Hom (a,(dom g)) by A1, A4, A8, CAT_1:24, FUNCT_2:5; then reconsider g9 = (hom (a,f)) . x as Morphism of C ; thus (hom (a,(g (*) f))) . x = (g (*) f) (*) f9 by A2, A8, Def19 .= g (*) (f (*) f9) by A1, A9, CAT_1:18 .= g (*) g9 by A8, Def19 .= (hom (a,g)) . g9 by A10, Def19 .= ((hom (a,g)) * (hom (a,f))) . x by A7, A8, FUNCT_1:12 ; ::_thesis: verum end; hence hom (a,(g (*) f)) = (hom (a,g)) * (hom (a,f)) by FUNCT_1:2; ::_thesis: verum end; theorem Th46: :: ENS_1:46 for C being Category for a being Object of C for g, f being Morphism of C st dom g = cod f holds hom ((g (*) f),a) = (hom (f,a)) * (hom (g,a)) proof let C be Category; ::_thesis: for a being Object of C for g, f being Morphism of C st dom g = cod f holds hom ((g (*) f),a) = (hom (f,a)) * (hom (g,a)) let a be Object of C; ::_thesis: for g, f being Morphism of C st dom g = cod f holds hom ((g (*) f),a) = (hom (f,a)) * (hom (g,a)) let g, f be Morphism of C; ::_thesis: ( dom g = cod f implies hom ((g (*) f),a) = (hom (f,a)) * (hom (g,a)) ) assume A1: dom g = cod f ; ::_thesis: hom ((g (*) f),a) = (hom (f,a)) * (hom (g,a)) then A2: cod (g (*) f) = cod g by CAT_1:17; A3: dom (g (*) f) = dom f by A1, CAT_1:17; now__::_thesis:_(_dom_(hom_((g_(*)_f),a))_=_Hom_((cod_g),a)_&_dom_((hom_(f,a))_*_(hom_(g,a)))_=_Hom_((cod_g),a)_&_(_for_x_being_set_st_x_in_Hom_((cod_g),a)_holds_ (hom_((g_(*)_f),a))_._x_=_((hom_(f,a))_*_(hom_(g,a)))_._x_)_) set h = hom ((g (*) f),a); set h2 = hom (g,a); set h1 = hom (f,a); A4: Hom ((dom g),(cod g)) <> {} by CAT_1:2; then A5: ( Hom ((dom g),a) = {} implies Hom ((cod g),a) = {} ) by CAT_1:24; Hom ((dom f),(cod f)) <> {} by CAT_1:2; then A6: ( Hom ((dom f),a) = {} implies Hom ((cod f),a) = {} ) by CAT_1:24; hence dom (hom ((g (*) f),a)) = Hom ((cod g),a) by A1, A3, A2, A5, FUNCT_2:def_1; ::_thesis: ( dom ((hom (f,a)) * (hom (g,a))) = Hom ((cod g),a) & ( for x being set st x in Hom ((cod g),a) holds (hom ((g (*) f),a)) . x = ((hom (f,a)) * (hom (g,a))) . x ) ) thus A7: dom ((hom (f,a)) * (hom (g,a))) = Hom ((cod g),a) by A1, A6, A5, FUNCT_2:def_1; ::_thesis: for x being set st x in Hom ((cod g),a) holds (hom ((g (*) f),a)) . x = ((hom (f,a)) * (hom (g,a))) . x let x be set ; ::_thesis: ( x in Hom ((cod g),a) implies (hom ((g (*) f),a)) . x = ((hom (f,a)) * (hom (g,a))) . x ) assume A8: x in Hom ((cod g),a) ; ::_thesis: (hom ((g (*) f),a)) . x = ((hom (f,a)) * (hom (g,a))) . x then reconsider f9 = x as Morphism of C ; A9: dom f9 = cod g by A8, CAT_1:1; A10: (hom (g,a)) . x in Hom ((cod f),a) by A1, A4, A8, CAT_1:24, FUNCT_2:5; then reconsider g9 = (hom (g,a)) . x as Morphism of C ; thus (hom ((g (*) f),a)) . x = f9 (*) (g (*) f) by A2, A8, Def20 .= (f9 (*) g) (*) f by A1, A9, CAT_1:18 .= g9 (*) f by A8, Def20 .= (hom (f,a)) . g9 by A10, Def20 .= ((hom (f,a)) * (hom (g,a))) . x by A7, A8, FUNCT_1:12 ; ::_thesis: verum end; hence hom ((g (*) f),a) = (hom (f,a)) * (hom (g,a)) by FUNCT_1:2; ::_thesis: verum end; theorem Th47: :: ENS_1:47 for C being Category for a being Object of C for f being Morphism of C holds [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] is Element of Maps (Hom C) proof let C be Category; ::_thesis: for a being Object of C for f being Morphism of C holds [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] is Element of Maps (Hom C) let a be Object of C; ::_thesis: for f being Morphism of C holds [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] is Element of Maps (Hom C) let f be Morphism of C; ::_thesis: [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] is Element of Maps (Hom C) Hom ((dom f),(cod f)) <> {} by CAT_1:2; then A1: ( Hom (a,(cod f)) = {} implies Hom (a,(dom f)) = {} ) by CAT_1:24; ( Hom (a,(dom f)) in Hom C & Hom (a,(cod f)) in Hom C ) ; hence [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] is Element of Maps (Hom C) by A1, Th5; ::_thesis: verum end; theorem Th48: :: ENS_1:48 for C being Category for a being Object of C for f being Morphism of C holds [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] is Element of Maps (Hom C) proof let C be Category; ::_thesis: for a being Object of C for f being Morphism of C holds [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] is Element of Maps (Hom C) let a be Object of C; ::_thesis: for f being Morphism of C holds [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] is Element of Maps (Hom C) let f be Morphism of C; ::_thesis: [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] is Element of Maps (Hom C) Hom ((dom f),(cod f)) <> {} by CAT_1:2; then A1: ( Hom ((dom f),a) = {} implies Hom ((cod f),a) = {} ) by CAT_1:24; ( Hom ((dom f),a) in Hom C & Hom ((cod f),a) in Hom C ) ; hence [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] is Element of Maps (Hom C) by A1, Th5; ::_thesis: verum end; definition let C be Category; let a be Object of C; func hom?- a -> Function of the carrier' of C,(Maps (Hom C)) means :Def21: :: ENS_1:def 21 for f being Morphism of C holds it . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))]; existence ex b1 being Function of the carrier' of C,(Maps (Hom C)) st for f being Morphism of C holds b1 . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] proof defpred S1[ set , set ] means for f being Morphism of C st f = $1 holds $2 = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))]; set X = the carrier' of C; set Y = Maps (Hom C); A1: for x being set st x in the carrier' of C holds ex y being set st ( y in Maps (Hom C) & S1[x,y] ) proof let x be set ; ::_thesis: ( x in the carrier' of C implies ex y being set st ( y in Maps (Hom C) & S1[x,y] ) ) assume x in the carrier' of C ; ::_thesis: ex y being set st ( y in Maps (Hom C) & S1[x,y] ) then reconsider f = x as Morphism of C ; take y = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))]; ::_thesis: ( y in Maps (Hom C) & S1[x,y] ) y is Element of Maps (Hom C) by Th47; hence ( y in Maps (Hom C) & S1[x,y] ) ; ::_thesis: verum end; consider h being Function such that A2: ( dom h = the carrier' of C & rng h c= Maps (Hom C) ) and A3: for x being set st x in the carrier' of C holds S1[x,h . x] from FUNCT_1:sch_5(A1); reconsider h = h as Function of the carrier' of C,(Maps (Hom C)) by A2, FUNCT_2:def_1, RELSET_1:4; take h ; ::_thesis: for f being Morphism of C holds h . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] thus for f being Morphism of C holds h . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] by A3; ::_thesis: verum end; uniqueness for b1, b2 being Function of the carrier' of C,(Maps (Hom C)) st ( for f being Morphism of C holds b1 . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] ) & ( for f being Morphism of C holds b2 . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] ) holds b1 = b2 proof let h1, h2 be Function of the carrier' of C,(Maps (Hom C)); ::_thesis: ( ( for f being Morphism of C holds h1 . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] ) & ( for f being Morphism of C holds h2 . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] ) implies h1 = h2 ) assume that A4: for f being Morphism of C holds h1 . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] and A5: for f being Morphism of C holds h2 . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] ; ::_thesis: h1 = h2 now__::_thesis:_for_f_being_Morphism_of_C_holds_h1_._f_=_h2_._f let f be Morphism of C; ::_thesis: h1 . f = h2 . f thus h1 . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] by A4 .= h2 . f by A5 ; ::_thesis: verum end; hence h1 = h2 by FUNCT_2:63; ::_thesis: verum end; func hom-? a -> Function of the carrier' of C,(Maps (Hom C)) means :Def22: :: ENS_1:def 22 for f being Morphism of C holds it . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))]; existence ex b1 being Function of the carrier' of C,(Maps (Hom C)) st for f being Morphism of C holds b1 . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] proof defpred S1[ set , set ] means for f being Morphism of C st f = $1 holds $2 = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))]; set X = the carrier' of C; set Y = Maps (Hom C); A6: for x being set st x in the carrier' of C holds ex y being set st ( y in Maps (Hom C) & S1[x,y] ) proof let x be set ; ::_thesis: ( x in the carrier' of C implies ex y being set st ( y in Maps (Hom C) & S1[x,y] ) ) assume x in the carrier' of C ; ::_thesis: ex y being set st ( y in Maps (Hom C) & S1[x,y] ) then reconsider f = x as Morphism of C ; take y = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))]; ::_thesis: ( y in Maps (Hom C) & S1[x,y] ) y is Element of Maps (Hom C) by Th48; hence ( y in Maps (Hom C) & S1[x,y] ) ; ::_thesis: verum end; consider h being Function such that A7: ( dom h = the carrier' of C & rng h c= Maps (Hom C) ) and A8: for x being set st x in the carrier' of C holds S1[x,h . x] from FUNCT_1:sch_5(A6); reconsider h = h as Function of the carrier' of C,(Maps (Hom C)) by A7, FUNCT_2:def_1, RELSET_1:4; take h ; ::_thesis: for f being Morphism of C holds h . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] thus for f being Morphism of C holds h . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] by A8; ::_thesis: verum end; uniqueness for b1, b2 being Function of the carrier' of C,(Maps (Hom C)) st ( for f being Morphism of C holds b1 . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] ) & ( for f being Morphism of C holds b2 . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] ) holds b1 = b2 proof let h1, h2 be Function of the carrier' of C,(Maps (Hom C)); ::_thesis: ( ( for f being Morphism of C holds h1 . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] ) & ( for f being Morphism of C holds h2 . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] ) implies h1 = h2 ) assume that A9: for f being Morphism of C holds h1 . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] and A10: for f being Morphism of C holds h2 . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] ; ::_thesis: h1 = h2 now__::_thesis:_for_f_being_Morphism_of_C_holds_h1_._f_=_h2_._f let f be Morphism of C; ::_thesis: h1 . f = h2 . f thus h1 . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] by A9 .= h2 . f by A10 ; ::_thesis: verum end; hence h1 = h2 by FUNCT_2:63; ::_thesis: verum end; end; :: deftheorem Def21 defines hom?- ENS_1:def_21_:_ for C being Category for a being Object of C for b3 being Function of the carrier' of C,(Maps (Hom C)) holds ( b3 = hom?- a iff for f being Morphism of C holds b3 . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] ); :: deftheorem Def22 defines hom-? ENS_1:def_22_:_ for C being Category for a being Object of C for b3 being Function of the carrier' of C,(Maps (Hom C)) holds ( b3 = hom-? a iff for f being Morphism of C holds b3 . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] ); Lm8: for V being non empty set for C being Category for T being Function of the carrier' of C,(Maps (Hom C)) st Hom C c= V holds T is Function of the carrier' of C, the carrier' of (Ens V) proof let V be non empty set ; ::_thesis: for C being Category for T being Function of the carrier' of C,(Maps (Hom C)) st Hom C c= V holds T is Function of the carrier' of C, the carrier' of (Ens V) let C be Category; ::_thesis: for T being Function of the carrier' of C,(Maps (Hom C)) st Hom C c= V holds T is Function of the carrier' of C, the carrier' of (Ens V) let T be Function of the carrier' of C,(Maps (Hom C)); ::_thesis: ( Hom C c= V implies T is Function of the carrier' of C, the carrier' of (Ens V) ) assume Hom C c= V ; ::_thesis: T is Function of the carrier' of C, the carrier' of (Ens V) then Maps (Hom C) c= Maps V by Th7; hence T is Function of the carrier' of C, the carrier' of (Ens V) by FUNCT_2:7; ::_thesis: verum end; Lm9: for V being non empty set for C being Category for a, c being Object of C st Hom C c= V holds for d being Object of (Ens V) st d = Hom (a,c) holds (hom?- a) . (id c) = id d proof let V be non empty set ; ::_thesis: for C being Category for a, c being Object of C st Hom C c= V holds for d being Object of (Ens V) st d = Hom (a,c) holds (hom?- a) . (id c) = id d let C be Category; ::_thesis: for a, c being Object of C st Hom C c= V holds for d being Object of (Ens V) st d = Hom (a,c) holds (hom?- a) . (id c) = id d let a, c be Object of C; ::_thesis: ( Hom C c= V implies for d being Object of (Ens V) st d = Hom (a,c) holds (hom?- a) . (id c) = id d ) A1: Hom (a,c) in Hom C ; assume Hom C c= V ; ::_thesis: for d being Object of (Ens V) st d = Hom (a,c) holds (hom?- a) . (id c) = id d then reconsider A = Hom (a,c) as Element of V by A1; A2: hom (a,(id c)) = id A by Th43; let d be Object of (Ens V); ::_thesis: ( d = Hom (a,c) implies (hom?- a) . (id c) = id d ) assume d = Hom (a,c) ; ::_thesis: (hom?- a) . (id c) = id d hence (hom?- a) . (id c) = id$ (@ d) by A2, Def21 .= id d by Th29 ; ::_thesis: verum end; Lm10: for V being non empty set for C being Category for c, a being Object of C st Hom C c= V holds for d being Object of (Ens V) st d = Hom (c,a) holds (hom-? a) . (id c) = id d proof let V be non empty set ; ::_thesis: for C being Category for c, a being Object of C st Hom C c= V holds for d being Object of (Ens V) st d = Hom (c,a) holds (hom-? a) . (id c) = id d let C be Category; ::_thesis: for c, a being Object of C st Hom C c= V holds for d being Object of (Ens V) st d = Hom (c,a) holds (hom-? a) . (id c) = id d let c, a be Object of C; ::_thesis: ( Hom C c= V implies for d being Object of (Ens V) st d = Hom (c,a) holds (hom-? a) . (id c) = id d ) A1: Hom (c,a) in Hom C ; assume Hom C c= V ; ::_thesis: for d being Object of (Ens V) st d = Hom (c,a) holds (hom-? a) . (id c) = id d then reconsider A = Hom (c,a) as Element of V by A1; A2: hom ((id c),a) = id A by Th44; let d be Object of (Ens V); ::_thesis: ( d = Hom (c,a) implies (hom-? a) . (id c) = id d ) assume d = Hom (c,a) ; ::_thesis: (hom-? a) . (id c) = id d hence (hom-? a) . (id c) = id$ (@ d) by A2, Def22 .= id d by Th29 ; ::_thesis: verum end; theorem Th49: :: ENS_1:49 for V being non empty set for C being Category for a being Object of C st Hom C c= V holds hom?- a is Functor of C, Ens V proof let V be non empty set ; ::_thesis: for C being Category for a being Object of C st Hom C c= V holds hom?- a is Functor of C, Ens V let C be Category; ::_thesis: for a being Object of C st Hom C c= V holds hom?- a is Functor of C, Ens V let a be Object of C; ::_thesis: ( Hom C c= V implies hom?- a is Functor of C, Ens V ) assume A1: Hom C c= V ; ::_thesis: hom?- a is Functor of C, Ens V then reconsider T = hom?- a as Function of the carrier' of C, the carrier' of (Ens V) by Lm8; now__::_thesis:_(_(_for_c_being_Object_of_C_ex_d_being_Object_of_(Ens_V)_st_T_._(id_c)_=_id_d_)_&_(_for_f_being_Morphism_of_C_holds_ (_T_._(id_(dom_f))_=_id_(dom_(T_._f))_&_T_._(id_(cod_f))_=_id_(cod_(T_._f))_)_)_&_(_for_f,_g_being_Morphism_of_C_st_dom_g_=_cod_f_holds_ T_._(g_(*)_f)_=_(T_._g)_(*)_(T_._f)_)_) thus for c being Object of C ex d being Object of (Ens V) st T . (id c) = id d ::_thesis: ( ( for f being Morphism of C holds ( T . (id (dom f)) = id (dom (T . f)) & T . (id (cod f)) = id (cod (T . f)) ) ) & ( for f, g being Morphism of C st dom g = cod f holds T . (g (*) f) = (T . g) (*) (T . f) ) ) proof let c be Object of C; ::_thesis: ex d being Object of (Ens V) st T . (id c) = id d Hom (a,c) in Hom C ; then reconsider A = Hom (a,c) as Element of V by A1; take d = @ A; ::_thesis: T . (id c) = id d thus T . (id c) = id d by A1, Lm9; ::_thesis: verum end; thus for f being Morphism of C holds ( T . (id (dom f)) = id (dom (T . f)) & T . (id (cod f)) = id (cod (T . f)) ) ::_thesis: for f, g being Morphism of C st dom g = cod f holds T . (g (*) f) = (T . g) (*) (T . f) proof let f be Morphism of C; ::_thesis: ( T . (id (dom f)) = id (dom (T . f)) & T . (id (cod f)) = id (cod (T . f)) ) set b = dom f; set c = cod f; set g = T . f; ( Hom (a,(dom f)) in Hom C & Hom (a,(cod f)) in Hom C ) ; then reconsider A = Hom (a,(dom f)), B = Hom (a,(cod f)) as Element of V by A1; A2: [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] = @ (T . f) by Def21 .= [[(dom (@ (T . f))),(cod (@ (T . f)))],((@ (T . f)) `2)] by Th8 .= [[(dom (T . f)),(cod (@ (T . f)))],((@ (T . f)) `2)] by Def9 .= [[(dom (T . f)),(cod (T . f))],((@ (T . f)) `2)] by Def10 ; thus T . (id (dom f)) = id (@ A) by A1, Lm9 .= id (dom (T . f)) by A2, Lm1 ; ::_thesis: T . (id (cod f)) = id (cod (T . f)) thus T . (id (cod f)) = id (@ B) by A1, Lm9 .= id (cod (T . f)) by A2, Lm1 ; ::_thesis: verum end; let f, g be Morphism of C; ::_thesis: ( dom g = cod f implies T . (g (*) f) = (T . g) (*) (T . f) ) assume A3: dom g = cod f ; ::_thesis: T . (g (*) f) = (T . g) (*) (T . f) A4: [[(Hom (a,(dom g))),(Hom (a,(cod g)))],(hom (a,g))] = @ (T . g) by Def21 .= [[(dom (@ (T . g))),(cod (@ (T . g)))],((@ (T . g)) `2)] by Th8 .= [[(dom (T . g)),(cod (@ (T . g)))],((@ (T . g)) `2)] by Def9 .= [[(dom (T . g)),(cod (T . g))],((@ (T . g)) `2)] by Def10 ; then A5: (@ (T . g)) `2 = hom (a,g) by XTUPLE_0:1; cod (T . g) = Hom (a,(cod g)) by A4, Lm1; then A6: cod (@ (T . g)) = Hom (a,(cod g)) by Def10; A7: dom (T . g) = Hom (a,(dom g)) by A4, Lm1; then A8: dom (@ (T . g)) = Hom (a,(dom g)) by Def9; A9: [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] = @ (T . f) by Def21 .= [[(dom (@ (T . f))),(cod (@ (T . f)))],((@ (T . f)) `2)] by Th8 .= [[(dom (T . f)),(cod (@ (T . f)))],((@ (T . f)) `2)] by Def9 .= [[(dom (T . f)),(cod (T . f))],((@ (T . f)) `2)] by Def10 ; then A10: (@ (T . f)) `2 = hom (a,f) by XTUPLE_0:1; dom (T . f) = Hom (a,(dom f)) by A9, Lm1; then A11: dom (@ (T . f)) = Hom (a,(dom f)) by Def9; A12: cod (T . f) = Hom (a,(cod f)) by A9, Lm1; then A13: cod (@ (T . f)) = Hom (a,(cod f)) by Def10; ( dom (g (*) f) = dom f & cod (g (*) f) = cod g ) by A3, CAT_1:17; hence T . (g (*) f) = [[(Hom (a,(dom f))),(Hom (a,(cod g)))],(hom (a,(g (*) f)))] by Def21 .= [[(Hom (a,(dom f))),(Hom (a,(cod g)))],((hom (a,g)) * (hom (a,f)))] by A3, Th45 .= (@ (T . g)) * (@ (T . f)) by A3, A10, A11, A13, A5, A8, A6, Def6 .= (T . g) (*) (T . f) by A3, A12, A7, Th28 ; ::_thesis: verum end; hence hom?- a is Functor of C, Ens V by CAT_1:61; ::_thesis: verum end; theorem Th50: :: ENS_1:50 for V being non empty set for C being Category for a being Object of C st Hom C c= V holds hom-? a is Contravariant_Functor of C, Ens V proof let V be non empty set ; ::_thesis: for C being Category for a being Object of C st Hom C c= V holds hom-? a is Contravariant_Functor of C, Ens V let C be Category; ::_thesis: for a being Object of C st Hom C c= V holds hom-? a is Contravariant_Functor of C, Ens V let a be Object of C; ::_thesis: ( Hom C c= V implies hom-? a is Contravariant_Functor of C, Ens V ) assume A1: Hom C c= V ; ::_thesis: hom-? a is Contravariant_Functor of C, Ens V then reconsider T = hom-? a as Function of the carrier' of C, the carrier' of (Ens V) by Lm8; now__::_thesis:_(_(_for_c_being_Object_of_C_ex_d_being_Object_of_(Ens_V)_st_T_._(id_c)_=_id_d_)_&_(_for_f_being_Morphism_of_C_holds_ (_T_._(id_(dom_f))_=_id_(cod_(T_._f))_&_T_._(id_(cod_f))_=_id_(dom_(T_._f))_)_)_&_(_for_f,_g_being_Morphism_of_C_st_dom_g_=_cod_f_holds_ T_._(g_(*)_f)_=_(T_._f)_(*)_(T_._g)_)_) thus for c being Object of C ex d being Object of (Ens V) st T . (id c) = id d ::_thesis: ( ( for f being Morphism of C holds ( T . (id (dom f)) = id (cod (T . f)) & T . (id (cod f)) = id (dom (T . f)) ) ) & ( for f, g being Morphism of C st dom g = cod f holds T . (g (*) f) = (T . f) (*) (T . g) ) ) proof let c be Object of C; ::_thesis: ex d being Object of (Ens V) st T . (id c) = id d Hom (c,a) in Hom C ; then reconsider A = Hom (c,a) as Element of V by A1; take d = @ A; ::_thesis: T . (id c) = id d thus T . (id c) = id d by A1, Lm10; ::_thesis: verum end; thus for f being Morphism of C holds ( T . (id (dom f)) = id (cod (T . f)) & T . (id (cod f)) = id (dom (T . f)) ) ::_thesis: for f, g being Morphism of C st dom g = cod f holds T . (g (*) f) = (T . f) (*) (T . g) proof let f be Morphism of C; ::_thesis: ( T . (id (dom f)) = id (cod (T . f)) & T . (id (cod f)) = id (dom (T . f)) ) set b = cod f; set c = dom f; set g = T . f; ( Hom ((cod f),a) in Hom C & Hom ((dom f),a) in Hom C ) ; then reconsider A = Hom ((cod f),a), B = Hom ((dom f),a) as Element of V by A1; A2: [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] = @ (T . f) by Def22 .= [[(dom (@ (T . f))),(cod (@ (T . f)))],((@ (T . f)) `2)] by Th8 .= [[(dom (T . f)),(cod (@ (T . f)))],((@ (T . f)) `2)] by Def9 .= [[(dom (T . f)),(cod (T . f))],((@ (T . f)) `2)] by Def10 ; thus T . (id (dom f)) = id (@ B) by A1, Lm10 .= id (cod (T . f)) by A2, Lm1 ; ::_thesis: T . (id (cod f)) = id (dom (T . f)) thus T . (id (cod f)) = id (@ A) by A1, Lm10 .= id (dom (T . f)) by A2, Lm1 ; ::_thesis: verum end; let f, g be Morphism of C; ::_thesis: ( dom g = cod f implies T . (g (*) f) = (T . f) (*) (T . g) ) assume A3: dom g = cod f ; ::_thesis: T . (g (*) f) = (T . f) (*) (T . g) A4: [[(Hom ((cod g),a)),(Hom ((dom g),a))],(hom (g,a))] = @ (T . g) by Def22 .= [[(dom (@ (T . g))),(cod (@ (T . g)))],((@ (T . g)) `2)] by Th8 .= [[(dom (T . g)),(cod (@ (T . g)))],((@ (T . g)) `2)] by Def9 .= [[(dom (T . g)),(cod (T . g))],((@ (T . g)) `2)] by Def10 ; then A5: (@ (T . g)) `2 = hom (g,a) by XTUPLE_0:1; dom (T . g) = Hom ((cod g),a) by A4, Lm1; then A6: dom (@ (T . g)) = Hom ((cod g),a) by Def9; A7: cod (T . g) = Hom ((dom g),a) by A4, Lm1; then A8: cod (@ (T . g)) = Hom ((dom g),a) by Def10; A9: [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] = @ (T . f) by Def22 .= [[(dom (@ (T . f))),(cod (@ (T . f)))],((@ (T . f)) `2)] by Th8 .= [[(dom (T . f)),(cod (@ (T . f)))],((@ (T . f)) `2)] by Def9 .= [[(dom (T . f)),(cod (T . f))],((@ (T . f)) `2)] by Def10 ; then A10: (@ (T . f)) `2 = hom (f,a) by XTUPLE_0:1; cod (T . f) = Hom ((dom f),a) by A9, Lm1; then A11: cod (@ (T . f)) = Hom ((dom f),a) by Def10; A12: dom (T . f) = Hom ((cod f),a) by A9, Lm1; then A13: dom (@ (T . f)) = Hom ((cod f),a) by Def9; ( dom (g (*) f) = dom f & cod (g (*) f) = cod g ) by A3, CAT_1:17; hence T . (g (*) f) = [[(Hom ((cod g),a)),(Hom ((dom f),a))],(hom ((g (*) f),a))] by Def22 .= [[(Hom ((cod g),a)),(Hom ((dom f),a))],((hom (f,a)) * (hom (g,a)))] by A3, Th46 .= (@ (T . f)) * (@ (T . g)) by A3, A10, A13, A11, A5, A6, A8, Def6 .= (T . f) (*) (T . g) by A3, A12, A7, Th28 ; ::_thesis: verum end; hence hom-? a is Contravariant_Functor of C, Ens V by OPPCAT_1:def_9; ::_thesis: verum end; theorem Th51: :: ENS_1:51 for C being Category for f, f9 being Morphism of C st Hom ((dom f),(cod f9)) = {} holds Hom ((cod f),(dom f9)) = {} proof let C be Category; ::_thesis: for f, f9 being Morphism of C st Hom ((dom f),(cod f9)) = {} holds Hom ((cod f),(dom f9)) = {} let f, f9 be Morphism of C; ::_thesis: ( Hom ((dom f),(cod f9)) = {} implies Hom ((cod f),(dom f9)) = {} ) assume that A1: Hom ((dom f),(cod f9)) = {} and A2: Hom ((cod f),(dom f9)) <> {} ; ::_thesis: contradiction A3: Hom ((dom f9),(cod f9)) <> {} by CAT_1:2; Hom ((dom f),(cod f)) <> {} by CAT_1:2; then Hom ((dom f),(dom f9)) <> {} by A2, CAT_1:24; hence contradiction by A1, A3, CAT_1:24; ::_thesis: verum end; definition let C be Category; let f, g be Morphism of C; func hom (f,g) -> Function of (Hom ((cod f),(dom g))),(Hom ((dom f),(cod g))) means :Def23: :: ENS_1:def 23 for h being Morphism of C st h in Hom ((cod f),(dom g)) holds it . h = (g (*) h) (*) f; existence ex b1 being Function of (Hom ((cod f),(dom g))),(Hom ((dom f),(cod g))) st for h being Morphism of C st h in Hom ((cod f),(dom g)) holds b1 . h = (g (*) h) (*) f proof defpred S1[ set , set ] means for h being Morphism of C st h = $1 holds $2 = (g (*) h) (*) f; set X = Hom ((cod f),(dom g)); set Y = Hom ((dom f),(cod g)); A1: for x being set st x in Hom ((cod f),(dom g)) holds ex y being set st ( y in Hom ((dom f),(cod g)) & S1[x,y] ) proof let x be set ; ::_thesis: ( x in Hom ((cod f),(dom g)) implies ex y being set st ( y in Hom ((dom f),(cod g)) & S1[x,y] ) ) A2: ( Hom ((dom f),(cod f)) <> {} & f is Morphism of dom f, cod f ) by CAT_1:2, CAT_1:4; assume A3: x in Hom ((cod f),(dom g)) ; ::_thesis: ex y being set st ( y in Hom ((dom f),(cod g)) & S1[x,y] ) then reconsider h = x as Morphism of cod f, dom g by CAT_1:def_5; take (g (*) h) (*) f ; ::_thesis: ( (g (*) h) (*) f in Hom ((dom f),(cod g)) & S1[x,(g (*) h) (*) f] ) ( Hom ((dom g),(cod g)) <> {} & g is Morphism of dom g, cod g ) by CAT_1:2, CAT_1:4; then A4: g (*) h in Hom ((cod f),(cod g)) by A3, CAT_1:23; then g (*) h is Morphism of cod f, cod g by CAT_1:def_5; hence ( (g (*) h) (*) f in Hom ((dom f),(cod g)) & S1[x,(g (*) h) (*) f] ) by A4, A2, CAT_1:23; ::_thesis: verum end; consider h being Function such that A5: ( dom h = Hom ((cod f),(dom g)) & rng h c= Hom ((dom f),(cod g)) ) and A6: for x being set st x in Hom ((cod f),(dom g)) holds S1[x,h . x] from FUNCT_1:sch_5(A1); ( Hom ((dom f),(cod g)) = {} implies Hom ((cod f),(dom g)) = {} ) by Th51; then reconsider h = h as Function of (Hom ((cod f),(dom g))),(Hom ((dom f),(cod g))) by A5, FUNCT_2:def_1, RELSET_1:4; take h ; ::_thesis: for h being Morphism of C st h in Hom ((cod f),(dom g)) holds h . h = (g (*) h) (*) f thus for h being Morphism of C st h in Hom ((cod f),(dom g)) holds h . h = (g (*) h) (*) f by A6; ::_thesis: verum end; uniqueness for b1, b2 being Function of (Hom ((cod f),(dom g))),(Hom ((dom f),(cod g))) st ( for h being Morphism of C st h in Hom ((cod f),(dom g)) holds b1 . h = (g (*) h) (*) f ) & ( for h being Morphism of C st h in Hom ((cod f),(dom g)) holds b2 . h = (g (*) h) (*) f ) holds b1 = b2 proof set X = Hom ((cod f),(dom g)); set Y = Hom ((dom f),(cod g)); let h1, h2 be Function of (Hom ((cod f),(dom g))),(Hom ((dom f),(cod g))); ::_thesis: ( ( for h being Morphism of C st h in Hom ((cod f),(dom g)) holds h1 . h = (g (*) h) (*) f ) & ( for h being Morphism of C st h in Hom ((cod f),(dom g)) holds h2 . h = (g (*) h) (*) f ) implies h1 = h2 ) assume that A7: for h being Morphism of C st h in Hom ((cod f),(dom g)) holds h1 . h = (g (*) h) (*) f and A8: for h being Morphism of C st h in Hom ((cod f),(dom g)) holds h2 . h = (g (*) h) (*) f ; ::_thesis: h1 = h2 now__::_thesis:_for_x_being_set_st_x_in_Hom_((cod_f),(dom_g))_holds_ h1_._x_=_h2_._x let x be set ; ::_thesis: ( x in Hom ((cod f),(dom g)) implies h1 . x = h2 . x ) assume A9: x in Hom ((cod f),(dom g)) ; ::_thesis: h1 . x = h2 . x then reconsider h = x as Morphism of C ; thus h1 . x = (g (*) h) (*) f by A7, A9 .= h2 . x by A8, A9 ; ::_thesis: verum end; hence h1 = h2 by FUNCT_2:12; ::_thesis: verum end; end; :: deftheorem Def23 defines hom ENS_1:def_23_:_ for C being Category for f, g being Morphism of C for b4 being Function of (Hom ((cod f),(dom g))),(Hom ((dom f),(cod g))) holds ( b4 = hom (f,g) iff for h being Morphism of C st h in Hom ((cod f),(dom g)) holds b4 . h = (g (*) h) (*) f ); theorem Th52: :: ENS_1:52 for C being Category for f, g being Morphism of C holds [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] is Element of Maps (Hom C) proof let C be Category; ::_thesis: for f, g being Morphism of C holds [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] is Element of Maps (Hom C) let f, g be Morphism of C; ::_thesis: [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] is Element of Maps (Hom C) A1: ( Hom ((dom f),(cod g)) in Hom C & Hom ((cod f),(dom g)) in Hom C ) ; ( Hom ((dom f),(cod g)) = {} implies Hom ((cod f),(dom g)) = {} ) by Th51; hence [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] is Element of Maps (Hom C) by A1, Th5; ::_thesis: verum end; theorem Th53: :: ENS_1:53 for C being Category for a being Object of C for f being Morphism of C holds ( hom ((id a),f) = hom (a,f) & hom (f,(id a)) = hom (f,a) ) proof let C be Category; ::_thesis: for a being Object of C for f being Morphism of C holds ( hom ((id a),f) = hom (a,f) & hom (f,(id a)) = hom (f,a) ) let a be Object of C; ::_thesis: for f being Morphism of C holds ( hom ((id a),f) = hom (a,f) & hom (f,(id a)) = hom (f,a) ) let f be Morphism of C; ::_thesis: ( hom ((id a),f) = hom (a,f) & hom (f,(id a)) = hom (f,a) ) A1: cod (id a) = a ; now__::_thesis:_(_dom_(hom_((id_a),f))_=_Hom_(a,(dom_f))_&_dom_(hom_(a,f))_=_Hom_(a,(dom_f))_&_(_for_x_being_set_st_x_in_Hom_(a,(dom_f))_holds_ (hom_((id_a),f))_._x_=_(hom_(a,f))_._x_)_) Hom ((dom f),(cod f)) <> {} by CAT_1:2; then ( Hom (a,(cod f)) = {} implies Hom (a,(dom f)) = {} ) by CAT_1:24; hence ( dom (hom ((id a),f)) = Hom (a,(dom f)) & dom (hom (a,f)) = Hom (a,(dom f)) ) by FUNCT_2:def_1; ::_thesis: for x being set st x in Hom (a,(dom f)) holds (hom ((id a),f)) . x = (hom (a,f)) . x let x be set ; ::_thesis: ( x in Hom (a,(dom f)) implies (hom ((id a),f)) . x = (hom (a,f)) . x ) assume A2: x in Hom (a,(dom f)) ; ::_thesis: (hom ((id a),f)) . x = (hom (a,f)) . x then reconsider g = x as Morphism of C ; A3: dom g = a by A2, CAT_1:1; A4: cod g = dom f by A2, CAT_1:1; thus (hom ((id a),f)) . x = (f (*) g) (*) (id a) by A2, Def23 .= f (*) (g (*) (id a)) by A1, A3, A4, CAT_1:18 .= f (*) g by A3, CAT_1:22 .= (hom (a,f)) . x by A2, Def19 ; ::_thesis: verum end; hence hom ((id a),f) = hom (a,f) by FUNCT_1:2; ::_thesis: hom (f,(id a)) = hom (f,a) now__::_thesis:_(_dom_(hom_(f,(id_a)))_=_Hom_((cod_f),a)_&_dom_(hom_(f,a))_=_Hom_((cod_f),a)_&_(_for_x_being_set_st_x_in_Hom_((cod_f),a)_holds_ (hom_(f,(id_a)))_._x_=_(hom_(f,a))_._x_)_) Hom ((dom f),(cod f)) <> {} by CAT_1:2; then ( Hom ((dom f),a) = {} implies Hom ((cod f),a) = {} ) by CAT_1:24; hence ( dom (hom (f,(id a))) = Hom ((cod f),a) & dom (hom (f,a)) = Hom ((cod f),a) ) by FUNCT_2:def_1; ::_thesis: for x being set st x in Hom ((cod f),a) holds (hom (f,(id a))) . x = (hom (f,a)) . x let x be set ; ::_thesis: ( x in Hom ((cod f),a) implies (hom (f,(id a))) . x = (hom (f,a)) . x ) assume A5: x in Hom ((cod f),a) ; ::_thesis: (hom (f,(id a))) . x = (hom (f,a)) . x then reconsider g = x as Morphism of C ; A6: cod g = a by A5, CAT_1:1; thus (hom (f,(id a))) . x = ((id a) (*) g) (*) f by A5, Def23 .= g (*) f by A6, CAT_1:21 .= (hom (f,a)) . x by A5, Def20 ; ::_thesis: verum end; hence hom (f,(id a)) = hom (f,a) by FUNCT_1:2; ::_thesis: verum end; theorem Th54: :: ENS_1:54 for C being Category for a, b being Object of C holds hom ((id a),(id b)) = id (Hom (a,b)) proof let C be Category; ::_thesis: for a, b being Object of C holds hom ((id a),(id b)) = id (Hom (a,b)) let a, b be Object of C; ::_thesis: hom ((id a),(id b)) = id (Hom (a,b)) thus hom ((id a),(id b)) = hom (a,(id b)) by Th53 .= id (Hom (a,b)) by Th43 ; ::_thesis: verum end; theorem :: ENS_1:55 for C being Category for f, g being Morphism of C holds hom (f,g) = (hom ((dom f),g)) * (hom (f,(dom g))) proof let C be Category; ::_thesis: for f, g being Morphism of C holds hom (f,g) = (hom ((dom f),g)) * (hom (f,(dom g))) let f, g be Morphism of C; ::_thesis: hom (f,g) = (hom ((dom f),g)) * (hom (f,(dom g))) now__::_thesis:_(_dom_(hom_(f,g))_=_Hom_((cod_f),(dom_g))_&_dom_((hom_((dom_f),g))_*_(hom_(f,(dom_g))))_=_Hom_((cod_f),(dom_g))_&_(_for_x_being_set_st_x_in_Hom_((cod_f),(dom_g))_holds_ (hom_(f,g))_._x_=_((hom_((dom_f),g))_*_(hom_(f,(dom_g))))_._x_)_) A1: ( Hom ((dom f),(cod g)) = {} implies Hom ((cod f),(dom g)) = {} ) by Th51; hence dom (hom (f,g)) = Hom ((cod f),(dom g)) by FUNCT_2:def_1; ::_thesis: ( dom ((hom ((dom f),g)) * (hom (f,(dom g)))) = Hom ((cod f),(dom g)) & ( for x being set st x in Hom ((cod f),(dom g)) holds (hom (f,g)) . x = ((hom ((dom f),g)) * (hom (f,(dom g)))) . x ) ) Hom ((dom f),(cod f)) <> {} by CAT_1:2; then ( Hom ((dom f),(dom g)) = {} implies Hom ((cod f),(dom g)) = {} ) by CAT_1:24; hence A2: dom ((hom ((dom f),g)) * (hom (f,(dom g)))) = Hom ((cod f),(dom g)) by A1, FUNCT_2:def_1; ::_thesis: for x being set st x in Hom ((cod f),(dom g)) holds (hom (f,g)) . x = ((hom ((dom f),g)) * (hom (f,(dom g)))) . x let x be set ; ::_thesis: ( x in Hom ((cod f),(dom g)) implies (hom (f,g)) . x = ((hom ((dom f),g)) * (hom (f,(dom g)))) . x ) assume A3: x in Hom ((cod f),(dom g)) ; ::_thesis: (hom (f,g)) . x = ((hom ((dom f),g)) * (hom (f,(dom g)))) . x then reconsider h = x as Morphism of C ; A4: dom h = cod f by A3, CAT_1:1; then A5: dom (h (*) f) = dom f by CAT_1:17; A6: cod h = dom g by A3, CAT_1:1; then cod (h (*) f) = dom g by A4, CAT_1:17; then A7: h (*) f in Hom ((dom f),(dom g)) by A5; thus (hom (f,g)) . x = (g (*) h) (*) f by A3, Def23 .= g (*) (h (*) f) by A4, A6, CAT_1:18 .= (hom ((dom f),g)) . (h (*) f) by A7, Def19 .= (hom ((dom f),g)) . ((hom (f,(dom g))) . h) by A3, Def20 .= ((hom ((dom f),g)) * (hom (f,(dom g)))) . x by A2, A3, FUNCT_1:12 ; ::_thesis: verum end; hence hom (f,g) = (hom ((dom f),g)) * (hom (f,(dom g))) by FUNCT_1:2; ::_thesis: verum end; theorem Th56: :: ENS_1:56 for C being Category for g, f, g9, f9 being Morphism of C st cod g = dom f & dom g9 = cod f9 holds hom ((f (*) g),(g9 (*) f9)) = (hom (g,g9)) * (hom (f,f9)) proof let C be Category; ::_thesis: for g, f, g9, f9 being Morphism of C st cod g = dom f & dom g9 = cod f9 holds hom ((f (*) g),(g9 (*) f9)) = (hom (g,g9)) * (hom (f,f9)) let g, f, g9, f9 be Morphism of C; ::_thesis: ( cod g = dom f & dom g9 = cod f9 implies hom ((f (*) g),(g9 (*) f9)) = (hom (g,g9)) * (hom (f,f9)) ) assume that A1: cod g = dom f and A2: dom g9 = cod f9 ; ::_thesis: hom ((f (*) g),(g9 (*) f9)) = (hom (g,g9)) * (hom (f,f9)) A3: dom (g9 (*) f9) = dom f9 by A2, CAT_1:17; A4: cod (f (*) g) = cod f by A1, CAT_1:17; A5: ( cod (g9 (*) f9) = cod g9 & dom (f (*) g) = dom g ) by A1, A2, CAT_1:17; now__::_thesis:_(_dom_(hom_((f_(*)_g),(g9_(*)_f9)))_=_Hom_((cod_f),(dom_f9))_&_dom_((hom_(g,g9))_*_(hom_(f,f9)))_=_Hom_((cod_f),(dom_f9))_&_(_for_x_being_set_st_x_in_Hom_((cod_f),(dom_f9))_holds_ (hom_((f_(*)_g),(g9_(*)_f9)))_._x_=_((hom_(g,g9))_*_(hom_(f,f9)))_._x_)_) set h = hom ((f (*) g),(g9 (*) f9)); set h2 = hom (g,g9); set h1 = hom (f,f9); A6: ( Hom ((dom f),(cod f9)) = {} implies Hom ((cod f),(dom f9)) = {} ) by Th51; A7: ( Hom ((dom g),(cod g9)) = {} implies Hom ((cod g),(dom g9)) = {} ) by Th51; hence dom (hom ((f (*) g),(g9 (*) f9))) = Hom ((cod f),(dom f9)) by A1, A2, A3, A5, A4, A6, FUNCT_2:def_1; ::_thesis: ( dom ((hom (g,g9)) * (hom (f,f9))) = Hom ((cod f),(dom f9)) & ( for x being set st x in Hom ((cod f),(dom f9)) holds (hom ((f (*) g),(g9 (*) f9))) . x = ((hom (g,g9)) * (hom (f,f9))) . x ) ) thus A8: dom ((hom (g,g9)) * (hom (f,f9))) = Hom ((cod f),(dom f9)) by A1, A2, A7, A6, FUNCT_2:def_1; ::_thesis: for x being set st x in Hom ((cod f),(dom f9)) holds (hom ((f (*) g),(g9 (*) f9))) . x = ((hom (g,g9)) * (hom (f,f9))) . x let x be set ; ::_thesis: ( x in Hom ((cod f),(dom f9)) implies (hom ((f (*) g),(g9 (*) f9))) . x = ((hom (g,g9)) * (hom (f,f9))) . x ) assume A9: x in Hom ((cod f),(dom f9)) ; ::_thesis: (hom ((f (*) g),(g9 (*) f9))) . x = ((hom (g,g9)) * (hom (f,f9))) . x then reconsider k = x as Morphism of C ; A10: (hom (f,f9)) . x in Hom ((cod g),(dom g9)) by A1, A2, A9, Th51, FUNCT_2:5; then reconsider l = (hom (f,f9)) . x as Morphism of C ; A11: dom k = cod f by A9, CAT_1:1; then A12: cod (k (*) (f (*) g)) = cod k by A4, CAT_1:17; A13: cod k = dom f9 by A9, CAT_1:1; then A14: dom (f9 (*) k) = dom k by CAT_1:17; then A15: dom ((f9 (*) k) (*) f) = dom f by A11, CAT_1:17; cod (f9 (*) k) = cod f9 by A13, CAT_1:17; then A16: cod ((f9 (*) k) (*) f) = cod f9 by A11, A14, CAT_1:17; thus (hom ((f (*) g),(g9 (*) f9))) . x = ((g9 (*) f9) (*) k) (*) (f (*) g) by A3, A4, A9, Def23 .= (g9 (*) f9) (*) (k (*) (f (*) g)) by A3, A4, A13, A11, CAT_1:18 .= g9 (*) (f9 (*) (k (*) (f (*) g))) by A2, A13, A12, CAT_1:18 .= g9 (*) ((f9 (*) k) (*) (f (*) g)) by A4, A13, A11, CAT_1:18 .= g9 (*) (((f9 (*) k) (*) f) (*) g) by A1, A11, A14, CAT_1:18 .= (g9 (*) ((f9 (*) k) (*) f)) (*) g by A1, A2, A15, A16, CAT_1:18 .= (g9 (*) l) (*) g by A9, Def23 .= (hom (g,g9)) . l by A10, Def23 .= ((hom (g,g9)) * (hom (f,f9))) . x by A8, A9, FUNCT_1:12 ; ::_thesis: verum end; hence hom ((f (*) g),(g9 (*) f9)) = (hom (g,g9)) * (hom (f,f9)) by FUNCT_1:2; ::_thesis: verum end; definition let C be Category; func hom?? C -> Function of the carrier' of [:C,C:],(Maps (Hom C)) means :Def24: :: ENS_1:def 24 for f, g being Morphism of C holds it . [f,g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))]; existence ex b1 being Function of the carrier' of [:C,C:],(Maps (Hom C)) st for f, g being Morphism of C holds b1 . [f,g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] proof defpred S1[ set , set ] means for f, g being Morphism of C st $1 = [f,g] holds $2 = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))]; set X = the carrier' of [:C,C:]; set Y = Maps (Hom C); A1: for x being set st x in the carrier' of [:C,C:] holds ex y being set st ( y in Maps (Hom C) & S1[x,y] ) proof let x be set ; ::_thesis: ( x in the carrier' of [:C,C:] implies ex y being set st ( y in Maps (Hom C) & S1[x,y] ) ) assume x in the carrier' of [:C,C:] ; ::_thesis: ex y being set st ( y in Maps (Hom C) & S1[x,y] ) then consider f, g being Morphism of C such that A2: x = [f,g] by DOMAIN_1:1; take y = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))]; ::_thesis: ( y in Maps (Hom C) & S1[x,y] ) y is Element of Maps (Hom C) by Th52; hence y in Maps (Hom C) ; ::_thesis: S1[x,y] let f9, g9 be Morphism of C; ::_thesis: ( x = [f9,g9] implies y = [[(Hom ((cod f9),(dom g9))),(Hom ((dom f9),(cod g9)))],(hom (f9,g9))] ) assume x = [f9,g9] ; ::_thesis: y = [[(Hom ((cod f9),(dom g9))),(Hom ((dom f9),(cod g9)))],(hom (f9,g9))] then ( f9 = f & g9 = g ) by A2, XTUPLE_0:1; hence y = [[(Hom ((cod f9),(dom g9))),(Hom ((dom f9),(cod g9)))],(hom (f9,g9))] ; ::_thesis: verum end; consider h being Function such that A3: ( dom h = the carrier' of [:C,C:] & rng h c= Maps (Hom C) ) and A4: for x being set st x in the carrier' of [:C,C:] holds S1[x,h . x] from FUNCT_1:sch_5(A1); reconsider h = h as Function of the carrier' of [:C,C:],(Maps (Hom C)) by A3, FUNCT_2:def_1, RELSET_1:4; take h ; ::_thesis: for f, g being Morphism of C holds h . [f,g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] thus for f, g being Morphism of C holds h . [f,g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] by A4; ::_thesis: verum end; uniqueness for b1, b2 being Function of the carrier' of [:C,C:],(Maps (Hom C)) st ( for f, g being Morphism of C holds b1 . [f,g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] ) & ( for f, g being Morphism of C holds b2 . [f,g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] ) holds b1 = b2 proof let h1, h2 be Function of the carrier' of [:C,C:],(Maps (Hom C)); ::_thesis: ( ( for f, g being Morphism of C holds h1 . [f,g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] ) & ( for f, g being Morphism of C holds h2 . [f,g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] ) implies h1 = h2 ) assume that A5: for f, g being Morphism of C holds h1 . [f,g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] and A6: for f, g being Morphism of C holds h2 . [f,g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] ; ::_thesis: h1 = h2 now__::_thesis:_(_the_carrier'_of_[:C,C:]_=_[:_the_carrier'_of_C,_the_carrier'_of_C:]_&_(_for_f,_g_being_Morphism_of_C_holds_h1_._(f,g)_=_h2_._(f,g)_)_) thus the carrier' of [:C,C:] = [: the carrier' of C, the carrier' of C:] ; ::_thesis: for f, g being Morphism of C holds h1 . (f,g) = h2 . (f,g) let f, g be Morphism of C; ::_thesis: h1 . (f,g) = h2 . (f,g) thus h1 . (f,g) = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] by A5 .= h2 . (f,g) by A6 ; ::_thesis: verum end; hence h1 = h2 by BINOP_1:2; ::_thesis: verum end; end; :: deftheorem Def24 defines hom?? ENS_1:def_24_:_ for C being Category for b2 being Function of the carrier' of [:C,C:],(Maps (Hom C)) holds ( b2 = hom?? C iff for f, g being Morphism of C holds b2 . [f,g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] ); theorem Th57: :: ENS_1:57 for C being Category for a being Object of C holds ( hom?- a = (curry (hom?? C)) . (id a) & hom-? a = (curry' (hom?? C)) . (id a) ) proof let C be Category; ::_thesis: for a being Object of C holds ( hom?- a = (curry (hom?? C)) . (id a) & hom-? a = (curry' (hom?? C)) . (id a) ) let a be Object of C; ::_thesis: ( hom?- a = (curry (hom?? C)) . (id a) & hom-? a = (curry' (hom?? C)) . (id a) ) reconsider T = hom?? C as Function of [: the carrier' of C, the carrier' of C:],(Maps (Hom C)) ; now__::_thesis:_for_f_being_Morphism_of_C_holds_((curry_T)_._(id_a))_._f_=_(hom?-_a)_._f let f be Morphism of C; ::_thesis: ((curry T) . (id a)) . f = (hom?- a) . f thus ((curry T) . (id a)) . f = T . ((id a),f) by FUNCT_5:69 .= [[(Hom ((cod (id a)),(dom f))),(Hom ((dom (id a)),(cod f)))],(hom ((id a),f))] by Def24 .= [[(Hom ((cod (id a)),(dom f))),(Hom ((dom (id a)),(cod f)))],(hom (a,f))] by Th53 .= [[(Hom (a,(dom f))),(Hom ((dom (id a)),(cod f)))],(hom (a,f))] .= [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] .= (hom?- a) . f by Def21 ; ::_thesis: verum end; hence hom?- a = (curry (hom?? C)) . (id a) by FUNCT_2:63; ::_thesis: hom-? a = (curry' (hom?? C)) . (id a) now__::_thesis:_for_f_being_Morphism_of_C_holds_((curry'_T)_._(id_a))_._f_=_(hom-?_a)_._f let f be Morphism of C; ::_thesis: ((curry' T) . (id a)) . f = (hom-? a) . f thus ((curry' T) . (id a)) . f = T . (f,(id a)) by FUNCT_5:70 .= [[(Hom ((cod f),(dom (id a)))),(Hom ((dom f),(cod (id a))))],(hom (f,(id a)))] by Def24 .= [[(Hom ((cod f),(dom (id a)))),(Hom ((dom f),(cod (id a))))],(hom (f,a))] by Th53 .= [[(Hom ((cod f),a)),(Hom ((dom f),(cod (id a))))],(hom (f,a))] .= [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] .= (hom-? a) . f by Def22 ; ::_thesis: verum end; hence hom-? a = (curry' (hom?? C)) . (id a) by FUNCT_2:63; ::_thesis: verum end; Lm11: for V being non empty set for C being Category for a, b being Object of C st Hom C c= V holds for d being Object of (Ens V) st d = Hom (a,b) holds (hom?? C) . [(id a),(id b)] = id d proof let V be non empty set ; ::_thesis: for C being Category for a, b being Object of C st Hom C c= V holds for d being Object of (Ens V) st d = Hom (a,b) holds (hom?? C) . [(id a),(id b)] = id d let C be Category; ::_thesis: for a, b being Object of C st Hom C c= V holds for d being Object of (Ens V) st d = Hom (a,b) holds (hom?? C) . [(id a),(id b)] = id d let a, b be Object of C; ::_thesis: ( Hom C c= V implies for d being Object of (Ens V) st d = Hom (a,b) holds (hom?? C) . [(id a),(id b)] = id d ) A1: Hom (a,b) in Hom C ; assume Hom C c= V ; ::_thesis: for d being Object of (Ens V) st d = Hom (a,b) holds (hom?? C) . [(id a),(id b)] = id d then reconsider A = Hom (a,b) as Element of V by A1; A2: hom ((id a),(id b)) = id A by Th54; let d be Object of (Ens V); ::_thesis: ( d = Hom (a,b) implies (hom?? C) . [(id a),(id b)] = id d ) assume d = Hom (a,b) ; ::_thesis: (hom?? C) . [(id a),(id b)] = id d hence (hom?? C) . [(id a),(id b)] = id$ (@ d) by A2, Def24 .= id d by Th29 ; ::_thesis: verum end; theorem Th58: :: ENS_1:58 for V being non empty set for C being Category st Hom C c= V holds hom?? C is Functor of [:(C opp),C:], Ens V proof let V be non empty set ; ::_thesis: for C being Category st Hom C c= V holds hom?? C is Functor of [:(C opp),C:], Ens V let C be Category; ::_thesis: ( Hom C c= V implies hom?? C is Functor of [:(C opp),C:], Ens V ) assume A1: Hom C c= V ; ::_thesis: hom?? C is Functor of [:(C opp),C:], Ens V then ( C opp = CatStr(# the carrier of C, the carrier' of C, the Target of C, the Source of C,(~ the Comp of C) #) & Maps (Hom C) c= Maps V ) by Th7; then reconsider T = hom?? C as Function of the carrier' of [:(C opp),C:], the carrier' of (Ens V) by FUNCT_2:7; now__::_thesis:_(_(_for_c_being_Object_of_[:(C_opp),C:]_ex_d_being_Object_of_(Ens_V)_st_T_._(id_c)_=_id_d_)_&_(_for_fg_being_Morphism_of_[:(C_opp),C:]_holds_ (_T_._(id_(dom_fg))_=_id_(dom_(T_._fg))_&_T_._(id_(cod_fg))_=_id_(cod_(T_._fg))_)_)_&_(_for_ff,_gg_being_Morphism_of_[:(C_opp),C:]_st_dom_gg_=_cod_ff_holds_ T_._(gg_(*)_ff)_=_(T_._gg)_(*)_(T_._ff)_)_) thus for c being Object of [:(C opp),C:] ex d being Object of (Ens V) st T . (id c) = id d ::_thesis: ( ( for fg being Morphism of [:(C opp),C:] holds ( T . (id (dom fg)) = id (dom (T . fg)) & T . (id (cod fg)) = id (cod (T . fg)) ) ) & ( for ff, gg being Morphism of [:(C opp),C:] st dom gg = cod ff holds T . (gg (*) ff) = (T . gg) (*) (T . ff) ) ) proof let c be Object of [:(C opp),C:]; ::_thesis: ex d being Object of (Ens V) st T . (id c) = id d consider a being Object of (C opp), b being Object of C such that A2: c = [a,b] by DOMAIN_1:1; Hom ((opp a),b) in Hom C ; then reconsider A = Hom ((opp a),b) as Element of V by A1; take d = @ A; ::_thesis: T . (id c) = id d A3: id (opp a) = id a by OPPCAT_1:72; id c = [(id (opp a)),(id b)] by A3, A2, CAT_2:31; hence T . (id c) = id d by A1, Lm11; ::_thesis: verum end; thus for fg being Morphism of [:(C opp),C:] holds ( T . (id (dom fg)) = id (dom (T . fg)) & T . (id (cod fg)) = id (cod (T . fg)) ) ::_thesis: for ff, gg being Morphism of [:(C opp),C:] st dom gg = cod ff holds T . (gg (*) ff) = (T . gg) (*) (T . ff) proof let fg be Morphism of [:(C opp),C:]; ::_thesis: ( T . (id (dom fg)) = id (dom (T . fg)) & T . (id (cod fg)) = id (cod (T . fg)) ) consider f being Morphism of (C opp), g being Morphism of C such that A4: fg = [f,g] by DOMAIN_1:1; ( Hom ((cod (opp f)),(dom g)) in Hom C & Hom ((dom (opp f)),(cod g)) in Hom C ) ; then reconsider A = Hom ((cod (opp f)),(dom g)), B = Hom ((dom (opp f)),(cod g)) as Element of V by A1; set h = T . fg; A5: id (opp (dom f)) = id (dom f) by OPPCAT_1:72; A6: id (opp (cod f)) = id (cod f) by OPPCAT_1:72; A7: [[(Hom ((cod (opp f)),(dom g))),(Hom ((dom (opp f)),(cod g)))],(hom ((opp f),g))] = @ (T . fg) by A4, Def24 .= [[(dom (@ (T . fg))),(cod (@ (T . fg)))],((@ (T . fg)) `2)] by Th8 .= [[(dom (T . fg)),(cod (@ (T . fg)))],((@ (T . fg)) `2)] by Def9 .= [[(dom (T . fg)),(cod (T . fg))],((@ (T . fg)) `2)] by Def10 ; thus T . (id (dom fg)) = T . (id [(dom f),(dom g)]) by A4, CAT_2:28 .= T . [(id (dom f)),(id (dom g))] by CAT_2:31 .= id (@ A) by A1, Lm11, A5 .= id (dom (T . fg)) by A7, Lm1 ; ::_thesis: T . (id (cod fg)) = id (cod (T . fg)) thus T . (id (cod fg)) = T . (id [(cod f),(cod g)]) by A4, CAT_2:28 .= T . [(id (cod f)),(id (cod g))] by CAT_2:31 .= id (@ B) by A1, Lm11, A6 .= id (cod (T . fg)) by A7, Lm1 ; ::_thesis: verum end; let ff, gg be Morphism of [:(C opp),C:]; ::_thesis: ( dom gg = cod ff implies T . (gg (*) ff) = (T . gg) (*) (T . ff) ) assume A8: dom gg = cod ff ; ::_thesis: T . (gg (*) ff) = (T . gg) (*) (T . ff) consider g being Morphism of (C opp), g9 being Morphism of C such that A9: gg = [g,g9] by DOMAIN_1:1; A10: [[(Hom ((cod (opp g)),(dom g9))),(Hom ((dom (opp g)),(cod g9)))],(hom ((opp g),g9))] = @ (T . gg) by A9, Def24 .= [[(dom (@ (T . gg))),(cod (@ (T . gg)))],((@ (T . gg)) `2)] by Th8 .= [[(dom (T . gg)),(cod (@ (T . gg)))],((@ (T . gg)) `2)] by Def9 .= [[(dom (T . gg)),(cod (T . gg))],((@ (T . gg)) `2)] by Def10 ; then A11: (@ (T . gg)) `2 = hom ((opp g),g9) by XTUPLE_0:1; cod (T . gg) = Hom ((dom (opp g)),(cod g9)) by A10, Lm1; then A12: cod (@ (T . gg)) = Hom ((dom (opp g)),(cod g9)) by Def10; A13: dom (T . gg) = Hom ((cod (opp g)),(dom g9)) by A10, Lm1; then A14: dom (@ (T . gg)) = Hom ((cod (opp g)),(dom g9)) by Def9; consider f being Morphism of (C opp), f9 being Morphism of C such that A15: ff = [f,f9] by DOMAIN_1:1; A16: [[(Hom ((cod (opp f)),(dom f9))),(Hom ((dom (opp f)),(cod f9)))],(hom ((opp f),f9))] = @ (T . ff) by A15, Def24 .= [[(dom (@ (T . ff))),(cod (@ (T . ff)))],((@ (T . ff)) `2)] by Th8 .= [[(dom (T . ff)),(cod (@ (T . ff)))],((@ (T . ff)) `2)] by Def9 .= [[(dom (T . ff)),(cod (T . ff))],((@ (T . ff)) `2)] by Def10 ; then A17: (@ (T . ff)) `2 = hom ((opp f),f9) by XTUPLE_0:1; dom (T . ff) = Hom ((cod (opp f)),(dom f9)) by A16, Lm1; then A18: dom (@ (T . ff)) = Hom ((cod (opp f)),(dom f9)) by Def9; A19: cod (T . ff) = Hom ((dom (opp f)),(cod f9)) by A16, Lm1; then A20: cod (@ (T . ff)) = Hom ((dom (opp f)),(cod f9)) by Def10; A21: cod ff = [(cod f),(cod f9)] by A15, CAT_2:28; A22: dom gg = [(dom g),(dom g9)] by A9, CAT_2:28; then A23: cod (opp g) = dom (opp f) by A8, A21, XTUPLE_0:1; then A24: ( dom ((opp f) (*) (opp g)) = dom (opp g) & cod ((opp f) (*) (opp g)) = cod (opp f) ) by CAT_1:17; A25: dom g = cod f by A8, A22, A21, XTUPLE_0:1; A26: dom g9 = cod f9 by A8, A22, A21, XTUPLE_0:1; then A27: ( dom (g9 (*) f9) = dom f9 & cod (g9 (*) f9) = cod g9 ) by CAT_1:17; thus T . (gg (*) ff) = T . [(opp (g (*) f)),(g9 (*) f9)] by A8, A15, A9, CAT_2:30 .= T . [((opp f) (*) (opp g)),(g9 (*) f9)] by A25, OPPCAT_1:18 .= [[(Hom ((cod ((opp f) (*) (opp g))),(dom (g9 (*) f9)))),(Hom ((dom ((opp f) (*) (opp g))),(cod (g9 (*) f9))))],(hom (((opp f) (*) (opp g)),(g9 (*) f9)))] by Def24 .= [[(Hom ((cod (opp f)),(dom f9))),(Hom ((dom (opp g)),(cod g9)))],((hom ((opp g),g9)) * (hom ((opp f),f9)))] by A23, A26, A27, A24, Th56 .= (@ (T . gg)) * (@ (T . ff)) by A17, A18, A20, A11, A14, A12, A23, A26, Def6 .= (T . gg) (*) (T . ff) by A19, A13, A23, A26, Th28 ; ::_thesis: verum end; hence hom?? C is Functor of [:(C opp),C:], Ens V by CAT_1:61; ::_thesis: verum end; definition let V be non empty set ; let C be Category; let a be Object of C; assume A1: Hom C c= V ; func hom?- (V,a) -> Functor of C, Ens V equals :Def25: :: ENS_1:def 25 hom?- a; coherence hom?- a is Functor of C, Ens V by A1, Th49; func hom-? (V,a) -> Contravariant_Functor of C, Ens V equals :Def26: :: ENS_1:def 26 hom-? a; coherence hom-? a is Contravariant_Functor of C, Ens V by A1, Th50; end; :: deftheorem Def25 defines hom?- ENS_1:def_25_:_ for V being non empty set for C being Category for a being Object of C st Hom C c= V holds hom?- (V,a) = hom?- a; :: deftheorem Def26 defines hom-? ENS_1:def_26_:_ for V being non empty set for C being Category for a being Object of C st Hom C c= V holds hom-? (V,a) = hom-? a; definition let V be non empty set ; let C be Category; assume A1: Hom C c= V ; func hom?? (V,C) -> Functor of [:(C opp),C:], Ens V equals :Def27: :: ENS_1:def 27 hom?? C; coherence hom?? C is Functor of [:(C opp),C:], Ens V by A1, Th58; end; :: deftheorem Def27 defines hom?? ENS_1:def_27_:_ for V being non empty set for C being Category st Hom C c= V holds hom?? (V,C) = hom?? C; theorem :: ENS_1:59 for V being non empty set for C being Category for a being Object of C for f being Morphism of C st Hom C c= V holds (hom?- (V,a)) . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] proof let V be non empty set ; ::_thesis: for C being Category for a being Object of C for f being Morphism of C st Hom C c= V holds (hom?- (V,a)) . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] let C be Category; ::_thesis: for a being Object of C for f being Morphism of C st Hom C c= V holds (hom?- (V,a)) . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] let a be Object of C; ::_thesis: for f being Morphism of C st Hom C c= V holds (hom?- (V,a)) . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] let f be Morphism of C; ::_thesis: ( Hom C c= V implies (hom?- (V,a)) . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] ) assume Hom C c= V ; ::_thesis: (hom?- (V,a)) . f = [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] hence (hom?- (V,a)) . f = (hom?- a) . f by Def25 .= [[(Hom (a,(dom f))),(Hom (a,(cod f)))],(hom (a,f))] by Def21 ; ::_thesis: verum end; theorem :: ENS_1:60 for V being non empty set for C being Category for a, b being Object of C st Hom C c= V holds (Obj (hom?- (V,a))) . b = Hom (a,b) proof let V be non empty set ; ::_thesis: for C being Category for a, b being Object of C st Hom C c= V holds (Obj (hom?- (V,a))) . b = Hom (a,b) let C be Category; ::_thesis: for a, b being Object of C st Hom C c= V holds (Obj (hom?- (V,a))) . b = Hom (a,b) let a, b be Object of C; ::_thesis: ( Hom C c= V implies (Obj (hom?- (V,a))) . b = Hom (a,b) ) assume A1: Hom C c= V ; ::_thesis: (Obj (hom?- (V,a))) . b = Hom (a,b) Hom (a,b) in Hom C ; then reconsider A = Hom (a,b) as Element of V by A1; set d = @ A; (hom?- (V,a)) . (id b) = (hom?- a) . (id b) by A1, Def25 .= id (@ A) by A1, Lm9 ; hence (Obj (hom?- (V,a))) . b = Hom (a,b) by CAT_1:67; ::_thesis: verum end; theorem :: ENS_1:61 for V being non empty set for C being Category for a being Object of C for f being Morphism of C st Hom C c= V holds (hom-? (V,a)) . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] proof let V be non empty set ; ::_thesis: for C being Category for a being Object of C for f being Morphism of C st Hom C c= V holds (hom-? (V,a)) . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] let C be Category; ::_thesis: for a being Object of C for f being Morphism of C st Hom C c= V holds (hom-? (V,a)) . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] let a be Object of C; ::_thesis: for f being Morphism of C st Hom C c= V holds (hom-? (V,a)) . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] let f be Morphism of C; ::_thesis: ( Hom C c= V implies (hom-? (V,a)) . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] ) assume Hom C c= V ; ::_thesis: (hom-? (V,a)) . f = [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] hence (hom-? (V,a)) . f = (hom-? a) . f by Def26 .= [[(Hom ((cod f),a)),(Hom ((dom f),a))],(hom (f,a))] by Def22 ; ::_thesis: verum end; theorem :: ENS_1:62 for V being non empty set for C being Category for a, b being Object of C st Hom C c= V holds (Obj (hom-? (V,a))) . b = Hom (b,a) proof let V be non empty set ; ::_thesis: for C being Category for a, b being Object of C st Hom C c= V holds (Obj (hom-? (V,a))) . b = Hom (b,a) let C be Category; ::_thesis: for a, b being Object of C st Hom C c= V holds (Obj (hom-? (V,a))) . b = Hom (b,a) let a, b be Object of C; ::_thesis: ( Hom C c= V implies (Obj (hom-? (V,a))) . b = Hom (b,a) ) assume A1: Hom C c= V ; ::_thesis: (Obj (hom-? (V,a))) . b = Hom (b,a) Hom (b,a) in Hom C ; then reconsider A = Hom (b,a) as Element of V by A1; set d = @ A; (hom-? (V,a)) . (id b) = (hom-? a) . (id b) by A1, Def26 .= id (@ A) by A1, Lm10 ; hence (Obj (hom-? (V,a))) . b = Hom (b,a) by OPPCAT_1:30; ::_thesis: verum end; theorem :: ENS_1:63 for V being non empty set for C being Category for f, g being Morphism of C st Hom C c= V holds (hom?? (V,C)) . [(f opp),g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] proof let V be non empty set ; ::_thesis: for C being Category for f, g being Morphism of C st Hom C c= V holds (hom?? (V,C)) . [(f opp),g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] let C be Category; ::_thesis: for f, g being Morphism of C st Hom C c= V holds (hom?? (V,C)) . [(f opp),g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] let f, g be Morphism of C; ::_thesis: ( Hom C c= V implies (hom?? (V,C)) . [(f opp),g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] ) assume A1: Hom C c= V ; ::_thesis: (hom?? (V,C)) . [(f opp),g] = [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] thus (hom?? (V,C)) . [(f opp),g] = (hom?? C) . [f,g] by A1, Def27 .= [[(Hom ((cod f),(dom g))),(Hom ((dom f),(cod g)))],(hom (f,g))] by Def24 ; ::_thesis: verum end; theorem :: ENS_1:64 for V being non empty set for C being Category for a, b being Object of C st Hom C c= V holds (Obj (hom?? (V,C))) . [(a opp),b] = Hom (a,b) proof let V be non empty set ; ::_thesis: for C being Category for a, b being Object of C st Hom C c= V holds (Obj (hom?? (V,C))) . [(a opp),b] = Hom (a,b) let C be Category; ::_thesis: for a, b being Object of C st Hom C c= V holds (Obj (hom?? (V,C))) . [(a opp),b] = Hom (a,b) let a, b be Object of C; ::_thesis: ( Hom C c= V implies (Obj (hom?? (V,C))) . [(a opp),b] = Hom (a,b) ) assume A1: Hom C c= V ; ::_thesis: (Obj (hom?? (V,C))) . [(a opp),b] = Hom (a,b) Hom (a,b) in Hom C ; then reconsider A = Hom (a,b) as Element of V by A1; A2: id (a opp) = id a by OPPCAT_1:71; set d = @ A; (hom?? (V,C)) . (id [(a opp),b]) = (hom?? (V,C)) . [(id (a opp)),(id b)] by CAT_2:31 .= (hom?? C) . [(id a),(id b)] by A1, Def27, A2 .= id (@ A) by A1, Lm11 ; hence (Obj (hom?? (V,C))) . [(a opp),b] = Hom (a,b) by CAT_1:67; ::_thesis: verum end; theorem :: ENS_1:65 for V being non empty set for C being Category for a being Object of C st Hom C c= V holds (hom?? (V,C)) ?- (a opp) = hom?- (V,a) proof let V be non empty set ; ::_thesis: for C being Category for a being Object of C st Hom C c= V holds (hom?? (V,C)) ?- (a opp) = hom?- (V,a) let C be Category; ::_thesis: for a being Object of C st Hom C c= V holds (hom?? (V,C)) ?- (a opp) = hom?- (V,a) let a be Object of C; ::_thesis: ( Hom C c= V implies (hom?? (V,C)) ?- (a opp) = hom?- (V,a) ) assume A1: Hom C c= V ; ::_thesis: (hom?? (V,C)) ?- (a opp) = hom?- (V,a) A2: id (a opp) = id a by OPPCAT_1:71; thus (hom?? (V,C)) ?- (a opp) = (curry (hom?? C)) . (id a) by A1, Def27, A2 .= hom?- a by Th57 .= hom?- (V,a) by A1, Def25 ; ::_thesis: verum end; theorem :: ENS_1:66 for V being non empty set for C being Category for a being Object of C st Hom C c= V holds (hom?? (V,C)) -? a = hom-? (V,a) proof let V be non empty set ; ::_thesis: for C being Category for a being Object of C st Hom C c= V holds (hom?? (V,C)) -? a = hom-? (V,a) let C be Category; ::_thesis: for a being Object of C st Hom C c= V holds (hom?? (V,C)) -? a = hom-? (V,a) let a be Object of C; ::_thesis: ( Hom C c= V implies (hom?? (V,C)) -? a = hom-? (V,a) ) assume A1: Hom C c= V ; ::_thesis: (hom?? (V,C)) -? a = hom-? (V,a) hence (hom?? (V,C)) -? a = (curry' (hom?? C)) . (id a) by Def27 .= hom-? a by Th57 .= hom-? (V,a) by A1, Def26 ; ::_thesis: verum end;