# Test for Set equality

Inspired by this question, I stumbled in an unexpected difficulty when trying to compare two Sets :

sage: L[:2]
[[
[ 2 -2]  [0 1]  [   0    1]
[-2  1], [0 1], [   0 -1/2]
],
[
[ 2 -2]  [   0    1]  [0 1]
[-2  1], [   0 -1/2], [0 1]
]]
sage: Set(L[0][1:])==Set(L[1][1:])
False


Quite unexpected... However :

sage: all([u in Set(L[1][1:]) for u in Set(L[0][1:])])
True
sage: all([u in Set(L[0][1:]) for u in Set(L[1][1:])])
True


as expected.

The Sets reference doesn't mention testing forv Sets equality.

Is that a bug, an oversight or an expected behaviour ?

edit retag close merge delete

Not sure, but making the matrices immutable as in L = [[matrix([[2,-2],[-2,1]], immutable=True), matrix([[0,1],[0,1]], immutable=True), matrix([[0,1],[0,-1/2]], immutable=True)], [matrix([[2,-2],[-2,1]], immutable=True), matrix([[0,1],[0,-1/2]], immutable=True), matrix([[0,1],[0,1]], immutable=True)]] makes the equality True.

( 2023-03-30 16:06:24 +0100 )edit

It is known that Set is buggy for unhashable elements.

( 2023-03-30 22:43:07 +0100 )edit

Thanks, @Max Alekseyev !

Is there a ticket for that ?

( 2023-03-30 22:44:51 +0100 )edit
( 2023-04-03 06:36:27 +0100 )edit