add rack/quandle creators by perms

This commit is contained in:
Glen Whitney 2017-10-24 22:57:19 +02:00
parent 0231c423a3
commit 3e27eb52f6
2 changed files with 98 additions and 0 deletions

View File

@ -29,3 +29,15 @@ DeclareGlobalFunction("RightQuandleByMultiplicationTableNC");
## Property of a collection that its elements know their multiplication table
DeclareProperty("IsBuiltFromMultiplicationTable", IsCollection);
## Create quasigroups etc by permutations
DeclareGlobalFunction("LeftQuasigroupByPerms");
DeclareGlobalFunction("LeftRackByPerms");
DeclareGlobalFunction("LeftRackByPermsNC");
DeclareGlobalFunction("LeftQuandleByPerms");
DeclareGlobalFunction("LeftQuandleByPermsNC");
DeclareGlobalFunction("RightQuasigroupByPerms");
DeclareGlobalFunction("RightRackByPerms");
DeclareGlobalFunction("RightRackByPermsNC");
DeclareGlobalFunction("RightQuandleByPerms");
DeclareGlobalFunction("RightQuandleByPermsNC");

View File

@ -151,6 +151,92 @@ InstallGlobalFunction(RightQuandleByMultiplicationTableNC,
IsRightQuotientElement and IsRSelfDistElement and IsIdempotent)
);
## Creators from permutations
InstallGlobalFunction(LeftQuasigroupByPerms,
function(perms)
local Q;
Q := LeftQuasigroupByMultiplicationTableNC(
CayleyTableByPerms(perms, [1..Length(perms)]));
SetLeftPerms(Q, perms);
end);
InstallGlobalFunction(LeftRackByPerms,
function(perms)
local Q;
Q := LeftRackByMultiplicationTable(
CayleyTableByPerms(perms, [1..Length(perms)]));
SetLeftPerms(Q, perms);
end);
InstallGlobalFunction(LeftRackByPermsNC,
function(perms)
local Q;
Q := LeftRackByMultiplicationTableNC(
CayleyTableByPerms(perms, [1..Length(perms)]));
SetLeftPerms(Q, perms);
end);
InstallGlobalFunction(LeftQuandleByPerms,
function(perms)
local Q;
Q := LeftQuandleByMultiplicationTable(
CayleyTableByPerms(perms, [1..Length(perms)]));
SetLeftPerms(Q, perms);
end);
InstallGlobalFunction(LeftQuandleByPermsNC,
function(perms)
local Q;
Q := LeftQuandleByMultiplicationTableNC(
CayleyTableByPerms(perms, [1..Length(perms)]));
SetLeftPerms(Q, perms);
end);
InstallGlobalFunction(RightQuasigroupByPerms,
function(perms)
local Q;
Q := RightQuasigroupByMultiplicationTableNC(
TransposedMat(
CayleyTableByPerms(perms, [1..Length(perms)])));
SetRightPerms(Q, perms);
end);
InstallGlobalFunction(RightRackByPerms,
function(perms)
local Q;
Q := RightRackByMultiplicationTable(
TransposedMat(
CayleyTableByPerms(perms, [1..Length(perms)])));
SetRightPerms(Q, perms);
end);
InstallGlobalFunction(RightRackByPermsNC,
function(perms)
local Q;
Q := RightRackByMultiplicationTableNC(
TransposedMat(
CayleyTableByPerms(perms, [1..Length(perms)])));
SetRightPerms(Q, perms);
end);
InstallGlobalFunction(RightQuandleByPerms,
function(perms)
local Q;
Q := RightQuandleByMultiplicationTable(
TransposedMat(
CayleyTableByPerms(perms, [1..Length(perms)])));
SetRightPerms(Q, perms);
end);
InstallGlobalFunction(RightQuandleByPermsNC,
function(perms)
local Q;
Q := RightQuandleByMultiplicationTableNC(
TransposedMat(
CayleyTableByPerms(perms, [1..Length(perms)])));
SetRightPerms(Q, perms);
end);
## And define the operations
InstallOtherMethod(LeftQuotient,