#16598: Useless new classes and a replacement for _check_pbd
-------------------------------------+-------------------------------------
Reporter: ncohen | Owner:
Type: enhancement | Status: needs_review
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/16598 | 3f8cebb0d68d7e7ae0e9c763e9bc78a1bdb847dd
Dependencies: #16553 | Stopgaps:
-------------------------------------+-------------------------------------
Changes (by ncohen):
* status: needs_info => needs_review
Comment:
Hello !
> I got it for the automorphism group! Thanks. But your definition of gdd
is wrong:
Ahahahahah. Well, that's what I intended, but... is the new version
clearer ?
> What do you think of having only one class (with blocks and groups) and
methods:
> - `.is_t_design(self,t,v,k,l)`
> - `.is_group_divisible_design(self,v,G,K,l)`
> - `.is_partially_balanced_design(self,v,K,l)`
How would you call the class ? If you want to have these functions as
methods of something, the only choice I see is `IncidenceStructure`. We
would have no `.groups()` method but those functions could get the groups
as an argument.
> I do not like the fact of having one extra empty class whose only
purpose is a check at creation...
I just created GDD because it was the common generalization of `TD` and
`PBD`. Mostly for the doc at the moment, and we will have some place to
put code that works on groups.
> Moreover, if we switch to mutable classes it would be cool that after
transformations we check the kind of thing we obtain.
Hmmmm... I don't expect that GDD or anything that inherits from it will
ever be mutable. `IncidenceStructure` could be mutable someday, though. It
wouldn't be cool to have a GDD object which is not a GDD. Plus as you
noticed, most of these objects are created from others, rarely modified
inplace.
> The only thing that bother me a little bit is this `dual` method which
does not make any sense for groups (perhaps it does??).
Well, it just does not consider them. To me those "groups" are a parameter
of the design, nothing else... The dual of a dual of a GDD is a GDD, so
everything is cool. The blocks are forgotten (they can be re-computed
automatically anyway), but who cares ? I don't think that you would find
any other definition of the dual of a GDD anywhere...
> Why do you not translate the groups over integers as it is the case for
blocks?
Oh. I thought that I would only define GDD for integer ground set, but
indeed it also handles the non-integer case almost for free as we know
that "._blocks" are already translated to integers. You are right. I will
updated that in a second.
> You really like to use tuple of tuples for groups and list of lists for
blocks (see comment:4 above)?
I don't understand. `.groups()` returns lists at the moment (before my
commit)
{{{
def groups(self):
return map(list,self._groups)
}}}
Oh, I see ! You meant for internal storage ! Fixed in the new commit.
Nathann
P.S. : While writing the commit, I made !IncidenceStructure mutable. But
it's not reaaaaaaaaaaallly a problem, it preserves all the structure !
`:-D`
--
Ticket URL: <http://trac.sagemath.org/ticket/16598#comment:11>
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.