Re: [sage-trac] #15107: Projective Plane designs

58 views
Skip to first unread message

Dima Pasechnik

unread,
Jan 4, 2014, 8:08:34 AM1/4/14
to Nathann Cohen, sage-devel

Hi Nathann,
The trac seems to be down for me, so I write here.
What you propose is a misnaming of the object, akin to, say, creation of a Sage function that returns for given n the next prime power, NextPrimePower, but then you actually make it return next power of 2.
Your function returns a Desarguesian projective plane, and this term and the order of the plane characterize it uniquely.
Then name it properly...
Dima

On 4 Jan 2014 19:58, "sage-trac" <tr...@sagemath.org> wrote:
#15107: Projective Plane designs
-------------------------+-------------------------------------------------
       Reporter:         |        Owner:
  ncohen                 |       Status:  needs_review
           Type:         |    Milestone:  sage-6.1
  enhancement            |   Resolution:
       Priority:  major  |    Merged in:
      Component:         |    Reviewers:
  combinatorics          |  Work issues:
       Keywords:         |       Commit:
        Authors:         |  cf71d58dedd357692ea90749090adee9ffadd629
  Nathann Cohen          |     Stopgaps:
Report Upstream:  N/A    |
         Branch:         |
  u/ncohen/15107         |
   Dependencies:         |
-------------------------+-------------------------------------------------

Comment (by ncohen):

 Helloooooo !

 Well, the purpose of this function is to return a projective plane design,
 i.e. a `d^2+d+1, d+1` BIBD.

 I agree with what you said. Actually, thinking about it again, I don't
 agree with what Dima said above. I don't see the problem with calling this
 `ProjectivePlaneDesign`, as I need a function which returns a projective
 plane design. Changing the name just makes it harder to find when one
 looks for it `>_<`

 What do you think ?

 I think that this alias is useful, but I personally spent quite some time
 trying to figure out of to obtain a projective plane design with Sage.

 Nathann

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

Nathann Cohen

unread,
Jan 4, 2014, 8:21:05 AM1/4/14
to Dima Pasechnik, sage-devel
Helloooooooo !


> Hi Nathann,
> The trac seems to be down for me, so I write here.
> What you propose is a misnaming of the object, akin to, say, creation of a Sage function that returns for given n the next prime power, NextPrimePower, but then you actually make it return next power of 2.
> Your function returns a Desarguesian projective plane, and this term and the order of the plane characterize it uniquely.
> Then name it properly...
> Dima

Okay, so as you involve everybody, let's explain it to them :

Patch #15107 adds a method named (at first) designs.ProjectivePlaneDesign. Which returns what is known as a projective plane, i.e. there : http://en.wikipedia.org/wiki/Projective_plane#Finite_projective_planes

Dima made comments on the tickets and thinks that it should be renamed to one of designs.DesarguesianProjectivePlaneDesign or designs.PappianProjectivePlaneDesign (none of which is "the obvious choice")

Now Dima, you say that I am misnaming a function but I don't understand how you can defend that : this function *does* return a Projective Plane. It is, indeed, a specific kind of projective planes (I don't think that there is anu other general construction), but it *IS* a projective plane. So how could naming it "ProjectivePlaneDesign" be incorrect ?

As I was saying on the other thread, we have already things like that :
designs.steiner_triple_system
designs.steiner_quadruple_system

And of course there are *MANY* such systems for a given input. But well, these functions are only interesting because they return such systems, so the name fits.

Plus we will soon have a design.BalancedIncompleteBlockDesign, and the same will happen.

Soooo well.. You agree that this function returns Projective Planes, as you want to call them Desarguesian Projective Planes, but given that the name is not a natural choice and make it harder to find, I think it should be called designs.ProjectivePlane. I don't claim that the function will return anything that it should not : it returns projective planes, as we want it to.

You cannot say that it is misnamed.

Nathann

David Joyner

