:: ENDALG semantic presentation begin definition let UA be Universal_Algebra; func UAEnd UA -> FUNCTION_DOMAIN of the carrier of UA, the carrier of UA means :Def1: :: ENDALG:def 1 for h being Function of UA,UA holds ( h in it iff h is_homomorphism UA,UA ); existence ex b1 being FUNCTION_DOMAIN of the carrier of UA, the carrier of UA st for h being Function of UA,UA holds ( h in b1 iff h is_homomorphism UA,UA ) proof set F = { x where x is Element of Funcs ( the carrier of UA, the carrier of UA) : x is_homomorphism UA,UA } ; A1: id the carrier of UA in { x where x is Element of Funcs ( the carrier of UA, the carrier of UA) : x is_homomorphism UA,UA } proof set I = id the carrier of UA; ( id the carrier of UA in Funcs ( the carrier of UA, the carrier of UA) & id the carrier of UA is_homomorphism UA,UA ) by ALG_1:5, FUNCT_2:8; hence id the carrier of UA in { x where x is Element of Funcs ( the carrier of UA, the carrier of UA) : x is_homomorphism UA,UA } ; ::_thesis: verum end; { x where x is Element of Funcs ( the carrier of UA, the carrier of UA) : x is_homomorphism UA,UA } is functional proof let q be set ; :: according to FUNCT_1:def_13 ::_thesis: ( not q in { x where x is Element of Funcs ( the carrier of UA, the carrier of UA) : x is_homomorphism UA,UA } or q is set ) assume q in { x where x is Element of Funcs ( the carrier of UA, the carrier of UA) : x is_homomorphism UA,UA } ; ::_thesis: q is set then ex x being Element of Funcs ( the carrier of UA, the carrier of UA) st ( q = x & x is_homomorphism UA,UA ) ; hence q is set ; ::_thesis: verum end; then reconsider F = { x where x is Element of Funcs ( the carrier of UA, the carrier of UA) : x is_homomorphism UA,UA } as functional non empty set by A1; F is FUNCTION_DOMAIN of the carrier of UA, the carrier of UA proof let a be Element of F; :: according to FUNCT_2:def_12 ::_thesis: a is Element of bool [: the carrier of UA, the carrier of UA:] a in F ; then ex x being Element of Funcs ( the carrier of UA, the carrier of UA) st ( a = x & x is_homomorphism UA,UA ) ; hence a is Element of bool [: the carrier of UA, the carrier of UA:] ; ::_thesis: verum end; then reconsider F = F as FUNCTION_DOMAIN of the carrier of UA, the carrier of UA ; take F ; ::_thesis: for h being Function of UA,UA holds ( h in F iff h is_homomorphism UA,UA ) let h be Function of UA,UA; ::_thesis: ( h in F iff h is_homomorphism UA,UA ) thus ( h in F implies h is_homomorphism UA,UA ) ::_thesis: ( h is_homomorphism UA,UA implies h in F ) proof assume h in F ; ::_thesis: h is_homomorphism UA,UA then ex f being Element of Funcs ( the carrier of UA, the carrier of UA) st ( f = h & f is_homomorphism UA,UA ) ; hence h is_homomorphism UA,UA ; ::_thesis: verum end; A2: h is Element of Funcs ( the carrier of UA, the carrier of UA) by FUNCT_2:8; assume h is_homomorphism UA,UA ; ::_thesis: h in F hence h in F by A2; ::_thesis: verum end; uniqueness for b1, b2 being FUNCTION_DOMAIN of the carrier of UA, the carrier of UA st ( for h being Function of UA,UA holds ( h in b1 iff h is_homomorphism UA,UA ) ) & ( for h being Function of UA,UA holds ( h in b2 iff h is_homomorphism UA,UA ) ) holds b1 = b2 proof let F1, F2 be FUNCTION_DOMAIN of the carrier of UA, the carrier of UA; ::_thesis: ( ( for h being Function of UA,UA holds ( h in F1 iff h is_homomorphism UA,UA ) ) & ( for h being Function of UA,UA holds ( h in F2 iff h is_homomorphism UA,UA ) ) implies F1 = F2 ) assume that A3: for h being Function of UA,UA holds ( h in F1 iff h is_homomorphism UA,UA ) and A4: for h being Function of UA,UA holds ( h in F2 iff h is_homomorphism UA,UA ) ; ::_thesis: F1 = F2 A5: for f being Element of F2 holds f is Function of UA,UA ; A6: F2 c= F1 proof let q be set ; :: according to TARSKI:def_3 ::_thesis: ( not q in F2 or q in F1 ) assume A7: q in F2 ; ::_thesis: q in F1 then reconsider h1 = q as Function of UA,UA by A5; h1 is_homomorphism UA,UA by A4, A7; hence q in F1 by A3; ::_thesis: verum end; A8: for f being Element of F1 holds f is Function of UA,UA ; F1 c= F2 proof let q be set ; :: according to TARSKI:def_3 ::_thesis: ( not q in F1 or q in F2 ) assume A9: q in F1 ; ::_thesis: q in F2 then reconsider h1 = q as Function of UA,UA by A8; h1 is_homomorphism UA,UA by A3, A9; hence q in F2 by A4; ::_thesis: verum end; hence F1 = F2 by A6, XBOOLE_0:def_10; ::_thesis: verum end; end; :: deftheorem Def1 defines UAEnd ENDALG:def_1_:_ for UA being Universal_Algebra for b2 being FUNCTION_DOMAIN of the carrier of UA, the carrier of UA holds ( b2 = UAEnd UA iff for h being Function of UA,UA holds ( h in b2 iff h is_homomorphism UA,UA ) ); theorem :: ENDALG:1 for UA being Universal_Algebra holds UAEnd UA c= Funcs ( the carrier of UA, the carrier of UA) proof let UA be Universal_Algebra; ::_thesis: UAEnd UA c= Funcs ( the carrier of UA, the carrier of UA) let q be set ; :: according to TARSKI:def_3 ::_thesis: ( not q in UAEnd UA or q in Funcs ( the carrier of UA, the carrier of UA) ) assume q in UAEnd UA ; ::_thesis: q in Funcs ( the carrier of UA, the carrier of UA) then q is Element of UAEnd UA ; hence q in Funcs ( the carrier of UA, the carrier of UA) by FUNCT_2:9; ::_thesis: verum end; theorem Th2: :: ENDALG:2 for UA being Universal_Algebra holds id the carrier of UA in UAEnd UA proof let UA be Universal_Algebra; ::_thesis: id the carrier of UA in UAEnd UA id the carrier of UA is_homomorphism UA,UA by ALG_1:5; hence id the carrier of UA in UAEnd UA by Def1; ::_thesis: verum end; theorem Th3: :: ENDALG:3 for UA being Universal_Algebra for f1, f2 being Element of UAEnd UA holds f1 * f2 in UAEnd UA proof let UA be Universal_Algebra; ::_thesis: for f1, f2 being Element of UAEnd UA holds f1 * f2 in UAEnd UA let f1, f2 be Element of UAEnd UA; ::_thesis: f1 * f2 in UAEnd UA ( f1 is_homomorphism UA,UA & f2 is_homomorphism UA,UA ) by Def1; then f1 * f2 is_homomorphism UA,UA by ALG_1:6; hence f1 * f2 in UAEnd UA by Def1; ::_thesis: verum end; definition let UA be Universal_Algebra; func UAEndComp UA -> BinOp of (UAEnd UA) means :Def2: :: ENDALG:def 2 for x, y being Element of UAEnd UA holds it . (x,y) = y * x; existence ex b1 being BinOp of (UAEnd UA) st for x, y being Element of UAEnd UA holds b1 . (x,y) = y * x proof defpred S1[ Element of UAEnd UA, Element of UAEnd UA, set ] means $3 = $2 * $1; A1: for x, y being Element of UAEnd UA ex m being Element of UAEnd UA st S1[x,y,m] proof let x, y be Element of UAEnd UA; ::_thesis: ex m being Element of UAEnd UA st S1[x,y,m] reconsider xx = x, yy = y as Function of UA,UA ; reconsider m = yy * xx as Element of UAEnd UA by Th3; take m ; ::_thesis: S1[x,y,m] thus S1[x,y,m] ; ::_thesis: verum end; ex B being BinOp of (UAEnd UA) st for x, y being Element of UAEnd UA holds S1[x,y,B . (x,y)] from BINOP_1:sch_3(A1); hence ex b1 being BinOp of (UAEnd UA) st for x, y being Element of UAEnd UA holds b1 . (x,y) = y * x ; ::_thesis: verum end; uniqueness for b1, b2 being BinOp of (UAEnd UA) st ( for x, y being Element of UAEnd UA holds b1 . (x,y) = y * x ) & ( for x, y being Element of UAEnd UA holds b2 . (x,y) = y * x ) holds b1 = b2 proof let b1, b2 be BinOp of (UAEnd UA); ::_thesis: ( ( for x, y being Element of UAEnd UA holds b1 . (x,y) = y * x ) & ( for x, y being Element of UAEnd UA holds b2 . (x,y) = y * x ) implies b1 = b2 ) assume that A2: for x, y being Element of UAEnd UA holds b1 . (x,y) = y * x and A3: for x, y being Element of UAEnd UA holds b2 . (x,y) = y * x ; ::_thesis: b1 = b2 for x, y being Element of UAEnd UA holds b1 . (x,y) = b2 . (x,y) proof let x, y be Element of UAEnd UA; ::_thesis: b1 . (x,y) = b2 . (x,y) thus b1 . (x,y) = y * x by A2 .= b2 . (x,y) by A3 ; ::_thesis: verum end; hence b1 = b2 by BINOP_1:2; ::_thesis: verum end; end; :: deftheorem Def2 defines UAEndComp ENDALG:def_2_:_ for UA being Universal_Algebra for b2 being BinOp of (UAEnd UA) holds ( b2 = UAEndComp UA iff for x, y being Element of UAEnd UA holds b2 . (x,y) = y * x ); definition let UA be Universal_Algebra; func UAEndMonoid UA -> strict multLoopStr means :Def3: :: ENDALG:def 3 ( the carrier of it = UAEnd UA & the multF of it = UAEndComp UA & 1. it = id the carrier of UA ); existence ex b1 being strict multLoopStr st ( the carrier of b1 = UAEnd UA & the multF of b1 = UAEndComp UA & 1. b1 = id the carrier of UA ) proof reconsider i = id the carrier of UA as Element of UAEnd UA by Th2; take multLoopStr(# (UAEnd UA),(UAEndComp UA),i #) ; ::_thesis: ( the carrier of multLoopStr(# (UAEnd UA),(UAEndComp UA),i #) = UAEnd UA & the multF of multLoopStr(# (UAEnd UA),(UAEndComp UA),i #) = UAEndComp UA & 1. multLoopStr(# (UAEnd UA),(UAEndComp UA),i #) = id the carrier of UA ) thus ( the carrier of multLoopStr(# (UAEnd UA),(UAEndComp UA),i #) = UAEnd UA & the multF of multLoopStr(# (UAEnd UA),(UAEndComp UA),i #) = UAEndComp UA & 1. multLoopStr(# (UAEnd UA),(UAEndComp UA),i #) = id the carrier of UA ) ; ::_thesis: verum end; uniqueness for b1, b2 being strict multLoopStr st the carrier of b1 = UAEnd UA & the multF of b1 = UAEndComp UA & 1. b1 = id the carrier of UA & the carrier of b2 = UAEnd UA & the multF of b2 = UAEndComp UA & 1. b2 = id the carrier of UA holds b1 = b2 ; end; :: deftheorem Def3 defines UAEndMonoid ENDALG:def_3_:_ for UA being Universal_Algebra for b2 being strict multLoopStr holds ( b2 = UAEndMonoid UA iff ( the carrier of b2 = UAEnd UA & the multF of b2 = UAEndComp UA & 1. b2 = id the carrier of UA ) ); registration let UA be Universal_Algebra; cluster UAEndMonoid UA -> non empty strict ; coherence not UAEndMonoid UA is empty proof reconsider i = id the carrier of UA as Element of UAEnd UA by Th2; set M = multLoopStr(# (UAEnd UA),(UAEndComp UA),i #); 1. multLoopStr(# (UAEnd UA),(UAEndComp UA),i #) = i ; hence not UAEndMonoid UA is empty by Def3; ::_thesis: verum end; end; Lm1: now__::_thesis:_for_UA_being_Universal_Algebra for_x,_e_being_Element_of_(UAEndMonoid_UA)_st_e_=_id_the_carrier_of_UA_holds_ (_x_*_e_=_x_&_e_*_x_=_x_) let UA be Universal_Algebra; ::_thesis: for x, e being Element of (UAEndMonoid UA) st e = id the carrier of UA holds ( x * e = x & e * x = x ) let x, e be Element of (UAEndMonoid UA); ::_thesis: ( e = id the carrier of UA implies ( x * e = x & e * x = x ) ) reconsider i = e, y = x as Element of UAEnd UA by Def3; assume A1: e = id the carrier of UA ; ::_thesis: ( x * e = x & e * x = x ) thus x * e = (UAEndComp UA) . (y,i) by Def3 .= i * y by Def2 .= x by A1, FUNCT_2:17 ; ::_thesis: e * x = x thus e * x = (UAEndComp UA) . (i,y) by Def3 .= y * i by Def2 .= x by A1, FUNCT_2:17 ; ::_thesis: verum end; registration let UA be Universal_Algebra; cluster UAEndMonoid UA -> strict associative well-unital ; coherence ( UAEndMonoid UA is well-unital & UAEndMonoid UA is associative ) proof reconsider i = id the carrier of UA as Element of UAEnd UA by Th2; set H = multLoopStr(# (UAEnd UA),(UAEndComp UA),i #); thus UAEndMonoid UA is well-unital ::_thesis: UAEndMonoid UA is associative proof let x be Element of (UAEndMonoid UA); :: according to VECTSP_1:def_6 ::_thesis: ( x * (1. (UAEndMonoid UA)) = x & (1. (UAEndMonoid UA)) * x = x ) 1. (UAEndMonoid UA) = i by Def3; hence ( x * (1. (UAEndMonoid UA)) = x & (1. (UAEndMonoid UA)) * x = x ) by Lm1; ::_thesis: verum end; for f, g, h being Element of multLoopStr(# (UAEnd UA),(UAEndComp UA),i #) holds (f * g) * h = f * (g * h) proof let f, g, h be Element of multLoopStr(# (UAEnd UA),(UAEndComp UA),i #); ::_thesis: (f * g) * h = f * (g * h) reconsider A = f, B = g, C = h as Element of UAEnd UA ; A1: g * h = C * B by Def2; f * g = B * A by Def2; hence (f * g) * h = C * (B * A) by Def2 .= (C * B) * A by RELAT_1:36 .= f * (g * h) by A1, Def2 ; ::_thesis: verum end; then ( 1. multLoopStr(# (UAEnd UA),(UAEndComp UA),i #) = i & multLoopStr(# (UAEnd UA),(UAEndComp UA),i #) is associative ) by GROUP_1:def_3; hence UAEndMonoid UA is associative by Def3; ::_thesis: verum end; end; theorem Th4: :: ENDALG:4 for UA being Universal_Algebra for x, y being Element of (UAEndMonoid UA) for f, g being Element of UAEnd UA st x = f & y = g holds x * y = g * f proof let UA be Universal_Algebra; ::_thesis: for x, y being Element of (UAEndMonoid UA) for f, g being Element of UAEnd UA st x = f & y = g holds x * y = g * f reconsider i = id the carrier of UA as Element of UAEnd UA by Th2; let x, y be Element of (UAEndMonoid UA); ::_thesis: for f, g being Element of UAEnd UA st x = f & y = g holds x * y = g * f let f, g be Element of UAEnd UA; ::_thesis: ( x = f & y = g implies x * y = g * f ) set H = multLoopStr(# (UAEnd UA),(UAEndComp UA),i #); 1. multLoopStr(# (UAEnd UA),(UAEndComp UA),i #) = i ; then A1: UAEndMonoid UA = multLoopStr(# (UAEnd UA),(UAEndComp UA),i #) by Def3; assume ( x = f & y = g ) ; ::_thesis: x * y = g * f hence x * y = g * f by A1, Def2; ::_thesis: verum end; theorem :: ENDALG:5 for UA being Universal_Algebra holds id the carrier of UA = 1_ (UAEndMonoid UA) by Def3; definition let S be non empty non void ManySortedSign ; let U1 be non-empty MSAlgebra over S; set T = the Sorts of U1; func MSAEnd U1 -> MSFunctionSet of U1,U1 means :Def4: :: ENDALG:def 4 ( ( for f being Element of it holds f is ManySortedFunction of U1,U1 ) & ( for h being ManySortedFunction of U1,U1 holds ( h in it iff h is_homomorphism U1,U1 ) ) ); existence ex b1 being MSFunctionSet of U1,U1 st ( ( for f being Element of b1 holds f is ManySortedFunction of U1,U1 ) & ( for h being ManySortedFunction of U1,U1 holds ( h in b1 iff h is_homomorphism U1,U1 ) ) ) proof defpred S1[ set ] means ex msf being ManySortedFunction of U1,U1 st ( $1 = msf & msf is_homomorphism U1,U1 ); consider X being set such that A1: for x being set holds ( x in X iff ( x in MSFuncs ( the Sorts of U1, the Sorts of U1) & S1[x] ) ) from XBOOLE_0:sch_1(); ( id the Sorts of U1 in MSFuncs ( the Sorts of U1, the Sorts of U1) & ex F being ManySortedFunction of U1,U1 st ( id the Sorts of U1 = F & F is_homomorphism U1,U1 ) ) by AUTALG_1:20, MSUALG_3:9; then reconsider X = X as non empty set by A1; X c= MSFuncs ( the Sorts of U1, the Sorts of U1) proof let q be set ; :: according to TARSKI:def_3 ::_thesis: ( not q in X or q in MSFuncs ( the Sorts of U1, the Sorts of U1) ) thus ( not q in X or q in MSFuncs ( the Sorts of U1, the Sorts of U1) ) by A1; ::_thesis: verum end; then reconsider X = X as MSFunctionSet of U1,U1 ; take X ; ::_thesis: ( ( for f being Element of X holds f is ManySortedFunction of U1,U1 ) & ( for h being ManySortedFunction of U1,U1 holds ( h in X iff h is_homomorphism U1,U1 ) ) ) thus for f being Element of X holds f is ManySortedFunction of U1,U1 ; ::_thesis: for h being ManySortedFunction of U1,U1 holds ( h in X iff h is_homomorphism U1,U1 ) let h be ManySortedFunction of U1,U1; ::_thesis: ( h in X iff h is_homomorphism U1,U1 ) hereby ::_thesis: ( h is_homomorphism U1,U1 implies h in X ) assume h in X ; ::_thesis: h is_homomorphism U1,U1 then ex msf being ManySortedFunction of U1,U1 st ( h = msf & msf is_homomorphism U1,U1 ) by A1; hence h is_homomorphism U1,U1 ; ::_thesis: verum end; h in MSFuncs ( the Sorts of U1, the Sorts of U1) by AUTALG_1:20; hence ( h is_homomorphism U1,U1 implies h in X ) by A1; ::_thesis: verum end; uniqueness for b1, b2 being MSFunctionSet of U1,U1 st ( for f being Element of b1 holds f is ManySortedFunction of U1,U1 ) & ( for h being ManySortedFunction of U1,U1 holds ( h in b1 iff h is_homomorphism U1,U1 ) ) & ( for f being Element of b2 holds f is ManySortedFunction of U1,U1 ) & ( for h being ManySortedFunction of U1,U1 holds ( h in b2 iff h is_homomorphism U1,U1 ) ) holds b1 = b2 proof let F1, F2 be MSFunctionSet of U1,U1; ::_thesis: ( ( for f being Element of F1 holds f is ManySortedFunction of U1,U1 ) & ( for h being ManySortedFunction of U1,U1 holds ( h in F1 iff h is_homomorphism U1,U1 ) ) & ( for f being Element of F2 holds f is ManySortedFunction of U1,U1 ) & ( for h being ManySortedFunction of U1,U1 holds ( h in F2 iff h is_homomorphism U1,U1 ) ) implies F1 = F2 ) assume that A3: for f being Element of F1 holds f is ManySortedFunction of U1,U1 and A4: for h being ManySortedFunction of U1,U1 holds ( h in F1 iff h is_homomorphism U1,U1 ) and A5: for f being Element of F2 holds f is ManySortedFunction of U1,U1 and A6: for h being ManySortedFunction of U1,U1 holds ( h in F2 iff h is_homomorphism U1,U1 ) ; ::_thesis: F1 = F2 A7: F2 c= F1 proof let q be set ; :: according to TARSKI:def_3 ::_thesis: ( not q in F2 or q in F1 ) assume A8: q in F2 ; ::_thesis: q in F1 then reconsider h1 = q as ManySortedFunction of U1,U1 by A5; h1 is_homomorphism U1,U1 by A6, A8; hence q in F1 by A4; ::_thesis: verum end; F1 c= F2 proof let q be set ; :: according to TARSKI:def_3 ::_thesis: ( not q in F1 or q in F2 ) assume A9: q in F1 ; ::_thesis: q in F2 then reconsider h1 = q as ManySortedFunction of U1,U1 by A3; h1 is_homomorphism U1,U1 by A4, A9; hence q in F2 by A6; ::_thesis: verum end; hence F1 = F2 by A7, XBOOLE_0:def_10; ::_thesis: verum end; end; :: deftheorem Def4 defines MSAEnd ENDALG:def_4_:_ for S being non empty non void ManySortedSign for U1 being non-empty MSAlgebra over S for b3 being MSFunctionSet of U1,U1 holds ( b3 = MSAEnd U1 iff ( ( for f being Element of b3 holds f is ManySortedFunction of U1,U1 ) & ( for h being ManySortedFunction of U1,U1 holds ( h in b3 iff h is_homomorphism U1,U1 ) ) ) ); theorem :: ENDALG:6 for S being non empty non void ManySortedSign for U1 being non-empty MSAlgebra over S holds MSAEnd U1 c= MSFuncs ( the Sorts of U1, the Sorts of U1) ; theorem Th7: :: ENDALG:7 for S being non empty non void ManySortedSign for U1 being non-empty MSAlgebra over S holds id the Sorts of U1 in MSAEnd U1 proof let S be non empty non void ManySortedSign ; ::_thesis: for U1 being non-empty MSAlgebra over S holds id the Sorts of U1 in MSAEnd U1 let U1 be non-empty MSAlgebra over S; ::_thesis: id the Sorts of U1 in MSAEnd U1 id the Sorts of U1 is_homomorphism U1,U1 by MSUALG_3:9; hence id the Sorts of U1 in MSAEnd U1 by Def4; ::_thesis: verum end; theorem Th8: :: ENDALG:8 for S being non empty non void ManySortedSign for U1 being non-empty MSAlgebra over S for f1, f2 being Element of MSAEnd U1 holds f1 ** f2 in MSAEnd U1 proof let S be non empty non void ManySortedSign ; ::_thesis: for U1 being non-empty MSAlgebra over S for f1, f2 being Element of MSAEnd U1 holds f1 ** f2 in MSAEnd U1 let U1 be non-empty MSAlgebra over S; ::_thesis: for f1, f2 being Element of MSAEnd U1 holds f1 ** f2 in MSAEnd U1 let f1, f2 be Element of MSAEnd U1; ::_thesis: f1 ** f2 in MSAEnd U1 ( f1 is_homomorphism U1,U1 & f2 is_homomorphism U1,U1 ) by Def4; then f1 ** f2 is_homomorphism U1,U1 by MSUALG_3:10; hence f1 ** f2 in MSAEnd U1 by Def4; ::_thesis: verum end; theorem Th9: :: ENDALG:9 for UA being Universal_Algebra for F being ManySortedFunction of (MSAlg UA),(MSAlg UA) for f being Element of UAEnd UA st F = 0 .--> f holds F in MSAEnd (MSAlg UA) proof let UA be Universal_Algebra; ::_thesis: for F being ManySortedFunction of (MSAlg UA),(MSAlg UA) for f being Element of UAEnd UA st F = 0 .--> f holds F in MSAEnd (MSAlg UA) let F be ManySortedFunction of (MSAlg UA),(MSAlg UA); ::_thesis: for f being Element of UAEnd UA st F = 0 .--> f holds F in MSAEnd (MSAlg UA) let f be Element of UAEnd UA; ::_thesis: ( F = 0 .--> f implies F in MSAEnd (MSAlg UA) ) assume F = 0 .--> f ; ::_thesis: F in MSAEnd (MSAlg UA) then A1: F = MSAlg f by MSUHOM_1:def_3; f is_homomorphism UA,UA by Def1; then MSAlg f is_homomorphism MSAlg UA,(MSAlg UA) Over (MSSign UA) by MSUHOM_1:16; then F is_homomorphism MSAlg UA, MSAlg UA by A1, MSUHOM_1:9; hence F in MSAEnd (MSAlg UA) by Def4; ::_thesis: verum end; definition let S be non empty non void ManySortedSign ; let U1 be non-empty MSAlgebra over S; func MSAEndComp U1 -> BinOp of (MSAEnd U1) means :Def5: :: ENDALG:def 5 for x, y being Element of MSAEnd U1 holds it . (x,y) = y ** x; existence ex b1 being BinOp of (MSAEnd U1) st for x, y being Element of MSAEnd U1 holds b1 . (x,y) = y ** x proof defpred S1[ Element of MSAEnd U1, Element of MSAEnd U1, set ] means $3 = $2 ** $1; A1: for x, y being Element of MSAEnd U1 ex m being Element of MSAEnd U1 st S1[x,y,m] proof let x, y be Element of MSAEnd U1; ::_thesis: ex m being Element of MSAEnd U1 st S1[x,y,m] reconsider xx = x, yy = y as ManySortedFunction of U1,U1 ; reconsider m = yy ** xx as Element of MSAEnd U1 by Th8; take m ; ::_thesis: S1[x,y,m] thus S1[x,y,m] ; ::_thesis: verum end; ex B being BinOp of (MSAEnd U1) st for x, y being Element of MSAEnd U1 holds S1[x,y,B . (x,y)] from BINOP_1:sch_3(A1); hence ex b1 being BinOp of (MSAEnd U1) st for x, y being Element of MSAEnd U1 holds b1 . (x,y) = y ** x ; ::_thesis: verum end; uniqueness for b1, b2 being BinOp of (MSAEnd U1) st ( for x, y being Element of MSAEnd U1 holds b1 . (x,y) = y ** x ) & ( for x, y being Element of MSAEnd U1 holds b2 . (x,y) = y ** x ) holds b1 = b2 proof let b1, b2 be BinOp of (MSAEnd U1); ::_thesis: ( ( for x, y being Element of MSAEnd U1 holds b1 . (x,y) = y ** x ) & ( for x, y being Element of MSAEnd U1 holds b2 . (x,y) = y ** x ) implies b1 = b2 ) assume that A2: for x, y being Element of MSAEnd U1 holds b1 . (x,y) = y ** x and A3: for x, y being Element of MSAEnd U1 holds b2 . (x,y) = y ** x ; ::_thesis: b1 = b2 for x, y being Element of MSAEnd U1 holds b1 . (x,y) = b2 . (x,y) proof let x, y be Element of MSAEnd U1; ::_thesis: b1 . (x,y) = b2 . (x,y) thus b1 . (x,y) = y ** x by A2 .= b2 . (x,y) by A3 ; ::_thesis: verum end; hence b1 = b2 by BINOP_1:2; ::_thesis: verum end; end; :: deftheorem Def5 defines MSAEndComp ENDALG:def_5_:_ for S being non empty non void ManySortedSign for U1 being non-empty MSAlgebra over S for b3 being BinOp of (MSAEnd U1) holds ( b3 = MSAEndComp U1 iff for x, y being Element of MSAEnd U1 holds b3 . (x,y) = y ** x ); definition let S be non empty non void ManySortedSign ; let U1 be non-empty MSAlgebra over S; func MSAEndMonoid U1 -> strict multLoopStr means :Def6: :: ENDALG:def 6 ( the carrier of it = MSAEnd U1 & the multF of it = MSAEndComp U1 & 1. it = id the Sorts of U1 ); existence ex b1 being strict multLoopStr st ( the carrier of b1 = MSAEnd U1 & the multF of b1 = MSAEndComp U1 & 1. b1 = id the Sorts of U1 ) proof reconsider i = id the Sorts of U1 as Element of MSAEnd U1 by Th7; take H = multLoopStr(# (MSAEnd U1),(MSAEndComp U1),i #); ::_thesis: ( the carrier of H = MSAEnd U1 & the multF of H = MSAEndComp U1 & 1. H = id the Sorts of U1 ) thus the carrier of H = MSAEnd U1 ; ::_thesis: ( the multF of H = MSAEndComp U1 & 1. H = id the Sorts of U1 ) thus the multF of H = MSAEndComp U1 ; ::_thesis: 1. H = id the Sorts of U1 thus 1. H = id the Sorts of U1 ; ::_thesis: verum end; uniqueness for b1, b2 being strict multLoopStr st the carrier of b1 = MSAEnd U1 & the multF of b1 = MSAEndComp U1 & 1. b1 = id the Sorts of U1 & the carrier of b2 = MSAEnd U1 & the multF of b2 = MSAEndComp U1 & 1. b2 = id the Sorts of U1 holds b1 = b2 ; end; :: deftheorem Def6 defines MSAEndMonoid ENDALG:def_6_:_ for S being non empty non void ManySortedSign for U1 being non-empty MSAlgebra over S for b3 being strict multLoopStr holds ( b3 = MSAEndMonoid U1 iff ( the carrier of b3 = MSAEnd U1 & the multF of b3 = MSAEndComp U1 & 1. b3 = id the Sorts of U1 ) ); registration let S be non empty non void ManySortedSign ; let U1 be non-empty MSAlgebra over S; cluster MSAEndMonoid U1 -> non empty strict ; coherence not MSAEndMonoid U1 is empty proof reconsider i = id the Sorts of U1 as Element of MSAEnd U1 by Th7; set H = multLoopStr(# (MSAEnd U1),(MSAEndComp U1),i #); 1. multLoopStr(# (MSAEnd U1),(MSAEndComp U1),i #) = i ; hence not MSAEndMonoid U1 is empty by Def6; ::_thesis: verum end; end; Lm2: now__::_thesis:_for_S_being_non_empty_non_void_ManySortedSign_ for_U1_being_non-empty_MSAlgebra_over_S for_x,_e_being_Element_of_(MSAEndMonoid_U1)_st_e_=_id_the_Sorts_of_U1_holds_ (_x_*_e_=_x_&_e_*_x_=_x_) let S be non empty non void ManySortedSign ; ::_thesis: for U1 being non-empty MSAlgebra over S for x, e being Element of (MSAEndMonoid U1) st e = id the Sorts of U1 holds ( x * e = x & e * x = x ) let U1 be non-empty MSAlgebra over S; ::_thesis: for x, e being Element of (MSAEndMonoid U1) st e = id the Sorts of U1 holds ( x * e = x & e * x = x ) set F = MSAEndMonoid U1; let x, e be Element of (MSAEndMonoid U1); ::_thesis: ( e = id the Sorts of U1 implies ( x * e = x & e * x = x ) ) reconsider i = e, y = x as Element of MSAEnd U1 by Def6; assume A1: e = id the Sorts of U1 ; ::_thesis: ( x * e = x & e * x = x ) thus x * e = (MSAEndComp U1) . (y,i) by Def6 .= i ** y by Def5 .= x by A1, MSUALG_3:4 ; ::_thesis: e * x = x thus e * x = (MSAEndComp U1) . (i,y) by Def6 .= y ** i by Def5 .= x by A1, MSUALG_3:3 ; ::_thesis: verum end; registration let S be non empty non void ManySortedSign ; let U1 be non-empty MSAlgebra over S; cluster MSAEndMonoid U1 -> strict associative well-unital ; coherence ( MSAEndMonoid U1 is well-unital & MSAEndMonoid U1 is associative ) proof reconsider i = id the Sorts of U1 as Element of MSAEnd U1 by Th7; set H = multLoopStr(# (MSAEnd U1),(MSAEndComp U1),i #); thus MSAEndMonoid U1 is well-unital ::_thesis: MSAEndMonoid U1 is associative proof let x be Element of (MSAEndMonoid U1); :: according to VECTSP_1:def_6 ::_thesis: ( x * (1. (MSAEndMonoid U1)) = x & (1. (MSAEndMonoid U1)) * x = x ) 1. (MSAEndMonoid U1) = i by Def6; hence ( x * (1. (MSAEndMonoid U1)) = x & (1. (MSAEndMonoid U1)) * x = x ) by Lm2; ::_thesis: verum end; for f, g, h being Element of multLoopStr(# (MSAEnd U1),(MSAEndComp U1),i #) holds (f * g) * h = f * (g * h) proof let f, g, h be Element of multLoopStr(# (MSAEnd U1),(MSAEndComp U1),i #); ::_thesis: (f * g) * h = f * (g * h) reconsider A = f, B = g, C = h as Element of MSAEnd U1 ; A1: g * h = C ** B by Def5; f * g = B ** A by Def5; hence (f * g) * h = C ** (B ** A) by Def5 .= (C ** B) ** A by PBOOLE:140 .= f * (g * h) by A1, Def5 ; ::_thesis: verum end; then ( 1. multLoopStr(# (MSAEnd U1),(MSAEndComp U1),i #) = i & multLoopStr(# (MSAEnd U1),(MSAEndComp U1),i #) is associative ) by GROUP_1:def_3; hence MSAEndMonoid U1 is associative by Def6; ::_thesis: verum end; end; theorem Th10: :: ENDALG:10 for S being non empty non void ManySortedSign for U1 being non-empty MSAlgebra over S for x, y being Element of (MSAEndMonoid U1) for f, g being Element of MSAEnd U1 st x = f & y = g holds x * y = g ** f proof let S be non empty non void ManySortedSign ; ::_thesis: for U1 being non-empty MSAlgebra over S for x, y being Element of (MSAEndMonoid U1) for f, g being Element of MSAEnd U1 st x = f & y = g holds x * y = g ** f let U1 be non-empty MSAlgebra over S; ::_thesis: for x, y being Element of (MSAEndMonoid U1) for f, g being Element of MSAEnd U1 st x = f & y = g holds x * y = g ** f reconsider i = id the Sorts of U1 as Element of MSAEnd U1 by Th7; let x, y be Element of (MSAEndMonoid U1); ::_thesis: for f, g being Element of MSAEnd U1 st x = f & y = g holds x * y = g ** f let f, g be Element of MSAEnd U1; ::_thesis: ( x = f & y = g implies x * y = g ** f ) set H = multLoopStr(# (MSAEnd U1),(MSAEndComp U1),i #); 1. multLoopStr(# (MSAEnd U1),(MSAEndComp U1),i #) = i ; then A1: MSAEndMonoid U1 = multLoopStr(# (MSAEnd U1),(MSAEndComp U1),i #) by Def6; assume ( x = f & y = g ) ; ::_thesis: x * y = g ** f hence x * y = g ** f by A1, Def5; ::_thesis: verum end; theorem :: ENDALG:11 for S being non empty non void ManySortedSign for U1 being non-empty MSAlgebra over S holds id the Sorts of U1 = 1_ (MSAEndMonoid U1) by Def6; theorem Th12: :: ENDALG:12 for UA being Universal_Algebra for f being Element of UAEnd UA holds 0 .--> f is ManySortedFunction of (MSAlg UA),(MSAlg UA) proof let UA be Universal_Algebra; ::_thesis: for f being Element of UAEnd UA holds 0 .--> f is ManySortedFunction of (MSAlg UA),(MSAlg UA) let f be Element of UAEnd UA; ::_thesis: 0 .--> f is ManySortedFunction of (MSAlg UA),(MSAlg UA) MSAlg f is ManySortedFunction of (MSAlg UA),(MSAlg UA) by MSUHOM_1:9; hence 0 .--> f is ManySortedFunction of (MSAlg UA),(MSAlg UA) by MSUHOM_1:def_3; ::_thesis: verum end; Lm3: for UA being Universal_Algebra for h being Function st dom h = UAEnd UA & ( for x being set st x in UAEnd UA holds h . x = 0 .--> x ) holds rng h = MSAEnd (MSAlg UA) proof let UA be Universal_Algebra; ::_thesis: for h being Function st dom h = UAEnd UA & ( for x being set st x in UAEnd UA holds h . x = 0 .--> x ) holds rng h = MSAEnd (MSAlg UA) let h be Function; ::_thesis: ( dom h = UAEnd UA & ( for x being set st x in UAEnd UA holds h . x = 0 .--> x ) implies rng h = MSAEnd (MSAlg UA) ) assume that A1: dom h = UAEnd UA and A2: for x being set st x in UAEnd UA holds h . x = 0 .--> x ; ::_thesis: rng h = MSAEnd (MSAlg UA) A3: MSAEnd (MSAlg UA) c= rng h proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in MSAEnd (MSAlg UA) or x in rng h ) assume A4: x in MSAEnd (MSAlg UA) ; ::_thesis: x in rng h then reconsider f = x as ManySortedFunction of (MSAlg UA),(MSAlg UA) by Def4; the carrier of (MSSign UA) = {0} by MSUALG_1:def_8; then A5: f = 0 .--> (f . 0) by AUTALG_1:11; A6: f is_homomorphism MSAlg UA, MSAlg UA by A4, Def4; ex q being set st ( q in dom h & x = h . q ) proof take q = f . 0; ::_thesis: ( q in dom h & x = h . q ) f is ManySortedFunction of (MSAlg UA),((MSAlg UA) Over (MSSign UA)) by MSUHOM_1:9; then reconsider q9 = q as Function of UA,UA by AUTALG_1:31; MSAlg q9 = f by A5, MSUHOM_1:def_3; then MSAlg q9 is_homomorphism MSAlg UA,(MSAlg UA) Over (MSSign UA) by A6, MSUHOM_1:9; then q9 is_homomorphism UA,UA by MSUHOM_1:21; hence q in dom h by A1, Def1; ::_thesis: x = h . q hence x = h . q by A1, A2, A5; ::_thesis: verum end; hence x in rng h by FUNCT_1:def_3; ::_thesis: verum end; rng h c= MSAEnd (MSAlg UA) proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in rng h or x in MSAEnd (MSAlg UA) ) assume x in rng h ; ::_thesis: x in MSAEnd (MSAlg UA) then consider q being set such that A7: q in dom h and A8: x = h . q by FUNCT_1:def_3; consider q9 being Element of UAEnd UA such that A9: q9 = q by A1, A7; ( x = 0 .--> q & 0 .--> q is ManySortedFunction of (MSAlg UA),(MSAlg UA) ) by A1, A2, A7, A8, Th12; then consider d being ManySortedFunction of (MSAlg UA),(MSAlg UA) such that A10: d = x ; q9 is_homomorphism UA,UA by Def1; then A11: MSAlg q9 is_homomorphism MSAlg UA,(MSAlg UA) Over (MSSign UA) by MSUHOM_1:16; MSAlg q9 = 0 .--> q by A9, MSUHOM_1:def_3 .= x by A1, A2, A7, A8 ; then d is_homomorphism MSAlg UA, MSAlg UA by A10, A11, MSUHOM_1:9; hence x in MSAEnd (MSAlg UA) by A10, Def4; ::_thesis: verum end; hence rng h = MSAEnd (MSAlg UA) by A3, XBOOLE_0:def_10; ::_thesis: verum end; registration cluster non empty left_unital for multLoopStr ; existence ex b1 being non empty multLoopStr st b1 is left_unital proof set m = the BinOp of {0}; set u = the Element of {0}; take multLoopStr(# {0}, the BinOp of {0}, the Element of {0} #) ; ::_thesis: multLoopStr(# {0}, the BinOp of {0}, the Element of {0} #) is left_unital let x be Element of multLoopStr(# {0}, the BinOp of {0}, the Element of {0} #); :: according to VECTSP_1:def_8 ::_thesis: (1. multLoopStr(# {0}, the BinOp of {0}, the Element of {0} #)) * x = x thus (1. multLoopStr(# {0}, the BinOp of {0}, the Element of {0} #)) * x = 0 by TARSKI:def_1 .= x by TARSKI:def_1 ; ::_thesis: verum end; end; registration let G, H be non empty well-unital multLoopStr ; cluster Relation-like the carrier of G -defined the carrier of H -valued Function-like non empty V14( the carrier of G) quasi_total unity-preserving multiplicative for Element of bool [: the carrier of G, the carrier of H:]; existence ex b1 being Function of G,H st ( b1 is multiplicative & b1 is unity-preserving ) proof reconsider m = the carrier of G --> (1. H) as Function of the carrier of G, the carrier of H ; reconsider m = m as Function of G,H ; take m ; ::_thesis: ( m is multiplicative & m is unity-preserving ) for x, y being Element of G holds m . (x * y) = (m . x) * (m . y) proof let x, y be Element of G; ::_thesis: m . (x * y) = (m . x) * (m . y) m . (x * y) = 1. H by FUNCOP_1:7 .= (1. H) * (1. H) by VECTSP_1:def_8 .= (m . x) * (1. H) by FUNCOP_1:7 .= (m . x) * (m . y) by FUNCOP_1:7 ; hence m . (x * y) = (m . x) * (m . y) ; ::_thesis: verum end; hence m is multiplicative by GROUP_6:def_6; ::_thesis: m is unity-preserving thus m . (1_ G) = 1_ H by FUNCOP_1:7; :: according to GROUP_1:def_13 ::_thesis: verum end; end; definition let G, H be non empty well-unital multLoopStr ; mode Homomorphism of G,H is unity-preserving multiplicative Function of G,H; end; theorem Th13: :: ENDALG:13 for G being non empty well-unital multLoopStr holds id the carrier of G is Homomorphism of G,G proof let G be non empty well-unital multLoopStr ; ::_thesis: id the carrier of G is Homomorphism of G,G reconsider f = id the carrier of G as Function of G,G ; A1: for a, b being Element of G holds f . (a * b) = (f . a) * (f . b) proof let a, b be Element of G; ::_thesis: f . (a * b) = (f . a) * (f . b) f . (a * b) = a * b by FUNCT_1:18 .= (f . a) * b by FUNCT_1:18 .= (f . a) * (f . b) by FUNCT_1:18 ; hence f . (a * b) = (f . a) * (f . b) ; ::_thesis: verum end; f . (1_ G) = 1_ G by FUNCT_1:18; hence id the carrier of G is Homomorphism of G,G by A1, GROUP_1:def_13, GROUP_6:def_6; ::_thesis: verum end; definition let G, H be non empty well-unital multLoopStr ; predG,H are_isomorphic means :Def7: :: ENDALG:def 7 ex h being Homomorphism of G,H st h is bijective ; reflexivity for G being non empty well-unital multLoopStr ex h being Homomorphism of G,G st h is bijective proof let G be non empty well-unital multLoopStr ; ::_thesis: ex h being Homomorphism of G,G st h is bijective reconsider i = id the carrier of G as Homomorphism of G,G by Th13; A1: the carrier of G c= rng i proof let y be set ; :: according to TARSKI:def_3 ::_thesis: ( not y in the carrier of G or y in rng i ) assume A2: y in the carrier of G ; ::_thesis: y in rng i ex x being set st ( x in dom i & y = i . x ) proof take y ; ::_thesis: ( y in dom i & y = i . y ) thus ( y in dom i & y = i . y ) by A2, FUNCT_1:17; ::_thesis: verum end; hence y in rng i by FUNCT_1:def_3; ::_thesis: verum end; rng i c= the carrier of G by RELAT_1:def_19; then rng i = the carrier of G by A1, XBOOLE_0:def_10; then i is onto by FUNCT_2:def_3; hence ex h being Homomorphism of G,G st h is bijective ; ::_thesis: verum end; end; :: deftheorem Def7 defines are_isomorphic ENDALG:def_7_:_ for G, H being non empty well-unital multLoopStr holds ( G,H are_isomorphic iff ex h being Homomorphism of G,H st h is bijective ); theorem Th14: :: ENDALG:14 for UA being Universal_Algebra for h being Function st dom h = UAEnd UA & ( for x being set st x in UAEnd UA holds h . x = 0 .--> x ) holds h is Homomorphism of (UAEndMonoid UA),(MSAEndMonoid (MSAlg UA)) proof let UA be Universal_Algebra; ::_thesis: for h being Function st dom h = UAEnd UA & ( for x being set st x in UAEnd UA holds h . x = 0 .--> x ) holds h is Homomorphism of (UAEndMonoid UA),(MSAEndMonoid (MSAlg UA)) reconsider i = id the Sorts of (MSAlg UA) as Element of MSAEnd (MSAlg UA) by Th7; set G = UAEndMonoid UA; set H = MSAEndMonoid (MSAlg UA); set M = multLoopStr(# (MSAEnd (MSAlg UA)),(MSAEndComp (MSAlg UA)),i #); reconsider e = id the carrier of UA as Element of UAEnd UA by Th2; let h be Function; ::_thesis: ( dom h = UAEnd UA & ( for x being set st x in UAEnd UA holds h . x = 0 .--> x ) implies h is Homomorphism of (UAEndMonoid UA),(MSAEndMonoid (MSAlg UA)) ) assume that A1: dom h = UAEnd UA and A2: for x being set st x in UAEnd UA holds h . x = 0 .--> x ; ::_thesis: h is Homomorphism of (UAEndMonoid UA),(MSAEndMonoid (MSAlg UA)) A3: the carrier of (UAEndMonoid UA) = dom h by A1, Def3; 1. multLoopStr(# (MSAEnd (MSAlg UA)),(MSAEndComp (MSAlg UA)),i #) = i ; then A4: MSAEndMonoid (MSAlg UA) = multLoopStr(# (MSAEnd (MSAlg UA)),(MSAEndComp (MSAlg UA)),i #) by Def6; then rng h c= the carrier of (MSAEndMonoid (MSAlg UA)) by A1, A2, Lm3; then reconsider h9 = h as Function of (UAEndMonoid UA),(MSAEndMonoid (MSAlg UA)) by A3, FUNCT_2:def_1, RELSET_1:4; A5: h9 . e = 0 .--> e by A2; A6: for a, b being Element of (UAEndMonoid UA) holds h9 . (a * b) = (h9 . a) * (h9 . b) proof let a, b be Element of (UAEndMonoid UA); ::_thesis: h9 . (a * b) = (h9 . a) * (h9 . b) reconsider a9 = a, b9 = b as Element of UAEnd UA by Def3; reconsider A = 0 .--> a9, B = 0 .--> b9 as ManySortedFunction of (MSAlg UA),(MSAlg UA) by Th12; reconsider ha = h9 . a, hb = h9 . b as Element of MSAEnd (MSAlg UA) by Def6; A7: h9 . (b9 * a9) = 0 .--> (b9 * a9) by A2, Th3; reconsider A9 = A, B9 = B as Element of (MSAEndMonoid (MSAlg UA)) by A4, Th9; A8: ( ha = A9 & hb = B9 ) by A2; thus h9 . (a * b) = h9 . (b9 * a9) by Th4 .= MSAlg (b9 * a9) by A7, MSUHOM_1:def_3 .= (MSAlg b9) ** (MSAlg a9) by MSUHOM_1:26 .= B ** (MSAlg a9) by MSUHOM_1:def_3 .= B ** A by MSUHOM_1:def_3 .= (h9 . a) * (h9 . b) by A8, Th10 ; ::_thesis: verum end; h9 . (1. (UAEndMonoid UA)) = h9 . e by Def3 .= MSAlg e by A5, MSUHOM_1:def_3 .= i by MSUHOM_1:25 .= 1_ (MSAEndMonoid (MSAlg UA)) by Def6 ; then h9 . (1_ (UAEndMonoid UA)) = 1_ (MSAEndMonoid (MSAlg UA)) ; hence h is Homomorphism of (UAEndMonoid UA),(MSAEndMonoid (MSAlg UA)) by A6, GROUP_1:def_13, GROUP_6:def_6; ::_thesis: verum end; theorem Th15: :: ENDALG:15 for UA being Universal_Algebra for h being Homomorphism of (UAEndMonoid UA),(MSAEndMonoid (MSAlg UA)) st ( for x being set st x in UAEnd UA holds h . x = 0 .--> x ) holds h is bijective proof let UA be Universal_Algebra; ::_thesis: for h being Homomorphism of (UAEndMonoid UA),(MSAEndMonoid (MSAlg UA)) st ( for x being set st x in UAEnd UA holds h . x = 0 .--> x ) holds h is bijective reconsider e = id the Sorts of (MSAlg UA) as Element of MSAEnd (MSAlg UA) by Th7; set N = multLoopStr(# (MSAEnd (MSAlg UA)),(MSAEndComp (MSAlg UA)),e #); reconsider i = id the carrier of UA as Element of UAEnd UA by Th2; let h be Homomorphism of (UAEndMonoid UA),(MSAEndMonoid (MSAlg UA)); ::_thesis: ( ( for x being set st x in UAEnd UA holds h . x = 0 .--> x ) implies h is bijective ) set G = UAEndMonoid UA; set H = MSAEndMonoid (MSAlg UA); set M = multLoopStr(# (UAEnd UA),(UAEndComp UA),i #); 1. multLoopStr(# (UAEnd UA),(UAEndComp UA),i #) = i ; then A1: UAEndMonoid UA = multLoopStr(# (UAEnd UA),(UAEndComp UA),i #) by Def3; assume A2: for x being set st x in UAEnd UA holds h . x = 0 .--> x ; ::_thesis: h is bijective for a, b being Element of (UAEndMonoid UA) st h . a = h . b holds a = b proof let a, b be Element of (UAEndMonoid UA); ::_thesis: ( h . a = h . b implies a = b ) assume A3: h . a = h . b ; ::_thesis: a = b A4: h . b = 0 .--> b by A2, A1 .= [:{0},{b}:] ; h . a = 0 .--> a by A2, A1 .= [:{0},{a}:] ; then {a} = {b} by A3, A4, ZFMISC_1:110; hence a = b by ZFMISC_1:3; ::_thesis: verum end; then A5: h is one-to-one by GROUP_6:1; 1. multLoopStr(# (MSAEnd (MSAlg UA)),(MSAEndComp (MSAlg UA)),e #) = e ; then A6: MSAEndMonoid (MSAlg UA) = multLoopStr(# (MSAEnd (MSAlg UA)),(MSAEndComp (MSAlg UA)),e #) by Def6; dom h = UAEnd UA by A1, FUNCT_2:def_1; then rng h = the carrier of (MSAEndMonoid (MSAlg UA)) by A2, A6, Lm3; then h is onto by FUNCT_2:def_3; hence h is bijective by A5; ::_thesis: verum end; theorem :: ENDALG:16 for UA being Universal_Algebra holds UAEndMonoid UA, MSAEndMonoid (MSAlg UA) are_isomorphic proof let UA be Universal_Algebra; ::_thesis: UAEndMonoid UA, MSAEndMonoid (MSAlg UA) are_isomorphic set G = UAEndMonoid UA; set H = MSAEndMonoid (MSAlg UA); ex h being Homomorphism of (UAEndMonoid UA),(MSAEndMonoid (MSAlg UA)) st h is bijective proof deffunc H1( set ) -> set = 0 .--> $1; consider h being Function such that A1: ( dom h = UAEnd UA & ( for x being set st x in UAEnd UA holds h . x = H1(x) ) ) from FUNCT_1:sch_3(); reconsider h = h as Homomorphism of (UAEndMonoid UA),(MSAEndMonoid (MSAlg UA)) by A1, Th14; h is bijective by A1, Th15; hence ex h being Homomorphism of (UAEndMonoid UA),(MSAEndMonoid (MSAlg UA)) st h is bijective ; ::_thesis: verum end; hence UAEndMonoid UA, MSAEndMonoid (MSAlg UA) are_isomorphic by Def7; ::_thesis: verum end;