OpenMath Content Dictionary: gp1
Canonical URL:
http://www.openmath.org/cd/gp1.ocd
CD Base:
http://www.openmath.org/cd
CD File:
gp1.ocd
CD as XML Encoded OpenMath:
gp1.omcd
Defines:
character_table , character_table_of_group , conjugacy_class , declare_group , derived_subgroup , element_set , group , is_abelian , is_normal , is_subgroup , normal_closure , quotient_group , right_transversal , sylow_subgroup
Date:
2004-03-30
Version:
3
(Revision 1)
Review Date:
2017-12-31
Status:
experimental
This document is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
The copyright holder grants you permission to redistribute this
document freely as a verbatim copy. Furthermore, the copyright
holder permits you to develop any derived work from this document
provided that the following conditions are met.
a) The derived work acknowledges the fact that it is derived from
this document, and maintains a prominent reference in the
work to the original source.
b) The fact that the derived work is not the original OpenMath
document is stated prominently in the derived work. Moreover if
both this document and the derived work are Content Dictionaries
then the derived work must include a different CDName element,
chosen so that it cannot be confused with any works adopted by
the OpenMath Society. In particular, if there is a Content
Dictionary Group whose name is, for example, `math' containing
Content Dictionaries named `math1', `math2' etc., then you should
not name a derived Content Dictionary `mathN' where N is an integer.
However you are free to name it `private_mathN' or some such. This
is because the names `mathN' may be used by the OpenMath Society
for future extensions.
c) The derived work is distributed under terms that allow the
compilation of derived works, but keep paragraphs a) and b)
intact. The simplest way to do this is to distribute the derived
work under the OpenMath license, but this is not a requirement.
If you have questions about this license please contact the OpenMath
society at http://www.openmath.org .
Author: OpenMath Consortium
SourceURL: https://github.com/OpenMath/CDs
A CD of functions for group theory
Written by A. Solomon on 1998-11-19
Modified by David Carlisle 1998-04-28
This is the old version of group1.
It is now deprecated in facour of the Cds in the riaca_algebra CD group.
Role:
application
Description:
This symbol is a constructor for groups. It takes four arguments in
the following order; a set to specify the elements in the group, a
binary operation to specify the group operation, a unary operation to
specify inverses of group elements and an element to specify the
identity. Both the binary and unary operations should act on elements
of the set and return an element of the set.
Commented Mathematical property (CMP):
A group is closed under its operation.
A groups operation is associative.
A group has an identity element.
Every element of a group has an inverse.
Formal Mathematical property (FMP):
OpenMath XML (source)
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
<OMA>
<OMS cd="logic1" name="implies"/>
<OMA>
<OMS cd="relation1" name="eq"/>
<OMV name="G"/>
<OMA>
<OMS cd="gp1" name="declare_group"/>
<OMV name="set"/>
<OMV name="binop"/>
<OMV name="unop"/>
<OMV name="elt"/>
</OMA>
</OMA>
<OMA>
<OMS cd="logic1" name="and"/>
<OMA>
<OMS cd="logic1" name="implies"/>
<OMA>
<OMS cd="logic1" name="and"/>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="x"/>
<OMV name="set"/>
</OMA>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="y"/>
<OMV name="set"/>
</OMA>
</OMA>
<OMA>
<OMS cd="set1" name="in"/>
<OMA>
<OMV name="binop"/>
<OMV name="x"/>
<OMV name="y"/>
</OMA>
<OMV name="set"/>
</OMA>
</OMA>
<OMA>
<OMS cd="relation1" name="eq"/>
<OMA>
<OMV name="binop"/>
<OMV name="x"/>
<OMA>
<OMV name="binop"/>
<OMV name="y"/>
<OMV name="z"/>
</OMA>
</OMA>
<OMA>
<OMV name="binop"/>
<OMA>
<OMV name="binop"/>
<OMV name="x"/>
<OMV name="y"/>
</OMA>
<OMV name="z"/>
</OMA>
</OMA>
<OMA>
<OMS cd="logic1" name="and"/>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="elt"/>
<OMV name="set"/>
</OMA>
<OMBIND>
<OMS cd="quant1" name="forall"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMS cd="logic1" name="implies"/>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="x"/>
<OMV name="set"/>
</OMA>
<OMA>
<OMS cd="logic1" name="and"/>
<OMA>
<OMS cd="relation1" name="eq"/>
<OMA>
<OMV name="binop"/>
<OMV name="elt"/>
<OMV name="x"/>
</OMA>
<OMV name="x"/>
</OMA>
<OMA>
<OMS cd="relation1" name="eq"/>
<OMA>
<OMV name="binop"/>
<OMV name="x"/>
<OMV name="elt"/>
</OMA>
<OMV name="x"/>
</OMA>
</OMA>
</OMA>
</OMBIND>
</OMA>
<OMBIND>
<OMS cd="quant1" name="forall"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMS cd="logic1" name="implies"/>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="x"/>
<OMV name="set"/>
</OMA>
<OMA>
<OMS cd="relation1" name="eq"/>
<OMA>
<OMV name="binop"/>
<OMV name="x"/>
<OMA>
<OMV name="unop"/>
<OMV name="x"/>
</OMA>
</OMA>
<OMV name="elt"/>
</OMA>
</OMA>
</OMBIND>
</OMA>
</OMA>
</OMOBJ>
Strict Content MathML
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply><csymbol cd="logic1">implies</csymbol>
<apply><csymbol cd="relation1">eq</csymbol>
<ci>G</ci>
<apply><csymbol cd="gp1">declare_group</csymbol>
<ci>set</ci>
<ci>binop</ci>
<ci>unop</ci>
<ci>elt</ci>
</apply>
</apply>
<apply><csymbol cd="logic1">and</csymbol>
<apply><csymbol cd="logic1">implies</csymbol>
<apply><csymbol cd="logic1">and</csymbol>
<apply><csymbol cd="set1">in</csymbol><ci>x</ci><ci>set</ci></apply>
<apply><csymbol cd="set1">in</csymbol><ci>y</ci><ci>set</ci></apply>
</apply>
<apply><csymbol cd="set1">in</csymbol>
<apply><ci>binop</ci><ci>x</ci><ci>y</ci></apply>
<ci>set</ci>
</apply>
</apply>
<apply><csymbol cd="relation1">eq</csymbol>
<apply>
<ci>binop</ci>
<ci>x</ci>
<apply><ci>binop</ci><ci>y</ci><ci>z</ci></apply>
</apply>
<apply>
<ci>binop</ci>
<apply><ci>binop</ci><ci>x</ci><ci>y</ci></apply>
<ci>z</ci>
</apply>
</apply>
<apply><csymbol cd="logic1">and</csymbol>
<apply><csymbol cd="set1">in</csymbol><ci>elt</ci><ci>set</ci></apply>
<bind><csymbol cd="quant1">forall</csymbol>
<bvar><ci>x</ci></bvar>
<apply><csymbol cd="logic1">implies</csymbol>
<apply><csymbol cd="set1">in</csymbol><ci>x</ci><ci>set</ci></apply>
<apply><csymbol cd="logic1">and</csymbol>
<apply><csymbol cd="relation1">eq</csymbol>
<apply><ci>binop</ci><ci>elt</ci><ci>x</ci></apply>
<ci>x</ci>
</apply>
<apply><csymbol cd="relation1">eq</csymbol>
<apply><ci>binop</ci><ci>x</ci><ci>elt</ci></apply>
<ci>x</ci>
</apply>
</apply>
</apply>
</bind>
</apply>
<bind><csymbol cd="quant1">forall</csymbol>
<bvar><ci>x</ci></bvar>
<apply><csymbol cd="logic1">implies</csymbol>
<apply><csymbol cd="set1">in</csymbol><ci>x</ci><ci>set</ci></apply>
<apply><csymbol cd="relation1">eq</csymbol>
<apply><ci>binop</ci><ci>x</ci><apply><ci>unop</ci><ci>x</ci></apply></apply>
<ci>elt</ci>
</apply>
</apply>
</bind>
</apply>
</apply>
</math>
Prefix
implies
(
eq
(
G ,
declare_group
(
set ,
binop ,
unop ,
elt )
)
,
and
(
implies
(
and
(
in
(
x ,
set )
,
in
(
y ,
set )
)
,
in
(
binop
(
x ,
y )
,
set )
)
,
eq
(
binop
(
x ,
binop
(
y ,
z )
)
,
binop
(
binop
(
x ,
y )
,
z )
)
,
and
(
in
(
elt ,
set )
,
forall
[
x
] .
(
implies
(
in
(
x ,
set )
,
and
(
eq
(
binop
(
elt ,
x )
,
x )
,
eq
(
binop
(
x ,
elt )
,
x )
)
)
)
)
,
forall
[
x
] .
(
implies
(
in
(
x ,
set )
,
eq
(
binop
(
x ,
unop
(
x )
)
,
elt )
)
)
)
)
Popcorn
$G = gp1.declare_group($set, $binop, $unop, $elt) ==> (set1.in($x, $set) and set1.in($y, $set) ==> set1.in($binop($x, $y), $set)) and $binop($x, $binop($y, $z)) = $binop($binop($x, $y), $z) and set1.in($elt, $set) and quant1.forall[$x -> set1.in($x, $set) ==> $binop($elt, $x) = $x and $binop($x, $elt) = $x] and quant1.forall[$x -> set1.in($x, $set) ==> $binop($x, $unop($x)) = $elt]
Rendered Presentation MathML
G
=
declare_group
(
set
,
binop
,
unop
,
elt
)
⇒
(
x
∈
set
∧
y
∈
set
⇒
binop
(
x
,
y
)
∈
set
)
∧
binop
(
x
,
binop
(
y
,
z
)
)
=
binop
(
binop
(
x
,
y
)
,
z
)
∧
elt
∈
set
∧
∀
x
.
x
∈
set
⇒
binop
(
elt
,
x
)
=
x
∧
binop
(
x
,
elt
)
=
x
∧
∀
x
.
x
∈
set
⇒
binop
(
x
,
unop
(
x
)
)
=
elt
Example:
This example represents the group which has as elements all positive
and negative even numbers, the group operation is binary addition,
inverses are the negative of the element and the identity is the zero
element.
OpenMath XML (source)
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
<OMA>
<OMS cd="gp1" name="declare_group"/>
<OMA>
<OMS cd="set1" name="suchthat"/>
<OMS cd="setname1" name="Z"/>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMS cd="set1" name="in"/>
<OMA>
<OMS cd="arith1" name="divide"/>
<OMV name="x"/>
<OMI> 2 </OMI>
</OMA>
<OMS cd="setname1" name="Z"/>
</OMA>
</OMBIND>
</OMA>
<OMS cd="arith1" name="plus"/>
<OMS cd="arith1" name="unary_minus"/>
<OMS cd="alg1" name="zero"/>
</OMA>
</OMOBJ>
Strict Content MathML
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply><csymbol cd="gp1">declare_group</csymbol>
<apply><csymbol cd="set1">suchthat</csymbol>
<csymbol cd="setname1">Z</csymbol>
<bind><csymbol cd="fns1">lambda</csymbol>
<bvar><ci>x</ci></bvar>
<apply><csymbol cd="set1">in</csymbol>
<apply><csymbol cd="arith1">divide</csymbol><ci>x</ci><cn type="integer">2</cn></apply>
<csymbol cd="setname1">Z</csymbol>
</apply>
</bind>
</apply>
<csymbol cd="arith1">plus</csymbol>
<csymbol cd="arith1">unary_minus</csymbol>
<csymbol cd="alg1">zero</csymbol>
</apply>
</math>
Prefix
Popcorn
gp1.declare_group(set1.suchthat(setname1.Z, fns1.lambda[$x -> set1.in($x / 2, setname1.Z)]), arith1.plus, arith1.unary_minus, alg1.zero)
Rendered Presentation MathML
declare_group
(
{
x
∈
Z
|
x
2
∈
Z
}
,
+
,
-
,
0
)
Signatures:
sts
Role:
application
Description:
The unary boolean function whose value is true iff the argument is an abelian group
Commented Mathematical property (CMP):
If is_abelian(G) then for all a,b in element_set(G) a*b = b*a
Formal Mathematical property (FMP):
OpenMath XML (source)
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
<OMA>
<OMS cd="logic1" name="implies"/>
<OMA>
<OMS cd="gp1" name="is_abelian"/>
<OMV name="G"/>
</OMA>
<OMBIND>
<OMS cd="quant1" name="forall"/>
<OMBVAR>
<OMV name="a"/>
<OMV name="b"/>
</OMBVAR>
<OMA>
<OMS cd="logic1" name="implies"/>
<OMA>
<OMS cd="logic1" name="and"/>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="a"/>
<OMA>
<OMS cd="gp1" name="element_set"/>
<OMV name="G"/>
</OMA>
</OMA>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="b"/>
<OMA>
<OMS cd="gp1" name="element_set"/>
<OMV name="G"/>
</OMA>
</OMA>
</OMA>
<OMA>
<OMS cd="relation1" name="eq"/>
<OMA>
<OMS cd="arith1" name="times"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<OMA>
<OMS cd="arith1" name="times"/>
<OMV name="b"/>
<OMV name="a"/>
</OMA>
</OMA>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
Strict Content MathML
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply><csymbol cd="logic1">implies</csymbol>
<apply><csymbol cd="gp1">is_abelian</csymbol><ci>G</ci></apply>
<bind><csymbol cd="quant1">forall</csymbol>
<bvar><ci>a</ci></bvar>
<bvar><ci>b</ci></bvar>
<apply><csymbol cd="logic1">implies</csymbol>
<apply><csymbol cd="logic1">and</csymbol>
<apply><csymbol cd="set1">in</csymbol>
<ci>a</ci>
<apply><csymbol cd="gp1">element_set</csymbol><ci>G</ci></apply>
</apply>
<apply><csymbol cd="set1">in</csymbol>
<ci>b</ci>
<apply><csymbol cd="gp1">element_set</csymbol><ci>G</ci></apply>
</apply>
</apply>
<apply><csymbol cd="relation1">eq</csymbol>
<apply><csymbol cd="arith1">times</csymbol><ci>a</ci><ci>b</ci></apply>
<apply><csymbol cd="arith1">times</csymbol><ci>b</ci><ci>a</ci></apply>
</apply>
</apply>
</bind>
</apply>
</math>
Prefix
Popcorn
gp1.is_abelian($G) ==> quant1.forall[$a, $b -> set1.in($a, gp1.element_set($G)) and set1.in($b, gp1.element_set($G)) ==> $a * $b = $b * $a]
Rendered Presentation MathML
is_abelian
(
G
)
⇒
∀
a
,
b
.
a
∈
element_set
(
G
)
∧
b
∈
element_set
(
G
)
⇒
a
b
=
b
a
Signatures:
sts
Role:
application
Description:
The n-ary function Group. The group generated by its arguments.
The arguments must have a natural group operation associated with them.
Signatures:
sts
Role:
application
Description:
The unary function which returns the set of elements of a group.
Signatures:
sts
Role:
application
Description:
The binary function whose value is true if the second argument is a subgroup of the first.
Commented Mathematical property (CMP):
A is a subgroup of B implies element_set(A) is a subset of element_set(B)
Formal Mathematical property (FMP):
OpenMath XML (source)
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
<OMA>
<OMS cd="logic1" name="implies"/>
<OMA>
<OMS cd="gp1" name="is_subgroup"/>
<OMV name="B"/>
<OMV name="A"/>
</OMA>
<OMA>
<OMS cd="set1" name="subset"/>
<OMA>
<OMS cd="gp1" name="element_set"/>
<OMV name="A"/>
</OMA>
<OMA>
<OMS cd="gp1" name="element_set"/>
<OMV name="B"/>
</OMA>
</OMA>
</OMA>
</OMOBJ>
Strict Content MathML
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply><csymbol cd="logic1">implies</csymbol>
<apply><csymbol cd="gp1">is_subgroup</csymbol><ci>B</ci><ci>A</ci></apply>
<apply><csymbol cd="set1">subset</csymbol>
<apply><csymbol cd="gp1">element_set</csymbol><ci>A</ci></apply>
<apply><csymbol cd="gp1">element_set</csymbol><ci>B</ci></apply>
</apply>
</apply>
</math>
Prefix
Popcorn
gp1.is_subgroup($B, $A) ==> set1.subset(gp1.element_set($A), gp1.element_set($B))
Rendered Presentation MathML
is_subgroup
(
B
,
A
)
⇒
element_set
(
A
)
⊂
element_set
(
B
)
Signatures:
sts
Role:
application
Description:
The binary function whose value is a set of representatives for the right cosets
of the second argument as a subgroup of the first.
Signatures:
sts
Role:
application
Description:
The binary function whose value is the set of conjugates of
the elements of the second group by elements of the first,
where multiplication between them is defined.
Commented Mathematical property (CMP):
n in the normal closure (A,B) implies
there exists a in A and b in B s.t. n = b^(-1) a b
Formal Mathematical property (FMP):
OpenMath XML (source)
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
<OMA>
<OMS cd="logic1" name="implies"/>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="n"/>
<OMA>
<OMS cd="gp1" name="normal_closure"/>
<OMV name="A"/>
<OMV name="B"/>
</OMA>
</OMA>
<OMBIND>
<OMS cd="quant1" name="exists"/>
<OMBVAR>
<OMV name="a"/>
<OMV name="b"/>
</OMBVAR>
<OMA>
<OMS cd="logic1" name="and"/>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="a"/>
<OMA>
<OMS cd="gp1" name="element_set"/>
<OMV name="A"/>
</OMA>
</OMA>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="b"/>
<OMA>
<OMS cd="gp1" name="element_set"/>
<OMV name="B"/>
</OMA>
</OMA>
<OMA>
<OMS cd="relation1" name="eq"/>
<OMV name="n"/>
<OMA>
<OMS cd="arith1" name="times"/>
<OMV name="invb"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
</OMA>
<OMA>
<OMS cd="relation1" name="eq"/>
<OMA>
<OMS cd="arith1" name="times"/>
<OMV name="invb"/>
<OMV name="b"/>
</OMA>
<OMS cd="alg1" name="one"/>
</OMA>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
Strict Content MathML
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply><csymbol cd="logic1">implies</csymbol>
<apply><csymbol cd="set1">in</csymbol>
<ci>n</ci>
<apply><csymbol cd="gp1">normal_closure</csymbol><ci>A</ci><ci>B</ci></apply>
</apply>
<bind><csymbol cd="quant1">exists</csymbol>
<bvar><ci>a</ci></bvar>
<bvar><ci>b</ci></bvar>
<apply><csymbol cd="logic1">and</csymbol>
<apply><csymbol cd="set1">in</csymbol>
<ci>a</ci>
<apply><csymbol cd="gp1">element_set</csymbol><ci>A</ci></apply>
</apply>
<apply><csymbol cd="set1">in</csymbol>
<ci>b</ci>
<apply><csymbol cd="gp1">element_set</csymbol><ci>B</ci></apply>
</apply>
<apply><csymbol cd="relation1">eq</csymbol>
<ci>n</ci>
<apply><csymbol cd="arith1">times</csymbol><ci>invb</ci><ci>a</ci><ci>b</ci></apply>
</apply>
<apply><csymbol cd="relation1">eq</csymbol>
<apply><csymbol cd="arith1">times</csymbol><ci>invb</ci><ci>b</ci></apply>
<csymbol cd="alg1">one</csymbol>
</apply>
</apply>
</bind>
</apply>
</math>
Prefix
implies
(
in
(
n ,
normal_closure
(
A ,
B )
)
,
exists
[
a
b
] .
(
and
(
in
(
a ,
element_set
(
A )
)
,
in
(
b ,
element_set
(
B )
)
,
eq
(
n ,
times
(
invb ,
a ,
b )
)
,
eq
(
times
(
invb ,
b )
,
one )
)
)
)
Popcorn
set1.in($n, gp1.normal_closure($A, $B)) ==> quant1.exists[$a, $b -> set1.in($a, gp1.element_set($A)) and set1.in($b, gp1.element_set($B)) and $n = $invb * $a * $b and $invb * $b = alg1.one]
Rendered Presentation MathML
n
∈
normal_closure
(
A
,
B
)
⇒
∃
a
,
b
.
a
∈
element_set
(
A
)
∧
b
∈
element_set
(
B
)
∧
n
=
invb
a
b
∧
invb
b
=
1
Signatures:
sts
Role:
application
Description:
If G, H are the group arguments, then IsNormal(G,H) returns true precisely when
G is normal in H. That is, g^-1*h*g is defined and contained in H for
all h in H and g in G.
Commented Mathematical property (CMP):
is_normal(G,H) implies that for all g in G and h in H then
g^-1*h*g is in H
Formal Mathematical property (FMP):
OpenMath XML (source)
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
<OMA>
<OMS cd="logic1" name="implies"/>
<OMA>
<OMS cd="gp1" name="is_normal"/>
<OMV name="G"/>
<OMV name="H"/>
</OMA>
<OMBIND>
<OMS cd="quant1" name="forall"/>
<OMBVAR>
<OMV name="g"/>
<OMV name="h"/>
</OMBVAR>
<OMA>
<OMS cd="logic1" name="and"/>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="g"/>
<OMA>
<OMS cd="gp1" name="element_set"/>
<OMV name="G"/>
</OMA>
</OMA>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="h"/>
<OMA>
<OMS cd="gp1" name="element_set"/>
<OMV name="H"/>
</OMA>
</OMA>
<OMA>
<OMS cd="set1" name="in"/>
<OMA>
<OMS cd="arith1" name="times"/>
<OMV name="invg"/>
<OMV name="h"/>
<OMV name="g"/>
</OMA>
<OMA>
<OMS cd="gp1" name="element_set"/>
<OMV name="H"/>
</OMA>
<OMA>
<OMS cd="arith1" name="times"/>
<OMV name="invg"/>
<OMV name="g"/>
</OMA>
</OMA>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
Strict Content MathML
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply><csymbol cd="logic1">implies</csymbol>
<apply><csymbol cd="gp1">is_normal</csymbol><ci>G</ci><ci>H</ci></apply>
<bind><csymbol cd="quant1">forall</csymbol>
<bvar><ci>g</ci></bvar>
<bvar><ci>h</ci></bvar>
<apply><csymbol cd="logic1">and</csymbol>
<apply><csymbol cd="set1">in</csymbol>
<ci>g</ci>
<apply><csymbol cd="gp1">element_set</csymbol><ci>G</ci></apply>
</apply>
<apply><csymbol cd="set1">in</csymbol>
<ci>h</ci>
<apply><csymbol cd="gp1">element_set</csymbol><ci>H</ci></apply>
</apply>
<apply><csymbol cd="set1">in</csymbol>
<apply><csymbol cd="arith1">times</csymbol><ci>invg</ci><ci>h</ci><ci>g</ci></apply>
<apply><csymbol cd="gp1">element_set</csymbol><ci>H</ci></apply>
<apply><csymbol cd="arith1">times</csymbol><ci>invg</ci><ci>g</ci></apply>
</apply>
</apply>
</bind>
</apply>
</math>
Prefix
implies
(
is_normal
(
G ,
H )
,
forall
[
g
h
] .
(
and
(
in
(
g ,
element_set
(
G )
)
,
in
(
h ,
element_set
(
H )
)
,
in
(
times
(
invg ,
h ,
g )
,
element_set
(
H )
,
times
(
invg ,
g )
)
)
)
)
Popcorn
gp1.is_normal($G, $H) ==> quant1.forall[$g, $h -> set1.in($g, gp1.element_set($G)) and set1.in($h, gp1.element_set($H)) and set1.in($invg * $h * $g, gp1.element_set($H), $invg * $g)]
Rendered Presentation MathML
is_normal
(
G
,
H
)
⇒
∀
g
,
h
.
g
∈
element_set
(
G
)
∧
h
∈
element_set
(
H
)
∧
invg
h
g
∈
element_set
(
H
)
Signatures:
sts
Role:
application
Description:
The binary function whose value is the factor group of the first argument by the
second, assuming the second is normal in the first.
Signatures:
sts
Role:
application
Description:
The binary function whose value is the set of elements which
are conjugate to the second argument in the first.
Commented Mathematical property (CMP):
The conjugacy class in G with respect to h = {g^(-1) h g | g in G}
Formal Mathematical property (FMP):
OpenMath XML (source)
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
<OMA>
<OMS cd="relation1" name="eq"/>
<OMA>
<OMS cd="gp1" name="conjugacy_class"/>
<OMV name="G"/>
<OMV name="h"/>
</OMA>
<OMA>
<OMS cd="set1" name="suchthat"/>
<OMA>
<OMS cd="gp1" name="element_set"/>
<OMV name="G"/>
</OMA>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="conj"/>
</OMBVAR>
<OMA>
<OMS cd="logic1" name="and"/>
<OMA>
<OMS cd="relation1" name="eq"/>
<OMV name="conj"/>
<OMA>
<OMS cd="arith1" name="times"/>
<OMV name="invg"/>
<OMV name="h"/>
<OMV name="g"/>
</OMA>
</OMA>
<OMA>
<OMS cd="relation1" name="eq"/>
<OMA>
<OMV name="invg"/>
<OMV name="g"/>
</OMA>
<OMS cd="alg1" name="one"/>
</OMA>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="conj"/>
<OMA>
<OMS cd="gp1" name="element_set"/>
<OMV name="G"/>
</OMA>
</OMA>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="g"/>
<OMA>
<OMS cd="gp1" name="element_set"/>
<OMV name="G"/>
</OMA>
</OMA>
</OMA>
</OMBIND>
</OMA>
</OMA>
</OMOBJ>
Strict Content MathML
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply><csymbol cd="relation1">eq</csymbol>
<apply><csymbol cd="gp1">conjugacy_class</csymbol><ci>G</ci><ci>h</ci></apply>
<apply><csymbol cd="set1">suchthat</csymbol>
<apply><csymbol cd="gp1">element_set</csymbol><ci>G</ci></apply>
<bind><csymbol cd="fns1">lambda</csymbol>
<bvar><ci>conj</ci></bvar>
<apply><csymbol cd="logic1">and</csymbol>
<apply><csymbol cd="relation1">eq</csymbol>
<ci>conj</ci>
<apply><csymbol cd="arith1">times</csymbol><ci>invg</ci><ci>h</ci><ci>g</ci></apply>
</apply>
<apply><csymbol cd="relation1">eq</csymbol>
<apply><ci>invg</ci><ci>g</ci></apply>
<csymbol cd="alg1">one</csymbol>
</apply>
<apply><csymbol cd="set1">in</csymbol>
<ci>conj</ci>
<apply><csymbol cd="gp1">element_set</csymbol><ci>G</ci></apply>
</apply>
<apply><csymbol cd="set1">in</csymbol>
<ci>g</ci>
<apply><csymbol cd="gp1">element_set</csymbol><ci>G</ci></apply>
</apply>
</apply>
</bind>
</apply>
</apply>
</math>
Prefix
eq
(
conjugacy_class
(
G ,
h )
,
suchthat
(
element_set
(
G )
,
lambda
[
conj
] .
(
and
(
eq
(
conj ,
times
(
invg ,
h ,
g )
)
,
eq
(
invg
(
g )
,
one )
,
in
(
conj ,
element_set
(
G )
)
,
in
(
g ,
element_set
(
G )
)
)
)
)
)
Popcorn
gp1.conjugacy_class($G, $h) = set1.suchthat(gp1.element_set($G), fns1.lambda[$conj -> $conj = $invg * $h * $g and $invg($g) = alg1.one and set1.in($conj, gp1.element_set($G)) and set1.in($g, gp1.element_set($G))])
Rendered Presentation MathML
conjugacy_class
(
G
,
h
)
=
{
conj
∈
element_set
(
G
)
|
conj
=
invg
h
g
∧
invg
(
g
)
=
1
∧
conj
∈
element_set
(
G
)
∧
g
∈
element_set
(
G
)
}
Signatures:
sts
Role:
application
Description:
The unary function whose value is the subgroup of argument
generated by all products of the form xyx^-1y^-1.
Commented Mathematical property (CMP):
d in the derived subgroup of G implies
there exist x,y in G such that d=x y x^(-1) y^(-1)
Formal Mathematical property (FMP):
OpenMath XML (source)
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
<OMA>
<OMS cd="logic1" name="implies"/>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="d"/>
<OMA>
<OMS cd="gp1" name="element_set"/>
<OMV name="G"/>
</OMA>
</OMA>
<OMBIND>
<OMS cd="quant1" name="exists"/>
<OMBVAR>
<OMV name="x"/>
<OMV name="y"/>
</OMBVAR>
<OMA>
<OMS cd="logic1" name="and"/>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="x"/>
<OMA>
<OMS cd="gp1" name="element_set"/>
<OMV name="G"/>
</OMA>
</OMA>
<OMA>
<OMS cd="set1" name="in"/>
<OMV name="y"/>
<OMA>
<OMS cd="gp1" name="element_set"/>
<OMV name="G"/>
</OMA>
</OMA>
<OMA>
<OMS cd="relation1" name="eq"/>
<OMV name="d"/>
<OMA>
<OMS cd="arith1" name="times"/>
<OMV name="x"/>
<OMV name="y"/>
<OMV name="invx"/>
<OMV name="invy"/>
</OMA>
</OMA>
<OMA>
<OMS cd="relation1" name="eq"/>
<OMA>
<OMS cd="arith1" name="times"/>
<OMV name="invx"/>
<OMV name="x"/>
</OMA>
<OMS cd="alg1" name="one"/>
</OMA>
<OMA>
<OMS cd="relation1" name="eq"/>
<OMA>
<OMS cd="arith1" name="times"/>
<OMV name="invy"/>
<OMV name="y"/>
</OMA>
<OMS cd="alg1" name="one"/>
</OMA>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
Strict Content MathML
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply><csymbol cd="logic1">implies</csymbol>
<apply><csymbol cd="set1">in</csymbol>
<ci>d</ci>
<apply><csymbol cd="gp1">element_set</csymbol><ci>G</ci></apply>
</apply>
<bind><csymbol cd="quant1">exists</csymbol>
<bvar><ci>x</ci></bvar>
<bvar><ci>y</ci></bvar>
<apply><csymbol cd="logic1">and</csymbol>
<apply><csymbol cd="set1">in</csymbol>
<ci>x</ci>
<apply><csymbol cd="gp1">element_set</csymbol><ci>G</ci></apply>
</apply>
<apply><csymbol cd="set1">in</csymbol>
<ci>y</ci>
<apply><csymbol cd="gp1">element_set</csymbol><ci>G</ci></apply>
</apply>
<apply><csymbol cd="relation1">eq</csymbol>
<ci>d</ci>
<apply><csymbol cd="arith1">times</csymbol>
<ci>x</ci>
<ci>y</ci>
<ci>invx</ci>
<ci>invy</ci>
</apply>
</apply>
<apply><csymbol cd="relation1">eq</csymbol>
<apply><csymbol cd="arith1">times</csymbol><ci>invx</ci><ci>x</ci></apply>
<csymbol cd="alg1">one</csymbol>
</apply>
<apply><csymbol cd="relation1">eq</csymbol>
<apply><csymbol cd="arith1">times</csymbol><ci>invy</ci><ci>y</ci></apply>
<csymbol cd="alg1">one</csymbol>
</apply>
</apply>
</bind>
</apply>
</math>
Prefix
implies
(
in
(
d ,
element_set
(
G )
)
,
exists
[
x
y
] .
(
and
(
in
(
x ,
element_set
(
G )
)
,
in
(
y ,
element_set
(
G )
)
,
eq
(
d ,
times
(
x ,
y ,
invx ,
invy )
)
,
eq
(
times
(
invx ,
x )
,
one )
,
eq
(
times
(
invy ,
y )
,
one )
)
)
)
Popcorn
set1.in($d, gp1.element_set($G)) ==> quant1.exists[$x, $y -> set1.in($x, gp1.element_set($G)) and set1.in($y, gp1.element_set($G)) and $d = $x * $y * $invx * $invy and $invx * $x = alg1.one and $invy * $y = alg1.one]
Rendered Presentation MathML
d
∈
element_set
(
G
)
⇒
∃
x
,
y
.
x
∈
element_set
(
G
)
∧
y
∈
element_set
(
G
)
∧
d
=
x
y
invx
invy
∧
invx
x
=
1
∧
invy
y
=
1
Signatures:
sts
Role:
application
Description:
The largest p-subgroup of the argument (up to conjugacy).
Signatures:
sts
Role:
application
Description:
Refers to the character table of its argument
which must be a group.
Signatures:
sts
Role:
application
Description:
This is the constructor for a character table.
Usage:
CharacterTable(centralizer_primes, centralizer_indices,
classnames, power_map, irreducibles_matrix)
If G has n conjugacy classes then:
* centralizer_primes is of the form
[p1, .., pk] i < j implies that pi < pj and
the pi are precisely the primes which divide the order of
some centralizer of a conjugacy class
* centralizer_indices is of the form
[[i11, ...,i1k] ... [in1,...ink]]
so the centralizer of class 1 has order p1^i11 ... pk^i1k etc
* classnames is a list of n strings which name the conjugacy classes
in line with the convention used in the Atlas of Finite Groups
* power_map is of the form [list1, ..., listk]
where listi[j] is the name of the class where elements of class j go when
raised to the power pi.
* irreducibles_matrix: rows correspond to irreducible characters,
columns are conjugacy classes. Entries are the value of an element of the
column's conjugacy class under the character of the row.
Signatures:
sts