Conjuntos de bases para o cálculo do combinador


19

É sabido que os combinadores S e K formam um conjunto básico para o cálculo do combinador, no sentido de que todos os outros combinadores podem ser expressos em termos deles. Há também a base B, C, K, W de Curry, que possui a mesma propriedade. Deve haver um número infinito de tais bases, mas não conheço outras.

Estou ciente de que existem várias bases de combinador único, como o combinador Iota e as várias outras construídas / revisadas por Fokker . No entanto, esses são combinadores "impróprios", o que significa que eles são expressos em termos de outros combinadores em vez de abstrações puras. 1 Para os fins desta pergunta, estou interessado apenas em conjuntos de bases compostos por combinadores adequados.

Existe também um estudo dos outros conjuntos de bases possíveis? Ideal seria algo semelhante ao estudo de Wolfram de vários outros modelos de computação, nos quais as várias combinações são estudadas sistematicamente. Em particular, estou interessado em saber exemplos simples das seguintes coisas:

  • Um conjunto básico mínimo que inclui o combinador I. (Estou usando "minimal" para significar que, se você remover qualquer membro, ele deixará de ser uma base, para que a base de SKI não conte.)
  • Um conjunto básico mínimo que inclui o combinador Y ou o combinador (aka mockingbird)ω

Qualquer outra informação sobre outras bases possíveis para a lógica combinatória além de S, K e B, C, K, W seria realmente útil.

Como um ponto mais amplo, estou interessado no estudo do cálculo combinatório como um sistema puramente mecânico , ou seja, como um conjunto de regras de transformação em árvores binárias com nós rotulados, que não precisam receber nenhuma interpretação semântica específica. Qualquer indicação de recursos que adotem essa abordagem seria muito apreciada. ( Mock a Mockingbird adota essa abordagem, mas apresenta uma apresentação incompleta, enquanto o Cálculo Lambda de Barendregt está muito ligado à semântica, dificultando a extração dos aspectos puramente mecânicos nos quais estou interessado.)

1 Para ser mais preciso: no cálculo lambda, um combinador adequado é uma expressão da forma , onde possui apenas , etc. como variáveis ​​livres e não contém abstrações. Assim, por exemplo, é um combinador adequado, mas não é, porque contém aplicado a um termo lambda.(λ.x1x2...P(x1,x2,...))P(x1,x2,...)x1x2(λxyz.x(zz))(λx.x(λy.y))x

Respostas:


2

É fácil criar outras bases trocando os combinadores de uma base por outras que fazem algo semelhante. Por exemplo, começando com BCKW, você pode alternar para (já que ambos alternam os termos) e para (pois as duas coisas duplicam). Você sabe que isso ainda é uma base porque é possível recuperar e partir dele: e .CT=(λxy.yx)Wω=(λx.xx)CWC=B(T(BBT))(BBT)W=C(Bω(BBT))


1

Qualquer conjunto de combinadores que contenha um combinador cancelador (como K), um combinador de composição (como B), um combinador permutador (como C), um combinador duplicador (como W) e o combinador de identidade I é uma base. Se o combinador I deriva dos seus outros quatro combinadores, apenas esses quatro são suficientes.

Isso significa que algo como B, T, M, K, I, onde Tab = ba e Ma = aa, também é uma base. De fato, B, T, M, K é suficiente, pois eu posso derivar de B, T, M, K (isso não é fácil de provar; a prova é primeiro derivar S de B, T, M e, então, tomar I = SKK.)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.