#16323: Construction of BIBD with k=5
-------------------------------------+-------------------------------------
       Reporter:  ncohen             |        Owner:
           Type:  enhancement        |       Status:  needs_info
       Priority:  major              |    Milestone:  sage-6.3
      Component:  combinatorial      |   Resolution:
  designs                            |    Merged in:
       Keywords:                     |    Reviewers:
        Authors:  Nathann Cohen      |  Work issues:
Report Upstream:  N/A                |       Commit:
         Branch:  u/ncohen/16323     |  07a31304b9d48ef6e07f1dd96c1d3185b8fafc95
   Dependencies:  #16279             |     Stopgaps:
-------------------------------------+-------------------------------------
Changes (by vdelecroix):

 * status:  needs_review => needs_info


Comment:

 Hi Nathann,

 Perhaps not everything for that ticket but I would like to discuss several
 points.

 1) `BalancedIncompleteBlockDesign` is upper case whereas we start to agree
 on lower case would be for "build me one if you know how to" and
 !CamelCase would be for "build me this precise design". Should I open a
 ticket for that ?

 2) BIBD errors are not smart (compared to TD/OA/MOLS)
 {{{
 sage: designs.BalancedIncompleteBlockDesign(5,6)
 ...
 ValueError: No such design exists !
 sage: designs.BalancedIncompleteBlockDesign(1,6)
 ...
 RuntimeError: maximum recursion depth exceeded while calling a Python
 object
 sage: D=designs.BalancedIncompleteBlockDesign(1,5)
 ...
 EmptySetError: No Transversal Design exists when k>=n+2 if n>=2
 }}}

 3) It would be nice to have `BIBD_from_difference_family` as a public
 function as it
 may serve other purposes. Moreover, the {{{G(x if some_reason else [x])}}}
 is
 ugly.  I know it is because of `AdditiveAbelianGroup` but it is ugly.
 There are
 ways to avoid that (e.g. use `Zmod` for cyclic groups instead of
 `AdditiveAbelianGroup`). For that particular point, I do have
 implementation that smooth everything in u/vdelecroix/16323.

 4) More generally, there are recursive strategies to build difference
 family and
 difference matrices... it would be nice to have functions
 {{{
 def difference_family(G, k, l=1, existence=False):
     r"""
     Return a (G,k,l)-difference family if we know how to...
     """

 def difference_matrix(G, k, l=1, existence=False):
     r"""
     Return a (G,k,l)-difference matrix if we know how to...
     """"
 }}}
 And moreover, such function might be used to simplify the database.

 5) (not very helpful comment) For v=81, one can write in shorter form
 {{{
 sage: G = AdditiveAbelianGroup([3]*4)
 sage: a,b,c,d = G.gens()
 sage: D = [[d,    -a+d,  -c+d,    a-b-d,   b+c+d],
 ....:      [c,    -b+c,   a+b-d,  a-b+d,   a+b+c],
 ....:      [a+b,  -a+c-d, b-c+d,  a-b-c-d, -a-b+c+d],
 ....:      [-b-d,  a+b+d, a-b+c, -b+c+d,    a-b+c-d]]
 }}}
 Moreover, writing that way it avoids the conversion from tuple to elements
 of
 the group G.

 Vincent

--
Ticket URL: <http://trac.sagemath.org/ticket/16323#comment:8>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to