+1 on what Nils said; I only find it slightly surprising initially. Compare 
this with comparing a list to a Partition as well. Equality is a bit 
different as a programming concept than a mathematical one. When you 
implement a custom __eq__, then you are separating that class from the 
coercion-based equality.

+1 on removing the parent from the hash of ClonableArray and its family 
tree.

Best,
Travis

On Tuesday, December 13, 2022 at 1:56:46 AM UTC+9 Nils Bruin wrote:

> On Monday, 12 December 2022 at 00:22:30 UTC-8 axio...@yahoo.de wrote:
>
>> Ah, thank you so much!
>>
>> Just to make sure that I understand the philosophy: if two elements are 
>> supposed to compare equal, they should have parents which can be coerced to 
>> a common parent, right?  For example, the following (which is current 
>> behaviour) is not really what we want:
>>
>> sage: A = SetPartitions(3)([[1,2],[3]])
>> sage: B = SetPartition([[1,2],[3]])
>> sage: A == B
>> True
>> sage: coercion_model.common_parent(A, B)
>>
> TypeError: no common canonical parent for objects with parents: 'Set 
>> partitions of {1, 2, 3}' and 'Set partitions'
>>
>
>> I think that is a bit surprising, but if SetPartitions don't really occur 
> much in binary operations I think it will be a hardly visible quirk. One 
> has to be careful generalizing principles about how to implement 
> coercion/equality/hashing because we a;ready know that some of the things 
> we want lead to inconsistencies.
>
> When in doubt, the safe thing is definitely to NOT install coercions (it 
> can always be done later), so I'd hesitate to recommend to change the 
> behaviour above. I think you'd want at least a practical use case to 
> justify it.
>
> Note that the relevant conversions: A.parent()(B) and B.parent()(A) do 
> work.
>
> It seems to me the converse implication, if for two elements the coercion 
> framework is happy to find a common parent in which they compare equal, 
> then they should be equal in the first place, sounds a little more 
> probable, but I suspect one can get problematic situations from that too.
>

-- 
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/b91b40db-760e-4df4-bbb8-7e1c144f9f56n%40googlegroups.com.

Reply via email to