Opened 6 years ago

## #20954 new defect

# RuntimeError in coercion

Reported by: | David Loeffler | Owned by: | |
---|---|---|---|

Priority: | major | Milestone: | sage-7.3 |

Component: | coercion | Keywords: | |

Cc: | Merged in: | ||

Authors: | Reviewers: | ||

Report Upstream: | N/A | Work issues: | |

Branch: | Commit: | ||

Dependencies: | Stopgaps: |

### Description

The following code crashes in Sage 7.2, with a message reporting a bug in the coercion model:

sage: R.<X> = QQ[] sage: F = X sage: S.<a> = EquationOrder(x^2 - 3) sage: F(X/a) --------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) <ipython-input-20-53f01a47f657> in <module>() ----> 1 F(X/a) /usr/local/sage/sage-2/src/sage/rings/polynomial/polynomial_element.pyx in sage.rings.polynomial.polynomial_element.Polynomial.__div__ (/usr/local/sage/sage-2/src/build/cythonized/sage/rings/polynomial/polynomial_element.c:21928)() 1986 1987 def __div__(self, other): -> 1988 return PyNumber_TrueDivide(self, other) 1989 1990 def __pow__(self, right, modulus): /usr/local/sage/sage-2/src/sage/rings/polynomial/polynomial_element.pyx in sage.rings.polynomial.polynomial_element.Polynomial.__truediv__ (/usr/local/sage/sage-2/src/build/cythonized/sage/rings/polynomial/polynomial_element.c:21854)() 1983 except (TypeError, ValueError): 1984 pass -> 1985 return RingElement.__div__(self, right) 1986 1987 def __div__(self, other): /usr/local/sage/sage-2/src/sage/structure/element.pyx in sage.structure.element.RingElement.__div__ (/usr/local/sage/sage-2/src/build/cythonized/sage/structure/element.c:17295)() 1950 if have_same_parent_c(self, right): 1951 return (<RingElement>self)._div_(<RingElement>right) -> 1952 return coercion_model.bin_op(self, right, div) 1953 1954 cpdef RingElement _div_(self, RingElement right): /usr/local/sage/sage-2/src/sage/structure/coerce.pyx in sage.structure.coerce.CoercionModel_cache_maps.bin_op (/usr/local/sage/sage-2/src/build/cythonized/sage/structure/coerce.c:8744)() 1018 if xp is yp: 1019 return op(x,y) -> 1020 action = self.get_action(xp, yp, op, x, y) 1021 if action is not None: 1022 return (<Action>action)._call_(x, y) /usr/local/sage/sage-2/src/sage/structure/coerce.pyx in sage.structure.coerce.CoercionModel_cache_maps.get_action (/usr/local/sage/sage-2/src/build/cythonized/sage/structure/coerce.c:15573)() 1556 pass 1557 action = self.discover_action(R, S, op, r, s) -> 1558 action = self.verify_action(action, R, S, op) 1559 self._action_maps.set(R, S, op, action) 1560 return action /usr/local/sage/sage-2/src/sage/structure/coerce.pyx in sage.structure.coerce.CoercionModel_cache_maps.verify_action (/usr/local/sage/sage-2/src/build/cythonized/sage/structure/coerce.c:16681)() 1608 1609 if action.left_domain() is not R or action.right_domain() is not S: -> 1610 raise RuntimeError, """There is a BUG in the coercion model: 1611 Action found for R %s S does not have the correct domains 1612 R = %s RuntimeError: There is a BUG in the coercion model: Action found for R <built-in function div> S does not have the correct domains R = Univariate Polynomial Ring in X over Rational Field S = Order in Number Field in a with defining polynomial x^2 - 3 (should be Univariate Polynomial Ring in X over Number Field in a with defining polynomial x^2 - 3, Order in Number Field in a with defining polynomial x^2 - 3) action = Right inverse action by Number Field in a with defining polynomial x^2 - 3 on Univariate Polynomial Ring in X over Number Field in a with defining polynomial x^2 - 3 with precomposition on right by Conversion map: From: Order in Number Field in a with defining polynomial x^2 - 3 To: Number Field in a with defining polynomial x^2 - 3 (<type 'sage.categories.action.PrecomposedAction'>)

**Note:**See TracTickets for help on using tickets.