environ
vocabulary UNIALG_1, FUNCT_1, FRAENKEL, ALG_1, FUNCT_2, BINOP_1, VECTSP_1,
VECTSP_2, AMI_1, MSUALG_1, ZF_REFLE, AUTALG_1, PRALG_1, CARD_3, NATTRA_1,
MSUALG_3, FUNCOP_1, MSUHOM_1, RELAT_1, PRE_TOPC, COHSP_1, GROUP_6,
WELLORD1, ENDALG;
notation TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, PRE_TOPC, RELAT_1, FUNCT_1,
CARD_3, STRUCT_0, MONOID_0, VECTSP_1, BINOP_1, PARTFUN1, FUNCT_2,
FRAENKEL, FINSEQ_1, UNIALG_1, MSUALG_1, ALG_1, MSUALG_3, MSUHOM_1,
AUTALG_1;
constructors TEX_2, BINOP_1, ALG_1, MSUALG_3, MSUHOM_1, AUTALG_1, MONOID_0,
MEMBERED;
clusters FRAENKEL, MONOID_0, RELSET_1, MSUALG_1, STRUCT_0, SUBSET_1, MEMBERED,
FUNCT_2, PARTFUN1, NUMBERS, ORDINAL2;
requirements SUBSET, BOOLE;
begin
reserve UA for Universal_Algebra;
definition let UA;
func UAEnd UA -> FUNCTION_DOMAIN of the carrier of UA, the carrier of UA
means
:: ENDALG:def 1
for h be Function of UA, UA holds h in it iff h is_homomorphism UA, UA;
end;
theorem :: ENDALG:1
UAEnd UA c= Funcs (the carrier of UA, the carrier of UA);
canceled;
theorem :: ENDALG:3
id the carrier of UA in UAEnd UA;
theorem :: ENDALG:4
for f1, f2 be Element of UAEnd UA holds f1 * f2 in UAEnd UA;
definition let UA;
func UAEndComp UA -> BinOp of UAEnd UA means
:: ENDALG:def 2
for x, y be Element of UAEnd UA holds it.(x, y) = y * x;
end;
definition let UA;
func UAEndMonoid UA -> strict multLoopStr means
:: ENDALG:def 3
the carrier of it = UAEnd UA &
the mult of it = UAEndComp UA &
the unity of it = id the carrier of UA;
end;
definition let UA;
cluster UAEndMonoid UA -> non empty;
end;
definition let UA;
cluster UAEndMonoid UA -> left_unital well-unital associative;
end;
theorem :: ENDALG:5
for x, y be Element of UAEndMonoid UA
for f, g be Element of UAEnd UA st x = f & y = g holds x * y = g * f;
theorem :: ENDALG:6
id the carrier of UA = 1_ UAEndMonoid UA;
reserve S for non void non empty ManySortedSign,
U1 for non-empty MSAlgebra over S;
definition let S, U1;
func MSAEnd U1 -> MSFunctionSet of the Sorts of U1, the Sorts of U1 means
:: ENDALG:def 4
(for f be Element of it holds f is ManySortedFunction of U1, U1) &
for h be ManySortedFunction of U1, U1 holds
h in it iff h is_homomorphism U1, U1;
end;
canceled 2;
theorem :: ENDALG:9
MSAEnd U1 c= product MSFuncs (the Sorts of U1, the Sorts of U1);
theorem :: ENDALG:10
id the Sorts of U1 in MSAEnd U1;
theorem :: ENDALG:11
for f1, f2 be Element of MSAEnd U1 holds f1 ** f2 in MSAEnd U1;
theorem :: ENDALG:12
for F be ManySortedFunction of MSAlg UA, MSAlg UA
for f be Element of UAEnd UA st F = {0} --> f holds F in MSAEnd MSAlg UA;
definition let S, U1;
func MSAEndComp U1 -> BinOp of MSAEnd U1 means
:: ENDALG:def 5
for x, y be Element of MSAEnd U1 holds it.(x, y) = y ** x;
end;
definition let S, U1;
func MSAEndMonoid U1 -> strict multLoopStr means
:: ENDALG:def 6
the carrier of it = MSAEnd U1 &
the mult of it = MSAEndComp U1 &
the unity of it = id the Sorts of U1;
end;
definition let S, U1;
cluster MSAEndMonoid U1 -> non empty;
end;
definition let S,U1;
cluster MSAEndMonoid U1 -> left_unital well-unital associative;
end;
theorem :: ENDALG:13
for x, y be Element of MSAEndMonoid U1
for f, g be Element of MSAEnd U1 st x = f & y = g holds x * y = g ** f;
theorem :: ENDALG:14
id the Sorts of U1 = 1_ MSAEndMonoid U1;
canceled;
theorem :: ENDALG:16
for f be Element of UAEnd UA
holds {0} --> f is ManySortedFunction of MSAlg UA, MSAlg UA;
definition
let G,H be non empty HGrStr;
let IT be map of G,H;
attr IT is multiplicative means
:: ENDALG:def 7
for x,y being Element of G holds
IT.(x*y) = (IT.x)*(IT.y);
end;
definition let G,H be non empty multLoopStr;
let IT be map of G,H;
attr IT is unity-preserving means
:: ENDALG:def 8
IT.1_ G = 1_ H;
end;
definition
cluster left_unital (non empty multLoopStr);
end;
definition let G,H be left_unital (non empty multLoopStr);
cluster multiplicative unity-preserving map of G,H;
end;
definition let G,H be left_unital (non empty multLoopStr);
mode Homomorphism of G,H is multiplicative unity-preserving map of G,H;
end;
definition let G,H be left_unital (non empty multLoopStr),h be map of G,H;
pred h is_monomorphism means
:: ENDALG:def 9
h is one-to-one;
pred h is_epimorphism means
:: ENDALG:def 10
rng h = the carrier of H;
end;
definition let G,H be left_unital (non empty multLoopStr),h be map of G,H;
pred h is_isomorphism means
:: ENDALG:def 11
h is_epimorphism & h is_monomorphism;
end;
theorem :: ENDALG:17
for G be left_unital (non empty multLoopStr) holds
id the carrier of G is Homomorphism of G,G;
definition let G,H be left_unital (non empty multLoopStr);
pred G,H are_isomorphic means
:: ENDALG:def 12
ex h be Homomorphism of G,H st h is_isomorphism;
reflexivity;
end;
theorem :: ENDALG:18
for h be Function st (dom h = UAEnd UA &
for x be set st x in UAEnd UA holds h.x = {0} --> x)
holds h is Homomorphism of UAEndMonoid UA, MSAEndMonoid (MSAlg UA);
theorem :: ENDALG:19
for h be Homomorphism of UAEndMonoid UA, MSAEndMonoid (MSAlg UA) st
for x be set st x in UAEnd UA holds h.x = {0} --> x holds h is_isomorphism;
theorem :: ENDALG:20
UAEndMonoid UA, MSAEndMonoid (MSAlg UA) are_isomorphic;