> For the complete documentation index, see [llms.txt](https://mandober.gitbook.io/math-debrief/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mandober.gitbook.io/math-debrief/600-toc/634-primitive-recursive-functions/primitive-combination.md).

# Primitive combination

An additional operation on PRFs is a combination of functions, denoted `f ⨯ g`.

Both `f` and `g` take the same `k`-tuple of args, but each can return a different `m`-tuple where `0 <= m <= k`. The returned tuples are concatenated together, forming a single `m+n`-tuple, provided `f` returns an `m`-tuple and `g` returns a `n`-tuple.

That is, in the returned `m+n`-tuple, the first `m` elements come form the `f`'s applications to the arg-list, and the following `n` elements come from the `g`'s applications to the (same input) arg-list.

f :: (ℕ ⨯ ℕ ⨯ ℕ) -> (ℕ ⨯ ℕ) f : ℕ³ -> ℕ¹ g :: (ℕ ⨯ ℕ ⨯ ℕ) -> (ℕ ⨯ ℕ ⨯ ℕ) g : ℕ³ -> ℕ³

f ⨯ g (x, y, z) = (f x, f y, g x, g y, g z)

fᵏ ⨯ gᵏ (x₁ … xₖ)

Combination operation is similar to composition, if was somehow defined without the rightmost `f` function.
