Set di basi per il calcolo del combinatore


19

È noto che i combinatori S e K formano una base per il calcolo del combinatore, nel senso che tutti gli altri combinatori possono essere espressi in termini di essi. C'è anche la base B, C, K, W di Curry, che ha la stessa proprietà. Ci deve essere un numero infinito di tali basi, ma non ne conosco altre.

Sono consapevole che esistono diverse basi a combinatore singolo, come il combinatore Iota e le varie altre costruite / riviste da Fokker . Tuttavia, questi sono combinatori "impropri", nel senso che sono espressi in termini di altri combinatori piuttosto che astrazioni pure. 1 Ai fini di questa domanda sono interessato solo a set di basi composti da opportuni combinatori.

Esiste anche uno studio delle altre possibili basi? L'ideale sarebbe qualcosa sulla falsariga dello studio di Wolfram su vari altri modelli di calcolo, in cui le varie combinazioni sono studiate sistematicamente. In particolare, mi interessa sapere se sono noti semplici esempi delle seguenti cose:

  • Una base minima che include l'I combinatore. (Sto usando "minimal" per significare che se rimuovi qualsiasi membro smette di essere una base, quindi la base SKI non conta.)
  • Un set di basi minimo che include il combinatore Y o il combinatore (aka mockingbird)ω

Qualsiasi altra informazione su altre possibili basi per la logica combinatoria oltre a S, K e B, C, K, W sarebbe davvero utile.

Come punto più ampio, sono interessato allo studio del calcolo combinatorio come un sistema puramente meccanico , cioè come un insieme di regole di trasformazione su alberi binari con nodi etichettati, che non hanno bisogno di alcuna particolare interpretazione semantica. Qualsiasi suggerimento verso le risorse che adottano questo approccio sarebbe molto apprezzato. ( To Mock a Mockingbird utilizza questo approccio ma dà una presentazione incompleta, mentre il Lambda Calculus di Barendregt è molto legato alla semantica, rendendo difficile per me estrarre gli aspetti puramente meccanici che mi interessano.)

1 Per essere precisi: nel calcolo lambda un combinatore appropriato è un'espressione della forma , dove ha solo , ecc. come variabili libere e non contiene alcuna astrazione. Ad esempio, è un combinatore appropriato, ma non lo è, perché contiene applicato a un termine lambda.(λ.x1x2P(x1,x2,))P(x1,x2,)x1x2(λxyz.x(zz))(λx.x(λy.y))x

Risposte:


2

È facile fare altre basi cambiando i combinatori da una base con quelli che fanno qualcosa di simile. Ad esempio, a partire da BCKW, puoi cambiare per (poiché entrambi scambiano termini) e per (poiché entrambi elementi duplicati). Sai che questa è ancora una base perché puoi recuperarne e : e .CT=(λxy.yx)Wω=(λx.xx)CWC=B(T(BBT))(BBT)W=C(Bω(BBT))


1

Qualsiasi insieme di combinatori che contiene un combinatore cancellativo (come K), un combinatore compositore (come B), un combinatore permutante (come C), un combinatore duplicativo (come W) e il combinatore di identità I è una base. Se il combinatore I sembra derivato dai tuoi altri quattro combinatori, allora quei quattro soli sono sufficienti.

Ciò significa che qualcosa come B, T, M, K, I, dove Tab = ba e Ma = aa, è anche una base. In effetti, B, T, M, K è sufficiente, dal momento che posso essere derivato da B, T, M, K (non è facile da dimostrare; la prova è prima di derivare S da B, T, M e quindi prendere I = SKK.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.