SKI Calculus: Difference between revisions
Linked BBlambda |
Updated bounds and removed misinformation |
||
| Line 1: | Line 1: | ||
Busy Beaver for SKI calculus (we will call it | Busy Beaver for SKI calculus (we will call it BB_SKI for now) is a variation of the [[Busy Beaver for lambda calculus|Busy Beaver problem for lambda calculus]]. | ||
A SKI calculus program is a binary tree where the leaves are combinators, the three symbols <code>S</code>, <code>K</code>, <code>I</code>. Using parentheses to notate the tree, a simple example of a SKI program is <code>(((SK)S)((KI)S))</code>. We can omit parentheses by assuming they are left-binding by default, so we simplify our program to <code>SKS(KIS)</code>. | A SKI calculus program is a binary tree where the leaves are combinators, the three symbols <code>S</code>, <code>K</code>, <code>I</code>. Using parentheses to notate the tree, a simple example of a SKI program is <code>(((SK)S)((KI)S))</code>. We can omit parentheses by assuming they are left-binding by default, so we simplify our program to <code>SKS(KIS)</code>. | ||
Like lambda calculus, SKI calculus has a process called beta-reduction. We change the tree according to | Like lambda calculus, SKI calculus has a process called beta-reduction. We change the tree according to any reducible redex. | ||
* <code>Ix -> I</code> | * <code>Ix -> I</code> | ||
| Line 12: | Line 12: | ||
We repeat this process and we say it terminates if the combinator cannot be beta-reduced. | We repeat this process and we say it terminates if the combinator cannot be beta-reduced. | ||
BB_SKI(n) is defined as the size of the largest output of a terminating program of size n. | |||
== Champions == | == Champions == | ||
| Line 27: | Line 29: | ||
| 5 || = 6 || SSS(SS) || ? | | 5 || = 6 || SSS(SS) || ? | ||
|- | |- | ||
| 6 || | | 6 || ≥ 17 || SSS(SI)S || ? | ||
|- | |- | ||
|7 | |7 | ||
|≥ | |≥ 40 | ||
|S( | |S(SS)S(SS)S | ||
|? | |? | ||
|- | |- | ||
|8 | |8 | ||
|≥ | |≥ 41 | ||
| | |SII(S(S(SS)))S | ||
|? | |? | ||
|- | |- | ||
|9 | |9 | ||
|≥ | |≥ 79 | ||
| | |SII(SS(SSS))S | ||
|? | |? | ||
|- | |- | ||
|10 | |10 | ||
|≥ | |≥ 164 | ||
| | |SII(SS(SS(SS)))S | ||
|? | |||
|- | |||
|11 | |||
|≥ 681 | |||
|SII(SS(SS(SSS)))S | |||
|? | |||
|- | |||
|12 | |||
|≥ 1530 | |||
|SII(SS(SS(SS(SS))))S | |||
|? | |||
|- | |||
|13 | |||
|≥ 65537 | |||
|S(S(SI))I(S(S(KS)K)I)KK | |||
|? | |||
|- | |||
|14 | |||
|≥ 2^256+1 | |||
|S(S(S(SI)))I(S(S(KS)K)I)KK | |||
|? | |||
|- | |||
|15 | |||
|> 2^2^2^2^21 | |||
|S(S(SSS)I)I(S(S(KS)K)I)KK | |||
|? | |||
|- | |||
|16 | |||
|> 2^^19 | |||
|S(S(S(SSS))I)I(S(S(KS)K)I)KK | |||
|? | |||
|- | |||
|17 | |||
|> 2^^2^128 | |||
|SSK(S(S(KS)K)I)(S(SI(SI))I)KK | |||
|? | |||
|- | |||
|18 | |||
|> 2^^2^2^2^2^21 | |||
|SSK(S(S(KS)K)I)(S(S(SSS)I)I)KK | |||
|? | |||
|- | |||
|19 | |||
|> 2^^^2^128 | |||
|S(SSK(S(SI(SI))I))I(S(S(KS)K)I)KK | |||
|? | |||
|- | |||
|20 | |||
|> 2^^^2^2^2^2^21 | |||
|S(SSK(S(S(SSS)I)I))I(S(S(KS)K)I)KK | |||
|? | |||
|- | |||
|21 | |||
|> 2^^^2^^19 | |||
|S(SSK(S(S(S(SSS))I)I))I(S(S(KS)K)I)KK | |||
|? | |? | ||
|} | |} | ||
| Line 63: | Line 120: | ||
| 3 || = 3 || SSS || ? | | 3 || = 3 || SSS || ? | ||
|- | |- | ||
| 4 || = 4 || | | 4 || = 4 || SSSS || ? | ||
|- | |- | ||
| 5 || = 6 || | | 5 || = 6 || SSS(SS) || ? | ||
|- | |- | ||
| 6 || ≥ | | 6 || ≥ 10 || SSS(SS)S || ? | ||
|- | |- | ||
|7 | |7 | ||
|≥ | |≥ 40 | ||
| | |S(SS)S(SS)S | ||
|? | |? | ||
|- | |- | ||
|8 | |8 | ||
|≥ | |≥ 41 | ||
| | |S(S(SS)S(SS)S) | ||
|? | |? | ||
|} | |} | ||
== See Also == | == See Also == | ||
[https://komiamiko.me/math/ordinals/2020/06/21/ski-numerals.html Lower bounds of this function] | [https://komiamiko.me/math/ordinals/2020/06/21/ski-numerals.html Lower bounds of this function] (archived) | ||
[https://dallaylaen.github.io/ski-interpreter/ SKI interpreter] | |||
[[Category:Functions]] | [[Category:Functions]] | ||
Revision as of 03:45, 7 May 2026
Busy Beaver for SKI calculus (we will call it BB_SKI for now) is a variation of the Busy Beaver problem for lambda calculus.
A SKI calculus program is a binary tree where the leaves are combinators, the three symbols S, K, I. Using parentheses to notate the tree, a simple example of a SKI program is (((SK)S)((KI)S)). We can omit parentheses by assuming they are left-binding by default, so we simplify our program to SKS(KIS).
Like lambda calculus, SKI calculus has a process called beta-reduction. We change the tree according to any reducible redex.
Ix -> IKxy -> KxSxyz -> Sxz(yz)
Note that xyz represent any valid trees, not just single combinators.
We repeat this process and we say it terminates if the combinator cannot be beta-reduced.
BB_SKI(n) is defined as the size of the largest output of a terminating program of size n.
Champions
| n | Value | Champion | Discoverered by |
|---|---|---|---|
| 1 | = 1 | S | ? |
| 2 | = 2 | SS | ? |
| 3 | = 3 | SSS | ? |
| 4 | = 4 | SSSS | ? |
| 5 | = 6 | SSS(SS) | ? |
| 6 | ≥ 17 | SSS(SI)S | ? |
| 7 | ≥ 40 | S(SS)S(SS)S | ? |
| 8 | ≥ 41 | SII(S(S(SS)))S | ? |
| 9 | ≥ 79 | SII(SS(SSS))S | ? |
| 10 | ≥ 164 | SII(SS(SS(SS)))S | ? |
| 11 | ≥ 681 | SII(SS(SS(SSS)))S | ? |
| 12 | ≥ 1530 | SII(SS(SS(SS(SS))))S | ? |
| 13 | ≥ 65537 | S(S(SI))I(S(S(KS)K)I)KK | ? |
| 14 | ≥ 2^256+1 | S(S(S(SI)))I(S(S(KS)K)I)KK | ? |
| 15 | > 2^2^2^2^21 | S(S(SSS)I)I(S(S(KS)K)I)KK | ? |
| 16 | > 2^^19 | S(S(S(SSS))I)I(S(S(KS)K)I)KK | ? |
| 17 | > 2^^2^128 | SSK(S(S(KS)K)I)(S(SI(SI))I)KK | ? |
| 18 | > 2^^2^2^2^2^21 | SSK(S(S(KS)K)I)(S(S(SSS)I)I)KK | ? |
| 19 | > 2^^^2^128 | S(SSK(S(SI(SI))I))I(S(S(KS)K)I)KK | ? |
| 20 | > 2^^^2^2^2^2^21 | S(SSK(S(S(SSS)I)I))I(S(S(KS)K)I)KK | ? |
| 21 | > 2^^^2^^19 | S(SSK(S(S(S(SSS))I)I))I(S(S(KS)K)I)KK | ? |
SK calculus
We can remove the I combinator and replace it by (SKS), (SKK) or any (SKx).
Champions
| n | Value | Champion | Discoverered by |
|---|---|---|---|
| 1 | = 1 | S | ? |
| 2 | = 2 | SS | ? |
| 3 | = 3 | SSS | ? |
| 4 | = 4 | SSSS | ? |
| 5 | = 6 | SSS(SS) | ? |
| 6 | ≥ 10 | SSS(SS)S | ? |
| 7 | ≥ 40 | S(SS)S(SS)S | ? |
| 8 | ≥ 41 | S(S(SS)S(SS)S) | ? |
See Also
Lower bounds of this function (archived)