On 21 February 2010 16:05, Minh Nguyen <nguyenmi...@gmail.com> wrote:
> On Mon, Feb 22, 2010 at 3:01 AM, slabbe <sla...@gmail.com> wrote:
>
> <SNIP>
>
>> sage: 15.mod(4) == 7
>> False
>> sage: mod(15, 4) == 7
>> True
>
> Is the following the intended behaviour?
>
> sage: type(15.mod(4))
> <type 'sage.rings.integer.Integer'>
> sage: type(mod(15, 4).lift())
> <type 'sage.rings.integer.Integer'>
> sage: 15.mod(4) == 7
> False
> sage: mod(15, 4).lift() == 7
> False
>

This is entirely consistent, though possibly unexpected.  Both
a.mod(n) and a%n return an integer which is "a reduced modulo n",
while mod(a,n) returns an element of Z/nZ.

Now the only surprising thing, perhaps,  is the test that mod(15, 4)
== 7 which yields True.  This is because Sage tries, and succeeds, to
find a place where both the objects being compared map to -- here an
integer mod 4 and an integer can both be mapped to integers mod 4
(i.e. elements of Z/4Z) where they are compared and found equal.

The warning is that "=="  does *not* correspond to equality in any
mathematical sense (it is not transitive, for example):

sage: 0 == mod(0,2)
True
sage: mod(0,2) == 2
True
sage: 0 == 2
False

John


> --
> Regards
> Minh Van Nguyen
>
> --
> To post to this group, send an email to sage-devel@googlegroups.com
> To unsubscribe from this group, send an email to 
> sage-devel+unsubscr...@googlegroups.com
> For more options, visit this group at 
> http://groups.google.com/group/sage-devel
> URL: http://www.sagemath.org
>

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to