Repository: sympy/sympy

Issue:
binomial(n,k) is not known to be nonnegative for nonnegative integers n,k
In the same spirit as in #13616:
```py
>>> n = Symbol('n', integer=True, nonnegative=True)
>>> k = Symbol('k', integer=True, nonnegative=True)
>>> binomial(n, k).is_nonnegative  # Should return True
```


Discussion:

Patch:
diff --git a/sympy/functions/combinatorial/factorials.py b/sympy/functions/combinatorial/factorials.py
index 482ee77d69..cb573b1889 100644
--- a/sympy/functions/combinatorial/factorials.py
+++ b/sympy/functions/combinatorial/factorials.py
@@ -907,3 +907,8 @@ def _eval_is_integer(self):
             return True
         elif k.is_integer is False:
             return False
+
+    def _eval_is_nonnegative(self):
+        if self.args[0].is_integer and self.args[1].is_integer:
+            if self.args[0].is_nonnegative and self.args[1].is_nonnegative:
+                return True


Test patch:
diff --git a/sympy/functions/combinatorial/tests/test_comb_factorials.py b/sympy/functions/combinatorial/tests/test_comb_factorials.py
index 617d415408..739d1a64e8 100644
--- a/sympy/functions/combinatorial/tests/test_comb_factorials.py
+++ b/sympy/functions/combinatorial/tests/test_comb_factorials.py
@@ -281,6 +281,8 @@ def test_binomial():
     p = Symbol('p', positive=True)
     z = Symbol('z', zero=True)
     nt = Symbol('nt', integer=False)
+    a = Symbol('a', integer=True, nonnegative=True)
+    b = Symbol('b', integer=True, nonnegative=True)
 
     assert binomial(0, 0) == 1
     assert binomial(1, 1) == 1
@@ -321,6 +323,8 @@ def test_binomial():
 
     assert binomial(gamma(25), 6) == 79232165267303928292058750056084441948572511312165380965440075720159859792344339983120618959044048198214221915637090855535036339620413440000
 
+    assert binomial(a, b).is_nonnegative is True
+
 def test_binomial_diff():
     n = Symbol('n', integer=True)
     k = Symbol('k', integer=True)