unread,
Jan 4, 2014, 8:32:27 AM1/4/14
to sage-devel, Dima Pasechnik
On Sat, Jan 4, 2014 at 8:21 AM, Nathann Cohen <nathan...@gmail.com> wrote:
> Helloooooooo !
>
>
>> Hi Nathann,
>> The trac seems to be down for me, so I write here.
>> What you propose is a misnaming of the object, akin to, say, creation of a
>> Sage function that returns for given n the next prime power, NextPrimePower,
>> but then you actually make it return next power of 2.
>> Your function returns a Desarguesian projective plane, and this term and
>> the order of the plane characterize it uniquely.
>> Then name it properly...
>> Dima
>
> Okay, so as you involve everybody, let's explain it to them :
>
> Patch #15107 adds a method named (at first) designs.ProjectivePlaneDesign.
> Which returns what is known as a projective plane, i.e. there :
> http://en.wikipedia.org/wiki/Projective_plane#Finite_projective_planes
>
> Dima made comments on the tickets and thinks that it should be renamed to
> one of designs.DesarguesianProjectivePlaneDesign or
> designs.PappianProjectivePlaneDesign (none of which is "the obvious choice")
>
> Now Dima, you say that I am misnaming a function but I don't understand how

...

>
> You cannot say that it is misnamed.
>

It seems to me there are two solutions to this argument.

(1) Leave it as designs.ProjectivePlaneDesign but have an option
type = "Desarguesian" as the default argument
(2) change it to designs.ProjectivePlaneDesignDesarguesian

(Sorry, Nathann, I sort of agree with Dima here. However, I do not like
designs.DesarguesianProjectivePlaneDesign, for the same reason that I
prefer plot_implicit to implicit_plot, but that doesn't mean it gets
implemented:-)


> Nathann
>
> --
> You received this message because you are subscribed to the Google Groups
> "sage-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sage-devel+...@googlegroups.com.
> To post to this group, send email to sage-...@googlegroups.com.
> Visit this group at http://groups.google.com/group/sage-devel.
> For more options, visit https://groups.google.com/groups/opt_out.

Dima Pasechnik

unread,
Jan 4, 2014, 8:34:17 AM1/4/14
to Nathann Cohen, sage-devel

Nathann,
If you know what you are doing it is not hard to find. Unless of course you receive all the knowledge by hitting TAB :)
OK, name it ProjectivePlanePappian, to satisfy your TAB-happy fingers...

Oh well, the fact that you already put a bunch of misnamed stuff into Sage does not mean that you should keep doing this and keep confusing other potential users... Cf our previous disputes about LP vs Integer LP....

Nathann Cohen

unread,
Jan 4, 2014, 8:43:54 AM1/4/14
to Dima Pasechnik, sage-devel
> If you know what you are doing it is not hard to find. Unless of course you receive all the knowledge by hitting TAB :)
> OK, name it ProjectivePlanePappian, to satisfy your TAB-happy fingers...
>
> Oh well, the fact that you already put a bunch of misnamed stuff into Sage does not mean that you should keep doing this and keep confusing other potential users... Cf our previous disputes about LP vs Integer LP....

Dima, you started this thread by claiming I was writing a function which did not return what it claims to return.
This designs.ProjectivePlaneDesign returns a projective plane design. I hope that is clear.


> Oh well, the fact that you already put a bunch of misnamed stuff into Sage does not mean that you should keep doing this and keep confusing other potential users... 
How can you call that misnamed ? A function "steiner_triple_system" which returns a steiner triple system ? Really ?


> Cf our previous disputes about LP vs Integer LP....
Well, didn't I fix that since ? I anything, it shows I put my liking aside when it is not natural for others. Same with #15482, that I implemented myself, because it confused others.

This function called designs.ProjectivePlaneDesign returns a projective plane design. Please answer yes/no to that or tell me again why you think my function claims something different from what it claims.

Play it fair. Then, we can discuss the matter at hand. But so far I am the one who has NO CLUE why you would want to overspecify a method. And for this I would like ot have explanations.

Nathann

Nathann Cohen

unread,
Jan 4, 2014, 8:46:50 AM1/4/14
to Dima Pasechnik, sage-devel
I meant #15521, not #15482.

And I meant "claims something different from what it returns", not "from what it claims".

Nathann

David Joyner

unread,
Jan 4, 2014, 8:50:43 AM1/4/14
to sage-devel, Dima Pasechnik
On Sat, Jan 4, 2014 at 8:46 AM, Nathann Cohen <nathan...@gmail.com> wrote:
> I meant #15521, not #15482.
>
> And I meant "claims something different from what it returns", not "from
> what it claims".
>
> Nathann
>

Nathann:

At the risk of being punch in the face by trying to mediate this slugfest,

<ducks a swing>

are you okay with the compromise Dima has offered:
designs.ProjectivePlanePappian ?

