New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added new constructions for BIBDs #30004
Comments
Author: Ivo Maffei |
comment:3
Why do you use One can also create a function As to references, look up how it is done elsewhere in this file. You'd add
This part must only appear once.
as the 1st line of the file, as the 2nd reference uses utf-8. Then you can use tags |
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:6
I like the idea of a |
comment:7
Replying to @Ivo-Maffei:
it's perfectly fine, and actually safer, as the right merge is already done this way, to branch off that ticket (in this case it should be mentioned in |
comment:8
The code implementing the nonabelian group from scratch looks too complicated. It seems it's much easier to deal with this group as a subgroup of upper-triangular 2x2 matrices mod 11.
|
comment:9
Those matrices generate a group isomorphic to the one given. If I can't find anything, then to compute the action of a matrix on |
comment:10
you can use subgroup cosets, just as in Aschbacher's paper. |
comment:11
Thanks! If I understand the paper correctly, the My current implementation is extremely slow and it seems that the I'm now moving everything to GAP. Soon I'll push the new method. |
comment:12
in GAP you need FactorCosetAction function, which can take any group G and its subgroup H of finite index, and construct the action on the cosets of H in G. |
comment:13
here is what you can do, with x,y,z as in comment:8:
|
comment:14
I've done something a bit different by preserving the homomorphism given by |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:16
Can you use libgap.function_factory instead of libgap.eval, where appropriate? also, libgap.set_global looks dodgy, do you really need it? |
comment:17
the way you describe intial blocks looks ugly, as they are unions of orbits of certain subgroups. There is no need to do explicit enumeration of elements of these subgroups. |
comment:18
I changed the As far as the blocks are concerned, I can change
I don't know how to write |
comment:19
|
comment:20
Replying to @Ivo-Maffei:
Update the branch please, then I can comment on your latest code. |
comment:22
here is a bit of refactoring and simplification, but I believe it's better to combine all the actions into just one permutation action, and get rid of the points as pairs. diff --git a/src/sage/combinat/designs/database.py b/src/sage/combinat/designs/database.py
index 0fb34910a5..779e7873eb 100644
--- a/src/sage/combinat/designs/database.py
+++ b/src/sage/combinat/designs/database.py
@@ -4618,22 +4618,12 @@ def BIBD_79_13_2():
libgap.set_global("p23Act", P23Action)
libgap.set_global("p4Act", P4Action)
- get_action = libgap.function_factory("""ChooseMyAction := function(i)
- if i = 1 then
- return p1Act;
- elif i = 4 then
- return p4Act;
- else
- return p23Act;
- fi;
- end;""")
-
action = libgap.function_factory("""MyAction := function(pair, g)
- local i, C, hom;
+ local i, C, homs;
+ homs := [p1Act, p23Act, p23Act, p4Act];
i := pair[1];
C := pair[2];
- hom := ChooseMyAction(i);
- return [i, C^(ImageElm(hom,g))];
+ return [i, C^(ImageElm(homs[i],g))];
end;""")
p1 = (1,1)
@@ -4652,7 +4642,7 @@ def BIBD_79_13_2():
action(p4, X * Y**2), action(p4, X**-1 * Y**2), action(p4, X*Y), action(p4, X**-1 * Y),
action(p4, X**5 * Y), action(p4, X**-5 * Y), action(p4, X**5 * Y**4), action(p4, X**-5 * Y**4)])
- actionOnSet = libgap.function_factory("""MyActionOnSets := function(block, g)
+ actionOnSet = libgap.function_factory("""function(block, g)
local set, p, q;
set := Set([]);
for p in block do
@@ -4670,9 +4660,7 @@ def BIBD_79_13_2():
libgap.unset_global("p1Act")
libgap.unset_global("p23Act")
libgap.unset_global("p4Act")
- libgap.unset_global("ChooseMyAction")
libgap.unset_global("MyAction")
- libgap.unset_global("MyActionOnSets")
return blocks
def BIBD_56_11_2(): |
comment:24
I combined the action into 1 permutation action. I hope that is what you meant. |
comment:25
I think you better convert the block data into Sage's ZZ - at the moment they are still GAP integers (and also re-index from 0), as something goes wrong:
|
comment:26
this is a fix:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:28
subject to tests passing, this looks good.
|
Reviewer: Dima Pasechnik |
comment:29
I'm now running all tests. Anyway, the |
Dependencies: #29959 |
comment:30
Replying to @Ivo-Maffei:
yes, sure. I've made #29959 a dependency of this ticket. |
comment:31
So I finally finished testing this branch merged with #29959 and all tests pass. |
comment:32
OK, all clear. |
Changed branch from u/gh-Ivo-Maffei/biplanes to |
Constructed the biplanes with parameters
(79,13,2)
and(56,11,2)
.The constructions are added to the
BIBD_constructions
dictionary insage.combinat.designs.database
.After #29959, they will be available via
designs.balanced_incomplete_block_design
.Depends on #29959
CC: @dimpase
Component: combinatorial designs
Keywords: bibd combinatorial-designs
Author: Ivo Maffei
Branch/Commit:
b99b1eb
Reviewer: Dima Pasechnik
Issue created by migration from https://trac.sagemath.org/ticket/30004
The text was updated successfully, but these errors were encountered: