install methodology to know that structures built on mult tables are finite
This commit is contained in:
parent
79682e0048
commit
419408e598
@ -24,7 +24,31 @@ InstallMethod(IsElementwiseIdempotentTable, "for matrix",
|
||||
T -> ForAll([1..Length(T)], i->(T[i,i]=i))
|
||||
);
|
||||
|
||||
## And a general principle: collections from finite families are finite.
|
||||
|
||||
InstallMethod(IsFinite, "for any collection (with a finite element family)",
|
||||
[IsCollection],
|
||||
function(C)
|
||||
local ef;
|
||||
ef := ElementsFamily(FamilyObj(C));
|
||||
if HasIsFinite(ef) and IsFinite(ef) then return true; fi;
|
||||
TryNextMethod();
|
||||
return fail;
|
||||
end);
|
||||
|
||||
|
||||
## And now create them from multiplication tables
|
||||
|
||||
#First a helper function
|
||||
FiniteMagmaCreator@ := function(tbl, const, filts)
|
||||
local M;
|
||||
M := MagmaByMultiplicationTableCreatorNC(
|
||||
T, const, filts and IsMagmaByMultiplicationTableObj);
|
||||
SetIsFinite(ElementsFamily(FamilyObject(M)));
|
||||
return M;
|
||||
end;
|
||||
|
||||
|
||||
InstallGlobalFunction(LeftQuasigroupByMultiplicationTable,
|
||||
function(T)
|
||||
if not IsLeftQuasigroupTable(T) then
|
||||
@ -36,8 +60,7 @@ InstallGlobalFunction(LeftQuasigroupByMultiplicationTable,
|
||||
end);
|
||||
|
||||
InstallGlobalFunction(LeftQuasigroupByMultiplicationTableNC,
|
||||
T -> MagmaByMultiplicationTableCreatorNC(T, LeftQuasigroupNC,
|
||||
IsLeftQuotientElement and IsMagmaByMultiplicationTableObj)
|
||||
T -> FiniteMagmaCreator@(T, LeftQuasigroupNC, IsLeftQuotientElement)
|
||||
);
|
||||
|
||||
InstallGlobalFunction(RightQuasigroupByMultiplicationTable,
|
||||
@ -50,8 +73,7 @@ InstallGlobalFunction(RightQuasigroupByMultiplicationTable,
|
||||
end);
|
||||
|
||||
InstallGlobalFunction(RightQuasigroupByMultiplicationTableNC,
|
||||
T -> MagmaByMultiplicationTableCreatorNC(T, RightQuasigroupNC,
|
||||
IsRightQuotientElement and IsMagmaByMultiplicationTableObj)
|
||||
T -> FiniteMagmaCreator@(T, RightQuasigroupNC, IsRightQuotientElement)
|
||||
);
|
||||
|
||||
InstallGlobalFunction(LeftRackByMultiplicationTable,
|
||||
@ -68,10 +90,8 @@ InstallGlobalFunction(LeftRackByMultiplicationTable,
|
||||
end);
|
||||
|
||||
InstallGlobalFunction(LeftRackByMultiplicationTableNC,
|
||||
T -> MagmaByMultiplicationTableCreatorNC(T, LeftRackNC,
|
||||
IsLeftQuotientElement and IsLSelfDistElement and
|
||||
IsMagmaByMultiplicationTableObj
|
||||
)
|
||||
T -> FiniteMagmaCreator@(T, LeftRackNC,
|
||||
IsLeftQuotientElement and IsLSelfDistElement)
|
||||
);
|
||||
|
||||
InstallGlobalFunction(LeftQuandleByMultiplicationTable,
|
||||
@ -89,10 +109,8 @@ InstallGlobalFunction(LeftQuandleByMultiplicationTable,
|
||||
end);
|
||||
|
||||
InstallGlobalFunction(LeftQuandleByMultiplicationTableNC,
|
||||
T -> MagmaByMultiplicationTableCreatorNC(T, LeftQuandleNC,
|
||||
IsLeftQuotientElement and IsLSelfDistElement and IsIdempotent and
|
||||
IsMagmaByMultiplicationTableObj
|
||||
)
|
||||
T -> FiniteMagmaCreator@(T, LeftQuandleNC,
|
||||
IsLeftQuotientElement and IsLSelfDistElement and IsIdempotent)
|
||||
);
|
||||
|
||||
InstallGlobalFunction(RightRackByMultiplicationTable,
|
||||
@ -109,10 +127,8 @@ InstallGlobalFunction(RightRackByMultiplicationTable,
|
||||
end);
|
||||
|
||||
InstallGlobalFunction(RightRackByMultiplicationTableNC,
|
||||
T -> MagmaByMultiplicationTableCreatorNC(T, RightRackNC,
|
||||
IsRightQuotientElement and IsRSelfDistElement and
|
||||
IsMagmaByMultiplicationTableObj
|
||||
)
|
||||
T -> FiniteMagmaCreator@(T, RightRackNC,
|
||||
IsRightQuotientElement and IsRSelfDistElement)
|
||||
);
|
||||
|
||||
InstallGlobalFunction(RightQuandleByMultiplicationTable,
|
||||
@ -130,10 +146,8 @@ InstallGlobalFunction(RightQuandleByMultiplicationTable,
|
||||
end);
|
||||
|
||||
InstallGlobalFunction(RightQuandleByMultiplicationTableNC,
|
||||
T -> MagmaByMultiplicationTableCreatorNC(T, RightQuandleNC,
|
||||
IsRightQuotientElement and IsRSelfDistElement and IsIdempotent and
|
||||
IsMagmaByMultiplicationTableObj
|
||||
)
|
||||
T -> FiniteMagmaCreator@(T, RightQuandleNC,
|
||||
IsRightQuotientElement and IsRSelfDistElement and IsIdempotent)
|
||||
);
|
||||
|
||||
## And define the operations
|
||||
|
Loading…
Reference in New Issue
Block a user