# HG changeset patch
# User Burcin Erocal <burcin@erocal.org>
# Date 1239397426 -7200
# Node ID d4dbad81d9b3bdf21466524ddb2115c33b8dd632
# Parent  a17d1b15206c908bb7ef9d26ab122c2d64dc3b54
Add .is_polynomial() method to sage.symbolic.expression.Expression.

diff --git a/sage/libs/ginac/decl.pxi b/sage/libs/ginac/decl.pxi
--- a/sage/libs/ginac/decl.pxi
+++ b/sage/libs/ginac/decl.pxi
@@ -54,6 +54,7 @@
         GEx diff(GSymbol s, int d)    except +
         GEx series(GEx s, int order, unsigned options) except +
         bint is_zero()                except +
+        bint is_polynomial(GEx vars)  except +
         bint match(GEx pattern)       except +
         bint find(GEx pattern, GExList s) except +
         bint has(GEx pattern)         except +
diff --git a/sage/symbolic/expression.pxd b/sage/symbolic/expression.pxd
--- a/sage/symbolic/expression.pxd
+++ b/sage/symbolic/expression.pxd
@@ -6,6 +6,7 @@
 cdef class Expression(CommutativeRingElement):
     cdef GEx _gobj
     cdef Expression coerce_in(self, z)
+    cpdef bint is_polynomial(self, var)
     cpdef bint is_relational(self)
     cpdef object pyobject(self)
     cpdef Expression _subs_expr(self, expr)
diff --git a/sage/symbolic/expression.pyx b/sage/symbolic/expression.pyx
--- a/sage/symbolic/expression.pyx
+++ b/sage/symbolic/expression.pyx
@@ -371,6 +371,35 @@
             e = g_ge(l._gobj, r._gobj)
         return new_Expression_from_GEx(e)
 
+    cpdef bint is_polynomial(self, var):
+        """
+        Return True if self is a polynomial in the given variable.
+
+        EXAMPLES::
+
+            sage: var('x,y,z',ns=1)
+            (x, y, z)
+            sage: t = x^2 + y; t
+            x^2 + y
+            sage: t.is_polynomial(x)
+            True
+            sage: t.is_polynomial(y)
+            True
+            sage: t.is_polynomial(z)
+            True
+
+            sage: t = sin(x) + y; t
+            y + sin(x)
+            sage: t.is_polynomial(x)
+            False
+            sage: t.is_polynomial(y)
+            True
+            sage: t.is_polynomial(sin(x))
+            True
+        """
+        cdef Expression symbol0 = self.coerce_in(var)
+        return self._gobj.is_polynomial(symbol0._gobj)
+
     cpdef bint is_relational(self):
         """
         Return True if self is a relational expression.