<ducks another punch>

Seems simple enough and then everyone is hopefully happy:-)

- David

Dima Pasechnik

unread,
Jan 4, 2014, 8:51:54 AM1/4/14
to Nathann Cohen, sage-devel


On 4 Jan 2014 21:43, "Nathann Cohen" <nathan...@gmail.com> wrote:
>
> > If you know what you are doing it is not hard to find. Unless of course you receive all the knowledge by hitting TAB :)
> > OK, name it ProjectivePlanePappian, to satisfy your TAB-happy fingers...
> >
> > Oh well, the fact that you already put a bunch of misnamed stuff into Sage does not mean that you should keep doing this and keep confusing other potential users... Cf our previous disputes about LP vs Integer LP....
>
> Dima, you started this thread by claiming I was writing a function which did not return what it claims to return.
> This designs.ProjectivePlaneDesign returns a projective plane design. I hope that is clear.
>
>
> > Oh well, the fact that you already put a bunch of misnamed stuff into Sage does not mean that you should keep doing this and keep confusing other potential users... 
> How can you call that misnamed ? A function "steiner_triple_system" which returns a steiner triple system ? Really ?

So what. I can also say that it returns a set system. Why don't you call it setsystemblahblah, a name that only makes sense to you ☺


>
>
> > Cf our previous disputes about LP vs Integer LP....
> Well, didn't I fix that since ? I anything, it shows I put my liking aside when it is not natural for others. Same with #15482, that I implemented myself, because it confused others.

So people are telling you to fix your design now, and not later...
And you start screaming at them in response.

The fact that you did misname things in the past does not mean you can keep doing this...

"Officer, why are you booking me? You ran a red light! Huh, I did this 50 times, and nobody booked me before" kind of thing...

Nathann Cohen

unread,
Jan 4, 2014, 8:54:53 AM1/4/14
to Dima Pasechnik, sage-devel
> > How can you call that misnamed ? A function "steiner_triple_system" which returns a steiner triple system ? Really ?
>
> So what. I can also say that it returns a set system. Why don't you call it setsystemblahblah, a name that only makes sense to you ☺

.............

That comment is so dishonest I will not even answer it.


> So people are telling you to fix your design now, and not later...
> And you start screaming at them in response.

So far you haven't told me why you thought it was wrong. You told me I claimed to do something different from what it does, and this is clearly wrong.

So then again, because you did not answer my last question : this function is called ProjectivePlaneDesign and returns a projective plane design. Why do you call that misnaming ?

Nathann

Nathann Cohen

unread,
Jan 4, 2014, 8:57:19 AM1/4/14
to Sage devel, Dima Pasechnik
Helloooooo !

> At the risk of being punch in the face by trying to mediate this slugfest,
>
> <ducks a swing>

This one was a nasty one. You did well.

> are you okay with the compromise Dima has offered:
> designs.ProjectivePlanePappian ?

It's one I will be willing to accept, it's a good compromise indeed. I
would be glad to know *WHY* I would have to accept it though, so far
the attacks have been the following : the function is misnamed,
because it does not return what it claims.

I think this is a plain lie, and so to accept a compromise I request a
valid reason why this function is called misnamed. And you can answer
this one too, as you agreed with Dima.

> Seems simple enough and then everyone is hopefully happy:-)

I don't want to change this function's name just because somebody
comes and does not like it. I would like a valid reason. If you can
provide one, I would be glad to discuss it.

Nathann

Dima Pasechnik

unread,
Jan 4, 2014, 8:57:59 AM1/4/14
to David Joyner, sage-devel, Nathann Cohen

David,
Your proposal of a default parameter might actually be more flexible, as it is easy to extend, codewise.
Dima

Nathann Cohen

unread,
Jan 4, 2014, 8:59:09 AM1/4/14
to Dima Pasechnik, David Joyner, sage-devel
Dima,

> Your proposal of a default parameter might actually be more flexible, as it
> is easy to extend, codewise.

please answer the f******* question I asked ten times in a row.

Nathann

David Joyner

unread,
Jan 4, 2014, 9:01:55 AM1/4/14
to Dima Pasechnik, sage-devel, Nathann Cohen
On Sat, Jan 4, 2014 at 8:57 AM, Dima Pasechnik <dim...@gmail.com> wrote:
> David,
> Your proposal of a default parameter might actually be more flexible, as it
> is easy to extend, codewise.
> Dima
>


