Journal of Formalized Mathematics
Volume 4, 1992
University of Bialystok
Copyright (c) 1992
Association of Mizar Users
The abstract of the Mizar article:
-
- by
- Grzegorz Bancerek
- Received December 29, 1992
- MML identifier: MONOID_0
- [
Mizar article,
MML identifier index
]
environ
vocabulary VECTSP_1, BINOP_1, FUNCT_1, FINSEQ_1, RELAT_1, FUNCT_2, PARTFUN1,
CAT_1, ALGSTR_1, SETWISEO, FUNCOP_1, GROUP_1, FINSEQOP, VECTSP_2,
MCART_1, REALSET1, GR_CY_1, INT_1, BOOLE, MONOID_0;
notation TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, NUMBERS, REAL_1, MCART_1,
DOMAIN_1, NAT_1, STRUCT_0, RELAT_1, FINSEQOP, FUNCT_1, FINSEQ_1,
RELSET_1, PARTFUN1, FUNCT_2, BINOP_1, FINSEQ_2, INT_1, VECTSP_1,
VECTSP_2, SETWISEO, FUNCOP_1, GROUP_1, FUNCT_4, GR_CY_1;
constructors DOMAIN_1, NAT_1, BINOP_1, PARTFUN1, SETWISEO, FINSEQOP, GR_CY_1,
VECTSP_2, REAL_1, MEMBERED, RELAT_2, XBOOLE_0;
clusters SUBSET_1, FUNCT_1, FINSEQ_1, INT_1, VECTSP_1, GROUP_1, RELSET_1,
STRUCT_0, PARTFUN1, FUNCOP_1, MEMBERED, ZFMISC_1, FUNCT_2, XBOOLE_0,
ORDINAL2;
requirements NUMERALS, BOOLE, SUBSET, ARITHM;
begin :: Updating
reserve x,y,X,Y for set;
definition let G be 1-sorted;
mode BinOp of G is BinOp of the carrier of G;
end;
definition let IT be 1-sorted;
attr IT is constituted-Functions means
:: MONOID_0:def 1
for a being Element of IT holds a is Function;
attr IT is constituted-FinSeqs means
:: MONOID_0:def 2
for a being Element of IT holds a is FinSequence;
end;
definition
cluster constituted-Functions 1-sorted;
cluster constituted-FinSeqs 1-sorted;
end;
definition let X be constituted-Functions 1-sorted;
cluster -> Function-like Relation-like Element of X;
end;
definition
cluster constituted-FinSeqs -> constituted-Functions 1-sorted;
end;
definition
cluster constituted-FinSeqs -> constituted-Functions HGrStr;
end;
definition let X be constituted-FinSeqs 1-sorted;
cluster -> FinSequence-like Element of X;
end;
definition let D be set, p,q be FinSequence of D;
redefine func p^q -> Element of D*;
end;
definition let g,f be Function;
redefine func f*g; synonym f(*)g;
end;
definition let X be set, g,f be Function of X,X;
redefine func f*g -> Function of X,X;
end;
definition let X be set, g,f be Permutation of X;
redefine func f*g -> Permutation of X;
end;
definition let D be non empty set;
let IT be BinOp of D;
attr IT is left-invertible means
:: MONOID_0:def 3
for a,b being Element of D
ex l being Element of D st IT.(l,a) = b;
attr IT is right-invertible means
:: MONOID_0:def 4
for a,b being Element of D
ex r being Element of D st IT.(a,r) = b;
attr IT is invertible means
:: MONOID_0:def 5
for a,b being Element of D ex r,l being Element of D st
IT.(a,r) = b & IT.(l,a) = b;
attr IT is left-cancelable means
:: MONOID_0:def 6
for a,b,c being Element of D st IT.(a,b) = IT.(a,c)
holds b = c;
attr IT is right-cancelable means
:: MONOID_0:def 7
for a,b,c being Element of D st IT.(b,a) = IT.(c,a)
holds b = c;
attr IT is cancelable means
:: MONOID_0:def 8
for a,b,c being Element of D st
IT.(a,b) = IT.(a,c) or IT.(b,a) = IT.(c,a) holds b = c;
attr IT is uniquely-decomposable means
:: MONOID_0:def 9
IT has_a_unity & for a,b being Element of D st
IT.(a,b) = the_unity_wrt IT holds a = b & b = the_unity_wrt IT;
end;
theorem :: MONOID_0:1
for D be non empty set, f being BinOp of D holds
f is invertible iff f is left-invertible right-invertible;
theorem :: MONOID_0:2
for D be non empty set, f being BinOp of D holds
f is cancelable iff f is left-cancelable right-cancelable;
theorem :: MONOID_0:3
for f being BinOp of {x} holds f = {[x,x]} --> x &
f has_a_unity & f is commutative & f is associative & f is idempotent &
f is invertible cancelable uniquely-decomposable;
begin :: Semigroups
reserve G for non empty HGrStr, D for non empty set,
a,b,c,r,l for Element of G;
definition let IT be non empty HGrStr;
redefine
attr IT is unital means
:: MONOID_0:def 10
the mult of IT has_a_unity;
end;
definition let G;
redefine attr G is commutative means
:: MONOID_0:def 11
the mult of G is commutative;
attr G is associative means
:: MONOID_0:def 12
the mult of G is associative;
end;
definition let IT be non empty HGrStr;
attr IT is idempotent means
:: MONOID_0:def 13
the mult of IT is idempotent;
attr IT is left-invertible means
:: MONOID_0:def 14
the mult of IT is left-invertible;
attr IT is right-invertible means
:: MONOID_0:def 15
the mult of IT is right-invertible;
attr IT is invertible means
:: MONOID_0:def 16
the mult of IT is invertible;
attr IT is left-cancelable means
:: MONOID_0:def 17
the mult of IT is left-cancelable;
attr IT is right-cancelable means
:: MONOID_0:def 18
the mult of IT is right-cancelable;
attr IT is cancelable means
:: MONOID_0:def 19
the mult of IT is cancelable;
attr IT is uniquely-decomposable means
:: MONOID_0:def 20
the mult of IT is uniquely-decomposable;
end;
definition
cluster unital commutative associative cancelable idempotent invertible
uniquely-decomposable constituted-Functions constituted-FinSeqs
strict (non empty HGrStr);
end;
theorem :: MONOID_0:4
G is unital implies
the_unity_wrt the mult of G is_a_unity_wrt the mult of G;
theorem :: MONOID_0:5
G is unital iff for a holds
(the_unity_wrt the mult of G)*a = a &
a*(the_unity_wrt the mult of G) = a;
theorem :: MONOID_0:6
G is unital iff ex a st for b holds a*b = b & b*a = b;
canceled 2;
theorem :: MONOID_0:9
G is idempotent iff for a holds a*a = a;
theorem :: MONOID_0:10
G is left-invertible iff for a,b ex l st l*a = b;
theorem :: MONOID_0:11
G is right-invertible iff for a,b ex r st a*r = b;
theorem :: MONOID_0:12
G is invertible iff for a,b ex r,l st a*r = b & l*a = b;
theorem :: MONOID_0:13
G is left-cancelable iff for a,b,c st a*b = a*c holds b = c;
theorem :: MONOID_0:14
G is right-cancelable iff for a,b,c st b*a = c*a holds b = c;
theorem :: MONOID_0:15
G is cancelable iff for a,b,c st a*b = a*c or b*a = c*a holds b = c;
theorem :: MONOID_0:16
G is uniquely-decomposable iff the mult of G has_a_unity &
for a,b being Element of G
st a*b = the_unity_wrt the mult of G
holds a = b & b = the_unity_wrt the mult of G;
theorem :: MONOID_0:17
G is associative implies
(G is invertible iff G is unital & the mult of G has_an_inverseOp);
definition
cluster associative Group-like -> invertible (non empty HGrStr);
cluster associative invertible -> Group-like (non empty HGrStr);
end;
definition
cluster invertible -> left-invertible right-invertible (non empty HGrStr);
cluster left-invertible right-invertible -> invertible (non empty HGrStr);
cluster cancelable -> left-cancelable right-cancelable (non empty HGrStr);
cluster left-cancelable right-cancelable -> cancelable (non empty HGrStr);
cluster associative invertible -> unital cancelable (non empty HGrStr);
end;
begin
reserve M for non empty multLoopStr;
definition let IT be non empty multLoopStr;
redefine attr IT is well-unital means
:: MONOID_0:def 21
the unity of IT is_a_unity_wrt the mult of IT;
end;
theorem :: MONOID_0:18
M is well-unital iff for a being Element of M holds
(the unity of M)*a = a & a*(the unity of M) = a;
definition
cluster well-unital -> unital (non empty multLoopStr);
end;
theorem :: MONOID_0:19
for M being non empty multLoopStr st M is well-unital holds
the unity of M = the_unity_wrt the mult of M;
definition let A be non empty set, m be BinOp of A,
u be Element of A;
cluster multLoopStr(#A,m,u#) -> non empty;
end;
definition
cluster well-unital commutative associative cancelable idempotent invertible
uniquely-decomposable unital constituted-Functions
constituted-FinSeqs strict (non empty multLoopStr);
end;
definition
mode Monoid is well-unital associative (non empty multLoopStr);
end;
definition let G be HGrStr;
mode MonoidalExtension of G -> multLoopStr means
:: MONOID_0:def 22
the HGrStr of it = the HGrStr of G;
end;
definition let G be non empty HGrStr;
cluster -> non empty MonoidalExtension of G;
end;
theorem :: MONOID_0:20
for M being MonoidalExtension of G holds
the carrier of M = the carrier of G &
the mult of M = the mult of G &
for a,b being Element of M,
a',b' being Element of G st a = a' & b = b'
holds a*b = a'*b';
definition let G be HGrStr;
cluster strict MonoidalExtension of G;
end;
theorem :: MONOID_0:21
for G being non empty HGrStr, M being MonoidalExtension of G holds
(G is unital implies M is unital) &
(G is commutative implies M is commutative) &
(G is associative implies M is associative) &
(G is invertible implies M is invertible) &
(G is uniquely-decomposable implies M is uniquely-decomposable) &
(G is cancelable implies M is cancelable);
definition let G be constituted-Functions HGrStr;
cluster -> constituted-Functions MonoidalExtension of G;
end;
definition let G be constituted-FinSeqs HGrStr;
cluster -> constituted-FinSeqs MonoidalExtension of G;
end;
definition let G be unital (non empty HGrStr);
cluster -> unital MonoidalExtension of G;
end;
definition let G be associative (non empty HGrStr);
cluster -> associative MonoidalExtension of G;
end;
definition let G be commutative (non empty HGrStr);
cluster -> commutative MonoidalExtension of G;
end;
definition let G be invertible (non empty HGrStr);
cluster -> invertible MonoidalExtension of G;
end;
definition let G be cancelable (non empty HGrStr);
cluster -> cancelable MonoidalExtension of G;
end;
definition let G be uniquely-decomposable (non empty HGrStr);
cluster -> uniquely-decomposable MonoidalExtension of G;
end;
definition let G be unital (non empty HGrStr);
cluster well-unital strict MonoidalExtension of G;
end;
theorem :: MONOID_0:22
for G being unital (non empty HGrStr)
for M1,M2 being well-unital strict MonoidalExtension of G holds M1 = M2;
begin :: Subsystems
definition let G be HGrStr;
mode SubStr of G -> HGrStr means
:: MONOID_0:def 23
the mult of it <= the mult of G;
end;
definition let G be HGrStr;
cluster strict SubStr of G;
end;
definition let G be non empty HGrStr;
cluster strict non empty SubStr of G;
end;
definition let G be unital (non empty HGrStr);
cluster unital associative commutative cancelable idempotent invertible
uniquely-decomposable strict (non empty SubStr of G);
end;
definition let G be HGrStr;
mode MonoidalSubStr of G -> multLoopStr means
:: MONOID_0:def 24
the mult of it <= the mult of G &
for M being multLoopStr st G = M holds the unity of it = the unity of M;
end;
definition let G be HGrStr;
cluster strict MonoidalSubStr of G;
end;
definition let G be non empty HGrStr;
cluster strict non empty MonoidalSubStr of G;
end;
definition let M be multLoopStr;
redefine mode MonoidalSubStr of M means
:: MONOID_0:def 25
the mult of it <= the mult of M &
the unity of it = the unity of M;
end;
definition let G be well-unital (non empty multLoopStr);
cluster well-unital associative commutative cancelable idempotent invertible
uniquely-decomposable strict (non empty MonoidalSubStr of G);
end;
theorem :: MONOID_0:23
for G being HGrStr, M being MonoidalSubStr of G holds M is SubStr of G;
definition let G be HGrStr, M be MonoidalExtension of G;
redefine mode SubStr of M -> SubStr of G;
end;
definition let G1 be HGrStr, G2 be SubStr of G1;
redefine mode SubStr of G2 -> SubStr of G1;
end;
definition let G1 be HGrStr, G2 be MonoidalSubStr of G1;
redefine mode SubStr of G2 -> SubStr of G1;
end;
definition let G be HGrStr, M be MonoidalSubStr of G;
redefine mode MonoidalSubStr of M -> MonoidalSubStr of G;
end;
theorem :: MONOID_0:24
G is SubStr of G & M is MonoidalSubStr of M;
reserve H for non empty SubStr of G, N for non empty MonoidalSubStr of G;
theorem :: MONOID_0:25
the carrier of H c= the carrier of G & the carrier of N c= the carrier of G;
theorem :: MONOID_0:26
for G being non empty HGrStr, H being non empty SubStr of G
holds the mult of H = (the mult of G)|[:the carrier of H,the carrier of H:];
theorem :: MONOID_0:27
for a,b being Element of H,
a',b' being Element of G st
a = a' & b = b' holds a*b = a'*b';
theorem :: MONOID_0:28
for H1,H2 being non empty SubStr of G
st the carrier of H1 = the carrier of H2
holds the HGrStr of H1 = the HGrStr of H2;
theorem :: MONOID_0:29
for H1,H2 being non empty MonoidalSubStr of M st
the carrier of H1 = the carrier of H2 holds
the multLoopStr of H1 = the multLoopStr of H2;
theorem :: MONOID_0:30
for H1,H2 being non empty SubStr of G
st the carrier of H1 c= the carrier of H2
holds H1 is SubStr of H2;
theorem :: MONOID_0:31
for H1,H2 being non empty MonoidalSubStr of M st
the carrier of H1 c= the carrier of H2 holds H1 is MonoidalSubStr of H2;
theorem :: MONOID_0:32
G is unital & the_unity_wrt the mult of G in the carrier of H implies
H is unital &
the_unity_wrt the mult of G = the_unity_wrt the mult of H;
theorem :: MONOID_0:33
for M being well-unital (non empty multLoopStr)
for N being non empty MonoidalSubStr of M holds N is well-unital;
theorem :: MONOID_0:34
G is commutative implies H is commutative;
theorem :: MONOID_0:35
G is associative implies H is associative;
theorem :: MONOID_0:36
G is idempotent implies H is idempotent;
theorem :: MONOID_0:37
G is cancelable implies H is cancelable;
theorem :: MONOID_0:38
the_unity_wrt the mult of G in the carrier of H &
G is uniquely-decomposable implies H is uniquely-decomposable;
theorem :: MONOID_0:39
for M being well-unital uniquely-decomposable (non empty multLoopStr)
for N being non empty MonoidalSubStr of M holds N is uniquely-decomposable;
definition let G be constituted-Functions non empty HGrStr;
cluster -> constituted-Functions (non empty SubStr of G);
cluster -> constituted-Functions (non empty MonoidalSubStr of G);
end;
definition let G be constituted-FinSeqs non empty HGrStr;
cluster -> constituted-FinSeqs (non empty SubStr of G);
cluster -> constituted-FinSeqs (non empty MonoidalSubStr of G);
end;
definition let M be well-unital (non empty multLoopStr);
cluster -> well-unital (non empty MonoidalSubStr of M);
end;
definition let G be commutative (non empty HGrStr);
cluster -> commutative (non empty SubStr of G);
cluster -> commutative (non empty MonoidalSubStr of G);
end;
definition let G be associative (non empty HGrStr);
cluster -> associative (non empty SubStr of G);
cluster -> associative (non empty MonoidalSubStr of G);
end;
definition let G be idempotent (non empty HGrStr);
cluster -> idempotent (non empty SubStr of G);
cluster -> idempotent (non empty MonoidalSubStr of G);
end;
definition let G be cancelable (non empty HGrStr);
cluster -> cancelable (non empty SubStr of G);
cluster -> cancelable (non empty MonoidalSubStr of G);
end;
definition let M be well-unital uniquely-decomposable (non empty multLoopStr);
cluster -> uniquely-decomposable (non empty MonoidalSubStr of M);
end;
scheme SubStrEx1 {G() -> non empty HGrStr,
D() -> non empty Subset of G()}:
ex H being strict non empty SubStr of G() st the carrier of H = D()
provided
for x,y being Element of D() holds x*y in D();
scheme SubStrEx2 {G() -> non empty HGrStr, P[set]}:
ex H being strict non empty SubStr of G() st
for x being Element of G() holds x in
the carrier of H iff P[x]
provided
for x,y being Element of G()
holds P[x] & P[y] implies P[x*y] and
ex x being Element of G() st P[x];
scheme MonoidalSubStrEx1 {G() -> non empty multLoopStr,
D() -> non empty Subset of G()}:
ex H being strict non empty MonoidalSubStr of G() st
the carrier of H = D()
provided
for x,y being Element of D() holds x*y in D() and
the unity of G() in D();
scheme MonoidalSubStrEx2 {G() -> non empty multLoopStr, P[set]}:
ex M being strict non empty MonoidalSubStr of G() st
for x being Element of G() holds x in
the carrier of M iff P[x]
provided
for x,y being Element of G()
holds P[x] & P[y] implies P[x*y] and
P[the unity of G()];
definition let G,a,b;
redefine func a*b -> Element of G;
synonym a [*] b;
end;
begin :: Monoids on natural numbers
definition
func <REAL,+> -> unital associative invertible commutative cancelable strict
(non empty HGrStr) equals
:: MONOID_0:def 26
HGrStr(#REAL, addreal#);
end;
theorem :: MONOID_0:40
the carrier of <REAL,+> = REAL &
the mult of <REAL,+> = addreal &
for a,b being Element of <REAL,+>, x,y being Real st
a = x & b = y holds a*b = x+y;
theorem :: MONOID_0:41
x is Element of <REAL,+> iff x is Real;
theorem :: MONOID_0:42
the_unity_wrt the mult of <REAL,+> = 0;
theorem :: MONOID_0:43
for N being non empty SubStr of <REAL,+>
for a,b being Element of N,
x,y being Real st a = x & b = y holds a*b = x+y;
theorem :: MONOID_0:44
for N being unital (non empty SubStr of <REAL,+>) holds
the_unity_wrt the mult of N = 0;
definition let G be unital (non empty HGrStr);
cluster associative invertible -> unital cancelable Group-like
(non empty SubStr of G);
end;
definition
redefine func INT.Group -> unital invertible strict
(non empty SubStr of <REAL,+>);
end;
:: corollary
:: INT.Group is unital commutative associative cancelable invertible;
canceled;
theorem :: MONOID_0:46
for G being strict non empty SubStr of <REAL,+> holds
G = INT.Group iff the carrier of G = INT;
theorem :: MONOID_0:47
x is Element of INT.Group iff x is Integer;
definition
func <NAT,+> ->
unital uniquely-decomposable strict (non empty SubStr of INT.Group) means
:: MONOID_0:def 27
the carrier of it = NAT;
end;
:: corollary
:: <NAT,+> is unital commutative associative cancelable uniquely-decomposable;
definition
func <NAT,+,0> -> well-unital strict (non empty MonoidalExtension of <NAT,+>)
means
:: MONOID_0:def 28
not contradiction;
end;
:: corollary
:: <NAT,+,0> is
:: well-unital commutative associative cancelable uniquely-decomposable;
definition
func addnat -> BinOp of NAT equals
:: MONOID_0:def 29
the mult of <NAT,+>;
end;
canceled;
theorem :: MONOID_0:49
<NAT,+> = HGrStr(#NAT,addnat#);
theorem :: MONOID_0:50
x is Element of <NAT,+,0> iff x is Nat;
theorem :: MONOID_0:51
for n1,n2 being Nat, m1,m2 being Element of <NAT,+,0>
st n1 = m1 & n2 = m2
holds m1*m2 = n1+n2;
theorem :: MONOID_0:52
<NAT,+,0> = multLoopStr(#NAT,addnat,0#);
theorem :: MONOID_0:53
addnat = addreal|([:NAT,NAT:] qua set) & addnat = addint|([:NAT,NAT:] qua
set
);
theorem :: MONOID_0:54
0 is_a_unity_wrt addnat & addnat has_a_unity & the_unity_wrt addnat = 0 &
addnat is commutative & addnat is associative &
addnat is uniquely-decomposable;
definition
func <REAL,*> -> unital commutative associative strict (non empty HGrStr)
equals
:: MONOID_0:def 30
HGrStr(#REAL,multreal#);
end;
theorem :: MONOID_0:55
the carrier of <REAL,*> = REAL &
the mult of <REAL,*> = multreal &
for a,b being Element of <REAL,*>, x,y being Real st
a = x & b = y holds a*b = x*y;
theorem :: MONOID_0:56
x is Element of <REAL,*> iff x is Real;
theorem :: MONOID_0:57
the_unity_wrt the mult of <REAL,*> = 1;
theorem :: MONOID_0:58
for N being non empty SubStr of <REAL,*>
for a,b being Element of N, x,y being Real st a = x & b = y
holds a*b = x*y;
canceled;
theorem :: MONOID_0:60
for N being unital (non empty SubStr of <REAL,*>) holds
the_unity_wrt the mult of N = 0 or
the_unity_wrt the mult of N = 1;
definition
func <NAT,*> -> unital uniquely-decomposable strict
(non empty SubStr of <REAL,*>) means
:: MONOID_0:def 31
the carrier of it = NAT;
end;
:: corollary
:: <NAT,*> is unital commutative associative uniquely-decomposable;
definition
func <NAT,*,1> -> well-unital strict (non empty MonoidalExtension of <NAT,*>)
means
:: MONOID_0:def 32
not contradiction;
end;
:: corollary
:: <NAT,*,1> is well-unital commutative associative uniquely-decomposable;
definition
func multnat -> BinOp of NAT equals
:: MONOID_0:def 33
the mult of <NAT,*>;
end;
theorem :: MONOID_0:61
<NAT,*> = HGrStr(#NAT,multnat#);
theorem :: MONOID_0:62
for n1,n2 being Nat, m1,m2 being Element of <NAT,*>
st n1 = m1 & n2 = m2
holds m1*m2 = n1*n2;
theorem :: MONOID_0:63
the_unity_wrt the mult of <NAT,*> = 1;
theorem :: MONOID_0:64
for n1,n2 being Nat, m1,m2 being Element of <NAT,*,1>
st n1 = m1 & n2 = m2
holds m1*m2 = n1*n2;
theorem :: MONOID_0:65
<NAT,*,1> = multLoopStr(#NAT,multnat,1#);
theorem :: MONOID_0:66
multnat = multreal|([:NAT,NAT:] qua set);
theorem :: MONOID_0:67
1 is_a_unity_wrt multnat & multnat has_a_unity & the_unity_wrt multnat = 1 &
multnat is commutative & multnat is associative &
multnat is uniquely-decomposable;
begin :: Monoid of finite sequences
definition
let D be non empty set;
func D*+^ -> unital associative cancelable uniquely-decomposable
constituted-FinSeqs strict (non empty HGrStr) means
:: MONOID_0:def 34
the carrier of it = D* &
for p,q being Element of it holds p [*] q = p^q;
end;
definition let D;
func D*+^+<0> -> well-unital strict (non empty MonoidalExtension of D*+^)
means
:: MONOID_0:def 35
not contradiction;
func D-concatenation -> BinOp of D* equals
:: MONOID_0:def 36
the mult of D*+^;
end;
theorem :: MONOID_0:68
D*+^ = HGrStr(#D*, D-concatenation#);
theorem :: MONOID_0:69
the_unity_wrt the mult of D*+^ = {};
theorem :: MONOID_0:70
the carrier of D*+^+<0> = D* & the mult of D*+^+<0> = D-concatenation &
the unity of D*+^+<0> = {};
theorem :: MONOID_0:71
for a,b being Element of D*+^+<0> holds a [*] b = a^b;
theorem :: MONOID_0:72
for F being non empty SubStr of D*+^
for p,q being Element of F holds p[*]q = p^q;
theorem :: MONOID_0:73
for F being unital (non empty SubStr of D*+^) holds
the_unity_wrt the mult of F = {};
theorem :: MONOID_0:74
for F being non empty SubStr of D*+^
st {} is Element of F holds F is unital &
the_unity_wrt the mult of F = {};
theorem :: MONOID_0:75
for A,B being non empty set st A c= B holds A*+^ is SubStr of B*+^;
theorem :: MONOID_0:76
D-concatenation has_a_unity & the_unity_wrt (D-concatenation) = {} &
D-concatenation is associative;
begin :: Monoids of mappings
definition let X be set;
func GPFuncs X -> unital associative constituted-Functions strict
(non empty HGrStr)
means
:: MONOID_0:def 37
the carrier of it = PFuncs(X,X) &
for f,g being Element of it holds f [*] g = f(*)g;
end;
definition let X be set;
func MPFuncs X -> well-unital strict
(non empty MonoidalExtension of GPFuncs X) means
:: MONOID_0:def 38
not contradiction;
func X-composition -> BinOp of PFuncs(X,X) equals
:: MONOID_0:def 39
the mult of GPFuncs X;
end;
:: corollary
:: MPFuncs X is constituted-Functions strict Monoid;
theorem :: MONOID_0:77
x is Element of GPFuncs X iff x is PartFunc of X,X;
theorem :: MONOID_0:78
the_unity_wrt the mult of GPFuncs X = id X;
theorem :: MONOID_0:79
for F being non empty SubStr of GPFuncs X
for f,g being Element of F holds f [*] g = f (*) g;
theorem :: MONOID_0:80
for F being non empty SubStr of GPFuncs X
st id X is Element of F holds
F is unital & the_unity_wrt the mult of F = id X;
theorem :: MONOID_0:81
Y c= X implies GPFuncs Y is SubStr of GPFuncs X;
definition let X be set;
func GFuncs X -> unital strict (non empty SubStr of GPFuncs X) means
:: MONOID_0:def 40
the carrier of it = Funcs(X,X);
end;
:: corollary
:: GFuncs X is unital associative constituted-Functions;
definition let X be set;
func MFuncs X -> well-unital strict MonoidalExtension of GFuncs X means
:: MONOID_0:def 41
not contradiction;
end;
:: corollary
:: GFuncs X is constituted-Functions Monoid;
theorem :: MONOID_0:82
x is Element of GFuncs X iff x is Function of X,X;
theorem :: MONOID_0:83
the mult of GFuncs X = (X-composition)|[:Funcs(X,X), Funcs(X,X):];
theorem :: MONOID_0:84
the_unity_wrt the mult of GFuncs X = id X;
theorem :: MONOID_0:85
the carrier of MFuncs X = Funcs(X,X) &
the mult of MFuncs X = (X-composition)|[:Funcs(X,X), Funcs(X,X):] &
the unity of MFuncs X = id X;
definition let X be set;
func GPerms X -> unital invertible strict (non empty SubStr of GFuncs X)
means
:: MONOID_0:def 42
for f being Element of GFuncs X holds
f in the carrier of it iff f is Permutation of X;
end;
:: corollary
:: GPerms X is constituted-Functions Group;
theorem :: MONOID_0:86
x is Element of GPerms X iff x is Permutation of X;
theorem :: MONOID_0:87
the_unity_wrt the mult of GPerms X = id X & 1.GPerms X = id X;
theorem :: MONOID_0:88
for f being Element of GPerms X holds f" = (f qua Function)";
Back to top