#############################################################################
##
#W bipartition.xml
#Y Copyright (C) 2011-14 James D. Mitchell
##
## Licensing information can be found in the README file of this package.
##
#############################################################################
##
<#GAPDoc Label="RightBlocks">
<ManSection>
<Attr Name = "RightBlocks" Arg = "x"/>
<Returns>The right blocks of a bipartition.</Returns>
<Description>
<C>RightBlocks</C> returns the right blocks of the bipartition <A>x</A>.
<P/>
The <E>right blocks</E> of a bipartition <A>x</A> are just the
intersections of the blocks of <A>x</A> with <C>[-n .. -1]</C> where
<C>n</C> is the degree of <A>x</A>, the values in transverse blocks are
positive, and the values in non-transverse blocks are negative. <P/>
The right blocks of a bipartition are &GAP; objects in their own right,
and are not simply a list of blocks of <A>x</A>; see <Ref
Sect="section-blocks"/> for more information. <P/>
The significance of this notion lies in the fact that bipartitions
<A>x</A> and <C>y</C> are &L;-related in the partition monoid if and only
if they have equal right blocks.
<Example><![CDATA[
gap> x := Bipartition([[1, 4, 7, 8, -4], [2, 3, 5, -2, -7],
> [6, -1], [-3], [-5, -6, -8]]);;
gap> RightBlocks(x);
<blocks: [ 1* ], [ 2*, 7* ], [ 3 ], [ 4* ], [ 5, 6, 8 ]>
gap> LeftBlocks(x);
<blocks: [ 1*, 4*, 7*, 8* ], [ 2*, 3*, 5* ], [ 6* ]>]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="LeftBlocks">
<ManSection>
<Attr Name="LeftBlocks" Arg="x"/>
<Returns>The left blocks of a bipartition.</Returns>
<Description>
<C>LeftBlocks</C> returns the left blocks of the
bipartition <A>x</A>.
<P/>
The <E>left blocks</E> of a bipartition <A>x</A> are just the
intersections of the blocks of <A>x</A> with <C>[1..n]</C> where <C>n</C>
is the degree of <A>x</A>, the values in transverse blocks are positive,
and the values in non-transverse blocks are negative.
<P/>
The left blocks of a bipartition are &GAP; objects in their own right,
and are not simply a list of blocks of <A>x</A>; see <Ref
Sect="section-blocks"/> for more information.
<P/>
The significance of this notion lies in the fact that bipartitions
<A>x</A> and <C>y</C> are &R;-related in the partition monoid if and only
if they have equal left blocks.
<Example><![CDATA[
gap> x := Bipartition([[1, 4, 7, 8, -4], [2, 3, 5, -2, -7],
> [6, -1], [-3], [-5, -6, -8]]);;
gap> RightBlocks(x);
<blocks: [ 1* ], [ 2*, 7* ], [ 3 ], [ 4* ], [ 5, 6, 8 ]>
gap> LeftBlocks(x);
<blocks: [ 1*, 4*, 7*, 8* ], [ 2*, 3*, 5* ], [ 6* ]>]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="NrBlocks">
<ManSection>
<Attr Name = "NrBlocks" Arg = "blocks" Label="for blocks"/>
<Attr Name = "NrBlocks" Arg = "f" Label="for a bipartition"/>
<Returns>A positive integer.</Returns>
<Description>
If <A>blocks</A> is some blocks or <A>f</A> is a bipartition, then
<C>NrBlocks</C> returns the number of blocks in <A>blocks</A> or <A>f</A>,
respectively.
<Example><![CDATA[
gap> blocks := BLOCKS_NC([[-1, -2, -3, -4], [-5], [6]]);
<blocks: [ 1, 2, 3, 4 ], [ 5 ], [ 6* ]>
gap> NrBlocks(blocks);
3
gap> x := Bipartition([
> [1, 5], [2, 4, -2, -4], [3, 6, -1, -5, -6], [-3]]);
<bipartition: [ 1, 5 ], [ 2, 4, -2, -4 ], [ 3, 6, -1, -5, -6 ],
[ -3 ]>
gap> NrBlocks(x);
4]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="NrLeftBlocks">
<ManSection>
<Attr Name = "NrLeftBlocks" Arg = "x"/>
<Returns>A non-negative integer.</Returns>
<Description>
When the argument is a bipartition <A>x</A>, <C>NrLeftBlocks</C> returns
the number of left blocks of <A>x</A>, i.e. the number of blocks of
<A>x</A> intersecting <C>[1 .. n]</C> non-trivially.
<Example><![CDATA[
gap> x := Bipartition([[1, 2, 3, 4, 5, 6, 8], [7, -2, -3],
> [-1, -4, -7, -8], [-5, -6]]);;
gap> NrLeftBlocks(x);
2
gap> LeftBlocks(x);
<blocks: [ 1, 2, 3, 4, 5, 6, 8 ], [ 7* ]>]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="NrRightBlocks">
<ManSection>
<Attr Name = "NrRightBlocks" Arg = "x"/>
<Returns>A non-negative integer.</Returns>
<Description>
When the argument is a bipartition <A>x</A>, <C>NrRightBlocks</C> returns
the number of right blocks of <A>x</A>, i.e. the number of blocks of
<A>x</A> intersecting <C>[-n .. -1]</C> non-trivially.
<Example><![CDATA[
gap> x := Bipartition([[1, 2, 3, 4, 6, -2, -7], [5, -1, -3, -8],
> [7, -4, -6], [8], [-5]]);;
gap> RightBlocks(x);
<blocks: [ 1*, 3*, 8* ], [ 2*, 7* ], [ 4*, 6* ], [ 5 ]>
gap> NrRightBlocks(x);
4]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="DomainOfBipartition">
<ManSection>
<Attr Name = "DomainOfBipartition" Arg = "x"/>
<Returns>A list of positive integers.</Returns>
<Description>
If <A>x</A> is a bipartition, then <C>DomainOfBipartition</C> returns the
domain of <A>x</A>. The <E>domain</E> of <A>x</A> consists of those
numbers <C>i</C> in <C>[1 .. n]</C> such that <C>i</C> is contained in a
transverse block of <A>x</A>, where <C>n</C> is the degree of <A>x</A>
(see <Ref Attr="DegreeOfBipartition"/>).
<Example><![CDATA[
gap> x := Bipartition([[1, 2], [3, 4, 5, -5], [6, -6],
> [-1, -2, -3], [-4]]);
<bipartition: [ 1, 2 ], [ 3, 4, 5, -5 ], [ 6, -6 ], [ -1, -2, -3 ],
[ -4 ]>
gap> DomainOfBipartition(x);
[ 3, 4, 5, 6 ]]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="CodomainOfBipartition">
<ManSection>
<Attr Name = "CodomainOfBipartition" Arg = "x"/>
<Returns>A list of positive integers.</Returns>
<Description>
If <A>x</A> is a bipartition, then <C>CodomainOfBipartition</C> returns
the codomain of <A>x</A>. The <E>codomain</E> of <A>x</A> consists of
those numbers <C>i</C> in <C>[-n .. -1]</C> such that <C>i</C> is contained
in a transverse block of <A>x</A>, where <C>n</C> is the degree of
<A>x</A> (see <Ref Attr="DegreeOfBipartition"/>).
<Example><![CDATA[
gap> x := Bipartition([[1, 2], [3, 4, 5, -5], [6, -6],
> [-1, -2, -3], [-4]]);
<bipartition: [ 1, 2 ], [ 3, 4, 5, -5 ], [ 6, -6 ], [ -1, -2, -3 ],
[ -4 ]>
gap> CodomainOfBipartition(x);
[ -5, -6 ]]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="IntRepOfBipartition">
<ManSection>
<Attr Name = "IntRepOfBipartition" Arg = "x"/>
<Returns>A list of positive integers.</Returns>
<Description>
If <A>x</A> is a bipartition with degree <C>n</C>, then
<C>IntRepOfBipartition</C> returns the <E>internal representation</E> of
<A>x</A>: a list of length <C>2 * n</C> containing positive integers which
correspond to the blocks of <A>x</A>. <P/>
If <C>i</C> is in <C>[1 .. n]</C>, then <C>list[i]</C> refers to the point
<C>i</C>; if <C>i</C> is in <C>[n + 1 .. 2 * n]</C>, then <C>list[i]</C>
refers to the point <C>n - i</C> (a negative point). Two points lie in
the same block of the bipartition if and only if their entries in the list
are equal. <P/>
<#GAPDoc Label="PartialPermLeqBipartition">
<ManSection>
<Oper Name = "PartialPermLeqBipartition" Arg = "x, y"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
If <A>x</A> and <A>y</A> are partial perm bipartitions, i.e. they satisfy
<Ref Prop = "IsPartialPermBipartition"/>, then this function returns
<C>AsPartialPerm(<A>x</A>) < AsPartialPerm(<A>y</A>)</C>.
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="NaturalLeqPartialPermBipartition">
<ManSection>
<Oper Name = "NaturalLeqPartialPermBipartition" Arg = "x, y"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
The <E>natural partial order</E> <M>\leq</M> on an inverse semigroup
<C>S</C> is defined by <C>s</C> <M>\leq</M> <C>t</C> if there exists an
idempotent <C>e</C> in <C>S</C> such that <C>s = et</C>. Hence if <A>x</A>
and <A>y</A> are partial perm bipartitions, then
<A>x</A> <M>\leq</M> <A>y</A> if and only if <C>AsPartialPerm(<A>x</A>)</C>
is a restriction of <C>AsPartialPerm(<A>y</A>)</C>.
<P/>
<C>NaturalLeqPartialPermBipartition</C> returns <K>true</K> if
<C>AsPartialPerm(<A>x</A>)</C> is a restriction of
<C>AsPartialPerm(<A>y</A>)</C> and <K>false</K> if it is not. Note that
since this is a partial order and not a total order, it is possible that
<A>x</A> and <A>y</A> are incomparable with respect to the natural
partial order.
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="NaturalLeqBlockBijection">
<ManSection>
<Oper Name = "NaturalLeqBlockBijection" Arg = "x, y"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
The <E>natural partial order</E> <M>\leq</M> on an inverse semigroup
<C>S</C> is defined by <C>s</C> <M>\leq</M> <C>t</C> if there exists an
idempotent <C>e</C> in <C>S</C> such that <C>s = et</C>. Hence if
<A>x</A> and <A>y</A> are block bijections, then
<A>x</A> <M>\leq</M> <A>y</A> if and only if <A>x</A> contains <A>y</A>.
<P/>
<C>NaturalLeqBlockBijection</C> returns <K>true</K> if <A>x</A> is
contained in <A>y</A> and <K>false</K> if it is not. Note that since this
is a partial order and not a total order, it is possible that <A>x</A>
and <A>y</A> are incomparable with respect to the natural partial order.
<Example><![CDATA[
gap> x := Bipartition([[1, 2, -3], [3, -1, -2], [4, -4],
> [5, -5], [6, -6], [7, -7],
> [8, -8], [9, -9], [10, -10]]);;
gap> y := Bipartition([[1, -2], [2, -1], [3, -3],
> [4, -4], [5, -5], [6, -6], [7, -7],
> [8, -8], [9, -9], [10, -10]]);;
gap> z := Bipartition([Union([1 .. 10], [-10 .. -1])]);;
gap> NaturalLeqBlockBijection(x, y);
false
gap> NaturalLeqBlockBijection(y, x);
false
gap> NaturalLeqBlockBijection(z, x);
true
gap> NaturalLeqBlockBijection(z, y);
true]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="IsDualTransBipartition">
<ManSection>
<Prop Name = "IsDualTransBipartition" Arg = "x"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
If the star of the bipartition <A>x</A> defines a transformation, then
<C>IsDualTransBipartition</C> returns <K>true</K>, and if not, then
<K>false</K> is returned.<P/>
A bipartition is the dual of a transformation if and only if its number of
right blocks equals its number of transverse blocks and its number of left
blocks equals its degree.
<#GAPDoc Label="IsBlockBijection">
<ManSection>
<Prop Name = "IsBlockBijection" Arg = "x"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
If the bipartition <A>x</A> induces a bijection from the quotient of
<C>[1 .. n]</C> by the blocks of <A>f</A> to the quotient of
<C>[-n .. -1]</C> by the blocks of <A>f</A>, then <C>IsBlockBijection</C>
return <K>true</K>, and if not, then it returns <K>false</K>. <P/>
A bipartition is a block bijection if and only if its number of blocks,
left blocks and right blocks are equal.
<Example><![CDATA[
gap> x := Bipartition([[1, 4, 5, -2], [2, 3, -1], [6, -5, -6],
> [-3, -4]]);;
gap> IsBlockBijection(x);
false
gap> x := Bipartition([[1, 2, -3], [3, -1, -2], [4, -4], [5, -5]]);;
gap> IsBlockBijection(x);
true]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="IsUniformBlockBijection">
<ManSection>
<Prop Name = "IsUniformBlockBijection" Arg = "x"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
If the bipartition <A>x</A> is a block bijection where every block
contains an equal number of positive and negative entries, then
<C>IsUniformBlockBijection</C> returns <K>true</K>, and otherwise it
returns <K>false</K>.
<#GAPDoc Label="IsBipartition">
<ManSection>
<Filt Name = "IsBipartition" Arg = "obj"Type = "Category"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
Every bipartition in &GAP; belongs to the category
<C>IsBipartition</C>. Basic operations for bipartitions are
<Ref Attr = "RightBlocks"/>,
<Ref Attr = "LeftBlocks"/>,
<Ref Oper = "ExtRepOfObj" Label="for a bipartition"/>,
<Ref Attr = "LeftProjection"/>,
<Ref Attr = "RightProjection"/>,
<Ref Oper = "StarOp" Label="for a bipartition"/>,
<Ref Attr = "DegreeOfBipartition"/>,
<Ref Attr = "RankOfBipartition"/>,
multiplication of two bipartitions of equal degree is
via <K>*</K>.
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="IsBipartitionCollection">
<ManSection>
<Filt Name = "IsBipartitionCollection" Arg = "obj"Type = "Category"/>
<Filt Name = "IsBipartitionCollColl" Arg = "obj"Type = "Category"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
Every collection of bipartitions belongs to the category
<C>IsBipartitionCollection</C>. For example, bipartition semigroups
belong to <C>IsBipartitionCollection</C>.<P/>
Every collection of collections of bipartitions belongs to
<C>IsBipartitionCollColl</C>. For example, a list of bipartition
semigroups belongs to <C>IsBipartitionCollColl</C>.
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="AsTransformation">
<ManSection>
<Attr Name = "AsTransformation" Arg = "x" Label="for a bipartition"/>
<Returns>A transformation.</Returns>
<Description>
When the argument <A>x</A> is a bipartition, that mathematically defines
a transformation, this function returns that transformation. A
bipartition <A>x</A> defines a transformation if and only if its right
blocks are the image list of a permutation of <C>[1 .. n]</C> where
<C>n</C> is the degree of <A>x</A>. <P/>
<#GAPDoc Label="AsPermutation">
<ManSection>
<Attr Name = "AsPermutation" Arg = "x" Label="for a bipartition"/>
<Returns>A permutation.</Returns>
<Description>
When the argument <A>x</A> is a bipartition that mathematically defines a
permutation, this function returns that permutation. <P/>
A bipartition <A>x</A> defines a permutation if and only if its numbers of
left, right, and transverse blocks all equal its degree.<P/>
<#GAPDoc Label="AsPartialPerm">
<ManSection>
<Oper Name = "AsPartialPerm" Arg = "x" Label="for a bipartition"/>
<Returns>A partial perm.</Returns>
<Description>
When the argument <A>x</A> is a bipartition that mathematically defines a
partial perm, this function returns that partial perm.
<P/>
A bipartition <A>x</A> defines a partial perm if and only if its numbers
of left and right blocks both equal its degree.
<P/>
See <Ref Prop = "IsPartialPermBipartition"/>.
<Example><![CDATA[
gap> x := Bipartition([[1, -4], [2, -2], [3, -10], [4, -5],
> [5, -9], [6], [7], [8, -6], [9, -3], [10, -8],
> [-1], [-7]]);;
gap> IsPartialPermBipartition(x);
true
gap> AsPartialPerm(x);
[1,4,5,9,3,10,8,6](2)
gap> x := Bipartition([[1, -2, -4], [2, 3, 4, -3], [-1]]);;
gap> IsPartialPermBipartition(x);
false
gap> AsPartialPerm(x);
Error, the argument (a bipartition) does not define a partial perm]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="AsBlockBijection">
<ManSection>
<Oper Name = "AsBlockBijection" Arg = "x[, n]"/>
<Returns>A block bijection.</Returns>
<Description>
When the argument <A>x</A> is a partial perm and <A>n</A> is a positive
integer which is greater than the maximum of the degree and codegree of
<A>x</A>, this function returns a block bijection corresponding to
<A>x</A>. This block bijection has the same non-singleton classes as
<C>g := AsBipartition(<A>x</A>, <A>n</A>)</C> and one additional class
which is the union the singleton classes of <C>g</C>.
<P/>
If the optional second argument <A>n</A> is not present, then the maximum
of the degree and codegree of <A>x</A> plus 1 is used by default. If the
second argument <A>n</A> is not greater than this maximum, then an error
is given.
<P/>
This is the value at <A>x</A> of the embedding of the symmetric inverse
monoid into the dual symmetric inverse monoid given in the
FitzGerald-Leech Theorem <Cite Key = "Fitzgerald1998aa"/>.
<P/>
When the argument <A>x</A> is a partial perm bipartition (see <Ref
Prop="IsPartialPermBipartition" />) then this operation
returns <C>AsBlockBijection(AsPartialPerm(<A>x</A>)[, <A>n</A>])</C>.
<#GAPDoc Label="AsBipartition">
<ManSection>
<Oper Name = "AsBipartition" Arg = "x[, n]"/>
<Returns>A bipartition.</Returns>
<Description>
<C>AsBipartition</C> returns the bipartition, permutation, transformation, or
partial permutation <A>x</A>, as a bipartition of degree <A>n</A>.<P/>
There are several possible arguments for <C>AsBipartition</C>:
<List>
<Mark>permutations</Mark>
<Item>
If <A>x</A> is a permutation and <A>n</A> is a positive integer, then
<C>AsBipartition(<A>x</A>, <A>n</A>)</C> returns the bipartition
on <C>[1 .. <A>n</A>]</C> with classes <C>[i, i ^ <A>x</A>]</C>
for all <C>i = 1 .. n</C>.<P/>
If no positive integer <A>n</A> is specified, then
the largest moved point of <A>x</A> is used as the value for <A>n</A>; see
<Ref Attr = "LargestMovedPoint" Label="for a permutation" BookName = "ref"/>.
</Item>
<Mark>transformations</Mark>
<Item>
If <A>x</A> is a transformation and <A>n</A> is a positive integer
such that <A>x</A> is a transformation of <C>[1 .. <A>n</A>]</C>, then
<C>AsTransformation</C> returns the bipartition with classes
<M>(i)f ^ {-1}\cup \{i\}</M> for all <C>i</C> in the image of <A>x</A>.<P/>
If the positive integer <A>n</A> is not specified, then the
degree of <A>x</A> is used as the value for <A>n</A>.
</Item>
<Mark>partial permutations</Mark>
<Item>
If <A>x</A> is a partial permutation and <A>n</A> is a positive integer,
then <C>AsBipartition</C> returns the bipartition with classes <C>[i, i ^
<A>x</A>]</C> for <C>i</C> in <C>[1 .. <A>n</A>]</C>. Thus the degree
of the returned bipartition is the maximum of <A>n</A> and the values
<C>i ^ <A>x</A></C> where <C>i</C> in <C>[1 .. <A>n</A>]</C>.<P/>
If the optional argument <A>n</A> is not present, then the default value
of the maximum of the largest moved point and the largest image of a
moved point of <A>x</A> plus <C>1</C> is used.
</Item>
<Mark>bipartitions</Mark>
<Item>
If <A>x</A> is a bipartition and <A>n</A> is a non-negative integer, then
<C>AsBipartition</C> returns a bipartition corresponding to <A>x</A> with
degree <A>n</A>. <P/>
If <A>n</A> equals the degree of <A>x</A>, then <A>x</A>
is returned. If <A>n</A> is less than the degree of <A>x</A>, then this
function returns the bipartition obtained from <A>x</A> by removing the
values exceeding <A>n</A> or less than <A>-n</A> from the blocks of <A>x</A>.
If <A>n</A> is greater than the degree of <A>x</A>, then this function
returns the bipartition with the same blocks as <A>x</A> and the singleton
blocks <C>i</C> and <C>-i</C> for all <C>i</C> greater than the degree of
<A>x</A>
</Item>
<Mark>pbrs</Mark>
<Item>
If <A>x</A> is a pbr satisfying <Ref Prop = "IsBipartitionPBR"/> and
<A>n</A> is a non-negative integer, then <C>AsBipartition</C> returns the
bipartition corresponding to <A>x</A> with degree <A>n</A>.
</Item>
<#GAPDoc Label="IsTransBipartition">
<ManSection>
<Prop Name="IsTransBipartition" Arg="x"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
If the bipartition <A>x</A> defines a transformation, then
<C>IsTransBipartition</C> returns <K>true</K>, and if not, then
<K>false</K> is returned.<P/>
A bipartition <A>x</A> defines a transformation if and only if the number of
left blocks equals the number of transverse blocks and the number of right
blocks equals the degree.
<#GAPDoc Label="IsPermBipartition">
<ManSection>
<Prop Name = "IsPermBipartition" Arg = "x"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
If the bipartition <A>x</A> defines a permutation, then
<C>IsPermBipartition</C> returns <K>true</K>, and if not, then
<K>false</K> is returned.<P/>
A bipartition is a permutation if its numbers of left, right,
and transverse blocks all equal its degree.
<#GAPDoc Label="IsPartialPermBipartition">
<ManSection>
<Prop Name = "IsPartialPermBipartition" Arg = "x"/>
<Returns><K>true</K> or <K>false</K>.</Returns>
<Description>
If the bipartition <A>x</A> defines a partial permutation, then
<C>IsPartialPermBipartition</C> returns <K>true</K>, and if not, then
<K>false</K> is returned.<P/>
A bipartition <A>x</A> defines a partial permutation if and only if the
numbers of left and right blocks of <A>x</A> equal the degree of <A>x</A>.
<#GAPDoc Label="BipartitionByIntRep">
<ManSection>
<Oper Name = "BipartitionByIntRep" Arg = "list"/>
<Returns>A bipartition.</Returns>
<Description>
It is possible to create a bipartition using its internal
representation. The argument <A>list</A> must be a list of positive
integers not greater than <C>n</C>, of length <C>2 * n</C>, and where
<C>i</C> appears in the list only if <C>i-1</C> occurs earlier in the
list. <P/>
For example, the internal representation of the bipartition with blocks
<Log>[1, -1], [2, 3, -2], [-3]</Log> has
internal representation
<Log>[1, 2, 2, 1, 2, 3]</Log>
The internal representation indicates that the number <C>1</C> is in
class <C>1</C>, the number <C>2</C> is in class <C>2</C>, the number
<C>3</C> is in class <C>2</C>, the number <C>-1</C> is
in class <C>1</C>, the number <C>-2</C> is in class <C>2</C>, and
<C>-3</C> is in class <C>3</C>.
As another example, <C>[1, 3, 2, 1]</C> is not the internal
representation of any bipartition since there is no <C>2</C> before the
<C>3</C> in the second position.<P/>
In its first form <C>BipartitionByIntRep</C> verifies that the argument
<A>list</A> is the internal representation of a bipartition. <P/>
<#GAPDoc Label="PermLeftQuoBipartition">
<ManSection>
<Oper Name = "PermLeftQuoBipartition" Arg = "x, y"/>
<Returns>A permutation.</Returns>
<Description>
If <A>x</A> and <A>y</A> are bipartitions with equal left and right
blocks, then <C>PermLeftQuoBipartition</C> returns the permutation of the
indices of the right blocks of <A>x</A> (and <A>y</A>) induced by
<C>Star(<A>x</A>) * <A>y</A></C>. <P/>
<C>PermLeftQuoBipartition</C> verifies that <A>x</A> and <A>y</A> have
equal left and right blocks, and returns an error if they do not.
<#GAPDoc Label="RankOfBipartition">
<ManSection>
<Attr Name = "RankOfBipartition" Arg = "x"/>
<Attr Name = "NrTransverseBlocks" Arg = "x" Label="for a bipartition"/>
<Returns>The rank of a bipartition.</Returns>
<Description>
When the argument is a bipartition <A>x</A>, <C>RankOfBipartition</C>
returns the number of blocks of <A>x</A> containing both positive and
negative entries, i.e. the number of transverse blocks of <A>x</A>.
<P/>
<#GAPDoc Label="DegreeOfBipartition">
<ManSection>
<Attr Name = "DegreeOfBipartition" Arg = "x"/>
<Attr Name = "DegreeOfBipartitionCollection" Arg = "x"/>
<Returns>A positive integer.</Returns>
<Description>
The degree of a bipartition is, roughly speaking, the number of points
where it is defined. More precisely, if <A>x</A> is a bipartition 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 bipartitions of equal degree is
just the degree of any (and every) bipartition in <A>coll</A>. The degree
of collection of bipartitions of unequal degrees is not defined.
<#GAPDoc Label="Bipartition">
<ManSection>
<Func Name = "Bipartition" Arg = "blocks"/>
<Returns>A bipartition.</Returns>
<Description>
<C>Bipartition</C> returns the bipartition <C>x</C> with equivalence
classes <A>blocks</A>, which should be a list of duplicate-free lists
whose union is <C>[-n .. -1]</C> union <C>[1 .. n]</C> for some positive
integer <C>n</C>.
<P/>
<C>Bipartition</C> returns an error if the argument does not define a
bipartition.
<Example><![CDATA[
gap> x := Bipartition([[1, -1], [2, 3, -3], [-2]]);
<bipartition: [ 1, -1 ], [ 2, 3, -3 ], [ -2 ]>]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="ExtRepOfObjBipart">
<ManSection>
<Oper Name = "ExtRepOfObj" Arg = "x" Label = "for a bipartition"/>
<Returns>A partition of <C>[1 .. 2 * n]</C>.</Returns>
<Description>
If <C>n</C> is the degree of the bipartition
<A>x</A>, then <C>ExtRepOfObj</C> returns the partition of
<C>[-n .. -1]</C> union <C>[1 .. n]</C> corresponding to <A>x</A> as a
sorted list of duplicate-free lists.
<Example><![CDATA[
gap> x := Bipartition([[1, 5, -3], [2, 4, -2, -4], [3, -1, -5]]);
<block bijection: [ 1, 5, -3 ], [ 2, 4, -2, -4 ], [ 3, -1, -5 ]>
gap> ExtRepOfObj(x);
[ [ 1, 5, -3 ], [ 2, 4, -2, -4 ], [ 3, -1, -5 ] ]]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="LeftProjection">
<ManSection>
<Attr Name = "LeftOne" Arg = "x" Label="for a bipartition"/>
<Attr Name = "LeftProjection" Arg = "x"/>
<Returns>A bipartition.</Returns>
<Description>
The <C>LeftProjection</C> of a bipartition <A>x</A> is the bipartition
<C><A>x</A> * Star(<A>x</A>)</C>. It is so-named, since the left and
right blocks of the left projection equal the left blocks of <A>x</A>.
<P/>
The left projection <C>e</C> of <A>x</A> is also a bipartition with the
property that <C>e * <A>x</A> = <A>x</A></C>. <C>LeftOne</C> and
<C>LeftProjection</C> are synonymous.
<Example><![CDATA[
gap> x := Bipartition([
> [1, 4, -1, -2, -6], [2, 3, 5, -4], [6, -3], [-5]]);;
gap> LeftOne(x);
<block bijection: [ 1, 4, -1, -4 ], [ 2, 3, 5, -2, -3, -5 ],
[ 6, -6 ]>
gap> LeftBlocks(x);
<blocks: [ 1*, 4* ], [ 2*, 3*, 5* ], [ 6* ]>
gap> RightBlocks(LeftOne(x));
<blocks: [ 1*, 4* ], [ 2*, 3*, 5* ], [ 6* ]>
gap> LeftBlocks(LeftOne(x));
<blocks: [ 1*, 4* ], [ 2*, 3*, 5* ], [ 6* ]>
gap> LeftOne(x) * x = x;
true]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="RightProjection">
<ManSection>
<Attr Name = "RightOne" Arg = "x" Label="for a bipartition"/>
<Attr Name = "RightProjection" Arg = "x"/>
<Returns>A bipartition.</Returns>
<Description>
The <C>RightProjection</C> of a bipartition <A>x</A> is the bipartition
<C>Star(<A>x</A>) * <A>x</A></C>. It is so-named, since the left and
right blocks of the right projection equal the right blocks of <A>x</A>.
<P/>
The right projection <C>e</C> of <A>x</A> is also a bipartition with the
property that <C><A>x</A> * e = <A>x</A></C>. <C>RightOne</C> and
<C>RightProjection</C> are synonymous.
<Example><![CDATA[
gap> x := Bipartition([[1, -1, -4], [2, -2, -3], [3, 4], [5, -5]]);;
gap> RightOne(x);
<block bijection: [ 1, 4, -1, -4 ], [ 2, 3, -2, -3 ], [ 5, -5 ]>
gap> RightBlocks(RightOne(x));
<blocks: [ 1*, 4* ], [ 2*, 3* ], [ 5* ]>
gap> LeftBlocks(RightOne(x));
<blocks: [ 1*, 4* ], [ 2*, 3* ], [ 5* ]>
gap> RightBlocks(x);
<blocks: [ 1*, 4* ], [ 2*, 3* ], [ 5* ]>
gap> x * RightOne(x) = x;
true]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="StarOp">
<ManSection>
<Oper Name = "StarOp" Arg = "x" Label="for a bipartition"/>
<Attr Name = "Star" Arg = "x" Label="for a bipartition"/>
<Returns>A bipartition.</Returns>
<Description>
<C>StarOp</C> returns the unique bipartition <C>g</C> with the
property that: <C><A>x</A> * g * <A>x</A> = <A>x</A></C>,
<C>RightBlocks(<A>x</A>) = LeftBlocks(g)</C>, and
<C>LeftBlocks(<A>x</A>) = RightBlocks(g)</C>. The star <C>g</C> can
be obtained from <A>x</A> by changing the sign of every integer in the
external representation of <A>x</A>.
<Example><![CDATA[
gap> x := Bipartition([[1, -4], [2, 3, 4], [5], [-1], [-2, -3], [-5]]);
<bipartition: [ 1, -4 ], [ 2, 3, 4 ], [ 5 ], [ -1 ], [ -2, -3 ],
[ -5 ]>
gap> y := Star(x);
<bipartition: [ 1 ], [ 2, 3 ], [ 4, -1 ], [ 5 ], [ -2, -3, -4 ],
[ -5 ]>
gap> x * y * x = x;
true
gap> LeftBlocks(x) = RightBlocks(y);
true
gap> RightBlocks(x) = LeftBlocks(y);
true]]></Example>
</Description>
</ManSection>
<#/GAPDoc>
<#GAPDoc Label="RandomBipartition">
<ManSection>
<Oper Name = "RandomBipartition" Arg = "[rs, ]n"/>
<Oper Name = "RandomBlockBijection" Arg = "[rs, ]n"/>
<Returns>A bipartition.</Returns>
<Description>
If <A>n</A> is a positive integer, then <C>RandomBipartition</C> returns
a random bipartition of degree <A>n</A>, and <C>RandomBlockBijection</C>
returns a random block bijection of degree <A>n</A>. <P/>
If the optional first argument <A>rs</A> is a random source, then this is
used to generate the bipartition returned by <C>RandomBipartition</C> and
<C>RandomBlockBijection</C>. <P/>
Note that neither of these functions has a uniform distribution.
<Log><![CDATA[
gap> x := RandomBipartition(6);
<bipartition: [ 1, 2, 3, 4 ], [ 5 ], [ 6, -2, -3, -4 ], [ -1, -5 ], [ -6 ]>
gap> x := RandomBlockBijection(4);
<block bijection: [ 1, 4, -2 ], [ 2, -4 ], [ 3, -1, -3 ]>]]></Log>
</Description>
</ManSection>
<#/GAPDoc>
¤ Dauer der Verarbeitung: 0.55 Sekunden
(vorverarbeitet)
¤
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 ist noch experimentell.