Thank you Dima!

Nathann: Please relax, calm down and except this as a peace offering from Dima.
Okay? An argument over semantics isn't worth it when you can get the
syntax you want. You have won!

And don't forget it is almost Happy New Year!



>
> On 4 Jan 2014 21:50, "David Joyner" <wdjo...@gmail.com> wrote:
>>
>> On Sat, Jan 4, 2014 at 8:46 AM, Nathann Cohen <nathan...@gmail.com>
>> wrote:
>> > I meant #15521, not #15482.
>> >
>> > And I meant "claims something different from what it returns", not "from
>> > what it claims".
>> >
>> > Nathann
>> >
>>
>> Nathann:
>>
>> At the risk of being punch in the face by trying to mediate this slugfest,
>>
>> <ducks a swing>
>>
>> are you okay with the compromise Dima has offered:
>> designs.ProjectivePlanePappian ?
>>
>> <ducks another punch>
>>
>> Seems simple enough and then everyone is hopefully happy:-)
>>
>> - David
>>
>>

...

Nathann Cohen

unread,
Jan 4, 2014, 9:03:11 AM1/4/14
to David Joyner, Dima Pasechnik, sage-devel
> Thank you Dima!
>
> Nathann: Please relax, calm down and except this as a peace offering from Dima.
> Okay? An argument over semantics isn't worth it when you can get the
> syntax you want. You have won!

O_o

What the hell have I won ? I don't even understand what this thread is
about ! Why would anybody call this function misnamed in the first
place ? O_O

Nathann

Dima Pasechnik

unread,
Jan 4, 2014, 9:09:06 AM1/4/14
to Nathann Cohen, sage-devel, David Joyner

I think you have misunderstood my complaint, as it was about the function returning much more specific thing than asked. You hijack a generic name for something specific. I tried to explain this by an analogy with misnamed NextPrimePower, actually returning NextPrimePower_OF_TWO, which is obviously a better name.

One unpleasant side effect of your present design is that it is harder than necessary to extend to cover other projective planes, as you hijack the generic name for no good reason, except your convenience :)

 
>
> Nathann

David Joyner

unread,
Jan 4, 2014, 9:10:21 AM1/4/14
to Nathann Cohen, Dima Pasechnik, sage-devel
Dima and Nathann: So can we please agree to drop the argument and
swinging and punching:-)?

Nathann, all that is left is to make a small change to the ticket to
add the default argument
type = "Pappian" or type = "Desarguesian", say. Does this seem reasonable
Nathann?


>
> Nathann

Nathann Cohen

unread,
Jan 4, 2014, 9:11:39 AM1/4/14
to Dima Pasechnik, sage-devel, David Joyner
Hellooooo !!

> I think you have misunderstood my complaint, as it was about the function
> returning much more specific thing than asked. You hijack a generic name for
> something specific. I tried to explain this by an analogy with misnamed
> NextPrimePower, actually returning NextPrimePower_OF_TWO, which is obviously
> a better name.
>
> One unpleasant side effect of your present design is that it is harder than
> necessary to extend to cover other projective planes, as you hijack the
> generic name for no good reason, except your convenience :)

So if I follow you, you agree to have this function named

designs.ProjectivePlaneDesign() for as long as there is an argument named type="Pappian" which does absolutely NOTHING as there is no other implementation available ?

Nathann

Nathann Cohen

unread,
Jan 4, 2014, 9:15:03 AM1/4/14
to David Joyner, Dima Pasechnik, sage-devel
Helloooooooooo !!

> Dima and Nathann: So can we please agree to drop the argument and
> swinging and punching:-)?

I expect Dima and I are of the punching type. It gets loud but it's never very bad. I get angry 10 times a day, and I laugh as many times in between :-P

> Nathann, all that is left is to make a small change to the ticket to
> add the default argument
> type = "Pappian" or type = "Desarguesian", say.  Does this seem reasonable
> Nathann?

Does it seem reasonable to me to have a function with an optional parameter which does nothing, because there is no other implementation available ?

No, it does not. Could you tell me why you think it makes any sense ?

Last time I saw a function with an optional argument that was never used in the code I deprecated it. I don't even know what the function was about.

Nathann

Dima Pasechnik

unread,
Jan 4, 2014, 9:16:43 AM1/4/14
to Nathann Cohen, David Joyner, sage-devel

