An abstraction algorithm for combinatory logic

This note presents a practical algorithm for carrying out abstraction on combinatory terms. The well-known abstraction algorithms [1, pp. 188ff.] defining abstracts in terms of the combinator sets {S, K}, {B, C, K, W}, etc. operate on one variable at a time, and result in rather long abstracts when several variables are involved. These algorithms are not practical for the applications of the combinatory logic to the theory of computing which make much use of multi-variable abstraction (e.g., [2], [3]). The present algorithm performs the abstraction with respect to all specified variables in a single step, and yields abstracts in a concise form (with sizes proportional to those of given combinatory terms).2

[1]  R J Orgass,et al.  A theory of programming languages. , 1969, Studium generale; Zeitschrift fur die Einheit der Wissenschaften im Zusammenhang ihrer Begriffsbildungen und Forschungsmethoden.

[2]  Syed Kamal Abdali A combinatory logic model of programming languages. , 1974 .

[3]  S K Abdali,et al.  Simple lambda-calculus model of programming languages , 1973 .

[4]  Haskell B. Curry,et al.  Apparent Variables From the Standpoint of Combinatory Logic , 1933 .