Test for Set equality
Inspired by this question, I stumbled in an unexpected difficulty when trying to compare two Set
s :
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 Set
s equality.
Is that a bug, an oversight or an expected behaviour ?
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 equalityTrue
.It is known that
Set
is buggy for unhashable elements.Thanks, @Max Alekseyev !
Is there a ticket for that ?
@Emmanuel Charpentier: Yes - see https://github.com/sagemath/sage/issu...