Sure I do. The argument "Pappian" serves as documentation here, for the time being, it's not absolutely NOTHING...

>
> Nathann

David Joyner

unread,
Jan 4, 2014, 9:20:48 AM1/4/14
to Nathann Cohen, Dima Pasechnik, sage-devel
On Sat, Jan 4, 2014 at 9:15 AM, Nathann Cohen <nathan...@gmail.com> wrote:
> Helloooooooooo !!
>

...

>
>> Nathann, all that is left is to make a small change to the ticket to
>> add the default argument
>> type = "Pappian" or type = "Desarguesian", say. Does this seem reasonable
>> Nathann?
>
> Does it seem reasonable to me to have a function with an optional parameter
> which does nothing, because there is no other implementation available ?
>
> No, it does not. Could you tell me why you think it makes any sense ?


It might make sense to people who will work on that in the future.
Think of your children's children:-)

Nathann Cohen

unread,
Jan 4, 2014, 9:20:52 AM1/4/14
to Dima Pasechnik, David Joyner, sage-devel
> Sure I do. The argument "Pappian" serves as documentation here, for the time being, it's not absolutely NOTHING...

Okay. Then I take this as modern art.

The docstring will read :

- ``type`` -- When set to "Pappian", the method only returns Pappian projective planes. No other value is available.

What I cannot stand is misunderstanding. I have absolutely nothing against plainly assumed absurdity.

I will update the ticket in the next 20 minutes.

Nathann

Nathann Cohen

unread,
Jan 4, 2014, 9:23:46 AM1/4/14
to David Joyner, Dima Pasechnik, sage-devel
> It might make sense to people who will work on that in the future.
> Think of your children's children:-)

Reminds me that I should be looking for their mother instead of writing Sage patches. First things first :-P

Nathann

Dima Pasechnik

unread,
Jan 4, 2014, 9:24:05 AM1/4/14
to Nathann Cohen, sage-devel, David Joyner

Perhaps even better would be to have one more level of classes, i.e.
designs.ProjectivePlaneDesign.Pappian()
designs.ProjectivePlaneDesign.Hall()
etc

Even better,
drop "Design" part....

> >
> > Nathann

P Purkayastha

unread,
Jan 4, 2014, 9:41:42 AM1/4/14
to sage-...@googlegroups.com
On 01/04/2014 10:20 PM, Nathann Cohen wrote:
>
> The docstring will read :
>
> - ``type`` -- When set to "Pappian", the method only returns Pappian
> projective planes. No other value is available.

From what I understand, Dima is more concerned about future
extendability of the function. If someone comes along with a different
construction two years from now then that person can simply set a
different type and the same function will work. Right *now*, there is no
advantage other than the prospect of being maintainable and extendable
in the far future.

Nathann Cohen

unread,
Jan 4, 2014, 9:46:55 AM1/4/14
to Sage devel
Helloooooooo !!


> From what I understand, Dima is more concerned about future extendability of
> the function.

We do not write C code. We can add new optional argument whenever we want.


> If someone comes along with a different construction two years
> from now then that person can simply set a different type and the same
> function will work. Right *now*, there is no advantage other than the
> prospect of being maintainable and extendable in the far future.

The same function will work even if we do not add it, for the reason given above.

This being said, I know how to recognize real art when I see it. I added the new argument and the ticket is updated.

I also ensured that nothing wrong happened :

+    if type != "Desarguesian":
+        raise ValueError("The value of 'type' must be 'Desarguesian'.")

And of course I double-checked this exception in a doctest :

+    TESTS::
+
+        sage: designs.ProjectivePlaneDesign(10, type="AnyThingElse")
+        Traceback (most recent call last):
+        ...
+        ValueError: The value of 'type' must be 'Desarguesian'.

I feel better now.

Nathann

P Purkayastha

unread,
Jan 4, 2014, 9:49:41 AM1/4/14
to sage-...@googlegroups.com
On 01/04/2014 10:46 PM, Nathann Cohen wrote:
>
> I feel better now.
>
> Nathann

^_^ \o/

kcrisman

unread,
Jan 7, 2014, 9:14:11 AM1/7/14
to sage-...@googlegroups.com
Thanks for clarifying this, ppurka - it wasn't immediately clear to me what the discussion was about, either.
Reply all
Reply to author
Forward
0 new messages