To be honest, I really did not find the error message helpfull and I 
identified the problem mostly just by "common programmer sense".  But, of 
course, I am not that familiar with Sage. 
I basically just used the examples of SetPartitions constructor, since I 
found no general explanation what are possible arguments of this 
constructor and what the arguments are supposed to fullfil.
I guess it makes sense to allow only sorted list of sizes (as per 
definition of integer partition), but it should be mentioned somewhere in 
documentation then.

Best,
Ondra

Dne úterý 15. února 2022 v 0:34:35 UTC+1 uživatel Travis Scrimshaw napsal:

> As Martin said, this is not a bug. However, the error message itself is 
> slightly vague because it only states partition. We could simply run 
> sorted(part, reverse=True) before passing it off to create the Partition in 
> the SetPartitions __classcall__. This would make the behavior less 
> surprising, and our output does not match the input sizes (since it is lex 
> based). I think we probably just didn't think about normalizing input here.
>
> Also, I found this bug:
>
> sage: SP = SetPartitions(10, [4,3,2,1])
> sage: SP.random_element()
> {{1, 2, 4, 5, 7, 8}, {3, 6}, {9}, {10}}
>
> Best,
> Travis
>
>
> On Tuesday, February 15, 2022 at 1:51:32 AM UTC+9 axio...@yahoo.de wrote:
>
>> The argument providing the block sizes is required to be an integer 
>> partition (or something that sage can make into an integer partition), as 
>> the error message indicates.
>>
>> One might argue that Partition (and hence SetPartition) should take lists 
>> in any order, but this would also increase the likelihood of typos going 
>> undetected, I guess.
>>
>> Martin
>>
>> On Monday, 14 February 2022 at 13:02:39 UTC+1 mitch...@gmail.com wrote:
>>
>>> Hello,
>>>
>>> I am currently working with set partitions and I encountered possible 
>>> bug when creating SetPartitions instance with specified partition sizes:
>>>
>>> ```
>>> sage: SetPartitions(10, [4,3,2,1])                                       
>>>                                                                     
>>> Set partitions of {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} with sizes in [4, 3, 
>>> 2, 1]
>>> ```
>>>
>>> The above works, but changing the order of sizes gives error:
>>> ```
>>> sage: SetPartitions(10, [1,2,3,4])                                       
>>>                                                                             
>>>                                                               
>>>
>>> ---------------------------------------------------------------------------
>>> ValueError                                Traceback (most recent call 
>>> last)
>>> <ipython-input-4-90164a225d10> in <module>
>>> ----> 1 SetPartitions(Integer(10), 
>>> [Integer(1),Integer(2),Integer(3),Integer(4)])
>>>
>>> /usr/lib/python3/dist-packages/sage/misc/classcall_metaclass.pyx in 
>>> sage.misc.classcall_metaclass.ClasscallMetaclass.__call__ 
>>> (build/cythonized/sage/misc/classcall_metaclass.c:1714)()
>>>     332         """
>>>     333         if cls.classcall is not None:
>>> --> 334             return cls.classcall(cls, *args, **kwds)
>>>     335         else:
>>>     336             # Fast version of type.__call__(cls, *args, **kwds)
>>>
>>> /usr/lib/python3/dist-packages/sage/combinat/set_partition.py in 
>>> __classcall_private__(cls, s, part)
>>>    2025             else:
>>>    2026                 if part not in Partitions(len(s)):
>>> -> 2027                     raise ValueError("part must be a partition 
>>> of %s"%len(s))
>>>    2028                 else:
>>>    2029                     return SetPartitions_setparts(s, 
>>> Partition(part))
>>>
>>> ValueError: part must be a partition of 10
>>> ```
>>>
>>> Other orders od partition sizes (other than descending) also gives the 
>>> same error:
>>> ```
>>> sage: SetPartitions(10, [4,2,3,1])
>>> <the same error as above> 
>>> ```
>>>
>>> Diferent sets also show this behavior:
>>> ```
>>> sage: SetPartitions(8, [4,3,1])
>>> <OK>                                                                     
>>>                                                                             
>>>        
>>> ```
>>>
>>> ```
>>> sage: SetPartitions(8, [4,3,1])                                         
>>>                                                                     
>>> <Error>
>>> ```
>>>
>>> The same happens when using sage as a module within Python
>>>
>>> I am using Sage version 9.0, using Python 3.8.10.
>>> Operating system is Ubuntu 20.04.3 (64bit)
>>>
>>> Best regards,
>>> Ondra
>>>
>>

-- 
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+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/6892af9a-da11-4585-9e72-c4af7148654bn%40googlegroups.com.

Reply via email to