Have to cut many other methods down to be more specific to element reps
This commit is contained in:
parent
a69dcd05d3
commit
2696cd6ff2
@ -30,14 +30,14 @@ end );
|
|||||||
|
|
||||||
InstallMethod( \=, "for two elements of a quasigroup",
|
InstallMethod( \=, "for two elements of a quasigroup",
|
||||||
IsIdenticalObj,
|
IsIdenticalObj,
|
||||||
[ IsQuasigroupElement, IsQuasigroupElement ],
|
[ IsQuasigroupElmRep, IsQuasigroupElmRep ],
|
||||||
function( x, y )
|
function( x, y )
|
||||||
return FamilyObj( x ) = FamilyObj( y ) and x![ 1 ] = y![ 1 ];
|
return FamilyObj( x ) = FamilyObj( y ) and x![ 1 ] = y![ 1 ];
|
||||||
end );
|
end );
|
||||||
|
|
||||||
InstallMethod( \<, "for two elements of a quasigroup",
|
InstallMethod( \<, "for two elements of a quasigroup",
|
||||||
IsIdenticalObj,
|
IsIdenticalObj,
|
||||||
[ IsQuasigroupElement, IsQuasigroupElement ],
|
[ IsQuasigroupElmRep, IsQuasigroupElmRrep ],
|
||||||
function( x, y )
|
function( x, y )
|
||||||
return FamilyObj( x ) = FamilyObj( y ) and x![ 1 ] < y![ 1 ];
|
return FamilyObj( x ) = FamilyObj( y ) and x![ 1 ] < y![ 1 ];
|
||||||
end );
|
end );
|
||||||
@ -57,7 +57,7 @@ end );
|
|||||||
## i.e., a*b*c=(a*b)*c. Powers use binary decomposition.
|
## i.e., a*b*c=(a*b)*c. Powers use binary decomposition.
|
||||||
InstallMethod( \*, "for two quasigroup elements",
|
InstallMethod( \*, "for two quasigroup elements",
|
||||||
IsIdenticalObj,
|
IsIdenticalObj,
|
||||||
[ IsQuasigroupElement, IsQuasigroupElement ],
|
[ IsQuasigroupElmRep, IsQuasigroupElmRep ],
|
||||||
function( x, y )
|
function( x, y )
|
||||||
local F;
|
local F;
|
||||||
F := FamilyObj( x );
|
F := FamilyObj( x );
|
||||||
@ -65,13 +65,13 @@ function( x, y )
|
|||||||
end );
|
end );
|
||||||
|
|
||||||
InstallOtherMethod( \*, "for a QuasigroupElement and a list",
|
InstallOtherMethod( \*, "for a QuasigroupElement and a list",
|
||||||
[ IsQuasigroupElement , IsList ],
|
[ IsQuasigroupElmRep , IsList ],
|
||||||
function( x, ly )
|
function( x, ly )
|
||||||
return List( ly, y -> x*y );
|
return List( ly, y -> x*y );
|
||||||
end );
|
end );
|
||||||
|
|
||||||
InstallOtherMethod( \*, "for a list and a QuasigroupElement",
|
InstallOtherMethod( \*, "for a list and a QuasigroupElement",
|
||||||
[ IsList, IsQuasigroupElement ],
|
[ IsList, IsQuasigroupElmRep ],
|
||||||
function( lx, y )
|
function( lx, y )
|
||||||
return List( lx, x -> x*y );
|
return List( lx, x -> x*y );
|
||||||
end );
|
end );
|
||||||
@ -83,7 +83,7 @@ end );
|
|||||||
## z=x/y means zy=x
|
## z=x/y means zy=x
|
||||||
InstallMethod( RightDivision, "for two quasigroup elements",
|
InstallMethod( RightDivision, "for two quasigroup elements",
|
||||||
IsIdenticalObj,
|
IsIdenticalObj,
|
||||||
[ IsQuasigroupElement, IsQuasigroupElement ],
|
[ IsQuasigroupElmRep, IsQuasigroupElmRep ],
|
||||||
function( x, y )
|
function( x, y )
|
||||||
local F, ycol;
|
local F, ycol;
|
||||||
F := FamilyObj( x );
|
F := FamilyObj( x );
|
||||||
@ -93,7 +93,7 @@ end );
|
|||||||
|
|
||||||
InstallOtherMethod( RightDivision,
|
InstallOtherMethod( RightDivision,
|
||||||
"for a list and a quasigroup element",
|
"for a list and a quasigroup element",
|
||||||
[ IsList, IsQuasigroupElement ],
|
[ IsList, IsQuasigroupElmRep ],
|
||||||
0,
|
0,
|
||||||
function( lx, y )
|
function( lx, y )
|
||||||
return List( lx, x -> RightDivision(x, y) );
|
return List( lx, x -> RightDivision(x, y) );
|
||||||
@ -101,7 +101,7 @@ end );
|
|||||||
|
|
||||||
InstallOtherMethod( RightDivision,
|
InstallOtherMethod( RightDivision,
|
||||||
"for a quasigroup element and a list",
|
"for a quasigroup element and a list",
|
||||||
[ IsQuasigroupElement, IsList ],
|
[ IsQuasigroupElmRep, IsList ],
|
||||||
0,
|
0,
|
||||||
function( x, ly )
|
function( x, ly )
|
||||||
return List( ly, y -> RightDivision(x, y) );
|
return List( ly, y -> RightDivision(x, y) );
|
||||||
@ -110,7 +110,7 @@ end );
|
|||||||
InstallOtherMethod( \/,
|
InstallOtherMethod( \/,
|
||||||
"for two elements of a quasigroup",
|
"for two elements of a quasigroup",
|
||||||
IsIdenticalObj,
|
IsIdenticalObj,
|
||||||
[ IsQuasigroupElement, IsQuasigroupElement ],
|
[ IsQuasigroupElmRep, IsQuasigroupElmRep ],
|
||||||
0,
|
0,
|
||||||
function( x, y )
|
function( x, y )
|
||||||
return RightDivision( x, y );
|
return RightDivision( x, y );
|
||||||
@ -118,7 +118,7 @@ end );
|
|||||||
|
|
||||||
InstallOtherMethod( \/,
|
InstallOtherMethod( \/,
|
||||||
"for a list and a quasigroup element",
|
"for a list and a quasigroup element",
|
||||||
[ IsList, IsQuasigroupElement ],
|
[ IsList, IsQuasigroupElmRep ],
|
||||||
0,
|
0,
|
||||||
function( lx, y )
|
function( lx, y )
|
||||||
return List( lx, x -> RightDivision(x, y) );
|
return List( lx, x -> RightDivision(x, y) );
|
||||||
@ -126,7 +126,7 @@ end );
|
|||||||
|
|
||||||
InstallOtherMethod( \/,
|
InstallOtherMethod( \/,
|
||||||
"for a quasigroup element and a list",
|
"for a quasigroup element and a list",
|
||||||
[ IsQuasigroupElement, IsList ],
|
[ IsQuasigroupElmRep, IsList ],
|
||||||
0,
|
0,
|
||||||
function( x, ly )
|
function( x, ly )
|
||||||
return List( ly, y -> RightDivision(x, y) );
|
return List( ly, y -> RightDivision(x, y) );
|
||||||
@ -135,7 +135,7 @@ end );
|
|||||||
## z = x\y means xz=y
|
## z = x\y means xz=y
|
||||||
InstallMethod( LeftDivision, "for two quasigroup elements",
|
InstallMethod( LeftDivision, "for two quasigroup elements",
|
||||||
IsIdenticalObj,
|
IsIdenticalObj,
|
||||||
[ IsQuasigroupElement, IsQuasigroupElement ],
|
[ IsQuasigroupElmRep, IsQuasigroupElmRep ],
|
||||||
function( x, y )
|
function( x, y )
|
||||||
local F;
|
local F;
|
||||||
F := FamilyObj( x );
|
F := FamilyObj( x );
|
||||||
@ -144,7 +144,7 @@ end );
|
|||||||
|
|
||||||
InstallOtherMethod( LeftDivision,
|
InstallOtherMethod( LeftDivision,
|
||||||
"for a list and a quasigroup element",
|
"for a list and a quasigroup element",
|
||||||
[ IsList, IsQuasigroupElement ],
|
[ IsList, IsQuasigroupElmRep ],
|
||||||
0,
|
0,
|
||||||
function( lx, y )
|
function( lx, y )
|
||||||
return List( lx, x -> LeftDivision(x, y) );
|
return List( lx, x -> LeftDivision(x, y) );
|
||||||
@ -152,7 +152,7 @@ end );
|
|||||||
|
|
||||||
InstallOtherMethod( LeftDivision,
|
InstallOtherMethod( LeftDivision,
|
||||||
"for a quasigroup element and a list",
|
"for a quasigroup element and a list",
|
||||||
[ IsQuasigroupElement, IsList ],
|
[ IsQuasigroupElmRep, IsList ],
|
||||||
0,
|
0,
|
||||||
function( x, ly )
|
function( x, ly )
|
||||||
return List( ly, y -> LeftDivision(x, y) );
|
return List( ly, y -> LeftDivision(x, y) );
|
||||||
@ -215,7 +215,7 @@ end );
|
|||||||
## -------------------------------------------------------------------------
|
## -------------------------------------------------------------------------
|
||||||
|
|
||||||
InstallMethod( \^, "for a quasigroup element and a permutation",
|
InstallMethod( \^, "for a quasigroup element and a permutation",
|
||||||
[ IsQuasigroupElement, IsPerm ],
|
[ IsQuasigroupElmRep, IsPerm ],
|
||||||
function( x, p )
|
function( x, p )
|
||||||
local F;
|
local F;
|
||||||
F := FamilyObj( x );
|
F := FamilyObj( x );
|
||||||
@ -223,7 +223,7 @@ function( x, p )
|
|||||||
end );
|
end );
|
||||||
|
|
||||||
InstallMethod( OneOp, "for loop elements",
|
InstallMethod( OneOp, "for loop elements",
|
||||||
[ IsLoopElement ],
|
[ IsLoopElmRep ],
|
||||||
function( x )
|
function( x )
|
||||||
local F;
|
local F;
|
||||||
F := FamilyObj( x );
|
F := FamilyObj( x );
|
||||||
@ -237,7 +237,7 @@ end );
|
|||||||
## If <x> is a loop element, returns the left inverse of <x>
|
## If <x> is a loop element, returns the left inverse of <x>
|
||||||
|
|
||||||
InstallMethod( LeftInverse, "for loop elements",
|
InstallMethod( LeftInverse, "for loop elements",
|
||||||
[ IsLoopElement ],
|
[ IsLoopElmRep ],
|
||||||
x -> RightDivision( One( x ), x )
|
x -> RightDivision( One( x ), x )
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -248,12 +248,12 @@ InstallMethod( LeftInverse, "for loop elements",
|
|||||||
## If <x> is a loop element, returns the left inverse of <x>
|
## If <x> is a loop element, returns the left inverse of <x>
|
||||||
|
|
||||||
InstallMethod( RightInverse, "for loop elements",
|
InstallMethod( RightInverse, "for loop elements",
|
||||||
[ IsLoopElement ],
|
[ IsLoopElmRep ],
|
||||||
x -> LeftDivision( x, One( x ) )
|
x -> LeftDivision( x, One( x ) )
|
||||||
);
|
);
|
||||||
|
|
||||||
InstallMethod( InverseOp, "for loop elements",
|
InstallMethod( InverseOp, "for loop elements",
|
||||||
[ IsLoopElement ],
|
[ IsLoopElmRep ],
|
||||||
function( x )
|
function( x )
|
||||||
local y;
|
local y;
|
||||||
y := RightInverse( x );
|
y := RightInverse( x );
|
||||||
@ -274,7 +274,7 @@ end );
|
|||||||
## (xy)z = (x(yz))u.
|
## (xy)z = (x(yz))u.
|
||||||
|
|
||||||
InstallMethod( Associator, "for three quasigroup elements",
|
InstallMethod( Associator, "for three quasigroup elements",
|
||||||
[ IsQuasigroupElement, IsQuasigroupElement, IsQuasigroupElement ],
|
[ IsQuasigroupElmRep, IsQuasigroupElmRep, IsQuasigroupElmRep ],
|
||||||
function( x, y, z )
|
function( x, y, z )
|
||||||
return LeftDivision( x*(y*z), (x*y)*z );
|
return LeftDivision( x*(y*z), (x*y)*z );
|
||||||
end);
|
end);
|
||||||
@ -288,7 +288,7 @@ end);
|
|||||||
## (xy) = (yx)u.
|
## (xy) = (yx)u.
|
||||||
|
|
||||||
InstallMethod( Commutator, "for two quasigroup elements",
|
InstallMethod( Commutator, "for two quasigroup elements",
|
||||||
[ IsQuasigroupElement, IsQuasigroupElement ],
|
[ IsQuasigroupElmRep, IsQuasigroupElmRep ],
|
||||||
function( x, y )
|
function( x, y )
|
||||||
return LeftDivision( y*x, x*y );
|
return LeftDivision( y*x, x*y );
|
||||||
end);
|
end);
|
||||||
|
Loading…
Reference in New Issue
Block a user