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))
|
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
|
## 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,
|
InstallGlobalFunction(LeftQuasigroupByMultiplicationTable,
|
||||||
function(T)
|
function(T)
|
||||||
if not IsLeftQuasigroupTable(T) then
|
if not IsLeftQuasigroupTable(T) then
|
||||||
|
@ -36,8 +60,7 @@ InstallGlobalFunction(LeftQuasigroupByMultiplicationTable,
|
||||||
end);
|
end);
|
||||||
|
|
||||||
InstallGlobalFunction(LeftQuasigroupByMultiplicationTableNC,
|
InstallGlobalFunction(LeftQuasigroupByMultiplicationTableNC,
|
||||||
T -> MagmaByMultiplicationTableCreatorNC(T, LeftQuasigroupNC,
|
T -> FiniteMagmaCreator@(T, LeftQuasigroupNC, IsLeftQuotientElement)
|
||||||
IsLeftQuotientElement and IsMagmaByMultiplicationTableObj)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
InstallGlobalFunction(RightQuasigroupByMultiplicationTable,
|
InstallGlobalFunction(RightQuasigroupByMultiplicationTable,
|
||||||
|
@ -50,8 +73,7 @@ InstallGlobalFunction(RightQuasigroupByMultiplicationTable,
|
||||||
end);
|
end);
|
||||||
|
|
||||||
InstallGlobalFunction(RightQuasigroupByMultiplicationTableNC,
|
InstallGlobalFunction(RightQuasigroupByMultiplicationTableNC,
|
||||||
T -> MagmaByMultiplicationTableCreatorNC(T, RightQuasigroupNC,
|
T -> FiniteMagmaCreator@(T, RightQuasigroupNC, IsRightQuotientElement)
|
||||||
IsRightQuotientElement and IsMagmaByMultiplicationTableObj)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
InstallGlobalFunction(LeftRackByMultiplicationTable,
|
InstallGlobalFunction(LeftRackByMultiplicationTable,
|
||||||
|
@ -68,10 +90,8 @@ InstallGlobalFunction(LeftRackByMultiplicationTable,
|
||||||
end);
|
end);
|
||||||
|
|
||||||
InstallGlobalFunction(LeftRackByMultiplicationTableNC,
|
InstallGlobalFunction(LeftRackByMultiplicationTableNC,
|
||||||
T -> MagmaByMultiplicationTableCreatorNC(T, LeftRackNC,
|
T -> FiniteMagmaCreator@(T, LeftRackNC,
|
||||||
IsLeftQuotientElement and IsLSelfDistElement and
|
IsLeftQuotientElement and IsLSelfDistElement)
|
||||||
IsMagmaByMultiplicationTableObj
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
InstallGlobalFunction(LeftQuandleByMultiplicationTable,
|
InstallGlobalFunction(LeftQuandleByMultiplicationTable,
|
||||||
|
@ -89,10 +109,8 @@ InstallGlobalFunction(LeftQuandleByMultiplicationTable,
|
||||||
end);
|
end);
|
||||||
|
|
||||||
InstallGlobalFunction(LeftQuandleByMultiplicationTableNC,
|
InstallGlobalFunction(LeftQuandleByMultiplicationTableNC,
|
||||||
T -> MagmaByMultiplicationTableCreatorNC(T, LeftQuandleNC,
|
T -> FiniteMagmaCreator@(T, LeftQuandleNC,
|
||||||
IsLeftQuotientElement and IsLSelfDistElement and IsIdempotent and
|
IsLeftQuotientElement and IsLSelfDistElement and IsIdempotent)
|
||||||
IsMagmaByMultiplicationTableObj
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
InstallGlobalFunction(RightRackByMultiplicationTable,
|
InstallGlobalFunction(RightRackByMultiplicationTable,
|
||||||
|
@ -109,10 +127,8 @@ InstallGlobalFunction(RightRackByMultiplicationTable,
|
||||||
end);
|
end);
|
||||||
|
|
||||||
InstallGlobalFunction(RightRackByMultiplicationTableNC,
|
InstallGlobalFunction(RightRackByMultiplicationTableNC,
|
||||||
T -> MagmaByMultiplicationTableCreatorNC(T, RightRackNC,
|
T -> FiniteMagmaCreator@(T, RightRackNC,
|
||||||
IsRightQuotientElement and IsRSelfDistElement and
|
IsRightQuotientElement and IsRSelfDistElement)
|
||||||
IsMagmaByMultiplicationTableObj
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
InstallGlobalFunction(RightQuandleByMultiplicationTable,
|
InstallGlobalFunction(RightQuandleByMultiplicationTable,
|
||||||
|
@ -130,10 +146,8 @@ InstallGlobalFunction(RightQuandleByMultiplicationTable,
|
||||||
end);
|
end);
|
||||||
|
|
||||||
InstallGlobalFunction(RightQuandleByMultiplicationTableNC,
|
InstallGlobalFunction(RightQuandleByMultiplicationTableNC,
|
||||||
T -> MagmaByMultiplicationTableCreatorNC(T, RightQuandleNC,
|
T -> FiniteMagmaCreator@(T, RightQuandleNC,
|
||||||
IsRightQuotientElement and IsRSelfDistElement and IsIdempotent and
|
IsRightQuotientElement and IsRSelfDistElement and IsIdempotent)
|
||||||
IsMagmaByMultiplicationTableObj
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
## And define the operations
|
## And define the operations
|
||||||
|
|
Loading…
Reference in New Issue