Calcolo delle costruzioni: comprimi l'espressione nella sua forma più piccola


11

Sono consapevole che il calcolo delle costruzioni si sta fortemente normalizzando, il che significa che ogni espressione ha un valore normale per cui non può essere beta, ulteriormente ridotta. Quindi, in effetti, questa è l'espressione più efficiente che calcola lo stesso valore dell'espressione originale.

Ma in alcuni casi, la normalizzazione può ridurre una piccola espressione a una grande espressione (in termini di dimensioni).

Esiste una forma più piccola di espressioni? Un modulo che calcola lo stesso valore con la dimensione più piccola.

In altre parole, anziché una forma normale efficiente in termini di tempo, efficiente in termini di spazio.

Risposte:


8

C'è un po 'di libertà in ciò che consideriamo "lo stesso valore". Consentitemi di dimostrare che non esiste un tale algoritmo se "lo stesso valore" significa "equivalente osservazionale". Userò un frammento del calcolo delle costruzioni, vale a dire il sistema T di Gödel (semplicemente digitando -calculus, numeri naturali e ricorsività primitiva su di essi), quindi l'argomento si applica già a un calcolo molto più debole.λ

Dato un numero , lascia che ¯ n sia il numero corrispondente che lo rappresenta, cioè n applicazioni di s u c c a 0 . Dato un mahcine M di Turing , lascia che M sia il numero che codifica M in un modo ragionevole.nn¯nsucc0MMM

Dì che due termini chiusi sono equivalenti , scritti t u , quando per tutti n N , tt,u:natnattunN estn¯ normalizzano entrambi sullo stesso numero (si normalizzano su un numero perché siamo in un claculus fortemente normalizzante).sn¯

Supponiamo di avere un algoritmo, che dato qualsiasi termine chiuso di tipo calcola un termine minimo equivalente. Quindi possiamo risolvere l'oracolo di Halting come segue.natnat

Esiste un termine tale che, per tutte le n N e tutte le macchine di Turing M , S ( M , ¯ n ) si normalizza a ¯ 1 se T si ferma entro n passi e si normalizza a ¯ 0 altrimenti. Ciò è ben noto, poiché la simulazione di una macchina di Turing per un numero fisso di passaggi n è ricorsiva primitiva.S:nat×natnatnNMS(M,n¯)1¯Tn0¯n

Esistono molti termini chiusi che sono termini minimi equivalenti a λ x : n a t .Z1,,Zk . Il nostro algoritmo di minimizzazione ne restituisce uno quando lo diamo λ x : n a t .λx:nat.0 , e potrebbe anche essere il caso che λ x : n a t .λx:nat.0 è in effetti l'unico termine minimo. Tutto ciò non importa, l'unica cosa che conta è che ci sono finitamente molti termini minimi equivalenti a λ x : n a t .λx:nat.0 .λx:nat.0

Ora, data qualsiasi macchina , considera il termine u : = λ x : n a t .M Se M corre per sempre, allora u ¯ n si normalizza a ¯ 0 per ogni n ed equivale a λ x : n a t .

u:=λx:nat.S(M,x)
Mun¯0¯nλx:nat.0MuZ1,,ZkMZ1,,Zk

β


Come si calcola Z1, .. Zk?
user47376

Non devi Cioè, l'algoritmo che sto descrivendo è là fuori, e non sappiamo esattamente cosa sia, ma questo è irrilevante. In realtà non sto cercando di eseguire l'algoritmo, ho solo bisogno della sua esistenza per dimostrare che il tuo algoritmo non esiste.
Andrej Bauer,

Sì, ma il tuo argomento afferma che se il mio algoritmo esiste allora possiamo risolvere il problema di arresto. Per determinare se una macchina turing M ferma l'algoritmo ti normalizza e controlla se è uno di Z1, .. Zk. Quindi deve essere in grado di enumerarli, altrimenti potrebbe non arrestarsi.
user47376

Z1,,ZkkZkZ[i]

7

(λx:T.C x x) uβC u u
u

In questo senso, è noto come ridurre i termini non tipizzati in modo ottimale, riducendo la condivisione il più possibile. Questo è spiegato qui: /programming//a/41737550/2059388 e la citazione pertinente è un algoritmo di J. Lamping per una riduzione ottimale del calcolo lambda . Non vi è dubbio che il teorema per il calcolo non tipizzato possa essere esteso al CIC.

Un'altra domanda rilevante è la quantità di informazioni sul tipo che possono essere cancellate quando si esegue la conversione del tipo, o effettivamente come eseguire una conversione efficiente, che è un campo di ricerca attivo, vedi ad esempio la tesi di Mishra-Linger .


6

Permettetemi di insistere sul punto di vista toccato dalla risposta di Cody.

λλλλ

Mf

Mx¯l(|x|)f(x)¯
l(|x|)l(n)=O(nk)kf

λΘ(n)Θ(2n)λλ

λλ

λ

Questa stessa sintassi può essere utilizzata per dimostrare che, contrariamente all'intuizione ingenua, la risposta alla domanda di cui sopra è sì, in effetti: il numero di passaggi più esterni alla forma normale è una misura di costo ragionevole, anche se la dimensione esplode, perché esiste infatti un altro modo di rappresentare lo stesso calcolo (usando sostituzioni esplicite lineari) in cui:

  1. la dimensione non esplode;
  2. λ

Tutto ciò è spiegato nel documento di Accattoli e Dal Lago "Beta Reduction is Invariant, Indeed" (LICS 2014 e quindi penso che ci sia una versione più recente del diario).

λ


Quello che avevo in mente, ad esempio, è un termine che svolge un milione di passaggi per generare un elenco di milioni di elementi. Questo si normalizza all'elenco effettivo, che è la rappresentazione più efficiente di quel valore (è il risultato finale effettivo, non sono necessari ulteriori passaggi). Ma il termine stesso spiegato può essere molto piccolo.
user47376

β

Sì, è impossibile come ha detto Andrej. Questo ha risposto alla mia domanda.
user47376
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.