#14608: Symbolic functions break the __hash__ contract
-------------------------+--------------------------------------------------
   Reporter:  vbraun     |             Owner:  burcin   
       Type:  defect     |            Status:  new      
   Priority:  major      |         Milestone:  sage-5.10
  Component:  symbolics  |          Keywords:           
Work issues:             |   Report Upstream:  N/A      
  Reviewers:             |           Authors:           
  Merged in:             |      Dependencies:           
   Stopgaps:             |  
-------------------------+--------------------------------------------------
 Equal objects must have the same hash if they are hashable
 (http://docs.python.org/2/reference/datamodel.html#object.__hash__):
 {{{
 sage: my_func = function('func',nargs=1)
 sage: f = my_func(0)
 sage: bool(f == f.simplify())
 True
 sage: hash(f) == hash(f.simplify())
 False
 }}}
 As reported on http://ask.sagemath.org/question/2587/simplify-shenanigans,
 hash lookup errors then leads to undesirable behavior:
 {{{
 sage: ex = my_func(0) + my_func(1)
 sage: ex.subs(my_func(0)==1)
 func(1) + 1
 sage: ex.simplify().subs(my_func(0)==1)
 func(0) + func(1)
 }}}

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/14608>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to