Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .mailmap
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ Joseph Edwards <[email protected]> Joe Edwards <80713360+Joseph-Edwards@user
Joseph Edwards <[email protected]> Joseph Edwards <[email protected]>
Luke Elliott <[email protected]> le27 <[email protected]>
Fernando Flores Brito <[email protected]> Fernando Flores Brito <[email protected]>
Matthias Fresacher <[email protected]>
Matthias Fresacher <[email protected]>
Tillman Froehlich <[email protected]> <[email protected]>
Nick Ham <[email protected]>
Robert Hancock <[email protected]> Robert Hancock <[email protected]>
Expand Down
9 changes: 9 additions & 0 deletions PackageInfo.g
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,15 @@ Persons := [
IsAuthor := true,
IsMaintainer := false,
Email := "[email protected]"),

rec(
LastName := "Fresacher",
FirstNames := "Matthias",
IsAuthor := true,
IsMaintainer := false,
Email := "[email protected]",
WWWHome := "https://staff.cdms.westernsydney.edu.au/~mfresacher/",
Institution := "Western Sydney University"),

rec(
LastName := "Ham",
Expand Down
2 changes: 2 additions & 0 deletions gap/elements/bipart.gd
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ DeclareProperty("IsPartialPermBipartition", IsBipartition);

DeclareOperation("PermLeftQuoBipartition", [IsBipartition, IsBipartition]);

DeclareOperation("NrFloatingBlocks", [IsBipartition, IsBipartition]);

# Collections
DeclareAttribute("DegreeOfBipartitionCollection", IsBipartitionCollection);
DeclareOperation("OneMutable", [IsBipartitionCollection]);
61 changes: 61 additions & 0 deletions gap/elements/bipart.gi
Original file line number Diff line number Diff line change
Expand Up @@ -1111,3 +1111,64 @@ function(coll)

return TensorBipartitions(coll);
end);

InstallMethod(NrFloatingBlocks, "for bipartition and bipartition",
[IsBipartition, IsBipartition],
function(a, b)
local n, anr, fuse, fuseit, ablocks, bblocks, x, y, made_it, tab, nr, i;

n := DegreeOfBipartition(a);
anr := NrBlocks(a);

fuse := [1 .. anr + NrBlocks(b)];

fuseit := function(i)
while fuse[i] < i do
i := fuse[i];
od;
return i;
end;

ablocks := IntRepOfBipartition(a);
bblocks := IntRepOfBipartition(b);

for i in [1 .. n] do
x := fuseit(ablocks[i + n]);
y := fuseit(bblocks[i] + anr);
if x <> y then
if x < y then
fuse[y] := x;
else
fuse[x] := y;
fi;
fi;
od;

made_it := BlistList(fuse, []);
for i in [1 .. n] do
made_it[fuseit(ablocks[i])] := true;
od;

for i in [n + 1 .. 2 * n] do
made_it[fuseit(bblocks[i] + anr)] := true;
od;
tab := 0 * fuse;
nr := 0;

for i in [n + 1 .. 2 * n] do
x := fuseit(ablocks[i]);
if not made_it[x] and tab[x] = 0 then
nr := nr + 1;
tab[x] := 1;
fi;
od;

for i in [1 .. n] do
x := fuseit(bblocks[i] + anr);
if not made_it[x] and tab[x] = 0 then
nr := nr + 1;
tab[x] := 1;
fi;
od;
return nr;
end);
107 changes: 107 additions & 0 deletions gap/elements/twisted-bipart.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
############################################################################
##
## elements/twisted-bipart.gd
## Copyright (C) 2025 James D. Mitchell
##
## Licensing information can be found in the README file of this package.
##
#############################################################################
##
## In collaboration with
##
##############################################
## ##
## Code created ##
## by ##
## *--------------------* ##
## | Matthias Fresacher | ##
## *--------------------* ##
## ##
##############################################

# *------------------------------*
# |``````````````````````````````|
# |`````____````____`````````````|
# |````|MFMF\ /MFMF|````````````|
# |````|MF|MF\/MF|MF|````````````|
# |````|MF|\MFMF/|MF|_______`````|
# |````|MF|``````|MFMFMFMFMF|````|
# |````|MF|``````|MF|````````````|
# |````|MF|``````|MF|___`````````|
# |``````````````|MFMFMF|````````|
# |``````````````|MF|````````````|
# |``````````````|MF|````````````|
# |``````````````|MF|````````````|
# |``````````````````````````````|
# *------------------------------*

DeclareCategory("IsTwistedBipartition", IsMultiplicativeElementWithOne
and IsMultiplicativeElementWithZero and
IsAssociativeElement);
DeclareCategoryCollections("IsTwistedBipartition");
DeclareCategoryCollections("IsTwistedBipartitionCollection");

