# CombinatorialFunction(R, F)¶

Provides combinatorial functions over an integral domain.

^: (F, F) -> F
a ^ b is the formal exponential a^b.
belong?: BasicOperator -> Boolean
belong?(op) is true if op is a combinatorial operator.
binomial: (F, F) -> F
binomial(n, r) returns the number of subsets of r objects taken among n objects, i.e. n!/(r! * (n-r)!).
factorial: F -> F
factorial(n) returns the factorial of n, i.e. n!.
factorials: (F, Symbol) -> F
factorials(f, x) rewrites the permutations and binomials in f involving x in terms of factorials.
factorials: F -> F
factorials(f) rewrites the permutations and binomials in f in terms of factorials.
iibinom: List F -> F
iibinom(l) should be local but conditional.
iidprod: List F -> F
iidprod(l) should be local but conditional.
iidsum: List F -> F
iidsum(l) should be local but conditional.
iifact: F -> F
iifact(x) should be local but conditional.
iiperm: List F -> F
iiperm(l) should be local but conditional.
iipow: List F -> F
iipow(l) should be local but conditional.
ipow: List F -> F
ipow(l) should be local but conditional.
operator: BasicOperator -> BasicOperator
operator(op) returns a copy of op with the domain-dependent properties appropriate for F; error if op is not a combinatorial operator.
permutation: (F, F) -> F
permutation(n, r) returns the number of permutations of n objects taken r at a time, i.e. n!/(n-r)!.
product: (F, SegmentBinding F) -> F
product(f(n), n = a..b) returns f(a) * ... * f(b) as a formal product.
product: (F, Symbol) -> F
product(f(n), n) returns the formal product P(n) which verifies P(n+1)/P(n) = f(n).
summation: (F, SegmentBinding F) -> F
summation(f(n), n = a..b) returns f(a) + ... + f(b) as a formal sum.
summation: (F, Symbol) -> F
summation(f(n), n) returns the formal sum S(n) which verifies S(n+1) - S(n) = f(n).