# Smallest possible universal combinator

I am looking for the smallest possible universal combinator, measured by the number of abstractions and applications required to specify such a combinator in the lambda calculus. Examples of universal combinators include:

• size 23: λf.f(fS(KKKI))K
• size 18: λf.f(fS(KK))K
• size 14: λf.fKSK
• size 12: λf.fS(λxyz.x)
• size 11: λf.fSK

where S = λxyz.xz(yz) of size 6 and K = λxy.x of size 2 are the combinators of the SK combinator calculus. The first 4 examples are described in this paper.

My questions are:

• Are there any universal combinators that are smaller in size?
• What is the smallest possible universal combinator?

EDIT: See also https://math.stackexchange.com/a/180263/76284, which has λazbc.bc(a(λy.c)) (which would be of size 8, matching the sum of sizes of the SK basis). Does anyone know how to express S and K from this combinator?

• Maybe this is of interest: wolframscience.com/nksonline/page-1123a-text?firstview=1 Jul 2, 2015 at 16:12
• What is your definition of size? Can you write it as a function? Jul 6, 2015 at 10:49
• Since 6 + 2 = 8 < 11, this makes me wonder whether {S,K} is the smallest basis of combinators measured by total size? Aug 10, 2017 at 18:48
• Your recent edit rather sounds like a (partial) answer. Nov 15, 2017 at 8:57
• How strictly are you defining "combinator"? Does it have to be of the form λx*.E where E is abstraction-free? Nov 16, 2017 at 10:47

It should be noted that finding combinators with certain reduction properties is always difficult, and finding the smallest such combinator may easily be undecidable (for trivial reasons, as it may be undecidable to prove that a certain application of the combinator even halts).

There are several simple open questions of a similar flavor, e.g. problems #4, #6 and #10 from the TLCA list of open problems.

One thing to note is that your combinator certainly needs to have at least 2 bound variables, one of which is duplicated (as does any complete set of combinators) and one needs to be erased. This puts a lower bound of 4, I think (2 abstractions and 2 appearances of a variable), which is not so far from the upper bound of 11.

Edit: Noam's comments and reference push the lower bound to 5! I wouldn't be surprised if the proof also requires the extra variable to appear as well, which would push us to 6.

• Actually, two variables are not enough (dl.acm.org/citation.cfm?id=2100917, cstheory.stackexchange.com/a/36344/674), so this gives a slightly higher lower bound (size 5 = 3 abstractions and 2 applications). Aug 10, 2017 at 18:39
• @NoamZeilberger alright, that's a fantastic result I was not aware of!
– cody
Aug 10, 2017 at 20:42

For your first question I believe this paper may help a bunch. It has a 6 bit combinator calculus that is also an UTM. Also it has a universal combinator that seems to have size 7 with one element given what you want. They call it Zot. http://arxiv.org/pdf/cs/0508056v1.pdf

I am not sure if you can say or prove that there is a minimal combinator. The paper would suggest it would have to be at least be less than 6 bits.

• Zot's combinator is actually the last one listed in the OP: λx.xSK (shared with its parent languages, Iota and Jot), which has length 11. In the "6 bit combinator calculus" (Keraia), the "6 bits" is the size of the UTM; and it looks like it's just an encoding of the lambda calculus, not a combinator calculus (and therefore doesn't have a builtin universal combinator). Dec 15, 2016 at 10:37