DeclareOperation("TwistedBipartition", [IsInt, IsBipartition, IsInt]);
DeclareOperation("ZeroTwistedBipartition", [IsInt, IsInt]);
DeclareAttribute("DegreeOfTwistedBipartition",
IsTwistedBipartition);
DeclareAttribute("DegreeOfTwistedBipartitionCollection",
IsTwistedBipartitionCollection);
DeclareAttribute("MaxFloatingBlocks",
IsTwistedBipartition);
DeclareAttribute("NrFloatingBlocks",
IsTwistedBipartition);
DeclareAttribute("UnderlyingBipartition",
IsTwistedBipartition);
DeclareAttribute("UnderlyingBipartitionCollection",
IsTwistedBipartitionCollection);

DeclareOperation("RandomNonZeroTwistedBipartition", [IsInt, IsInt]);
DeclareOperation("RandomNonZeroTwistedBipartition", [IsRandomSource, IsInt, IsInt]);
DeclareOperation("RandomTwistedBipartition", [IsInt, IsInt]);
DeclareOperation("RandomTwistedBipartition", [IsRandomSource, IsInt, IsInt]);
DeclareProperty("IsZero", IsTwistedBipartition);
DeclareProperty("IsOne", IsTwistedBipartition);
DeclareOperation("IdentityTwistedBipartition", [IsPosInt, IsInt]);
DeclareAttribute("ZeroImmutable", IsTwistedBipartition);

DeclareAttribute("DegreeOfBipartition", IsTwistedBipartition);
DeclareAttribute("NrBlocks", IsTwistedBipartition);
DeclareAttribute("NrLeftBlocks", IsTwistedBipartition);
DeclareAttribute("NrRightBlocks", IsTwistedBipartition);
DeclareAttribute("RankOfBipartition", IsTwistedBipartition);

DeclareAttribute("DomainOfBipartition", IsTwistedBipartition);
DeclareAttribute("CodomainOfBipartition", IsTwistedBipartition);

DeclareAttribute("NrTransverseBlocks", IsTwistedBipartition);
DeclareOperation("OneMutable", [IsTwistedBipartition, IsInt]);
DeclareOperation("OneMutable", [IsTwistedBipartitionCollection, IsInt]);

DeclareProperty("IsBlockBijection", IsTwistedBipartition);
DeclareProperty("IsUniformBlockBijection", IsTwistedBipartition);
DeclareProperty("IsPartialPermBipartition", IsTwistedBipartition);
DeclareProperty("IsTransBipartition", IsTwistedBipartition);
DeclareProperty("IsDualTransBipartition", IsTwistedBipartition);
DeclareProperty("IsPermBipartition", IsTwistedBipartition);

DeclareOperation("AsTwistedBipartition", [IsInt, IsPerm, IsZeroCyc, IsInt]);
DeclareOperation("AsTwistedBipartition", [IsInt, IsPerm, IsInt]);
DeclareOperation("AsTwistedBipartition", [IsInt, IsPerm, IsPosInt, IsInt]);
DeclareOperation("AsTwistedBipartition", [IsInt, IsPartialPerm, IsInt]);
DeclareOperation("AsTwistedBipartition", [IsInt, IsPartialPerm, IsZeroCyc, IsInt]);
DeclareOperation("AsTwistedBipartition", [IsInt, IsPartialPerm, IsPosInt, IsInt]);
DeclareOperation("AsTwistedBipartition", [IsInt, IsTransformation, IsInt]);
DeclareOperation("AsTwistedBipartition", [IsInt, IsTransformation, IsPosInt, IsInt]);
DeclareOperation("AsTwistedBipartition", [IsInt, IsTransformation, IsZeroCyc, IsInt]);
DeclareOperation("AsTwistedBipartition", [IsInt, IsBipartition, IsInt]);
DeclareOperation("AsTwistedBipartition", [IsInt, IsBipartition, IsPosInt, IsInt]);
DeclareOperation("AsTwistedBipartition", [IsTwistedBipartition]);
DeclareOperation("AsTwistedBipartition", [IsTwistedBipartition, IsPosInt]);
DeclareOperation("AsTwistedBipartition", [IsInt, IsBipartition, IsZeroCyc, IsInt]);
# DeclareOperation("AsTwistedBipartition", [IsInt, IsPBR, IsZeroCyc, IsInt]);
# DeclareOperation("AsTwistedBipartition", [IsInt, IsPBR, IsPosInt, IsInt]);
# DeclareOperation("AsTwistedBipartition", [IsInt, IsPBR, IsInt]);

DeclareOperation("AsBlockBijection", [IsTwistedBipartition, IsPosInt]);
DeclareOperation("AsBlockBijection", [IsTwistedBipartition]);
Loading