Hi Greg,

On 2012-09-26, Greg Laun <greg.l...@gmail.com> wrote:
>
> sage: matrix(GL(2),2,[1,0,0,1]) in GL(2,CC)
> True

Do you mean "GF(2)" on the left hand side?

>
> so 'in' ignores base ring.  The problem is that __contains__ for 
> general_linear.pyx and special_linear.pyx only check whether a matrix can 
> be coerced:       
>  try:
>             x = self(x)
>         except TypeError:
>             return False
>         return True

That's not coercion, that's conversion. It should better rely on
coercion.

Why is the default implementation for parents not used? The default
implementation would be something like
  try:
      return x==self(x)
  except TypeError:
      return False

Hence, it would check whether conversion of x into self works, but
*in addition* the equality test involves coercion.

In the present case, self is GL(2,CC), and x is a matrix over GF(2), if
I didn't misinterprete your statement. But then, the default
implementation would give exactly what you want:
  sage: m = matrix(GF(2),2,[1,0,0,1])
  sage: n = GL(2,CC)(m)
  sage: m==n
  False

Best regards,
Simon

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To post to this group, send email to sage-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-devel+unsubscr...@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel?hl=en.


Reply via email to