Il calcolo SK2 è una base completa, in cui K2 è il combinatore K capovolto?


10

In particolare, se ho definito un nuovo come invece di il sarebbe una base competitiva?K2

K2=λx.(λy.y)
K=λX.(λy.X)
{S,K2,io}

La mia ipotesi è "no" solo perché non riesco a costruire il combinatore K normale dai combinatori , e , ma non ho un algoritmo da seguire, né ho una buona intuizione sulla creazione di cose da questi combinatori.SioK2

Sembra che tu possa definire con il normale -calculus, ma non potrei davvero lavorare all'indietro per ottenere una derivazione di in termini di e il resto.

K2=Kio
{S,K,(io)}KK2

Il mio tentativo di provare che non era funzionalmente completo essenzialmente tentò di costruire in modo esaustivo ogni funzione raggiungibile da questi combinatori al fine di dimostrare che si raggiunge un vicolo cieco (una funzione che si è già vista prima) indipendentemente dai combinatori che si utilizzano. Mi rendo conto che questo non sarà necessariamente vero per insiemi di combinatori funzionalmente incompleti (ad esempio il combinatore da solo non finirà mai quando applicato a se stesso), ma questo è stato il mio pensiero migliore. Sono sempre stato in grado di usare il combinatore per sgattaiolare fuori da quello che pensavo fosse finalmente un vicolo cieco, quindi non sono più così sicuro della fattibilità di questo approccio.KS

Ho fatto questa domanda su StackOverflow ma sono stato incoraggiato a pubblicarlo qui. Ho ricevuto alcuni commenti su quel post, ma non sono sicuro di averli compresi bene.

Bonus: se non è una base completa, la lingua risultante è comunque Turing completa?


questo è un bel puzzle Sembra che S e K 'ti consentano solo di generare termini le cui forme normali di testa hanno fino a tre λ iniziali (ovvero termini che si normalizzano nella forma λx₁.λx₂.λx₃. Xᵢ t₁ ... tₙ), quindi potrebbe essere un'altra strada per dimostrare incompletezza, anche se sembra un po 'complicato formalizzare. Sicuramente non raggiungerai mai un "vicolo cieco", però: inizia definendo I = λx.x = K2 K2, quindi ripetendo la trasformazione t ↦ S t K2 puoi esprimere λx.x I ... I per qualsiasi stringa di Is .
Noam Zeilberger,

... E scusa, per "incompletezza", intendo incompletezza di SK 'come base combinatoria per il calcolo lambda non tipizzato. Inoltre non ho una buona intuizione sul fatto che sia Turing completo (il che sarebbe implicito dalla completezza combinatoria, ma non viceversa).
Noam Zeilberger,

Cross-postato: stackoverflow.com/q/55148283/781723 , cs.stackexchange.com/q/108741/755 . Si prega di non pubblicare la stessa domanda su più siti . Ogni comunità dovrebbe avere una buona dose di risposta senza che il tempo di nessuno venga perso.
DW

Il mio errore @DW, c'è qualcosa che posso fare per rimediare a questo?
Cole

Risposte:


14

Considera i termini del calcolo S,K2,io come alberi (con nodi binari che rappresentano le applicazioni e foglie S,K2 che rappresentano i combinatori.

Ad esempio, il termine S(SS)K2 sarebbe rappresentato dall'albero

        @
       / \
      /   \
     @    K2
    / \
   /   \
  S     @
       / \
      /   \
     S     S

Ad ogni albero T associa la sua foglia più a destra, quella che ottieni prendendo il ramo giusto su ciascuna @. Ad esempio, la foglia più a destra dell'albero sopra è K2 .

Come si può vedere dall'arte ASCII in basso, tutte le regole di riduzione in S,K2,io calcolo mantengono la foglia più a destra.

         @                           @
        / \                         / \
       /   \                       /   \
      @     g    [reduces to]     @     @
     / \                         / \   / \
    /   \                       e   g f   g
   @     f                 
  / \
 /   \
S     e
      @
     / \
    /   \
   @     f    [reduces to]   f
  / \
 /   \
K2    e

Da lì in poi, è facile vedere che se un termine T riduce a T' , allora T e T' hanno la stessa foglia più a destra. Quindi, non esiste un termine T nel calcolo S,K2,io tale che TK2S riduca a K2 . Tuttavia, KK2S riduce a K2 , quindi K non può essere espresso nel calcolo S,K2,io


Discussione molto bella!
Noam Zeilberger,

Argomento molto chiaro e chiaro. Grazie. Forse aprirò una domanda separata da porre sulla completezza di Turing.
Cole

5

S,K2,io


UN,B,C

  • K:UNBUN
  • K2:UNBB
  • S:(UNBC)(UNB)(UNC)
  • io:UNUN

Kio,S,K2UNBB,(UNBC)(UNB)(UNC),UNUNUNUNBBUNBUN

t,f,uUNBB(UNBC)(UNB)(UNC)UNUNt

A B | A -> B
t t | t
t f | f
f t | t
f f | t
t u | f
f u | t
u t | t
u f | f
u u | t

K2,S,iottUNBUNfuUNtBS,K2,io


1
Mi piace l'approccio, ma potresti chiarire quali regole stai prendendo come tuo calcolo sequenziale?
Noam Zeilberger,

Puoi abbozzare come dimostrare S in questo calcolo sequenziale limitato? Non sembra possibile con le regole che immagino tu possa significare.
Robin Houston,

1
@ robin-houston: vedi la mia modifica (ho anche aggiunto un diverso argomento semantico con la stessa conclusione).
ZAK

2
Sono d'accordo con Charles Stewart (qui: twitter.com/txtpf/status/1123962607306706944 ) che non è chiaro come passare dall'inabitazione nel calcolo lambda semplicemente digitato all'inesprimibilità usando i combinatori. Potrebbe esserci un argomento specifico per K, ma il passo iniziale "... allora si potrebbe anche fare la stessa cosa nel calcolo λ tipizzato semplicemente" non vale in generale (Charles menzionò il controesempio del combinatore Y) . Vedi di rendere rigoroso questo argomento?
Noam Zeilberger,

1
K
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.