#############################################################################
##
#W pbr.xml
#Y Copyright (C) 2015 James D. Mitchell
##
## Licensing information can be found in the README file of this package.
##
#############################################################################
##
<#GAPDoc Label="IsPBR">
<ManSection>
<Filt Name = "IsPBR" Arg = "obj"Type = "Category"/>
<Returns>
<K>true</K> or <K>false</K>.
</Returns>
<Description>
Every PBR in &GAP; belongs to the category <C>IsPBR</C>. Basic operations
for PBRs are
<Ref Attr = "DegreeOfPBR"/>,
<Ref Oper = "ExtRepOfObj" Label = "for a PBR"/>,
<Ref Oper = "PBRNumber"/>,
<Ref Oper = "NumberPBR"/>,
<Ref Oper = "StarOp" Label = "for a PBR"/>,
and multiplication of two PBRs of equal degree is via <K>*</K>.
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="IsPBRCollection">
<ManSection>
<Filt Name = "IsPBRCollection" Arg = "obj"Type = "Category"/>
<Filt Name = "IsPBRCollColl" Arg = "obj"Type = "Category"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
Every collection of PBRs belongs to the category
<C>IsPBRCollection</C>. For example, PBR semigroups
belong to <C>IsPBRCollection</C>.
<P/>
Every collection of collections of PBRs belongs to
<C>IsPBRCollColl</C>. For example, a list of PBR
semigroups belongs to <C>IsPBRCollColl</C>.
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="PBR">
<ManSection>
<Oper Name = "PBR" Arg = "left, right"/>
<Returns>A PBR.</Returns>
<Description>
The arguments <A>left</A> and <A>right</A> of this function should each
be a list of length <C>n</C> whose entries are lists of integers in the
ranges <C>[-n .. -1]</C> and <C>[1 .. n]</C> for some <C>n</C> greater
than 0.
<P/>
Given such an argument, <C>PBR</C> returns the PBR <C>x</C> where:
<List>
<Item>
for each <C>i</C> in the range <C>[1 .. n]</C> there is an edge from
<C>i</C> to every <C>j</C> in <A>left[i]</A>;
</Item>
<Item>
for each <C>i</C> in the range <C>[-n .. -1]</C> there is an edge from
<C>i</C> to every <C>j</C> in <A>right[-i]</A>;
</Item>
</List>
<#GAPDoc Label="RandomPBR">
<ManSection>
<Oper Name = "RandomPBR" Arg = "n[, p]"/>
<Returns>A PBR.</Returns>
<Description>
If <A>n</A> is a positive integer and <A>p</A> is an float between
<C>0</C> and <C>1</C>, then <C>RandomPBR</C> returns a random PBR of
degree <A>n</A> where the probability of there being an edge from
<C>i</C> to <C>j</C> is approximately <C>p</C>.
<P/>
<#GAPDoc Label="EmptyPBR">
<ManSection>
<Oper Name = "EmptyPBR" Arg = "n"/>
<Returns>A PBR.</Returns>
<Description>
If <A>n</A> is a positive integer, then <C>EmptyPBR</C>
returns the PBR of degree <A>n</A> with no edges.
<Example><![CDATA[
gap> x := EmptyPBR(3);
PBR([ [ ], [ ], [ ] ], [ [ ], [ ], [ ] ])
gap> IsEmptyPBR(x);
true]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="IdentityPBR">
<ManSection>
<Oper Name = "IdentityPBR" Arg = "n"/>
<Returns>A PBR.</Returns>
<Description>
If <A>n</A> is a positive integer, then <C>IdentityPBR</C> returns the
identity PBR of degree <A>n</A>.
This PBR has <C>2</C><A>n</A> edges: specifically, for each <C>i</C> in
the ranges <C>[1 .. n]</C> and <C>[-n .. -1]</C>, the identity PBR has an
edge from <C>i</C> to <C>-i</C>.
<Example><![CDATA[
gap> x := IdentityPBR(3);
PBR([ [ -1 ], [ -2 ], [ -3 ] ], [ [ 1 ], [ 2 ], [ 3 ] ])
gap> IsIdentityPBR(x);
true]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="UniversalPBR">
<ManSection>
<Oper Name = "UniversalPBR" Arg = "n"/>
<Returns>A PBR.</Returns>
<Description>
If <A>n</A> is a positive integer, then <C>UniversalPBR</C> returns the
PBR of degree <A>n</A> with <C>4 * n ^ 2</C> edges, i.e. every possible
edge.
<Example><![CDATA[
gap> x := UniversalPBR(2);
PBR([ [ -2, -1, 1, 2 ], [ -2, -1, 1, 2 ] ],
[ [ -2, -1, 1, 2 ], [ -2, -1, 1, 2 ] ])
gap> IsUniversalPBR(x);
true]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="DegreeOfPBR">
<ManSection>
<Attr Name = "DegreeOfPBR" Arg = "x"/>
<Attr Name = "DegreeOfPBRCollection" Arg = "x"/>
<Returns>A positive integer.</Returns>
<Description>
The degree of a PBR is, roughly speaking, the number of points
where it is defined. More precisely, if <A>x</A> is a PBR defined
on <C>2 * n</C> points, then the degree of <A>x</A> is <C>n</C>.
<P/>
The degree of a collection <A>coll</A> of PBRs of equal degree is
just the degree of any (and every) PBR in <A>coll</A>. The degree
of collection of PBRs of unequal degrees is not defined.
<#GAPDoc Label="ExtRepOfObjPBR">
<ManSection>
<Oper Name = "ExtRepOfObj" Arg = "x" Label = "for a PBR"/>
<Returns>A pair of lists of lists of integers.</Returns>
<Description>
If <C>n</C> is the degree of the PBR <A>x</A>, then <C>ExtRepOfObj</C>
returns the argument required by <Ref Oper = "PBR"/> to create a PBR
equal to <A>x</A>, i.e. <C>PBR(ExtRepOfObj(<A>x</A>))</C>
returns a PBR equal to <A>x</A>.
<#GAPDoc Label="NumberPBR">
<ManSection>
<Oper Name = "PBRNumber" Arg = "m, n"/>
<Oper Name = "NumberPBR" Arg = "mat"/>
<Returns>A PBR, or a positive integer.</Returns>
<Description>
These functions implement a bijection from the set of all PBRs of
degree <A>n</A> and the numbers <C>[1 .. 2 ^ (4 * <A>n</A> ^ 2)]</C>.
<P/>
More precisely, if <A>m</A> and <A>n</A> are positive integers such that
<A>m</A> is at most <C>2 ^ (4 * <A>n</A> ^ 2)</C>, then <C>PBRNumber</C>
returns the <A>m</A>th PBR of degree <A>n</A>.
<P/>
If <A>mat</A> is a PBR of degree <A>n</A>, then <C>NumberPBR</C> returns
the number in <C>[1 .. 2 ^ (4 * <A>n</A> ^ 2)]</C> that corresponds to
<A>mat</A>.
<#GAPDoc Label="IsEmptyPBR">
<ManSection>
<Prop Name="IsEmptyPBR" Arg="x"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
A PBR is <B>empty</B> if it has no edges. <C>IsEmptyPBR</C> returns
<K>true</K> if the PBR <A>x</A> is empty and <K>false</K> if it is not.
<Example><![CDATA[
gap> x := PBR([[]], [[]]);;
gap> IsEmptyPBR(x);
true
gap> x := PBR([[-2, 1], [2]], [[-1], [-2, 1]]);
PBR([ [ -2, 1 ], [ 2 ] ], [ [ -1 ], [ -2, 1 ] ])
gap> IsEmptyPBR(x);
false]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="IsIdentityPBR">
<ManSection>
<Prop Name="IsIdentityPBR" Arg="x"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
A PBR of degree <C>n</C> is the <B>identity</B> PBR of degree <C>n</C>
if it is the identity of the full PBR monoid of degree <C>n</C>.
The identity PBR of degree <C>n</C> has <C>2n</C> edges. Specifically,
for each <C>i</C> in the ranges <C>[1 .. n]</C> and <C>[-n .. -1]</C>,
the identity PBR has an edge from <C>i</C> to <C>-i</C>. <P/>
<C>IsIdentityPBR</C> returns <K>true</K> is the PBR <A>x</A> is
an identity PBR and <K>false</K> if it is not.
<Example><![CDATA[
gap> x := PBR([[-2], [-1]], [[1], [2]]);
PBR([ [ -2 ], [ -1 ] ], [ [ 1 ], [ 2 ] ])
gap> IsIdentityPBR(x);
false
gap> x := PBR([[-1]], [[1]]);
PBR([ [ -1 ] ], [ [ 1 ] ])
gap> IsIdentityPBR(x);
true]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="IsUniversalPBR">
<ManSection>
<Prop Name = "IsUniversalPBR" Arg = "x"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
A PBR of degree <C>n</C> is <B>universal</B> if it has
<C>4 * n ^ 2</C> edges, i.e. every possible edge.
<Example><![CDATA[
gap> x := PBR([[]], [[]]);
PBR([ [ ] ], [ [ ] ])
gap> IsUniversalPBR(x);
false
gap> x := PBR([[-2, 1], [2]], [[-1], [-2, 1]]);
PBR([ [ -2, 1 ], [ 2 ] ], [ [ -1 ], [ -2, 1 ] ])
gap> IsUniversalPBR(x);
false
gap> x := PBR([[-1, 1]], [[-1, 1]]);
PBR([ [ -1, 1 ] ], [ [ -1, 1 ] ])
gap> IsUniversalPBR(x);
true]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="IsBipartitionPBR">
<ManSection>
<Prop Name = "IsBipartitionPBR" Arg = "x"/>
<Prop Name = "IsBlockBijectionPBR" Arg = "x"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
If the PBR <A>x</A> defines a bipartition, then <C>IsBipartitionPBR</C>
returns <K>true</K>, and if not, then it returns <K>false</K>.
<P/>
A PBR <A>x</A> defines a bipartition if and only if when considered as a
boolean matrix it is an equivalence.<P/>
If <A>x</A> satisfies <C>IsBipartitionPBR</C> and when considered as a
bipartition it is a block bijection, then <C>IsBlockBijectionPBR</C>
returns <K>true</K>.
<#GAPDoc Label="IsTransformationPBR">
<ManSection>
<Prop Name = "IsTransformationPBR" Arg = "x"/>
<Returns>
<K>true</K> or <K>false</K>.
</Returns>
<Description>
If the PBR <A>x</A> defines a transformation, then
<C>IsTransformationPBR</C> returns <K>true</K>, and if not, then
<K>false</K> is returned.
<P/>
A PBR <A>x</A> defines a transformation if and only if
it satisfies <Ref Prop = "IsBipartitionPBR"/> and
when it is considered as a bipartition it satisfies
<Ref Prop = "IsTransBipartition"/>.
<P/>
With this definition, <Ref Oper = "AsPBR"/> and
<Ref Attr = "AsTransformation" Label = "for a PBR"/> define mutually
inverse isomorphisms from the full transformation monoid of degree <C>n</C>
to the submonoid of the full PBR monoid of degree <C>n</C> consisting of
all the elements satisfying <C>IsTransformationPBR</C>.
<#GAPDoc Label="IsDualTransformationPBR">
<ManSection>
<Prop Name = "IsDualTransformationPBR" Arg = "x"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
If the PBR <A>x</A> defines a dual transformation, then
<C>IsDualTransformationPBR</C> returns <K>true</K>, and if not, then
<K>false</K> is returned.
<P/>
A PBR <A>x</A> defines a dual transformation if and only if
<C>Star(<A>x</A>)</C> satisfies <Ref Prop = "IsTransformationPBR"/>.
<P/>
<#GAPDoc Label="IsPartialPermPBR">
<ManSection>
<Prop Name="IsPartialPermPBR" Arg="x"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
If the PBR <A>x</A> defines a partial permutation, then
<C>IsPartialPermPBR</C> returns <K>true</K>, and if not, then
<K>false</K> is returned.
<P/>
A PBR <A>x</A> defines a partial perm if and only if
it satisfies <Ref Prop = "IsBipartitionPBR"/> and
and when it is considered as a bipartition it satisfies
<Ref Prop = "IsPartialPermBipartition"/>.
<P/>
With this definition, <Ref Oper = "AsPBR"/> and
<Ref Oper = "AsPartialPerm" Label = "for a PBR"/> define mutually inverse
isomorphisms from the symmetric inverse monoid of degree <C>n</C> to the
submonoid of the full PBR monoid of degree <C>n</C> consisting of all the
elements satisfying <C>IsPartialPermPBR</C>.
<#GAPDoc Label="IsPermPBR">
<ManSection>
<Prop Name = "IsPermPBR" Arg = "x"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
If the PBR <A>x</A> defines a permutation, then
<C>IsPermPBR</C> returns <K>true</K>, and if not, then
<K>false</K> is returned.
<P/>
A PBR <A>x</A> defines a permutation if and only if
it satisfies <Ref Prop = "IsBipartitionPBR"/> and
and when it is considered as a bipartition it satisfies
<Ref Prop = "IsPermBipartition"/>.
<P/>
With this definition, <Ref Oper = "AsPBR"/> and
<Ref Attr = "AsPermutation" Label = "for a PBR"/> define mutually inverse
isomorphisms from the symmetric group of degree <C>n</C> to the
subgroup of the full PBR monoid of degree <C>n</C> consisting of all the
elements satisfying <C>IsPermPBR</C> (i.e. the <Ref Attr = "GroupOfUnits"/>
of the full PBR monoid of degree <C>n</C>).
<#GAPDoc Label="AsPBR">
<ManSection>
<Oper Name = "AsPBR" Arg = "x[, n]"/>
<Returns>A PBR.</Returns>
<Description>
<C>AsPBR</C> returns the boolean matrix, bipartition, transformation,
partial permutation, or permutation <A>x</A> as a PBR of degree <A>n</A>.
<P/>
There are several possible arguments for <C>AsPBR</C>:
<List>
<Mark>bipartitions</Mark>
<Item>
If <A>x</A> is a bipartition and <A>n</A> is a positive integer, then
<C>AsPBR</C> returns a PBR corresponding to <A>x</A> with degree
<A>n</A>. The resulting PBR has an edge from <C>i</C> to <C>j</C>
whenever <C>i</C> and <C>j</C> belong to the same block of
<A>x</A>.<P/>
If the optional second argument <A>n</A> is not specified, then
degree of the bipartition <A>x</A> is used by default.
</Item>
<Mark>boolean matrices</Mark>
<Item>
If <A>x</A> is a boolean matrix of even dimension <C>2 * m</C> and
<A>n</A> is a positive integer, then <C>AsPBR</C> returns a PBR
corresponding to <A>x</A> with degree <A>n</A>.
If the optional second argument <A>n</A> is not specified, then
dimension of the boolean matrix <A>x</A> is used by default.
</Item>
<Mark>transformations, partial perms, permutations</Mark>
<Item>
If <A>x</A> is a transformation, partial perm, or permutation and
<A>n</A> is a positive integer, then <C>AsPBR</C> is a synonym for
<C>AsPBR(AsBipartition(<A>x</A>, <A>n</A>))</C>.
If the optional second argument <A>n</A> is not specified, then
<C>AsPBR</C> is a synonym for <C>AsPBR(AsBipartition(<A>x</A>))</C>.
See <Ref Oper = "AsBipartition"/> for more details.
</Item>
</List>
<#GAPDoc Label="AsTransformationPBR">
<ManSection>
<Attr Name = "AsTransformation" Arg = "x" Label = "for a PBR"/>
<Returns>A transformation.</Returns>
<Description>
When the argument <A>x</A> is a PBR which satisfies <Ref Prop = "IsTransformationPBR"/>, then this attribute returns that
transformation.
<Example><![CDATA[
gap> x := PBR([[-3], [-3], [-2]], [[], [3], [1, 2]]);;
gap> IsTransformationPBR(x);
true
gap> AsTransformation(x);
Transformation( [ 3, 3, 2 ] )
gap> x := PBR([[1], [1, 2]], [[-2, -1], [-2, -1]]);;
gap> AsTransformation(x);
Error, the argument (a pbr) does not define a transformation]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="AsPartialPermPBR">
<ManSection>
<Oper Name = "AsPartialPerm" Arg = "x" Label = "for a PBR"/>
<Returns>A partial perm.</Returns>
<Description>
When the argument <A>x</A> is a PBR which satisfies
<Ref Prop = "IsPartialPermPBR"/>, then this function returns that partial
perm.
<#GAPDoc Label="AsPermutationPBR">
<ManSection>
<Attr Name = "AsPermutation" Arg = "x" Label = "for a PBR"/>
<Returns>A permutation.</Returns>
<Description>
When the argument <A>x</A> is a PBR which satisfies
<Ref Prop = "IsPermPBR"/>, then this attribute returns that permutation.
<#GAPDoc Label="StarPBR">
<ManSection>
<Oper Name = "StarOp" Arg = "x" Label = "for a PBR"/>
<Attr Name = "Star" Arg = "x" Label = "for a PBR"/>
<Returns>A PBR.</Returns>
<Description>
<C>StarOp</C> returns the unique PBR <C>y</C> obtained by exchanging the
positive and negative numbers in <A>x</A> (i.e. multiplying
<Ref Oper = "ExtRepOfObj" Label = "for a PBR"/> by <C>-1</C> and swapping its first and
second components).
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.35Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-10-12)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.