# CombinatorialFunction(R, F)¶

Provides combinatorial functions over an integral domain.

^: (F, F) -> F

`a ^ b` returns the formal exponential a^b.

belong?: BasicOperator -> Boolean

`belong?(op)` returns `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`).